klohner / honeywell-wireless-doorbell

Understanding the RF signal used in the Honeywell RCWL300A, RCWL330A, Series 3, 5, 9 and Decor Series Wireless Chimes
MIT License
63 stars 4 forks source link

CC1111 registers #2

Open killah78 opened 3 years ago

killah78 commented 3 years ago

Hi, could you make progress in receiving the doorbell with a CC1101? This is the plan I would like to try. Could you provide the used registers used for your CC1111 of your working example, or even the CC1101 example, if you tried? Currently I just recieve the signal via rtl_433, but need it in cc1101 to use it in home automation. Would be gread if you could publish the used registers. Thanks.

klohner commented 3 years ago

Sorry, I have not yet tried to get the CC1101 working to receive this signal. The closest I've come is using the Yard Stick One with its CC1111 to transmit a signal to the doorbell receiver. I've added honeywell_doorbell.py to the repository as an example of this transmit code for the YS1. I don't have an available environment to test to make sure this still works, but perhaps this will help with your effort.

If you have one of the CC1101 modules (hopefully one with antenna circuitry targeted for the right frequency -- search AliExpress for 915MHz or 868MHz versions -- and an Arduino device, here's an article I found with some code that might get you started:

https://www.deviceplus.com/arduino/arduino-garage-opener-universal-radio-interface/

I'll be receiving a Flipper Zero (based on the STM32 MCU with the CC1101 chip) sometime around May-August of this year (2021) and hope to get something working on that device.

If you do get anything working, I'd be very interested to see what you've come up with!

killah78 commented 3 years ago

Just a quick info: We now successfully can receive the signal via CC1101 in a SIGNALDUINO. I now successfully receive and send in FHEM (home automation) via a Signalduino. Thanks to Ralf9 (dev in fhem forum) it is now possible (https://forum.fhem.de/index.php/topic,106278.msg1147491.html#msg1147491). Used Register for that: cc1101 reg detail - addr, name, value 0x00 IOCFG2 - 0x0D 0x01 IOCFG1 - 0x2E 0x02 IOCFG0 - 0x2D 0x03 FIFOTHR - 0x07 0x04 SYNC1 - 0xD3 0x05 SYNC0 - 0x91 0x06 PKTLEN - 0x3D 0x07 PKTCTRL1 - 0x04 0x08 PKTCTRL0 - 0x32 0x09 ADDR - 0x00 0x0A CHANNR - 0x00 0x0B FSCTRL1 - 0x06 0x0C FSCTRL0 - 0x00 0x0D FREQ2 - 0x21 0x0E FREQ1 - 0x65 0x0F FREQ0 - 0xE8 0x10 MDMCFG4 - 0x57 0x11 MDMCFG3 - 0xF8 0x12 MDMCFG2 - 0x00 0x13 MDMCFG1 - 0x23 0x14 MDMCFG0 - 0xB9 0x15 DEVIATN - 0x50 0x16 MCSM2 - 0x07 0x17 MCSM1 - 0x00 0x18 MCSM0 - 0x18 0x19 FOCCFG - 0x14 0x1A BSCFG - 0x6C 0x1B AGCCTRL2 - 0x07 0x1C AGCCTRL1 - 0x00 0x1D AGCCTRL0 - 0x90 0x1E WOREVT1 - 0x87 0x1F WOREVT0 - 0x6B 0x20 WORCTRL - 0xF8 0x21 FREND1 - 0x56 0x22 FREND0 - 0x11 0x23 FSCAL3 - 0xEF 0x24 FSCAL2 - 0x2C 0x25 FSCAL1 - 0x17 0x26 FSCAL0 - 0x1F 0x27 RCCTRL1 - 0x41 0x28 RCCTRL0 - 0x00 0x29 FSTEST - 0x59 0x2A PTEST - 0x7F 0x2B AGCTEST - 0x3F 0x2C TEST2 - 0x88 0x2D TEST1 - 0x31 0x2E TEST0 - 0x0B

But unfortunately the flanks are reognized differntly: one => [2.6,-2.2], zero => [1 ,-3.8], start => [-5.4], end => [4.2],

Currently don't know why is that. Perhaps datarate? But for me I am happy to receive it in the home automation environment. :-)

klohner commented 3 years ago

Good stuff! Took a quick look through this thread and will see if I can test with some hardware when I get some time.

I'd need to read up more on the SIGNALDUINO syntax, but perhaps my naming of the ONE/ZERO or MARK/SPACE symbols of the protocol may be inconsistent with how the cc1101 defines them. Is that what one => [2.6,-2.2], zero => [1 ,-3.8], start => [-5.4], end => [4.2], is referring to? I'm happy to know you found something that works and perhaps rewording my document to be more consistent with what the cc1101 uses is in order.

One thing I noticed in this post is that you're sending a message of 0x942160200009 instead of 0x942160200000 (which would unset the RELAY bit and flip the PARITY bit accordingly) or maybe 0x952160200001 which is the hex code for the doorbell message you used in the msg seen in a previous post (which is a slightly different KEY ID).

A "RELAY" bit in the message signifies that this message is being resent from a receiver in reaction to an original message from a doorbell, and is not the original message from the doorbell itself. Receivers, upon receiving a doorbell code, immediately rebroadcast the message, setting the RELAY bit and flipping the PARITY bit accordingly, to help extend the signal from a doorbell to more distant receivers. However, a more distant receiver that only sees the relayed message (and not the original doorbell message) will not relay what it already sees as a relayed message. A receiver may sound, though, if it receives and recognizes either an original or relayed message. This is a subtle difference that may not have any effect in your particular environment with a single doorbell and receiver, but it's important to understand.

gedger commented 7 months ago

@killah78, I'm trying to replicate your success and get an ESP32 Signalduino working as a receiver but I'm struggling to find all the information from the link you provided, relying totally on translation....My end goal is to be able to get the ActiveLink output into HomeAssistant, possibly by MQTT....

So I have compiled and downloaded Signalduino from https://github.com/Ralf9/SIGNALDuino/tree/dev-r422_cc1101

I have connected to my WiFi network and can telnet into the board OK. I now need to configure the board to the ActiveLink protocol at 868MHz, so from https://github.com/Ralf9/RFFHEM/blob/dev/FHEM/lib/signalduino_protocols.pm I have extracted the configuration line

"HoneywActivL__SlowRf_FSK"       => 'CW000D,022D,0307,04D3,0591,063D,0704,0832,0D21,0E65,0FE8,1087,11F8,1200,1323,14B9,1550,1700,1818,1914,1B43,1C00,1D91,23E9,242A,2500,2611,3D00,3E00,4048,4177,4253,436C,446F,4577,4652,4746',

Converted to a format that I think the SignalDuino needs.

CW000D 022D 0307 04D3 0591 063D 0704 0832 0D21 0E65 0FE8 1087 11F8 1200 1323 14B9 1550 1700 1818 1914 1B43 1C00 1D91 23E9 242A 2500 2611 3D00 3E00 4048 4177 4253 436C 446F 4577 4652 4746

Sending this gets the command echoed back with an ok at the end.

CW000D 022D 0307 04D3 0591 063D 0704 0832 0D21 0E65 0FE8 1087 11F8 1200 1323 14B9 1550 1700 1818 1914 1B43 1C00 1D91 23E9 242A 2500 2611 3D00 3E00 4048 4177 4253 436C 446F 4577 4652 4746 ok

However, I'm a bit stuck on how to test reception, sending a transmission from an ActiveLink device does not elicit any response from the Signalduino. I'm obviously missing something, can you offer any pointers?