Skip to content

This is a receiver that decodes the 433Mhz RF codes transmitted by the Fine Offset Electronics WH1080 Weather Station sender module every 95 seconds, translates the data and sends it to an MQTT server

License

Notifications You must be signed in to change notification settings

bHOLDher/WeatherReceiverWH1080

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WeatherReceiverWH1080

This is a receiver that decodes the 433Mhz RF data transmitted by the Fine Offset Electronics WH1080 Weather Station sender module every 95 seconds, translates the data and sends it to an MQTT server. It runs MicroPython on a Pi Pico W.

It also has a air pressure sensor and indoor temperature sensor.

Install

To get it up and running:

  • Wire up the sensors according to circuit.png
  • Edit the secrets.py file
  • Create MQTT sensors in Home Assistant, see examples in HomeAssistantMqttSensors.yaml
  • Install Thonny IDE then use it to install MicroPython on the Pi Pico with a USB cable
  • Copy all the .py files in the src folder over to the Pi Pico using Thonny
  • Reboot the Pi. It is probably best to watch the output in Thonny to confirm it is running.

Circuit Diagram

Circuit Diagram

Components

Notes

Stay away from the RF receivers with an adjustable inductor (model number XY-MK-5V) and rather find a slightly more expensive superheterodyne receiver with a silver capped module and crystal (model number RXB6). The cheaper receivers might work at close range, but they are super sensitive to things like power supply noise and really don't work well. Choosing a good 433MHz receiver Buy a cheap 433MHz helical antenna, or make one that works almost as well: 433 MHz Coil loaded antenna. A 16.5cm straight wire works quite well too.

The RF receiver is sold as a 5V sensor but it appears to run perfectly at 3.3V.

The BMP280 sensor has a temperature sensor, but the whole sensor seems to run a little warm, give or take 2 degrees Celcius above ambient, and I did try to run the sensor in forced mode thinking that it would cool down if it is not constantly sampling data. The sleep mode does not appear to cool it down, so I decided to run a seperate temperature sensor, and only use the air pressure from the BMP280. If I switched off the device for 30 minutes, then switched it back on, I could see the temperature reading slowly climb back up by 2 degrees. I also thought it might be picking up heat from the ESP8266 I was using before. Either way, I trust a DS18B20 reading more.

On the BMP280 I pulled pin SDO high, I think I misunderstood a few years ago, this changes the BMP280 address from default 0x76 to 0x77, so I made a code change for this.

The DS18B20 sensor seemed to work without a pullup resistor at first, using the Pi Pico internal pullup resistor but after a while it stopped working, so I added a 4.7k pull up resistor.

Technical Information on decoding the Weather Station RF transmission

The data is transmitted with On Off Keyed Pulse Width modulation:

  • 1 is indicated by ~500µS pulse
  • 0 is indicated by ~1500µs pulse
  • gaps between bits are ~1000µs
  • Preamble = 6x 1 bits
Byte 0 1 2 3 4 5 6 7 8 9
Nibble ab cd ef gh ij kl mn op qr st
  • bc: device identifier
  • def: temp ( (def-400) / 10) Degrees Celcius
  • gh: humidity %
  • ij: wind speed avg (*0.34) m/s
  • kl: wind speed gust (*0.34) m/s
  • mnop: rain (*0.2794) mm running total
  • q: battery flag, a non zero value indicates a low battery
  • r: wind direction (*22.5) Degrees
  • st: checksum crc8 with poly 0x31

About

This is a receiver that decodes the 433Mhz RF codes transmitted by the Fine Offset Electronics WH1080 Weather Station sender module every 95 seconds, translates the data and sends it to an MQTT server

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages