Closed cmgrayb closed 1 month ago
With a current version of rtl_433 you can use -R 259:v
to get the raw codes. That should enable us to verify the decoding.
Thank you. Using -R 259:v, I see the following (and it is not as simple as off by a decimal I'm afraid):
rtl_433 version 23.11-160-gf0ba1538 branch master at 202408270014 inputs file rtl_tcp RTL-SDR
New defaults active, use "-Y classic -s 250k" if you need the old defaults
MQTT: Publishing MQTT data to 192.168.1.40 port 1883
MQTT: Publishing device info to MQTT topic "rtl_433/garage-pi4-1/devices[/type][/model][/subtype][/channel][/id]".
MQTT: Publishing events info to MQTT topic "rtl_433/garage-pi4-1/events".
MQTT: Publishing states info to MQTT topic "rtl_433/garage-pi4-1/states".
Found Rafael Micro R820T tuner
SDR: Using device 0: Realtek, RTL2838UHIDIR, SN: 00000001, "Generic RTL2832U OEM"
Exact sample rate is: 1000000.026491 Hz
[R82XX] PLL not locked!
Allocating 15 zero-copy buffers
Auto Level: Current noise level -20.5 dB, estimated noise -19.1 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.4 dB, estimated noise -18.8 dB
thermopro_tp829b_decode: Packet too long: 716 bits
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -17.4 dB, estimated noise -17.9 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.6 dB, estimated noise -18.2 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -19.5 dB, estimated noise -19.0 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -19.0 dB, estimated noise -18.7 dB
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -16.2 dB, estimated noise -16.5 dB
Auto Level: Current noise level -19.0 dB, estimated noise -19.0 dB
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.7 dB, estimated noise -19.6 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -20.8 dB, estimated noise -21.1 dB
thermopro_tp829b_decode: Checksum error, calculated 78, expected d0
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 263 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 264 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.8 dB, estimated noise -19.3 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.2 dB, estimated noise -17.6 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 265 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 317 bits
thermopro_tp829b_decode: Checksum error, calculated e1, expected ec
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.9 dB, estimated noise -19.2 dB
thermopro_tp829b_decode: Packet too long: 347 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 264 bits
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.8 dB, estimated noise -18.8 dB
thermopro_tp829b_decode: Packet too long: 278 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Checksum error, calculated 1d, expected 76
Auto Level: Current noise level -18.6 dB, estimated noise -18.8 dB
thermopro_tp829b_decode: Packet too long: 261 bits
thermopro_tp829b_decode: Checksum error, calculated 27, expected cb
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
pulse_slicer_pcm: ThermoPro TP829b Meat Thermometer 4 coated probes codes [{260}aaaaaaaaaaad55692a96ea2887c5f2f6efb77dba3ed2d2d2d2d20000000000000]
Auto Level: Current noise level -18.2 dB, estimated noise -18.5 dB
thermopro_tp829b_decode: Checksum error, calculated a9, expected d9
thermopro_tp829b_decode: Packet too long: 281 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 262 bits
Auto Level: Current noise level -20.4 dB, estimated noise -20.7 dB
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 262 bits
thermopro_tp829b_decode: Checksum error, calculated 21, expected eb
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.5 dB, estimated noise -18.4 dB
thermopro_tp829b_decode: Packet too long: 264 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 263 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 264 bits
Auto Level: Current noise level -18.4 dB, estimated noise -18.7 dB
thermopro_tp829b_decode: Packet too long: 269 bits
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 262 bits
thermopro_tp829b_decode: Sync word not found
Auto Level: Current noise level -18.2 dB, estimated noise -18.3 dB
thermopro_tp829b_decode: Packet too long: 263 bits
thermopro_tp829b_decode: Checksum error, calculated dd, expected eb
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Sync word not found
thermopro_tp829b_decode: Packet too long: 262 bits
thermopro_tp829b_decode: Sync word not found
MQTT explorer shows the following for output:
The device around the same time:
The interesting outputs are the ones where you see a (possibly wrong) decode and a "codes" line. We need one or more of those to reproduce what is going on the decoder.
It only gave me one of those. It doesn't seem to be very chatty in general.
pulse_slicer_pcm: ThermoPro TP829b Meat Thermometer 4 coated probes codes [{260}aaaaaaaaaaad55692a96ea2887c5f2f6efb77dba3ed2d2d2d2d20000000000000]
Hi @cmgrayb I worked on this decoder and I guess the pulse width is not good. Currently is 102 us and you have some bits shifted in your sample because of 1 extra bit. Can you please try to pick up some cu8 captures with -S known -R 259, I need to check the good pulse duration and this explains the bad checksum too. You can also check with -A to get the figures.
Happily. Here are the files that -S known -R259 generated. https://www.dropbox.com/scl/fo/h6q5tpfeaidpkmmt2yt06/APeXwYzbceT4CaiReop8zeE?rlkey=tdr046459nmav9169dfl2e25g&st=pjoir8fl&dl=0
@cmgrayb : unfortunately your samples are not good (with noise and other device Fineoffset-WH51), can you remove your antenna from rtl dongle, and put the tp829b probe at 50 cm and please try again the -S known -R 259 or -S unknown.
You can drag and drop here your zip file into the comment.
Notice that the signal from tp829b is not easy to decode as the pulse width changed in the transmit, starting at 96us during the preamble, then 99us at sync word level 0x2d552dd4, then around 105us at the end of the message, so increasing along the signal. Into the decoder I put an average 102us but could be a problem has we have failed codes because of 1 extra bit.
-S known did not create any files. Here is -S unknown. Files started and stopped in sync with the probe's power as expected. noattenna-R259-S_unknown.zip
You have the center frequency right on the transmission frequency (915.0M) which might be a problem. Try to offset a little, e.g. -f 915.1M
Retested with 914.9 and 915.1, neither of which saw the thermopro any longer. MQTT for the previous collections lists low/high as ~914.95-915.03, so I also tried 914.95 and 914.96, but no dice.
Can you get samples with -S unknown
on the offset frequency?
Sure thing. Here are two frequencies: 914.96 and 914.99. noantenna-R259-f_914.96and-f_914.99.zip
Looking at the samples in https://triq.org/pdv/ we can notice that the offset is not enough. The signal is centered on 915.00M with a deviation of 60-80 kHz, i.e. the two FSK freqs are at roughly 914.95M and 915.05M -- ideally you want to be 50 kHz outside of those, e.g. -f 915.1M
. Then both freqs show a nice sine wave. Our frequency-estimator is based on instant phase angle which is hard to read near 0 Hz given the noise.
@cmgrayb:
Thanks for the samples,
First remark, your signals are noisy, may be add a cable between the rtl dongle and the PC, 50 cm or 1 m USB extension cable (good quality with good shield and ferrite cores) to reduce the noise coming from the PC which creates rf interference.
I'm able to decode properly all your signals with this option:
rtl_433 -Y minmax -Y filter=30 *.cu8
Ok, all great info, thank you both. I will put a shielded USB between the Pi and the SDR to see if that reduces the noise enough to get accurate readings and then adjust the offset from there as needed. Sorry to bother you over a hardware issue.
Running on Raspberry Pi 4B, Pi OS, brand new build rtl_433 version 23.11-160-gf0ba1538 branch master at 202408270014 inputs file rtl_tcp RTL-SDR
Also enabled: protocol 78 # Fine Offset Electronics, WH25, WH32, WH32B, WN32B, WH24, WH65B, HP1000, Misol WS2320 Temperature/Humidity/Pressure Sensor protocol 142 # Fine Offset Electronics/ECOWITT WH51, SwitchDoc Labs SM23 Soil Moisture Sensor
The above protocols are successfully finding and displaying correct values for the detected devices.
To keep troubleshooting simple, I set the device to Celsius.
For sensors with a probe attached, at 27C on screen, the output is 275.89999
For sensors with no probe attached, the numbers range from 306.5 to 355.89999. On screen, it shows dashes (---). The values appear to possibly be the last known values for those sensors.
With probe attached, it looks like the output is possibly off by a decimal point.
I attempted to pull the protocol data over the air using '-S unknown' but I cannot figure out which of the 101 files it generated in a short time span I should be looking at, most of them appear to say:
Guessing modulation: Single pulse detected. Probably Frequency Shift Keying or just noise...
I'm willing to pull the required data if someone can point me at documentation for how to narrow it down.