Skip to content
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

Honeywell ActivLink Doorbell (868 Mhz) #652

Closed
Jc2k opened this issue Dec 17, 2017 · 13 comments
Closed

Honeywell ActivLink Doorbell (868 Mhz) #652

Jc2k opened this issue Dec 17, 2017 · 13 comments

Comments

@Jc2k
Copy link

Jc2k commented Dec 17, 2017

I'm trying to add support for Honeywell Actilink doorbells.

I'm running rtl_433 with:

/usr/local/bin/rtl_433 -f 868428000 -A

I'm expecting up to 2 packets from the doorbell - i believe the receiver potentially replies (the marketing material talks about a 'confidence LED' to indicate the button is working - the marketing doesn't make it clear whether it confirms the receiver got it or not. It might also be "forwarding" the event (again marketing material talks about range extending - 'Link two doorbells together to boost your range up to 400m.').

The analysis device picks out the following parameters:

Guessing modulation: Pulse Width Modulation with startbit/delimiter
Attempting demodulation... short_limit: 64, long_limit: 104, reset_limit: 117, demod_arg: 2
pulse_demod_pwm_ternary(): Analyzer Device 

So I took those parameters and added a new device. My callback just pretty prints the contents of the bitbuffer. Weirdly though instead of getting the same data as the auto-analysis pretty printed my callback seems to get called multiple times with bitbuffers that have 2 empty rows. If i increase the the reset_limit it can batch the packets together - and i'll get 2 lots of 25 rows that are empty.

I'm at a bit of a loss as to why the parameters detected automatically don't seem to work when plugged in manually.

Below is the full report it from the auto-analysis.

trying device  0:  Realtek, RTL2838UHIDIR, SN: 00000001
Found Rafael Micro R820T tuner
Using device 0: Generic RTL2832U OEM
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sample rate set to 250000.
Bit detection level set to 0 (Auto).
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 868428000 Hz.
Detected OOK package	@ 2017-12-17 10:36:40
Analyzing pulses...
Total count: 1200,  width: 146405		(585.6 ms)
Pulse width distribution:
 [ 0] count:  298,  width:    84 [83;87]	( 336 us)
 [ 1] count:  878,  width:    44 [43;47]	( 176 us)
 [ 2] count:   24,  width:   124 [124;126]	( 496 us)
Gap width distribution:
 [ 0] count:  298,  width:    35 [34;38]	( 140 us)
 [ 1] count:  877,  width:    75 [74;77]	( 300 us)
 [ 2] count:   24,  width:   114 [113;115]	( 456 us)
Pulse period distribution:
 [ 0] count: 1175,  width:   119 [117;123]	( 476 us)
 [ 1] count:   24,  width:   238 [238;240]	( 952 us)
Level estimates [high, low]:  15874,     26
Frequency offsets [F1, F2]:  -19098,      0	(-72.9 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with startbit/delimiter
Attempting demodulation... short_limit: 64, long_limit: 104, reset_limit: 116, demod_arg: 2
pulse_demod_pwm_ternary(): Analyzer Device 
bitbuffer:: Number of rows: 25 
[00] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[01] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[02] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[03] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[04] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[05] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[06] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[07] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[08] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[09] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[10] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[11] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[12] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[13] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[14] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[15] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[16] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[17] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[18] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[19] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[20] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[21] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[22] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[23] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[24] {24} 8d f5 00 : 10001101 11110101 00000000 
... Maximum number of rows reached. Message is likely truncated.

Detected OOK package	@ 2017-12-17 10:36:41
Analyzing pulses...
Total count: 1200,  width: 146438		(585.8 ms)
Pulse width distribution:
 [ 0] count:  886,  width:    44 [43;47]	( 176 us)
 [ 1] count:  290,  width:    84 [83;87]	( 336 us)
 [ 2] count:   24,  width:   124 [123;126]	( 496 us)
Gap width distribution:
 [ 0] count:  886,  width:    75 [74;77]	( 300 us)
 [ 1] count:  289,  width:    35 [34;38]	( 140 us)
 [ 2] count:   24,  width:   114 [114;116]	( 456 us)
Pulse period distribution:
 [ 0] count: 1175,  width:   119 [117;123]	( 476 us)
 [ 1] count:   24,  width:   239 [237;241]	( 956 us)
Level estimates [high, low]:  15886,     26
Frequency offsets [F1, F2]:  -18756,      0	(-71.6 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with startbit/delimiter
Attempting demodulation... short_limit: 64, long_limit: 104, reset_limit: 117, demod_arg: 2
pulse_demod_pwm_ternary(): Analyzer Device 
bitbuffer:: Number of rows: 25 
[00] {24} 20 00 01 : 00100000 00000000 00000001 
[01] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[02] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[03] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[04] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[05] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[06] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[07] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[08] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[09] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[10] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[11] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[12] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[13] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[14] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[15] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[16] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[17] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[18] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[19] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[20] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[21] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[22] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[23] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[24] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
... Maximum number of rows reached. Message is likely truncated.

Detected OOK package	@ 2017-12-17 10:36:41
Analyzing pulses...
Total count:   51,  width:  6344		(25.4 ms)
Pulse width distribution:
 [ 0] count:    3,  width:   123 [122;126]	( 492 us)
 [ 1] count:   12,  width:    84 [83;86]	( 336 us)
 [ 2] count:   36,  width:    44 [43;47]	( 176 us)
Gap width distribution:
 [ 0] count:    2,  width:   114 [114;115]	( 456 us)
 [ 1] count:   12,  width:    35 [34;37]	( 140 us)
 [ 2] count:   36,  width:    75 [74;77]	( 300 us)
Pulse period distribution:
 [ 0] count:    2,  width:   239 [238;240]	( 956 us)
 [ 1] count:   48,  width:   119 [117;123]	( 476 us)
Level estimates [high, low]:  15912,     26
Frequency offsets [F1, F2]:  -18446,      0	(-70.4 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with startbit/delimiter
Attempting demodulation... short_limit: 64, long_limit: 103, reset_limit: 116, demod_arg: 2
pulse_demod_pwm_ternary(): Analyzer Device 
bitbuffer:: Number of rows: 4 
[00] {0} : 
[01] {48} 8d f5 00 20 00 01 : 10001101 11110101 00000000 00100000 00000000 00000001 
[02] {0} : 
[03] {0} : 

Detected OOK package	@ 2017-12-17 10:36:42
Analyzing pulses...
Total count: 1200,  width: 146857		(587.4 ms)
Pulse width distribution:
 [ 0] count:    1,  width:    24 [24;24]	(  96 us)
 [ 1] count:   25,  width:   125 [123;128]	( 500 us)
 [ 2] count:  298,  width:    84 [81;88]	( 336 us)
 [ 3] count:  876,  width:    44 [41;49]	( 176 us)
Gap width distribution:
 [ 0] count:    1,  width:    25 [25;25]	( 100 us)
 [ 1] count:   25,  width:   115 [112;119]	( 460 us)
 [ 2] count:  298,  width:    35 [32;38]	( 140 us)
 [ 3] count:  875,  width:    75 [72;79]	( 300 us)
Pulse period distribution:
 [ 0] count:    1,  width:    49 [49;49]	( 196 us)
 [ 1] count:   25,  width:   240 [238;243]	( 960 us)
 [ 2] count: 1173,  width:   119 [116;124]	( 476 us)
Level estimates [high, low]:  15989,     12
Frequency offsets [F1, F2]:  -16661,      0	(-63.6 kHz, +0.0 kHz)
Guessing modulation: No clue...

Detected OOK package	@ 2017-12-17 10:36:43
Analyzing pulses...
Total count: 1200,  width: 146804		(587.2 ms)
Pulse width distribution:
 [ 0] count:  886,  width:    44 [41;48]	( 176 us)
 [ 1] count:  290,  width:    84 [81;89]	( 336 us)
 [ 2] count:   24,  width:   124 [123;127]	( 496 us)
Gap width distribution:
 [ 0] count:  885,  width:    75 [72;79]	( 300 us)
 [ 1] count:  290,  width:    35 [32;38]	( 140 us)
 [ 2] count:   24,  width:   115 [114;119]	( 460 us)
Pulse period distribution:
 [ 0] count: 1175,  width:   119 [116;124]	( 476 us)
 [ 1] count:   24,  width:   240 [238;244]	( 960 us)
Level estimates [high, low]:  15880,     12
Frequency offsets [F1, F2]:  -17137,      0	(-65.4 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with startbit/delimiter
Attempting demodulation... short_limit: 64, long_limit: 104, reset_limit: 120, demod_arg: 2
pulse_demod_pwm_ternary(): Analyzer Device 
bitbuffer:: Number of rows: 25 
[00] {26} 08 00 02 00 : 00001000 00000000 00000010 00
[01] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[02] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[03] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[04] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[05] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[06] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[07] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[08] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[09] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[10] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[11] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[12] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[13] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[14] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[15] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[16] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[17] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[18] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[19] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[20] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[21] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[22] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[23] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[24] {46} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 000010
... Maximum number of rows reached. Message is likely truncated.

Detected OOK package	@ 2017-12-17 10:36:43
Analyzing pulses...
Total count:   53,  width:  6524		(26.1 ms)
Pulse width distribution:
 [ 0] count:   39,  width:    44 [42;47]	( 176 us)
 [ 1] count:    2,  width:   124 [123;126]	( 496 us)
 [ 2] count:   12,  width:    84 [83;89]	( 336 us)
Gap width distribution:
 [ 0] count:   38,  width:    75 [72;78]	( 300 us)
 [ 1] count:    2,  width:   115 [114;116]	( 460 us)
 [ 2] count:   12,  width:    35 [31;37]	( 140 us)
Pulse period distribution:
 [ 0] count:   50,  width:   120 [117;123]	( 480 us)
 [ 1] count:    2,  width:   239 [239;240]	( 956 us)
Level estimates [high, low]:  15982,     12
Frequency offsets [F1, F2]:  -17380,      0	(-66.3 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with startbit/delimiter
Attempting demodulation... short_limit: 64, long_limit: 104, reset_limit: 117, demod_arg: 2
pulse_demod_pwm_ternary(): Analyzer Device 
bitbuffer:: Number of rows: 3 
[00] {2} 00 : 00
[01] {48} 8d f5 00 20 00 08 : 10001101 11110101 00000000 00100000 00000000 00001000 
[02] {1} 00 : 0
@Jc2k
Copy link
Author

Jc2k commented Dec 17, 2017

Test driver: https://github.com/Jc2k/rtl_433/blob/master/src/devices/honeywell_activlink.c

Have tried with short_limit, long_limit and reset_limit exactly as in output and increasing and reducing them as well.

Large reset_limit avoids lots of small empty events, but instead yields large (number of rows) empty events.

@Jc2k
Copy link
Author

Jc2k commented Dec 17, 2017

Samples added here: merbanan/rtl_433_tests#201

@zuckschwerdt
Copy link
Collaborator

PWM (ternary) looks right.

{48} 72 0a ff df ff f7 : 01110010 00001010 11111111 11011111 11111111 11110111

Also looks like the sample data.

The symbols are 480 us (120 samples @250K) long,
with 160 us pulse + 320 us gap ( = one bit)
and 320 us pulse + 160 us gap ( = zero bit)
and then a 480 us pulse + 480 us gap to terminate the packet

Perhaps try the feat-gdecode branch with

rtl_433 -q -X activelink:OOK_PWM_RAW:240:400:720:0:48 -r ../rtl_433_tests/tests/honeywell_activlink/01/one-press_868.428M_250k.cu8

that's OOK_PULSE_PWM_RAW with

short_limit = (160+320)/2; // Threshold between short and long pulse [us]
long_limit = (320+480)/2; //  Maximum gap size before new row of bits [us]
reset_limit = 480*1.5; // Maximum gap size before End Of Message [us].
demod_arg = 0; // Do not remove any startbits

which works well.

If you try

rtl_433 -q -X activelink:OOK_PWM_TERNARY:240:400:720:2:48 -r ../rtl_433_tests/tests/honeywell_activlink/01/one-press_868.428M_250k.cu8

which is OOK_PULSE_PWM_TERNARY with

short_limit = (160+320)/2; // Threshold between short and middle pulse [us]
long_limit = (320+480)/2; // Threshold between middle and long pulse [us]
reset_limit = 480*1.5; // Maximum gap size before End Of Message [us].
demod_arg = 2: // Short pulse is 0, middle is 1, long is sync

it doesn't work so well.

@zuckschwerdt
Copy link
Collaborator

Though

rtl_433 -q -X activelink:OOK_PWM_TERNARY:240:400:400:2:48 -r ../rtl_433_tests/tests/honeywell_activlink/01/one-press_868.428M_250k.cu8

i.e.reset_limit = 400; works but runs your callback for each packet.

@Breakerz
Copy link

I would like to buy this device as my doorbell for my home automation... do you think it’s will be add to the master branch ?

@zuckschwerdt
Copy link
Collaborator

Just use the -X codes given above and filter for your device id (match=). It's the prefered way for doorbell-style devices.

@Breakerz
Copy link

I got a regular Honeywell doorbell. I don't think the signal can ben demodulate. It's is possiblie trap the signal ? I just want to trigger my home assistant. I am confuse about short, long, reset limit... can you help me.

https://fccid.io/HS951380SL

The doorbell have 3 type of rings (set with a tiny selector switch)... this is ring #2.

sudo rtl_433 -f 345011000 -a -A
Tuned to 345011000 Hz.
*** signal_start = 677037, signal_end = 1028308
signal_len = 351271,  pulses = 1199
Iteration 1. t: 77    min: 52 (308)    max: 102 (692)    delta 362
Iteration 2. t: 77    min: 52 (308)    max: 102 (692)    delta 0
Distance coding: Pulse length 77

Short distance: 46, long distance: 96, packet distance: 1735

p_limit: 77
bitbuffer:: Number of rows: 25 
[00] {4} 40 : 0100
[01] {12} 30 40 : 00110000 0100
[02] {12} 30 40 : 00110000 0100
[03] {12} 30 40 : 00110000 0100
[04] {12} 30 40 : 00110000 0100
[05] {12} 30 40 : 00110000 0100
[06] {12} 30 40 : 00110000 0100
[07] {12} 30 40 : 00110000 0100
[08] {12} 30 40 : 00110000 0100
[09] {12} 30 40 : 00110000 0100
[10] {12} 30 40 : 00110000 0100
[11] {12} 30 40 : 00110000 0100
[12] {12} 30 40 : 00110000 0100
[13] {12} 30 40 : 00110000 0100
[14] {12} 30 40 : 00110000 0100
[15] {12} 30 40 : 00110000 0100
[16] {12} 30 40 : 00110000 0100
[17] {12} 30 40 : 00110000 0100
[18] {12} 30 40 : 00110000 0100
[19] {12} 30 40 : 00110000 0100
[20] {12} 30 40 : 00110000 0100
[21] {12} 30 40 : 00110000 0100
[22] {12} 30 40 : 00110000 0100
[23] {12} 30 40 : 00110000 0100
[24] {6} 30 : 001100
... Maximum number of rows reached. Message is likely truncated.

@klohner
Copy link
Contributor

klohner commented Sep 24, 2018

The doorbell detailed by @Jc2k seems to be very similar to the North American 916.8 MHz model variants I've been playing with. The only difference seems to be the frequency used.

I have a GitHub project started for the Honeywell Wireless Doorbell. Please let me know if you'd like to help with this effort!

@Jc2k
Copy link
Author

Jc2k commented Sep 24, 2018

@klohner Looking promising! I don't have much (any!) spare time right now but you want me to check anything out with my devices let me know and i'll see what i can do.

@zuckschwerdt
Copy link
Collaborator

Great work on the decoding! Just to clarify: a "doorbell-style" device to me means a (very) dumb device, usually built on some x1527 variant chip with a fixed 24-bit "payload".
The RCWL* look like a proper security system. with lots of useful data We should add a decoder for that.

@klohner
Copy link
Contributor

klohner commented Sep 24, 2018

@Jc2k @zuckschwerdt Thanks so much for the replies. Yes, these devices aren't really that "dumb" and I think a proper decoder for them would be useful.

I've put together a quick form to submit signals at https://goo.gl/forms/SuxA3qgVRivXmNMf1 if anyone would like to help with my efforts.

@merbanan
Copy link
Owner

merbanan commented Dec 6, 2018

#898 adds support for this. @zuckschwerdt can you review the code? All samples decode fine.

@merbanan
Copy link
Owner

merbanan commented Dec 9, 2018

Support for this merged. Closing issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants