-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Analyze protocol for Fine Offset WH32B #971
Comments
For reference - using a NooElec NESDR Mini USB RTL-SDR & ADS-B Receiver Set, RTL2832U & R820T Tuner, MCX Input on Raspberry Pi running current version of CentOS. |
The overlong message on reset could be a sync pattern. Try to determine the frequency of the new sensor first. Then record some data. |
I am also attempting to get the WH32B to work. I see good data from both my WH65B and the WH31E and have saved a few cu8 files that could possibly be from the WH32B? How do you know what recording is useful and what is just noise? Attached is a zip with all the recordings that were not the 65 or 31 with a text file showing the console output I've also recorded whatever is coming out of the WH32B when you remove / replace the batteries via CubicSDR and have attached it here - it sounded clearest with FM modulation I'd love to get this device supported! if there is anything else I can do to assist let me know. |
Drop the sample file in triq.net/iqs and verify that it looks "proper". Broadly speaking there should be one "streak" of data. Best advice is to remove the antenna from the receiver and place the device under test about 10 cm from the receiver. That way you only get that single device. |
From your signal zip: 4,7,12,15 look like proper FSK. 13, 21 are too weak. Data from your good samples can be read with
Looks like there is a sync word of
Now write down the codes you see (e.g. |
interesting, so that 3 second screech at battery insertion is just noise? What would be the reason for that? I disconnected the antenna from my RTLSDR and placed the WH32B in the enclosure with it: The unit is in a basement and cannot hear any other devices without the antenna from there, I recorded new cu8 files with the following command: then decoded them as per your instruction: resulting code output:
The sensor remained in the box in the basement for the whole time, why the variation in code length? I'd think that would remain the same length of bits. You can see the values on the LCD screen in the pics. |
Great! I'll look into decoding this. The trailing bits (mostly 0) are just an artefact of the FSK demodulation. |
It could reasonably be something like |
this is fun :D I captured six packets at known temperatures, it looks like you got humidity figured out, but temp and pressure don't line up.
|
Very good! If you convert the F to C, scale and offset you get the "raw" values:
Same for the Pressure from inHg to hPa:
See in this BitBench. If you now take the battery out a few times and note where the bits change we can identify the ID position and then we are done. (Bonus: use a known flat battery or variable power supply to find the battery_low flag.) |
Ahh, i forgot to offset that's why my numbers didn't work. I hooked the WH32 up to a power supply and dropped the voltage until the LCD screen was dim. It did not like that. The LCD showed dashes for temp and humidity however I still picked up packets that coincided with the transmit indicator on the screen. low battery (2v)
I then put good batteries back in and captured 5 more packets, didn't record the climate info since that's already figured out
|
Updated BitBench. What is the claimed range for temperature? The values can represent
I'd say 10 bit is too close. But 11 bit will work well. So the top bit could be battery_low. If you want to make this bullet proof:
|
I'm away on business this week, if someone else can capture the packets needed that'd be awesome! If not we will have to pick this up next week. |
@phinnay since your build already looks great here some quick hints to make it really shine: Never plug the receiver directly into a board. At least the Raspi (and I guess all unshielded SoCs) have nasty emissions. Even a short USB extension cable will make a difference (looks like you got room to space the receiver with a 10cm cable. The cheap RTLs have no heat sinking. Fine for 250k but at 2048k heat will be a problem (90°C at the chip surface). At 3200k I have killed some of my unfortunate receivers. |
Thanks for the tips on the RTL receiver, I'll make the adjustments! Here is the device, power cycled 10 times and recorded:
Here is 10 readings with low battery (2.5v)
|
Very nice! This confirms |
Teriffic! Looking forward to pulling the new version. |
Will take a few days, sorry. |
no problem, thank you so much for helping with this! rtl_433 is a great project. |
I was just wondering if there is any further progress? |
This will take more time to implement, the transmission is more intricate, sorry. Ping back in a week or two. |
Ok many thanks for the update.
…Sent from my iPhone
On 23 Mar 2019, at 08:27, Christian W. Zuckschwerdt ***@***.***> wrote:
This will take more time to implement, the transmission is more intricate, sorry. Ping back in a week or two.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Support added with #1040. Reopen if you notice problems. |
I have a Fineoffset-WH32B as well as 8 AmbientWeather-WH31E. The problem im running into is the newer version issues on April 7 now sees my AmbientWeather-WH31E devices as Fineoffset-WH32B devices but has bad data, and missing info. IE: the humidity is 171% on my one device, and it lost the 'channel' information which helped me understand which AmbientWeather-WH31E was which. |
The protocols are somewhat similar. The AmbientWeather-WH31E has a stronger checksum which will reject almost all bad data. The Fineoffset-WH32B might get false positives, but it should only (wrongly) decode the AmbientWeather-WH31E packets occasionally. |
Should be fixed with 78b7449 |
I am trying to map the WA5WH32B with rtl_433 to add new device support. When run:
rtl_433 -G -f 914980000
I see good data from my WH65B and WH31E without issue, but I do not see the WH32B. When I attempt to restart the WS32B by removing the battery and replacing, I receive:
pulse_FSK_detect(): Maximum number of pulses reached!
I have done this several times and the error is consistently reproducible. I also tried removing and replacing the battery on my WH31E and received the same error.
I am not sure if the devices just send some junk on the first packet, or if the code is misreading what it is getting.
I also do not see the WH32B in the trace, but I see all other data.
Help on the error trapping would be great.
{"time" : "2019-02-01 16:37:05", "model" : "Fine Offset WH65B", "id" : 41, "temperature_C" : 9.400, "humidity" : 44, "wind_dir_deg" : 119, "wind_speed_ms" : 1.084, "gust_speed_ms" : 1.530, "rainfall_mm" : 134.112, "uv" : 231, "uvi" : 0, "light_lux" : 16585.000, "battery" : "OK", "mic" : "CRC"}
{"time" : "2019-02-01 16:37:21", "model" : "Fine Offset WH65B", "id" : 41, "temperature_C" : 9.400, "humidity" : 46, "wind_dir_deg" : 128, "wind_speed_ms" : 1.084, "gust_speed_ms" : 1.530, "rainfall_mm" : 134.112, "uv" : 209, "uvi" : 0, "light_lux" : 15980.000, "battery" : "OK", "mic" : "CRC"}
{"time" : "2019-02-01 16:37:31", "model" : "AmbientWeather-WH31E", "id" : 226, "channel" : 2, "battery" : "OK", "temperature_C" : 19.000, "humidity" : 29, "data" : "0300000000", "mic" : "CRC"}
{"time" : "2019-02-01 16:37:31", "model" : "AmbientWeather-WH31E", "id" : 226, "channel" : 2, "battery" : "OK", "temperature_C" : 19.000, "humidity" : 29, "data" : "0300000000", "mic" : "CRC"}
{"time" : "2019-02-01 16:37:37", "model" : "Fine Offset WH65B", "id" : 41, "temperature_C" : 9.400, "humidity" : 45, "wind_dir_deg" : 125, "wind_speed_ms" : 1.402, "gust_speed_ms" : 1.530, "rainfall_mm" : 134.112, "uv" : 192, "uvi" : 0, "light_lux" : 15500.000, "battery" : "OK", "mic" : "CRC"}
{"time" : "2019-02-01 16:37:50", "model" : "AmbientWeather-WH31E", "id" : 219, "channel" : 1, "battery" : "OK", "temperature_C" : 7.900, "humidity" : 51, "data" : "1300000000", "mic" : "CRC"}
{"time" : "2019-02-01 16:37:50", "model" : "AmbientWeather-WH31E", "id" : 219, "channel" : 1, "battery" : "OK", "temperature_C" : 7.900, "humidity" : 51, "data" : "1300000000", "mic" : "CRC"}
pulse_FSK_detect(): Maximum number of pulses reached!
{"time" : "2019-02-01 16:38:09", "model" : "Fine Offset WH65B", "id" : 41, "temperature_C" : 9.300, "humidity" : 45, "wind_dir_deg" : 119, "wind_speed_ms" : 0.255, "gust_speed_ms" : 0.510, "rainfall_mm" : 134.112, "uv" : 178, "uvi" : 0, "light_lux" : 14942.000, "battery" : "OK", "mic" : "CRC"}
{"time" : "2019-02-01 16:38:25", "model" : "Fine Offset WH65B", "id" : 41, "temperature_C" : 9.300, "humidity" : 46, "wind_dir_deg" : 119, "wind_speed_ms" : 0.701, "gust_speed_ms" : 1.020, "rainfall_mm" : 134.112, "uv" : 174, "uvi" : 0, "light_lux" : 14880.000, "battery" : "OK", "mic" : "CRC"}
The text was updated successfully, but these errors were encountered: