Log 02: July 13th, 2025 - Weather Imagineering
After tinkering further with OpenMeteo, I decided to take a break and determine what data I want exactly. I concluded that basically, this is the information I want from the Weather Forecast API:
Location
latitude=42.3751
longitude=-71.1056
Daily Variables Requested
temperature_2m_max
: Daily maximum temperature at 2 meters
temperature_2m_min
: Daily minimum temperature at 2 meters
sunset
: Time of sunset
sunrise
: Time of sunrise
wind_speed_10m_max
: Maximum wind speed at 10 meters
wind_gusts_10m_max
: Maximum wind gusts at 10 meters
wind_speed_10m_min
: Minimum wind speed at 10 meters
wind_gusts_10m_min
: Minimum wind gusts at 10 meters
Hourly Variables Requested
temperature_2m
: Temperature at 2 meters
uv_index
: UV index
precipitation_probability
: Probability of precipitation
precipitation
: Amount of precipitation
relative_humidity_2m
: Relative humidity at 2 meters
wind_speed_10m
: Wind speed at 10 meters
wind_direction_10m
: Wind direction at 10 meters
Other Options
timezone=America/New_York
: Output times in the Eastern Time zone (encoded as %2F
)
forecast_days=3
: Request a 3-day forecast
timeformat=unixtime
: Timestamps in Unix time format (seconds since epoch)
wind_speed_unit=mph
: Wind speeds in miles per hour
temperature_unit=fahrenheit
: Temperatures in Fahrenheit
precipitation_unit=inch
: Precipitation in inches
Curl Request Example:
curl https://api.open-meteo.com/v1/forecast?latitude=42.3751&longitude=-71.1056&daily=temperature_2m_max,temperature_2m_min,sunset,sunrise,wind_speed_10m_max,wind_gusts_10m_max,wind_speed_10m_min,wind_gusts_10m_min&hourly=temperature_2m,uv_index,precipitation_probability,precipitation,relative_humidity_2m,wind_speed_10m,wind_direction_10m&timezone=America%2FNew_York&forecast_days=3&timeformat=unixtime&wind_speed_unit=mph&temperature_unit=fahrenheit&precipitation_unit=inch
And Air Quality API:
Hourly Variables Requested
us_aqi
: U.S. Air Quality Index (based on EPA standards)
Other Options
forecast_days=3
: Request a 3-day forecast
Curl Request Example:
curl https://air-quality-api.open-meteo.com/v1/air-quality?latitude=52.52&longitude=13.41&hourly=us_aqi&forecast_days=3
From there, I began tinkering with how to display this data on my display. I sketched out a small draft of this here:
Basically, I am imagining using Makie.jl and a PolarAxis radial chart to display this information (thanks to @asinghvi17 and @sdanisch for the tips here):
You can make multiple polar axes and use PolarAxis | Makie
In my designing, I found this example to be beautiful and something I could base my work off of:
I also found this other example which was also hugely inspiring:
This will be a task for future TCP.
Finally, I decided to put some thoughts to code and began drafting a Jinkies.jl framework for how to βchunkβ the regions of an e-ink display. As of now, I have two structs called Display
and another called Component
. Display
holds information about the e-ink display and what components are in the display. A Component
holds plotting information about what goes into the display and where.
I am imagining making Component
βs more like an interface too so I can make any component that could be rendered to an image using tools like Makie, Luxor, and more.
Currently, I have made a PrettyTables.jl interface to represent an e-ink displayβs pixels in a coarser granularity than pixel dimensions. Hereβs how things look so far:
julia> Jinkies.set_display_grid!(100, 120)
E-Ink Display Grid
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β β 001 β 002 β 003 β 004 β 005 β 006 β 007 β 008 β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 1 β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 2 β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 3 β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 4 β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β ⬀ β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
And then for colors, I can do something like this to say where a part of an e-ink display already has a component:
julia> Jinkies._update_display_grid_colors!(
[[1,1], [1,2],[2,1],[2,2]]
)
I like the display representation so far, but I need to mess around a bit further with the component and display interplay. Also encoding what information should be stored here and there.
And that is where we shall leave the dev log for now. Nice day of exploring, hacking, and imagineering! Onwards!