Realised this project has been running almost 10 years now, and gone through several iterations. The main improvement is that it is integrated with my Home Assistant system.
Note that in the process it has gone back to a breadboard, so far from a finished project yet! The circuit operates as such:
- RF receiver module running at 433 MHz receives the data pulse from the rooftop sensors
- Arduino Nano decodes the sensor data into meaningful values
- Data is converted to JSON and transmitted via serial to ESP8266, using level shifter to allow 5V Arduino output to input to ESP which expects 3.3V levels
- ESP8266 receives JSON packet and then passes this via MQTT to the Home Assistant over WiFi
- Individual sensor data displayed on HA page
As before, because this is intercepting data from outside sensor, it only gives me outside temperature and humidity, wind speed and direction. (Note direction is still an arbitrary number, must figure out how to convert this to meaningful compass direction one day). This is supplemented by separate ESP boards inside the home sending their temperature and humidity data via the ESPHome integration over WiFi.
During the last week it stopped receiving data from the rooftop unit, and I suspected perhaps this time it had finally packed it in after almost a decade of use. The fact that neither the console or my circuit were reporting data would suggest an issue with the transmitter. Previously I have had to replace the Alkaline rechargeable AA cells it uses, which are not the easiest things to find these days. The cockatoos have also had some fun with it also, with only two of three anemometer cups surviving and some of the wires have been chewed but still seem to be working.
So I climbed up on the ladder to get on the roof, pulled down the transmitter to find it is still working fine. Recalled this has happened before, so I pulled batteries from the wall mounted console to restart it and it picked up the transmitter straight away. Which means of course I have to set the date and time again, no memory backup š
This leaves the question of why my receiver was still not working. Plugging into the Arduino IDE let me check data being received. The ESP was connecting to WiFi, but not receiving from the Arduino, although it was showing data transmission on status lights. On debugging it, found that the transmitter ID code had shifted, which seems to happen from time to time, but I don’t know why. So, what seems to happen is, transmitter ID changes, base station console doesn’t notice and keeps trying to listen to previous ID. Meanwhile, my circuit is hardcoded for the ID. Otherwise it tends to pick up spurious transmissions from other devices, I would expect these could be air conditioner remotes, garage door remotes, etc all of which are using 433MHz RF band.
So restarting the base station made it listen for a new transmitter ID, and I had to update my code for the new ID before it would start reporting the data! I can’t think of an easy way to make this happen automatically, but at least next time I’m going to know what to try before getting up on the roof again.