u/CHRISTIVVN

Image 1 — I built a native weather app around my own Netatmo weather station
Image 2 — I built a native weather app around my own Netatmo weather station
Image 3 — I built a native weather app around my own Netatmo weather station
Image 4 — I built a native weather app around my own Netatmo weather station
Image 5 — I built a native weather app around my own Netatmo weather station
Image 6 — I built a native weather app around my own Netatmo weather station
▲ 27 r/myweatherstation+1 crossposts

I built a native weather app around my own Netatmo weather station

The official Netatmo app is functional but loveless, so I spent the past months building my own. Sharing it here because I’m curious what you think, and whether this is something other weather station owners would even want.

The core idea: if you own a weather station, you have something no weather app has: measured data from your own garden, going back years. AURA puts that data front and center and only uses a public weather service (Open-Meteo) for the one thing the station can’t know: the forecast.

The main screen (screenshots 1 to 3):

- The top half is a scene, not a wallpaper. A MeshGradient sky whose palette shifts with the time of day (night, blue hour, golden hour, day, computed from actual sun positions at the station’s location) and with the weather (rain desaturates it, fog flattens everything, thunder darkens it). The sun sits at its real position: low left in the morning, high at noon, sinking behind the hill silhouettes in the evening. At night a moon travels the same arc. Overcast? The sun fades to a glow behind the cloud deck.
- The data lives in a sheet that slides over the scene. At rest you only see the essentials: big temperature, one written outlook sentence, the curve. Scrolling reveals the rest, and only then does the tab bar appear.
- The temperature curve blends measured and forecast: the past (own station, solid line) flows into the forecast (dotted) at “now”. The dotted line starts from the last measured point, not from the first model value, otherwise you’d see the model-vs-sensor offset as a kink.
- The written outlook is one auto-generated sentence: “Dry for another 2 hours, around 4 mm near 22:00. Cooler tomorrow: high of 17.” Thresholds keep every model drizzle from announcing itself as a storm.
- Bento tiles with mini visualizations: wind compass, pressure arc gauge, hourly rain bars, humidity, dew point. Each one opens a detail view with history.

The other tabs (screenshots 4 to 6): a calendar heatmap of your own measurements, full charts per sensor with scrubbing, and a records tab that gamifies your station: hottest and coldest ever, warmest night, strongest gust, season counters and milestones (“15.2° to go until the record”).

Tech, for those who care:

- SwiftUI, iOS 26, zero external dependencies. Swift Charts for all graphs, MeshGradient for the sky, Liquid Glass materials for the cards (configurable: off / subtle / full).
- Backend is a single Node.js file (deliberately no npm dependencies) in Docker on a Mac mini. It polls the Netatmo API phase-locked: the station publishes every ~10 minutes, the poller learns that rhythm and queries right after each new measurement. Fresh data without burning the API budget.
- Served over the home network or Tailscale when away, with automatic failover.
- Notifications go through a self-built push relay (AppDaemon script talking straight to APNs over HTTP/2 with JWT). No Firebase, no third-party push service.
- Sideload/TestFlight only. No App Store plans for now.

Honest caveats: it’s built for one specific setup (Netatmo plus a home server), making it generic would be real work, and it’s iOS 26 only. The screenshots show live data from the actual station in Belgium.

What I’d love to hear from you:

  1. Would you run something like this? Also curious about owners of other stations (Ecowitt, Davis, WeatherFlow).
  2. What would make it worth it for you, which features are missing?
  3. The home server requirement is the biggest hurdle to sharing this. Dealbreaker, or exactly the point?
u/CHRISTIVVN — 12 days ago