Honeywell ActivLink (Funkgong und PIR Bewegungssensor)

Begonnen von Ralf9, 13 November 2022, 17:01:34

Vorheriges Thema - Nächstes Thema

Ralf9

Hier geht's um Honeywell ActivLink Funkgong und PIR Bewegungssensor empfangen und senden mit dem SIGNALDuino
z.B. der DW915 Funkgong

https://github.com/klohner/honeywell-wireless-doorbell
https://github.com/merbanan/rtl_433/blob/master/src/devices/honeywell_wdb.c

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Zitat von: DOCa Cola am 21 Oktober 2022, 14:07:46
Ich habe ein Honeywell DW915 funk gong. Ich habe mir dafür einen Signalduino basierend auf dem arduino mini und cc1101 gebaut und diesen in FHEM registriert.
Meine Ziele sind einmal das Signal zu detektieren, dass der Funkgong aussendet, wenn jemand den angeschlossenen verdrahteten Knopf drückt, und einmal mit dem Signalduino ein Signal abzusetzen, was eine Fernbedienung immitiert und diesen mit dem Funkgong zu pairen um diesen via FHEM auszulösen. Das Datenpaket hierfür ist auf der Seite https://github.com/klohner/honeywell-wireless-doorbell dokumentiert.
Ich habe auch einen RTL-SDR mit dem ich die Kommunikation überwachen kann (Über SDRSharp oder rtl_433). Mit RTL_433 habe ich auch verifiziert, dass der Gong das entsprechende Honeywell Activelink basierende Paket absetzt.

Ich habe mir Bank 1 mit dem entsprechenden Modus belegt, der für Honeywell Activelink korrekt sein sollte.
Das habe ich so gemacht
Bank 1 selektieren
raw b1
Den folgenden Befehl habe ich in den sourcen für das FHEM modul gefunden, welches scheinbar schon die korrekten register für den CC1101 setzt:
rfmode HoneywActivL_SlowRf_FSK
und dann noch ein
raw b1W
damit die Bank der default ist.

Die Werte werden mir nun entsprechend angezeigt
cc1101_frequency 868.350
ccconf b=1 freq:868.350MHz bWidth:203KHz rAmpl:33dB sens:8dB (DataRate:6248.47Baud) [boffs=0100]
ccconfFSK ccmode=0 sync=D391 Modulation:2-FSK (SYNC_MODE:No preamble/sync) DEVIATN:50.781kHz
version V 3.3.5-dev210522 SIGNALduino (b1) - compiled at May 29 2022 23:18:12
versionmodul v3.4.7-ralf_24.06.


Ich stehe aber noch ein wenig auf dem Schlauch. Ich dachte, dass ich jetzt via
raw SN;R=13;N=1;D=dbf860200009;
ein entsprechendes Datenpaket absetzen kann. Tatsächlich passiert da auch etwas, aber das ist dann kein 2FSK moduliertes Signal (es hat nur eine Spitze).
Ich hoffe hier kann mir jemand weiterhelfen.
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

@killah78 hat auch Honeywell dw915s
siehe hier

Zitat von: killah78 am 09 April 2021, 22:28:01
Wenn ich ein neues FSK Gerät einbauen wollen würde, wie müsste ich das analysieren? Also muss da die Modulation und baudrate usw bekannt sein? Aktuelles Beispiel ist eine Honeywell Funktürklingel. Protokoll ist soweit bekannt, aber ist ja dann auch eine Frage der Modulation etc.
Wie muss ich da vorgehen?
Also es geht in dem Fall um das hier:
Protokoll: https://github.com/klohner/honeywell-wireless-doorbell
rtl_433 unterstützt es auch: https://github.com/merbanan/rtl_433/blob/master/src/devices/honeywell_wdb.c

Kann man da etwas abgucken?

Zitat von: Ralf9 am 09 April 2021, 22:48:21
Hier steht was über FSK
ZitatWhen the wireless doorbell button is pressed, it sends out a signal centered at 916.8 MHz. It seems to be using 2FSK modulation with a 50 kHz deviation. The modulation rate seems to be 6250 baud, so each HIGH or LOW symbol is 160 microseconds (μs).

Zitat von: Ralf9 am 16 April 2021, 20:49:22
@killah78

bitte versuche mal folgendes:

Mit
get sduino raw e
die cc1101 Speicherbank auf default zurücksetzen
mit
get sduino raw CW1200,1550
das Reg 0x12 auf 0 und das Reg 0x15 auf 50 setzen

evtl muß noch die Frequenz, rAmpl und sens angepasst werden.

Ich konnte mit dieser konfig damit von einem sduino zu einem anderen senden:
SRA;R=3;P0=480;P1=-480;P2=160;P3=-160;P4=320;P5=-320;D=014343434343434343252525434343254325432543252525;

Ich bin gerade dabei ins 00_SIGNALduino.pm Modul einzubauen, daß bei get ccconf auch die deviation angezeigt wird (siehe Anlage)

Gruß Ralf

Zitat von: killah78 am 20 April 2021, 12:13:33
Ich habe jetzt mal die neuste FW geflashed. War noch auf 4.1.1.
Dann nach dem Reset und CW1200,1550 kam noch kein Empfang.
Ich habe dann noch die Baudrate angepasst mit CW1057,11F8
Und tatsächlich empfange ich etwas, was ich dem Türgong zuordne:
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Zitat von: DOCa Cola am 11 November 2022, 14:42:29
Habe heute nochmal ein bischen getestet und das generierte Signal vom SDuino mit dem originalen Honeywell verglichen. RTL_433 erkennt das vom SDuino erzeugte Signal nicht.

Ich habe die Signale dann mal mit dem Universal Radio Hacker angesehen. Was mir auffällt ist, dass aus irgendeinem Grund die Bitsendelänge bei dem vom SDuino ausgegebenen Signal etwa bei 130us liegt statt der 160us aus der ActivLink Spezifikation. Siehe Screenshot im Anhang. Von oben nach unten ist das der originale Honeywell sender, dann einmal gesendet mit
set SDuino868 sendMsg P200#0xdbf860200009#R50
und dann
set SDuino868 raw SR;;R=50;;P0=-381;;P1=100;;P2=260;;P3=-220;;P4=419;;P5=-544;;D=52310102310231023101023101010102310232310101010101010231010101010101010101010101010101010101010234;;

Wenn Du eine empfangene MU-Nachricht mit "set SDuino868 raw SR;;R=50;;P0=.." wieder sendest, funktioniert demnach auch nicht?

Zitat von: DOCa Cola am 12 November 2022, 08:50:04
Hier mal ein Verbose log von der Aktivität, wenn ich den originalen Honeywell Gong klingeln lasse. Vielleicht kannst du mir helfen, die entsprechende Raw message daraus zu generieren. Ganz blicke ich noch nicht durch.
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Bitte ersetze in der lib/signalduino_protocols.pm bei der Protokoll ID 200 die folgenden Einträge. Sie werden erst nach einem fhem neustart aktiv
one             => [2,-1],
zero            => [1,-2],
start           => [-3],
end             => [3],
clockabs        => 160,



Ein "set SDuino868 sendMsg P200#0xdbf860200009#R50" ergibt dann:
SR;R=50;P0=-480;P1=320;P2=-160;P3=160;P4=-320;P5=480;D=01212341212341212121212121234343434121234343434343434123434343434343434343434343434343434123434125;


In Deinem log war nur eine brauchbare Nachricht dabei, die anderen sind zu kurz:
MU;P0=-173;P1=325;P3=147;P4=-332;P5=476;P6=-480;CP=3;R=245;D=1034341056101034101034101010101010103434343410103434343434343410343434343434343434343434343434343410343410561010341010341010101010101034343434101034343434343434103434343434343434343434343434343434103434105;
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Zitat von: DOCa Cola am 13 November 2022, 14:35:13
Ich habe die Änderungen durchgeführt. Im Universal Radio Hacker sieht das Signal jetzt gut aus von den Laufzeiten. Ich konnte jetzt auch den Honeywell Funkgong mit einem vom Signalduino erzeugten Signal pairen. Super :D

Als Notiz für diejenigen, die einen virtuellen Sender haben wollen, reicht es hier die Kennung zu ändern. Vereinfacht ändert man dazu einfach die ersten 2 Bytes (die ausführlichere Spezifikation findet man unter https://github.com/klohner/honeywell-wireless-doorbell). Mit manchen von mir getesteten Kennungen wollte sich die die Türklingel allerdings nicht pairen. Das Muster ist mir nicht ganz klar, aber man probiert halt rum bis die Klingel zufrieden ist.


P200#0xXXXX60200009#R50
       ^^^^
       Kennung


Jetzt fehlt mir nur noch der umgekehrte Weg. Wie bekomme ich ein Event in FHEM, wenn der Signalduino vom Funkgong ein eingehendes Klingelsignal erhält? Im Log ist es ja wunderbar aufgeführt, aber wie komme ich da nun als Event ran?
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

ZitatAls Notiz für diejenigen, die einen virtuellen Sender haben wollen, reicht es hier die Kennung zu ändern.
Hast Du auch das Parity Bit anpassen müssen?

ZitatWie bekomme ich ein Event in FHEM, wenn der Signalduino vom Funkgong ein eingehendes Klingelsignal erhält?
Es gibt ein Event, dies müsstest Du im Event Monitor sehen
2022-11-13 15:10:39 SIGNALduino sduinoD DMSG u200#DBF860200009
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

DOCa Cola

Die Parität habe ich komplett vergessen, deswegen hat die Klingel diese Nachrichten fallengelassen.  ;D
Ich habe ein kleines script geschrieben, mit denen man die Datenpakete fix und fertig zusammenbauen kann.
https://gist.github.com/DOCaCola/83e6aa26f37915cd290202be5f158702
Hier kann man es verwenden:
https://bl.ocks.org/DOCaCola/raw/83e6aa26f37915cd290202be5f158702/?raw=true