Entwicklung SIGNALDuino Empfänger Firm- und Hardware V4 für Maple Mini und ESP32

Begonnen von Ralf9, 13 Dezember 2019, 12:48:26

Vorheriges Thema - Nächstes Thema

beaune

So, ich habs jetzt gewagt und den DoppelCUL auf Firmware V4.1.2 umgeflasht sowie die 00_SIGNALduino.pm und die signalduino_protocols.pm ausgetauscht. Hat auch funktioniert, ich konnte das Device als Signalduino in fhem einbinden und es empfängt auch.

Was mir jetzt aber noch nicht klar ist, ist die Sache mit den zwei Frequenzen. Der jetzt eingebundene Signalduino benutzt die 433 MHz. Was muß ich tun, um auch 868 MHz parallel zu benutzen? Muß ich dann so ähnlich wie beim DoppelCUL vorher auch ein zweites Device definieren? Oder kann ich den Signalduino-Device sagen, dass es beide Kanäle nutzen soll? Das Attribut sendSlowRF_A_IDs hab ich gefunden, aber das ist noch nicht alles glaube ich. Hier bräuchte ich nochmal Eure Hilfe.

Ralf9

Hier unter erste Schritte steht was
https://forum.fhem.de/index.php/topic,106278.msg1032098.html#msg1032098
muss ich für das zweite slowrf noch etwas anpassen und ergänzen hab es angepasst
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

beaune

Super, hat funktioniert! Danke für die Unterstützung! Interessant was die Nachbarn alle für mir bis dato unbekannte Geräte haben  ;)

Ich hab jetzt noch zwei Fragen:

  • Kann man eigentlich irgendwo sehen, über welches der Module die Nachricht gekommen ist? Ist sicher keine kriegsentscheidende Funktion, aber ich fand es schon gut, dass man vorher bei den Devices sehen konnten, über welchen CUL (und damit über welche Frequenz) etwas empfangen wurde. Jetzt ist die Quelle im Internal LASTInputDev immer dieselbe. Vielleicht könnte man dafür ein weiteres Internal definieren, wo diese Info ankommt. Oder vielleicht sieht man es auch irgendwo schon, und ich hab es übersehen.
  • Jetzt da ich SlowRF im Griff habe würde mich noch interessieren, wie man FSK-Devices definiert. Ein paar Beispiele gibts ja schon, aber ich vermisse noch die dahinter stehenden Regeln, also welche Register muß ich bei welchen Modulationsparametern wie beschreiben. Gibts dazu schon was? Und noch was Grundlegendes: schließen sich SlowRF und FS auf demselben Modul eigentlich aus? Vermutlich ja, oder?

Ralf9

ZitatKann man eigentlich irgendwo sehen, über welches der Module die Nachricht gekommen ist?
Direkt nicht. Zwischen SlowRF Modul A und Modul B gibts momentan keine Unterscheidungsmöglichkeit.

MU-, MS- und MC-Nachrichten kommen von einem Modul mit SlowRF.
MN-Nachrichten kommen von einem Modul mit FSK
Bei MN-Nachrichten gibts die Konfigvariable N, damit ist eine Zuordnung zum cc1101 Modul möglich. Z.B. N=3 ist Mode 3 - PCA 301

Zitatwürde mich noch interessieren, wie man FSK-Devices definiert. Ein paar Beispiele gibts ja schon, aber ich vermisse noch die dahinter stehenden Regeln, also welche Register muß ich bei welchen Modulationsparametern wie beschreiben
Die Register sind im Datenblatt vom cc1101 beschrieben.

Verschiedene Modulationsarten schliessen sich gegenseitig aus

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

killah78

Zitat von: killah78 am 14 Februar 2021, 18:32:02
Aber ich versuche das mal mit SDRSharp. Kann aber ein paar Tage dauern.

Hier bin ich wieder mit meinem TX35-IT (Lacrosse Mode 2). Also so wie ich das in SDR Sharp deuten kann, sollte die Frequenz so passen.
Ich empfange jetzt aber nix mehr. Weder mit Signalduino, no mit rtl_433. Naja. Ich lege den Sensor einfach wieder weg, brauche ihn auch nicht wirklich, da ich eh größtenteils 433 Thermometer habe.

Aber ein anderes Thema: 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?





Ralf9

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).

Demnach lässt es sich evtl auch als ASK/OOK (SlowRF) empfangen
ZitatBecause it is using digital symbols over 2FSK modulation, it essentially looks like two separate, simultaneous, out-of-phase OOK transmissions 100 kHz away from each other, at 916.85 MHz and and 916.75 MHz. In FSK parlance, these higher and lower frequencies are respectively referred to as the "mark" and "space" frequencies.
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

killah78

Ok, das heißt über SlowRF sollte ich das Signal schon empfangen? Wie ich das lese wird zwar 2FSK eingesetzt, aber es wird die exakt gleiche Bitfolge frequenzverschoben gesendet? So dass man mit SlowRF die Nachricht dekodieren kann?
Um jetzt erstmal irgendwas vom Funkgong zu empfangen, muss ich da in SlowRF etwas verändern? So ohne Weiteres habe ich im Protokoll nix dem Funkgong zuordnen können.

Der andere Test wäre ein Empfang per FSK. Da muss ich Modulation 2FSK, Deviation und Baudrate setzen. Das würde schon reichen? Oder gib es da weitere relevante Register die passen müssen?

PS: Es handelt sich übrigens um das hier: Honeywell dw915s


Ralf9

Zitatout-of-phase OOK transmissions 100 kHz away from each other,
Die SlowRF Frequenz ist demnach ca 100 kHz neben der FSK Frequenz
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

killah78

Hi,
ich habe jetzt mal rumprobiert, war aber leider erfolglos.
Ausser dass ich bald eingeliefert werde, weil meine Familie sich sorgen macht, warum ich ständig zur Tür renne und klingele. :-)

Also ich konnte mit rtl_433 per OOK kein Signal empfangen, wie es auf der Github Seite beschrieben war. Jedoch aber per FSK
Ich empfange per sdrsharp ein 2FSK Signal (Siehe Anhang).
Ich habe versucht ein Register in den Signalduino zu schreiben, der das FSK Signal empfängt. Leider kommt das Signal nicht rein.
Ich muss sagen, ich bin da auch eher unbedarft. Habe die RFStudio Software benutzt und mit Daten gefüllt, die ich für richtig erachte.
Also ich erwarte ein Signal mit 160/320 Flanken im Protokoll. Sehe ich aber nicht.
Kannst du mal über die Register gucken, ob dir da was auffällt?

ccregAll:

ccreg 00: 29 2E 06 07 D3 91 FF 04 05 00 00 06 00 21 65 6A
ccreg 10: 87 F8 03 22 F8 50 07 30 18 16 6C 03 40 91 87 6B
ccreg 20: FB 56 10 E9 2A 00 1F 41 00 59 7F 3F 81 35 09

cc1101 reg detail - addr, name, value, (OOK default),[reset]
0x00 IOCFG2   - 0x29 (0D)
0x01 IOCFG1   - 0x2E
0x02 IOCFG0   - 0x06 (2D) [3F]
0x03 FIFOTHR  - 0x07
0x04 SYNC1    - 0xD3
0x05 SYNC0    - 0x91
0x06 PKTLEN   - 0xFF (3D) [0F]
0x07 PKTCTRL1 - 0x04
0x08 PKTCTRL0 - 0x05 (32) [45]
0x09 ADDR     - 0x00
0x0A CHANNR   - 0x00
0x0B FSCTRL1  - 0x06 [0F]
0x0C FSCTRL0  - 0x00
0x0D FREQ2    - 0x21 (10) [1E]
0x0E FREQ1    - 0x65 (B0) [C4]
0x0F FREQ0    - 0x6A (71) [EC]
0x10 MDMCFG4  - 0x87 (57) [8C]
0x11 MDMCFG3  - 0xF8 (C4) [22]
0x12 MDMCFG2  - 0x03 (30) [02]
0x13 MDMCFG1  - 0x22 (23)
0x14 MDMCFG0  - 0xF8 (B9)
0x15 DEVIATN  - 0x50 (00) [47]
0x16 MCSM2    - 0x07
0x17 MCSM1    - 0x30 (00)
0x18 MCSM0    - 0x18 [04]
0x19 FOCCFG   - 0x16 (14) [36]
0x1A BSCFG    - 0x6C
0x1B AGCCTRL2 - 0x03 (07)
0x1C AGCCTRL1 - 0x40 (00)
0x1D AGCCTRL0 - 0x91 (90)
0x1E WOREVT1  - 0x87
0x1F WOREVT0  - 0x6B
0x20 WORCTRL  - 0xFB (F8)
0x21 FREND1   - 0x56
0x22 FREND0   - 0x10 (11) [16]
0x23 FSCAL3   - 0xE9 [A9]
0x24 FSCAL2   - 0x2A [0A]
0x25 FSCAL1   - 0x00 [20]
0x26 FSCAL0   - 0x1F [0D]
0x27 RCCTRL1  - 0x41
0x28 RCCTRL0  - 0x00
0x29 FSTEST   - 0x59
0x2A PTEST    - 0x7F
0x2B AGCTEST  - 0x3F
0x2C TEST2    - 0x81
0x2D TEST1    - 0x35
0x2E TEST0    - 0x09



ccconf: freq:868.300MHz bWidth:203KHz rAmpl:33dB sens:8dB (DataRate:6248.47Baud)

Modulation:2-FSK (SYNC_MODE:30/32 sync)



Edit: Ich habe jetzt auch Syncmode 0 eingestellt (SYNC_MODE:No preamble/sync),  da das so in dem Python Testprogramm mit RFLib für CC1111 eingestellt ist. Aber da bekomme ich auch nichts im Log.

Ralf9

Da gibt es noch mehr zu beachten, ich habe hier schon angefangen und werde da noch ein paar wichtige Sachen ergänzen
https://forum.fhem.de/index.php/topic,106594.0.html
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

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

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

killah78

Hi Ralf,
vielen Dank für deinen Support.
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:

Edit: Empfang im Anhang, hat hier nicht reingepasst.

Ich kann daraus aber noch nichts deuten und erkenne keine 160 oder 320.

Cconf:

ccconf: freq:868.350MHz bWidth:325KHz rAmpl:42dB sens:4dB (DataRate:6248.47Baud)

Modulation:2-FSK (SYNC_MODE:No preamble/sync)

Ralf9

Die Nachrichten passen, die meisten MU-Nachrichten sind aber zu kurz, evtl passt die datarate noch nicht ganz.
Diese MU-Nachricht enthält 2 Nachrichten
MU;P0=-381;P1=100;P2=260;P3=-220;P4=419;P5=-544;CP=1;R=248;D=010101010101010101010101010101023101023452310102310231010101023101010102310232310101010101010231010101010101010101010101010101010231010234523101023102310101010231010101023102323101010101010102310101010101010101010101010101010102310102345231010231023101010102310;e;
Sie fängt mit 45 an
45231010231023101010102310101010231023231010101010101023101010101010101010101010101010101023101023
45231010231023101010102310101010231023231010101010101023101010101010101010101010101010101023101023


Mit dieser Protokolldefinition
"200" => # Honeywell ActivLink, wireless door bell, PIR Motion sensor
{
name            => 'Honeywell ActivLink',
comment         => 'Wireless doorbell and motion sensor (PIR)',
changed         => '20210420 new',
id              => '200',
knownFreqs      => '868.3',
one             => [2.6,-2.2],
zero            => [1 ,-3.8],
start           => [4.2,-5.4],
clockabs        => 100,
clockpos        => ['zero',0],
format          => 'twostate',
#modulation      => '2-FSK',
preamble        => 'u200#',
#clientmodule    => '',
#modulematch     => '',
length_min      => '48',
length_max      => '48',
}


ergibt sich:
2021.04.20 22:45:05.694 4 : sduinoD/msg get raw: MU;P0=-381;P1=100;P2=260;P3=-220;P4=419;P5=-544;CP=1;R=248;D=010101010101010101010101010101023101023452310102310231010101023101010102310232310101010101010231010101010101010101010101010101010231010234523101023102310101010231010101023102323101010101010102310101010101010101010101010101010102310102345231010231023101010102310;e;
2021.04.20 22:45:05.694 4 : sduinoD: Fingerprint for MU Protocol id 200 -> Honeywell ActivLink matches, trying to demodulate, msgClock=100 (zero) is in tol
2021.04.20 22:45:05.694 5 : sduinoD: Starting demodulation (StartStr: 45 cut Pos 39; Signal: (?:23|10){48,} Pos 0) length_min_max (48..48) length=48
2021.04.20 22:45:05.694 5 : sduinoD: dispatching bits: 100101000010000101100000001000000000000000001001
2021.04.20 22:45:05.694 4 : sduinoD: decoded matched MU Protocol id 200 dmsg u200#942160200009 length 48 RSSI = -78
2021.04.20 22:45:05.694 5 : sduinoD: 1.restarting demodulation at Pos 98 regex ((?:45)((?:23|10){48,}))
2021.04.20 22:45:05.694 5 : sduinoD: dispatching bits: 100101000010000101100000001000000000000000001001
2021.04.20 22:45:05.694 4 : sduinoD: decoded matched MU Protocol id 200 dmsg u200#942160200009 length 48 repeat 1 RSSI = -78
2021.04.20 22:45:05.694 4 : sduinoD: equalDMS u200#942160200009 (2)
2021.04.20 22:45:05.696 5 : sduinoD: dispatch u200#942160200009
2021.04.20 22:45:05.696 4 : SIGNALduino_unknown incomming msg: u200#942160200009
2021.04.20 22:45:05.696 4 : SIGNALduino_unknown rawData: 942160200009
2021.04.20 22:45:05.696 4 : SIGNALduino_unknown Protocol: 200
2021.04.20 22:45:05.696 4 : SIGNALduino_unknown converted to bits: 100101000010000101100000001000000000000000001001


mit dieser Bescheibung
https://github.com/klohner/honeywell-wireless-doorbell#the-data-frame

ist mit der rawdata 942160200009

KEY ID: 94216
Die 2 ist DEVICE TYPE (10 = doorbell)

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

killah78

Danke. Das Empfangen funktioniert damit gut. Ein Senden konnte ich aber noch nicht hinbekommen.
Dazu folgende Fragen:
Die High und Low Symbole entsprechen ja nicht der Beschreibung. Ein Symbol sollte ja 160ms entspechen. Hier ist es aber 100 (P1) bzw. 130 (2xP2). In Summe passen ja die 480ms für 3 Symbole bzw. 1 Bit.Warum ist das so und kann man das noch irgendwie anpassen, damit auch ein Senden möglich wäre?
Und die 45 für den Start sind die End-Symbole (3x High) bei Abschluss der Vor-Sequenz und die Start-Symbole (3x Low) bei Anfang der aktuellen Sequenz, müsste also laut Beschreibung auch eher 480, -480 (statt P4=419, P5=-544) sein.

ich hatte mal sowas probiert, aber erfolglos:
set raw signalduino SR;;R=3;;P0=-381;;P1=100;;P2=260;;P3=-220;;P4=419;;P5=-5441;;D=4523101023102310101010231010101023102323101010101010102310101010101010101010101010101010102310102345;;

Worin liegt denn der Unterschied zwischen format=twostate und modulation=2FSK?

PS: Senden würde eben die Möglichkeit geben bis zu 5 Sender mit unterschiedlichen Blinkzeichen oder Gongtönen zu nutzen. Also für unterschiedliche "Benachrichtigungen".

Ralf9

wenn Du das cc1101 Modul A verwendest, dann muß hinter das SR ein A (set raw signalduino SRA; )

bitte teste mal folgendes:

set raw signalduino SRA;;R=3;;P0=-381;;P1=100;;P2=260;;P3=-220;;P4=419;;P5=-544;;D=45231010231023101010102310101010231023231010101010101023101010101010101010101010101010101023101023;;
oder
set raw signalduino SRA;;R=3;;P0=-381;;P1=100;;P2=260;;P3=-220;;P4=419;;P5=-544;;D=52310102310231010101023101010102310232310101010101010231010101010101010101010101010101010231010234;;


ZitatDie High und Low Symbole entsprechen ja nicht der Beschreibung. Ein Symbol sollte ja 160ms entspechen. Hier ist es aber 100 (P1) bzw. 130 (2xP2). In Summe passen ja die 480ms für 3 Symbole bzw. 1 Bit.Warum ist das so und kann man das noch irgendwie anpassen, damit auch ein Senden möglich wäre?
Auf Anhieb habe ich keine Idee. Ändert sich was, wenn Du die datarate erhöhst?

ZitatWorin liegt denn der Unterschied zwischen format=twostate und modulation=2FSK?
wird z.Zt. beim verarbeiten und demodulieren nicht verwendet.

Es wird nur zur Unterscheidung der Nachrichtentypen verwendet.

bei format = 'manchester' ist die Protocol ID eine MC-Nachricht
wenn es modulation gibt, dann ist die Protocol ID eine MN-Nachricht
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