I was gifted an Ambient Weather WS-1965 for Christmas this year. It was a profoundly in-tune gift I am very grateful to have received from my partner and her son
I took advantage of a break in our late-2025 rainstorm on Christmas Day to deploy it in an on-brand haphazard manner. Refinement can come later- I'm missing out on data! So up it went on a broom zip tied to a ladder. A week later, it's still there just like that. I should probably change that soon...

Next step might be to sink a ground stake

Setup was easy. You join its own WiFi access point to plug in your own WiFi network’s SSID and password and hit save. Then find its IP on your network using perhaps your router’s interface, or nmap. Access that to see realtime weather data, add a Wunderground token, etc. But I'm not here to tell you how to setup an Ambient Weather system, and this is where most people stop- and where every bit of my self-preservation was telling me to do exactly that
But I thought it sure would be interesting to get this data into my Grafana dashboards. It could be cool to set alerts around high rain rate, large gusts, and missing data. And I’d love to be able to intersect temperature data with the performance of my Meshtastic and Meshcore nodes’ lithium batteries. Hmmm 🧐
Hey, I found an unauthenticated endpoint that gave up all sensor data in JSON format. Let's use that:

And in this age of AI-assisted programming, I had Claude AI whip up a Python script that would capture, transform, and store the data. In the data world, they‘d call it an ETL (Extract, Transform, Load) script. In my case, I already have Grafana backed by InfluxDB running in a cheap cloud instance. The script is found below
To put it all together, we need a Grafana dashboard. Mind you, Grafana doesn’t have a compass or comparable chart, so I had to split a pie chart into 16 slices to show wind direction 🙃

Source Code:

grafana-weather-dashboard.json: import this into a Grafana dashboard to get the aboveingest-ambient-to-influxdb.py: the ETL script mentioned above that captures Ambient Weather data, translates it, and puts it into your InfluxDB bucket. I put this on a minutely cronjob
Some side notes:
- When you query the Ambient Weather station’s IP address on your network, you’re accessing the display unit (shown below). Data gets TO that via LoRA, 915 MHz in our case in the US! My station was found to send data every 16 seconds, unencrypted
- I don’t have a proper Home Lab, so the machine I have Grafana running on is an Amazon Web Services instance accessing the weather station via Tailscale and their Subnet Advertising feature
Today on the phone, a friend said "so you're a weather nerd now, huh?" and my immediate, unprepared response was "I always have been, I just have a weather station now"


Member discussion: