There’s no shortage of cheap weather stations on the market that pull in data from several wireless sensors running in the 433 to 900 MHz range and present you with a slick little desktop display, but that’s usually where the flow of information stops. Looking to bridge the gap and bring all that local climate data onto the Internet, [Jonathan Diamond] decided to reverse engineer how his weather station worked.
The first phase of this project involved an RTL-SDR receiver, GNURadio, and a sprinkling of Python. [Jonathan] was able to lock onto the signal and piece together the data packets that reported variables such as temperature, wind speed, and rainfall. Each one of these was a small puzzle in itself, and in the end, there’s still a few bits which he hasn’t quite figured out. But he at least had enough to move onto the next step.
![](https://hackaday.com/wp-content/uploads/2021/05/esp433ws_detail.jpg?w=400)
Now at this point, he could have pulled the data right out of the air with his RTL-SDR. But looking to push his skills to the next level, [Jonathan] decided to open up the base station and isolate its receiver. Since he already decoded the packets on the RF side, he knew exactly what he was looking for with his oscilloscope and logic analyzer. Once he was tapped into the feed coming from the radio, the final step was writing some code for the ESP8266 that could listen on the line, interpret the data packets, and push the resulting variables out over the network.
In this case, [Jonathan] decided to funnel all the data into Weather Underground by way of the Personal Weather Station API. This not only let him view the data through their web interface and smartphone application, but brought their hyperlocal forecasting technology into the mix at no extra charge. If you’re not interested in sharing your info with the public, it would be a trivial matter to change the firmware so the data is published to a local MQTT broker, or whatever else floats your proverbial boat.
If you’re really lucky, your own weather station may already have an ESP8266 onboard and is dumping all its collected data to the serial port. But if not, projects like this one that break down how to reverse engineer a wireless signal can be a great source of inspiration and guidance should you decide to try and crack the code.
“There’s no shortage of cheap weather stations on the market that pull in data from several wireless sensors running in the 433 to 900 MHz range and present you with a slick little desktop display, but that’s usually where the flow of information stops. ”
Seems that much like a good cake, it’s the ingredients (sensors) that make or break a good design.
I removed the pcb from from an accurite 5 in 1. Designed a new one based on esp32. Included bat charger that uses solar cell. Now i can access via phone, pc or web. Added lightning detector as well.
url? or it didn’t happen ;)
Check out https://github.com/robwlakes/ArduinoWeatherOS for a similar project on a simpler more modular system. Explains Manchester encoding so it is easy to understand and analyse.
True there is no shortage of cheap wireless weather stations but the keyword here is cheap. Many have range problems or their update intervals is quite long. While this is a great project, the cheapness of the station could defeat the purpose.
Nicely done, did something like this myself a few years back: https://www.letscontrolit.com/wiki/index.php?title=VentusW266
There’s a lot of errors in your article. There is no “sensors” in the blob. What you think is the antenna is a capacitive humidity sensor (the white ceramic substrate with wiggly traces on) its NOT an antenna. The thermal sensor is the black NTC sensor just to the right of it.