NorthernMan54 / rtl_433_ESP

Trial port of the rtl_433 Library for use with OpenMQTTGateway on a ESP32 and a CC1101 Transceiver
GNU General Public License v3.0
520 stars 125 forks source link

Support of Klimalogg Pro Sensor #143

Open riegelbrau opened 5 months ago

riegelbrau commented 5 months ago

Current Situation

In the current version the sensor [150]* Klimalogg from merbanan's rtl_433 project is not listed as supported. In the source code I see, that it has OOK_PULSE_NRZS modulation. From my running instance of rtl_433 I get these MQTT messages: grafik There I see MOD = ASK. Is this supported by rtl_433_ESP?

Proposed Change

Support the Klimalogg sensor like in rtl_433. The advantage is to get data from the following sensors:

In my home brewing environment I could then replace one instance of rtl_443 (for 868 MHz) by a LilyGo Lora 32 board for 868 MHz.

Additional Context

No response

NorthernMan54 commented 5 months ago

ASK is similar to FSK so it is supported

The decoder is included within the source code, but it is listed as disabled here - https://github.com/NorthernMan54/rtl_433_ESP/blob/276bc2cc6cef73037aaf3325b69be99ccd139742/src/rtl_433/devices/klimalogg.c#L112

The disabled flag was copied from the rtl_433 package - https://github.com/merbanan/rtl_433/blob/f23b80f7975ebb49242e4017aafed870c35e30d0/src/devices/klimalogg.c#L112

You could try flipping disabled to 0, and rebuilding. As it was disabled during the build process, and is the only device leveraging OOK_PULSE_NRZS I'm not 100% confident it will work, as the code would not have been exercised during testing. But give it a try, worst case is that you would need to undo it.

riegelbrau commented 5 months ago

How can I get a verbose log from rtl_433_ESP in the OMG console like this?

WM: [1] AutoConnect WM: [2] ESP32 event handler enabled WM: [1] AutoConnect: ESP Already Connected WM: [1] STA static IP: WM: [2] setSTAConfig static ip not set WM: [1] AutoConnect: SUCCESS *WM: [1] STA IP Address: 10.0.0.245 Registering protocol [1] "Akhan 100F14 remote keyless entry" Registering protocol [2] "EMOS E6016 weatherstation with DCF77" Registering protocol [3] "Nexus, FreeTec NC-7345, NX-3980, Solight TE82S, TFA 30.3209 temperature/humidity sensor" Registering protocol [4] "Generic Remote SC226x EV1527" Registering protocol [5] "Wireless Smoke and Heat Detector GS 558"

I tried several compiler directives without success. Help appreciated!

Regards, Christoph

NorthernMan54 commented 5 months ago

It’s not wired to do that

the omg serial console uses a different logging library to achieve the web console

riegelbrau commented 5 months ago

I now understand, that the rtl log is going to the serial console, but where can I find a description of the compiler directives to trace the rtl_433_ESP activities inside OMG on my LilyGo 868 MHz board.

Regarding my issue I checked the source code and figured out, that the klimalogg protocol is in the copy sequence for OOK modulation, so it cannot be activated with FSK. Next point ist, that the klimalogg.c file contains a OOK_PULSE_NRZS. If the statement above, that it might be a FSK modulation, is correct, would the code process it in an appropriate manner.

For debugging with my sensors I need some hints for tracing and debugging.

riegelbrau commented 5 months ago

Found the compiler directives in the ReadMe!👍

NorthernMan54 commented 5 months ago

As I’m using the chipset signal demodulator for FSK and OOK, it is not feasible to receive both at the same time.

riegelbrau commented 5 months ago

I know that and I tried to create a binary with klimalogg being activated while FSK is activated, too. What I mean is that you wrote

ASK is similar to FSK so it is supported but from the code in signalDecoder.cpp the klimalogg device is in the memcpy sequence for OOK:

if (rtl_433_ESP::ookModulation) {
  ...
  memcpy(&cfg->devices[79], &kerui, sizeof(r_device));
  memcpy(&cfg->devices[80], &klimalogg, sizeof(r_device));
  memcpy(&cfg->devices[81], &lacrossetx, sizeof(r_device));
  ... }

So if I compile with OOK_MODULATION=false to get the OMG image compiled with FSK, because "ASK is similar to FSK", then the klimalogg device is not copied at all and cannot work.

May be I don't understand you right. Should I compile with OOK and the modulation code for ASK will nevertheless be activated?

I did so and I've got these results:

rtl_433_ESP(7): Average RSSI Signal -93 dbm, adjusted RSSI Threshold -84, samples 50000
rtl_433_ESP(7): Average RSSI Signal -93 dbm, adjusted RSSI Threshold -84, samples 50000
pulse_slicer_nrzs: Klimalogg codes [{740}edb6dbfbfb6f6def6f6db6db7b7b7f7b6dbfb7f7b6f7f6dbedb6dedb6f6defb7f6dbdb7b6ffbfb6f7b6db6f7b7ffb7fedb6dbdb7f6db6fedbdfdb7ffb6dbfb7bfbdfdb6dfdb6db7f7bdfdb6db6dedbdb7b6fffdff6dfdbedbdbdb6db6]
pulse_slicer_nrzs: Klimalogg codes [{1083}edb6dbfbfb6f6def6f6db6db7b7b7f7b6dbfb7f7b6f7f6dbedb6dedb6f6defb7f6dbdb7b6ffbfb6f7b6db6f7b7ffb7fedb6dbdb7f6db6fedbdfdb7ffb6dbfb7bfbdfdb6dfdb6db7f7bdfdb6db6dedbdb7b6fffdff6dfdbedbdbdb6db6db6db6dbedbdb6f6ffb7f6fbdeffb7bfedffffffffffffffffbfffedeffbfff7f7f6fffdfffffffeffbffc]
pulse_slicer_nrzs: Klimalogg codes [{1086}edb6dbfbfb6f6def6f6db6db7b7b7f7b6dbfb7f7b6f7f6dbedb6dedb6f6defb7f6dbdb7b6ffbfb6f7b6db6f7b7ffb7fedb6dbdb7f6db6fedbdfdb7ffb6dbfb7bfbdfdb6dfdb6db7f7bdfdb6db6dedbdb7b6fffdff6dfdbedbdbdb6db6db6db6dbedbdb6f6ffb7f6fbdeffb7bfedffffffffffffffffbfffedeffbfff7f7f6fffdfffffffeffbffd8]
pulse_slicer_nrzs: Klimalogg codes [{1092}edb6dbfbfb6f6def6f6db6db7b7b7f7b6dbfb7f7b6f7f6dbedb6dedb6f6defb7f6dbdb7b6ffbfb6f7b6db6f7b7ffb7fedb6dbdb7f6db6fedbdfdb7ffb6dbfb7bfbdfdb6dfdb6db7f7bdfdb6db6dedbdb7b6fffdff6dfdbedbdbdb6db6db6db6dbedbdb6f6ffb7f6fbdeffb7bfedffffffffffffffffbfffedeffbfff7f7f6fffdfffffffeffbffdb6]
pulse_slicer_nrzs: Klimalogg codes [{1110}edb6dbfbfb6f6def6f6db6db7b7b7f7b6dbfb7f7b6f7f6dbedb6dedb6f6defb7f6dbdb7b6ffbfb6f7b6db6f7b7ffb7fedb6dbdb7f6db6fedbdfdb7ffb6dbfb7bfbdfdb6dfdb6db7f7bdfdb6db6dedbdb7b6fffdff6dfdbedbdbdb6db6db6db6dbedbdb6f6ffb7f6fbdeffb7bfedffffffffffffffffbfffedeffbfff7f7f6fffdfffffffeffbffdb6db6d8]
pulse_slicer_nrzs: Klimalogg codes [{1175}edb6dbfbfb6f6def6f6db6db7b7b7f7b6dbfb7f7b6f7f6dbedb6dedb6f6defb7f6dbdb7b6ffbfb6f7b6db6f7b7ffb7fedb6dbdb7f6db6fedbdfdb7ffb6dbfb7bfbdfdb6dfdb6db7f7bdfdb6db6dedbdb7b6fffdff6dfdbedbdbdb6db6db6db6dbedbdb6f6ffb7f6fbdeffb7bfedffffffffffffffffbfffedeffbfff7f7f6fffdfffffffeffbffdb6db6dbdb7b6db7b6fb7f6c]
pulse_slicer_nrzs: Klimalogg codes [{1522}edb6dbfbfb6f6def6f6db6db7b7b7f7b6dbfb7f7b6f7f6dbedb6dedb6f6defb7f6dbdb7b6ffbfb6f7b6db6f7b7ffb7fedb6dbdb7f6db6fedbdfdb7ffb6dbfb7bfbdfdb6dfdb6db7f7bdfdb6db6dedbdb7b6fffdff6dfdbedbdbdb6db6db6db6dbedbdb6f6ffb7f6fbdeffb7bfedffffffffffffffffbfffedeffbfff7f7f6fffdfffffffeffbffdb6db6dbdb7b6db7b6fb7f6dbdfdedfffbfbdfdff6ffffb7b6dedfffb6db6f7bfb6db6df6db6dedbdbdb6db6dedb6fff6db6f7db7b6dff0]
Analyzing pulses...
Total count:  324,  width: 107.92 ms        (107925 S)
Pulse width distribution:
 [ 0] count:  215,  width:   63 us [57;84]  (  63 S)
 [ 1] count:   26,  width:  192 us [186;196]    ( 192 S)
 [ 2] count:   59,  width:  127 us [120;133]    ( 127 S)
 [ 3] count:   13,  width:  271 us [252;321]    ( 271 S)
 [ 4] count:    8,  width:  392 us [320;451]    ( 392 S)
 [ 5] count:    1,  width: 1724 us [1724;1724]  (1724 S)
 [ 6] count:    1,  width:  832 us [832;832]    ( 832 S)
 [ 7] count:    1,  width:    0 us [0;0]    (   0 S)
Gap width distribution:
 [ 0] count:   26,  width:  256 us [256;261]    ( 256 S)
 [ 1] count:    9,  width:  763 us [640;837]    ( 763 S)
 [ 2] count:  115,  width:   63 us [59;73]  (  63 S)
 [ 3] count:   67,  width:  128 us [124;133]    ( 128 S)
 [ 4] count:   38,  width:  192 us [190;196]    ( 192 S)
 [ 5] count:   37,  width:  350 us [320;388]    ( 350 S)
 [ 6] count:   25,  width:  497 us [444;579]    ( 497 S)
 [ 7] count:    3,  width: 1154 us [1028;1284]  (1154 S)
 [ 8] count:    2,  width: 2468 us [2308;2628]  (2468 S)
 [ 9] count:    1,  width: 1924 us [1924;1924]  (1924 S)
Pulse period distribution:
 [ 0] count:   62,  width:  350 us [316;388]    ( 350 S)
 [ 1] count:   10,  width:  839 us [708;899]    ( 839 S)
 [ 2] count:   74,  width:  127 us [121;132]    ( 127 S)
 [ 3] count:   66,  width:  192 us [187;200]    ( 192 S)
 [ 4] count:   44,  width:  255 us [248;260]    ( 255 S)
 [ 5] count:   48,  width:  498 us [444;580]    ( 498 S)
 [ 6] count:   12,  width:  639 us [636;643]    ( 639 S)
 [ 7] count:    3,  width: 1216 us [1090;1348]  (1216 S)
 [ 8] count:    2,  width: 1920 us [1853;1988]  (1920 S)
 [ 9] count:    2,  width: 2656 us [2624;2688]  (2656 S)
Pulse timing distribution:
 [ 0] count:  330,  width:   63 us [57;84]  (  63 S)
 [ 1] count:   64,  width:  192 us [186;196]    ( 192 S)
 [ 2] count:  126,  width:  128 us [120;133]    ( 128 S)
 [ 3] count:   59,  width:  281 us [252;327]    ( 281 S)
 [ 4] count:   35,  width:  404 us [320;452]    ( 404 S)
 [ 5] count:    2,  width: 1824 us [1724;1924]  (1824 S)
 [ 6] count:   17,  width:  543 us [451;644]    ( 543 S)
 [ 7] count:    8,  width:  802 us [707;837]    ( 802 S)
 [ 8] count:    1,  width:    0 us [0;0]    (   0 S)
 [ 9] count:    3,  width: 1154 us [1028;1284]  (1154 S)
 [10] count:    2,  width: 2468 us [2308;2628]  (2468 S)
 [11] count:    1,  width:    0 us [0;0]    (   0 S)
Guessing modulation: Non Return to Zero coding (Pulse Code)
Attempting demodulation... short_width: 63, long_width: 63, reset_limit: 64512, sync_width: 0
Unsupported