rtl433
UNKNOWN
RTL-433 utility
|
Fine Offset WH1080/WH3080 Weather Station. More...
Functions | |
static int | fineoffset_wh1080_callback (r_device *decoder, bitbuffer_t *bitbuffer) |
This module is based on Stanisław Pitucha ('viraptor' https://github.com/viraptor) code stub for the Digitech XC0348 Weather Station, which seems to be a rebranded Fine Offset WH1080 Weather Station. More... | |
Variables | |
static int | wind_dir_degr [] = {0, 23, 45, 68, 90, 113, 135, 158, 180, 203, 225, 248, 270, 293, 315, 338} |
static char * | output_fields [] |
r_device | fineoffset_wh1080 |
Fine Offset WH1080/WH3080 Weather Station.
|
static |
This module is based on Stanisław Pitucha ('viraptor' https://github.com/viraptor) code stub for the Digitech XC0348 Weather Station, which seems to be a rebranded Fine Offset WH1080 Weather Station.
Some info and code derived from Kevin Sangelee's page: http://www.susa.net/wordpress/2012/08/raspberry-pi-reading-wh1081-weather-sensors-using-an-rfm01-and-rfm12b/ .
See also Frank 'SevenW' page ( https://www.sevenwatt.com/main/wh1080-protocol-v2-fsk/ ) for some other useful info.
For the WH1080 part I mostly have re-elaborated and merged their works. Credits (and kudos) should go to them all (and to many others too).
Reports 1 row, 88 pulses.
Data layout:
ff FI IT TT HH SS GG ?R RR BD CC
(aka Watson W-8681) (aka Digitech XC0348 Weather Station) (aka PCE-FWS 20) (aka Elecsa AstroTouch 6975) (aka Froggit WH1080) (aka .....)
This weather station is based on an indoor touchscreen receiver, and on a 5+1 outdoor wireless sensors group (rain, wind speed, wind direction, temperature, humidity, plus a DCF77 time signal decoder, maybe capable to decode some other time signal standard). See the product page here: http://www.foshk.com/weather_professional/wh1080.htm . It's a very popular weather station, you can easily find it on eBay or Amazon (just do a search for 'WH1080').
The module works fine, decoding all of the data as read into the original console (there is some minimal difference sometime on the decimals due to the different architecture of the console processor, which is a little less precise).
Please note that the pressure sensor (barometer) is enclosed in the indoor console unit, NOT in the outdoor wireless sensors group. That's why it's NOT possible to get pressure data by wireless communication. If you need pressure data you should try an Arduino/Raspberry solution wired with a BMP180/280 or BMP085 sensor.
Data are transmitted in a 48 seconds cycle (data packet, then wait 48 seconds, then data packet...).
This module is also capable to decode the DCF77/WWVB time signal sent by the time signal decoder (which is enclosed on the sensor tx): around the minute 59 of the even hours the sensor's TX stops sending weather data, probably to receive (and sync with) DCF77/WWVB signals. After around 3-4 minutes of silence it starts to send just time data for some minute, then it starts again with weather data as usual.
By living in Europe I can only test DCF77 time decoding, so if you live outside Europe and you find garbage instead of correct time, you should disable/ignore time decoding (or, better, try to implement a more complete time decoding system :) ).
To recognize message type (weather or time) you can use the 'msg_type' field on json output:
The 'Total rainfall' field is a cumulative counter, increased by 0.3 millimeters of rain at once.
The station comes in three TX operating frequency versions: 433, 868.3 and 915 Mhz. The module is tested with a 'Froggit WH1080' on 868.3 Mhz, using '-f 868140000' as frequency parameter and it works fine (compiled in x86, RaspberryPi 1 (v2), Raspberry Pi2 and Pi3, and also on a BananaPi platform. Everything is OK). I don't know if it works also with ALL of the rebranded versions/models of this weather station. I guess it should do... Just give it a try! :)
The WH3080 Weather Station seems to be basically a WH1080 with the addition of UV/Light sensors onboard. The weather/datetime radio protocol used for both is identical, the only difference is for the addition in the WH3080 of the UV/Light part. UV/Light radio messages are disjointed from (and shorter than) weather/datetime radio messages and are transmitted in a 'once-every-60-seconds' cycle.
The module is able to decode all kind of data coming from the WH3080: weather, datetime, UV and light plus some error/status code.
To recognize message type (weather, datetime or UV/light) you can refer to the 'msg_type' field on json output:
While the LCD console seems to truncate/round values in order to best fit to its display, this module keeps entire values as received from externals sensors (exception made for some rounding while converting values from lux to watts/m and fc), so you can see -sometimes- some little difference between module's output and LCD console's values.
2016-2017 Nicola Quiriti ('ovrheat' - 'seven')
References bitbuffer::bb, bitbuffer_extract_bytes(), bitrow_printf(), bitbuffer::bits_per_row, crc8(), DATA_DOUBLE, DATA_FORMAT, DATA_INT, data_make(), DATA_STRING, decoder_output_data(), bitbuffer::num_rows, preamble, r_device::verbose, and wind_dir_degr.
r_device fineoffset_wh1080 |
|
static |
|
static |
Referenced by fineoffset_wh1080_callback(), and holman_ws5029_decode().