SIGNALDuino Empfänger Firm- und Hardware

Begonnen von Ralf9, 02 Oktober 2016, 22:59:51

Vorheriges Thema - Nächstes Thema

habeIchVergessen

#840
beim Senden würde ich P0 auf -16000 setzen und 2x 0 in den Daten benutzen (wenn ich mich nicht täusche, ist da ein Limit im Sketch).

mal ein wenig mit den Daten gespielt (es geht ja nur um ein Muster)

P0=-32001;P1=15874;P2=-364;P3=447;P4=4060;P5=-762;P6=853;D=01232323232323232323232324

53265326535326535326265353262653265353535326265353265326262653265326265353535353532653535353262653265353265353535353535353532626

lSsLlSsLlSlSsLlSlSsLsLlSlSsLsLlSsLlSlSlSlSsLsLlSlSsLlSsLsLsLlSsLlSsLsLlSlSlSlSlSlSsLlSlSlSlSsLsLlSsLlSlSsLlSlSlSlSlSlSlSlSlSsLsL
1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0

10101101 10011001 01111001 10100010 10011111 10111100 10110111 11111100
AD99 79A2 9FBC B7FC


also die Frequenz kleiner 0 (z.B. -800) ist ein l (long low), > 0 L (long high)
sS sind die 400-ter (short low/high)

weiter angenommen es werden immer 2 Frequenzen verglichen (lS => 1 und sL => 0)

interessant währen noch die Taste und wie oft diese gedrückt wurde (z.B. im Abstand von 15 s mehrfache die gleiche)

plin

#841
Zitat von: habeIchVergessen am 22 Februar 2018, 20:53:36
interessant währen noch die Taste und wie oft diese gedrückt wurde (z.B. im Abstand von 15 s mehrfache die gleiche)
Na ja, ich habe viele Tasten oft gedrückt :-)

Es sind 6 Rolllädenmotoren, jeden kann ich mit up/stop/down ansteuern (also 6x8 Messreihen). Da der SIGNALduino nicht immer direkt im Log den MU-Code ausgewiesen hat, habe ich alles mögliche an "Press-Mustern" getestet (mal lang, mal kurz, mal kleiner/größerer Abstand ...). Bei Nutzung der realen Fernbedinung reagieren die Rolllädemotoren nach einer gefühlten halben Sekunde.

Ich hab also genug Material mitgeschnitten, um über Statisitken den vermutlich richtigen Code zu ermitteln.

Der Ansatz mit Übersetzung in "lSsLlSsLlS..." ist einer den ich noch nicht verfolgt habe.  Bei der Länge der einzelnen Impulse gibt es Schwankungen, deshalb bin ich mir nicht sicher, ob ich einen Mittelwert vergleichbarer Code-Reihen ansetzen sollte.

Das mit der 001 werde ich testen.

P.S. ich werde eine zweiten SIGNALduino bauen und kann dann ermitteln, ob die beiden SIGNALduinos die realen Signale identisch interpretieren bzw. ob das was der eine sendet sich vom Signal der Fernbedienung unterscheidet. Der cc1101 ist noch unterwegs ...
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

habeIchVergessen

ein Anfang wäre auch mit einer FB die Bits für die Tasten zu identizfizieren. Schauen, ob ein Tastendruck immer die gleiche Nachricht auslöst (du hattest erwähnt, das eine Nachricht zu unterschiedlichen Zeitpunkten eine Reaktion der Rollos auslöst), usw.

dann die Erkenntnisse mit den anderen FBs überprüfen.

plin

Es ist etwas komplizierter. Die Fernbedienung hat 4 Tasten. Mit der ersten wähle ich rollierend den Rollladenmotor aus. Die drei anderen sind dann up/stop/down.

Ich werde jetzt mal die bekannten Codes nach deinem Beispiel übersetzen und schauen was dabei herauskommt.
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

misux

 :-[

Hallo!

Ich habe eine Problem mit meinem neulich erworbenem signalDuino... Bekomme nicht wirklich irgend ein Signal empfangen. Habe es letzte Woche gekauft, es ist ein selbstbau. Ich möchte allerdings ausschließen das es an mir liegt das er nicht läuft... Könnte bitte jemand drüber schauen ob wenigstens die List einträge i.O. sind...

Wäre sehr dankbar.

Internals:
   Clients    :IT:CUL_TCM97001:SD_RSL:OREGON:CUL_TX:SD_AS:Hideki:SD_WS07:SD_WS09: :SD_WS:RFXX10REC:Dooya:SOMFY:SD_UT:SD_WS_Maverick:FLAMINGO:CUL_WS:Revolt: :FS10:CUL_FHTTK:Siro:FHT:FS20:SIGNALduino_un:
   DEF        /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A9ITHZZV-if00-port0@57600
   DMSG       nothing
   DevState   initialized
   DeviceName /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A9ITHZZV-if00-port0@57600
   FD         25
   ITClock    250
   LASTDMSG   nothing
   NAME       signalDuino
   NR         85
   NR_CMD_LAST_H 8
   PARTIAL   
   STATE      opened
   TIME       1519327681
   TYPE       SIGNALduino
   sendworking 0
   version    V 3.3.1-RC2 SIGNALduino cc1101 - compiled at Jan  6 2018 00:45:28
   MatchList:
     10:SD_WS07 ^P7#[A-Fa-f0-9]{6}F[A-Fa-f0-9]{2}(#R[A-F0-9][A-F0-9]){0,1}$
     11:SD_WS09 ^P9#F[A-Fa-f0-9]+
     12:SD_WS   ^W\d+x{0,1}#.*
     13:RFXX10REC ^(20|29)[A-Fa-f0-9]+
     14:Dooya   ^P16#[A-Fa-f0-9]+
     15:SOMFY   ^Ys[0-9A-F]+
     16:SD_WS_Maverick ^P47#[A-Fa-f0-9]+
     17:SD_UT   ^u30#.*
     18:FLAMINGO ^P13#[A-Fa-f0-9]+
     19:CUL_WS  ^K[A-Fa-f0-9]{5,}
     1:IT       ^i......
     20:Revolt  ^r[A-Fa-f0-9]{22}
     21:FS10    ^P61#[A-F0-9]+
     22:Siro    ^P72#[A-Fa-f0-9]+
     23:FHT     ^81..(04|09|0d)..(0909a001|83098301|c409c401)..
     24:FS20    ^81..(04|0c)..0101a001
     2:CUL_TCM97001 ^s[A-Fa-f0-9]+
     3:SD_RSL   ^P1#[A-Fa-f0-9]{8}
     4:OREGON   ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*
     5:CUL_TX   ^TX..........
     6:SD_AS    ^P2#[A-Fa-f0-9]{7,8}
     7:Hideki   ^P12#75[A-F0-9]+
     9:CUL_FHTTK ^T[A-F0-9]{8}
     X:SIGNALduino_un ^[u]\d+#.*
   QUEUE:
   READINGS:
     2018-02-22 19:20:43   ccconf          freq:433.920MHz bWidth:325KHz rAmpl:42dB sens:4dB  (DataRate:5603.79Baud)
     2018-02-22 22:20:04   ping            OK
     2018-02-22 20:28:03   state           opened
     2018-02-22 20:28:03   version         V 3.3.1-RC2 SIGNALduino cc1101 - compiled at Jan  6 2018 00:45:28
   XMIT_TIME:
     1519328111
     1519328115
     1519328117
     1519328120
     1519328134
     1519328143
     1519328148
     1519328173
   getcmd:
   keepalive:
     ok         1
     retry      0
   mcIdList:
   msIdList:
   muIdList:
     72
Attributes:
   flashCommand avrdude -c arduino -b [BAUDRATE] -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE]
   whitelist_IDs 72

habeIchVergessen

sieht eigentlich gut aus.

hast du mal verbose 4 probiert? zumindest im Log-File sollte dann etwas erscheinen.

plin

#846
Hallo habeIchVergessen,

Zitat von: habeIchVergessen am 22 Februar 2018, 20:53:36

P0=-32001;P1=15874;P2=-364;P3=447;P4=4060;P5=-762;P6=853;D=01232323232323232323232324

53265326535326535326265353262653265353535326265353265326262653265326265353535353532653535353262653265353265353535353535353532626

lSsLlSsLlSlSsLlSlSsLsLlSlSsLsLlSsLlSlSlSlSsLsLlSlSsLlSsLsLsLlSsLlSsLsLlSlSlSlSlSlSsLlSlSlSlSsLsLlSsLlSlSsLlSlSlSlSlSlSlSlSlSsLsL
1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0

10101101 10011001 01111001 10100010 10011111 10111100 10110111 11111100
AD99 79A2 9FBC B7FC


also die Frequenz kleiner 0 (z.B. -800) ist ein l (long low), > 0 L (long high)
sS sind die 400-ter (short low/high)

weiter angenommen es werden immer 2 Frequenzen verglichen (lS => 1 und sL => 0)

Ich habe mir einige meiner Messreihen angeschaut. Neben lS und sL finde ich auch andere Kombinationen.

Sehe ich es richtig, dass

  • immer zwei unterschiedliche Frequenzen aufeinander folgen müssen und
  • immer ein Nulldurchgang vorkommen muss?
  • Sie Summe aller low/high-Pärchen pro Steuercode muss bei allen Messreihen identisch sein.
D.h. die Kombinationen sl, ls, SL ,LS sind falsche Werte und nicht weiter zu betrachten.

Kann ich dem SIGNALduino eigentlich die Parameter P0-P6 vorgeben auf die er lauschen soll?

VG plin
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

habeIchVergessen

Zitat von: plin am 23 Februar 2018, 16:23:05
Sehe ich es richtig, dass
so war meine Arbeitshypothese.

Zitat von: plin am 23 Februar 2018, 16:23:05
Kann ich dem SIGNALduino eigentlich die Parameter P0-P6 vorgeben auf die er lauschen soll?
ist aus meiner Sicht nicht möglich.

plin

Eine Analyse weiter:

Rollladen 4 down
73DC BC21 3F74 B7FC
05FC E15D 3F74 B7FC
0B8B A0AE 3F74 B7FC
4CD1 BF45 3F74 B7FC
6EAE 04DA 3F74 B7FC
BC56 C68E 3F74 B7FC
CFC0 6175 3F74 B7FC
E7F9 8B24 3F74 B7FC

Rollladen 2 down
9EB5 A2F8 7F74 B7FC

Rollladen 3 down
CA10 58B5 BF74 B7FC

Für "down" kristallisiert sich  B7FC oder 74 B7FC in der letzten Gruppe heraus. "up" scheint auf B7FA zu enden.

Die Dritte Gruppe könnte der jeweilige Rollladen sein. Natürlich gibt es wieder Ausnahmen, wo die dritte Gruppe bei up und down voneinander abweicht. Ich führe das mal auf falsch erfasste Codes zurück.

Bleibt die Frage nach den ersten beiden Gruppen. Ist das ein rollierender Code? Ich habe 2 Fernbedienungen. Beide funktionieren unabhängig voneinander. Die von mir mitgeschnittenen Codes sind immer wieder nutzbar. Könnte es sein, dass man in den ersten beiden Gruppen einen Zufallscode überträgt der nur bestimmte Kriten erfüllen muss (z.B. eine Prüfsumme)???


FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

habeIchVergessen

einfach mal AABB CCDD für die ersten Nibble probieren. Wenn sich etwas bewegt, dann scheint es nur eine Art sync zu sein. Wenn es eine Prüfziffer ist, dann sollte bereits die Änderung eines Bits das Gegenteil bewirken (keine Aktion).

plin

Zitat von: habeIchVergessen am 23 Februar 2018, 18:39:54
einfach mal AABB CCDD für die ersten Nibble probieren. Wenn sich etwas bewegt, dann scheint es nur eine Art sync zu sein. Wenn es eine Prüfziffer ist, dann sollte bereits die Änderung eines Bits das Gegenteil bewirken (keine Aktion).
gibt's denn für meine MU-Codes auch eine andere  Sendeform statt raw oder muss ich die wieder in Zahlenkollonnen umrechnen?
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

habeIchVergessen

#851
bis dato gibt es nur raw (die Zahlenkolonnen).

Rollladen 4 down
E7F9 8B24 3F74 B7FC

Rollladen 2 down
9EB5 A2F8 7F74 B7FC

Rollladen 3 down
CA10 58B5 BF74 B7FC

alter Code
AD99 79A2 9FBC B7FC

also ich vermute
- der 9. Nibble ist der Kanal/Rollladen (4 bit)
- 10. - 15. Nibble ist der Code der FB (24 bit)
- der 16. Nibble ist die Taste (4 bit)

plin

#852
Zitat von: habeIchVergessen am 23 Februar 2018, 19:24:03
also ich vermute
- der 9. Nibble ist der Kanal/Rollladen (4 bit)
- 10. - 15. Nibble ist der Code der FB (24 bit)
- der 16. Nibble ist die Taste (4 bit)

Verdammt gut vermutet (fast so, als ob Du selbst den Code für die Steuerung geschrieben hättest :-)). Ich kann Deine Vermutung auf Basis meiner aufbereiteten Daten nachvollziehen

up/stop/down
D34E BC00 5F74 B7FE
.... .... .... ...E -> stop
875E 2E7E BF74 B7FA
.... .... .... ...A -> up
F4E4 33FA BF74 B7FC
.... .... .... ...C -> down


Rollladenmotor
Rolllade 1
4BE9 9ECF FFBC B7FC -> FFBC (12)
38B2 D909 FF74 B7FA -> FF74 (10)
.... .... F... .... -> R1

Rolllade 2
0FE8 A86C 7FBC B7FC -> 7FBC (29)
3301 53F9 7F74 B7FA -> 7F74 (21)
.... .... 7... .... -> R2

Rolllade 3
052A 5850 BF74 B7FE -> BF74 (30)
AD68 F6CB BFBC B7FC -> BFBC (21)
.... .... B... .... -> R3

Rolllade 4
4A39 0D05 3FBC B7FA -> 3FBC (14)
.... .... 3... .... -> R4

Rolllade 5
3E6E 7D95 DFBC B7FA -> DFBC (6)
9318 BE15 DF74 B7FE -> DF74 (6)
.... .... D... .... -> R5

Rolllade 6
97A1 D452 5FBC B7FA -> 5FBC (19)
6C35 EA08 5F74 B7FE -> 5F74 (11)
.... .... 5... .... -> R6


Fernbedienung

.... .... .FBC B7F. -> FB1
.... .... .F74 B7F. -> FB2


Ich stelle mir nur die Frage, ob der Hersteller wirklich das Risiko eingeht für die Adressierung der Motoren nur 4 Bits zu verwenden. Ich hatte damals 7 Motoren verbaut, da liegt die Wahrscheinlichkeit, dass zwei Motoren auf dieselbe Adresse hören, bei fast 50%. Andererseits wäre es aus merkwürdig, wenn der Code aller verbauten Motore auf ".F" endet (Ansatz Nibbel 9+10).

ok, aber ich könnte jetzt auf Basis dieser Erkenntnis einen raw-Code zusammenbauen (mit der Annahme, dass Nibbel 1-8 n ur sync sind zusätzlich zur Präambel). Das führt natürlich zu neuen Fragen:


  • Was mache ich mit den Nibbels 1-8? Ich vermute das soll eine Art weißes Rauschen der genutzten Frequenzen sein, damit sich der Empfänger darauf syncen kann. Muss da Varianz drin stecken oder kann das auch einfach nur ein einziges, sauberes Muster sein?
  • Soll ich für die Parameter P2/P3 und P5/P6 Mittelwerte der bisher gemessenen Werte ansetzen? Ich würde die Dsuer von P2/P3 und P5/P6 jeweils identisch wählen und nur low/high differenzieren.
  • Und wen mein durch Synthese erzeugter Code nicht funktioniert würde ich an den Parametern drehen statt am Code?
  • Und wenn auch das nicht hilft den SIGNALduino wo anders platzieren?

Aber ansonsten: schon mal ein herzliches Dankeschön, ohne Deine Tipps wäre ist nicht so schnell so weit gekommen.
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

plin

P.S. Der Motor, der sich bisher am stabilsten ansteuern ließ, reagiert auch auf die "begradigten" Parameter
SC;;SR;;P0=-16000;;P1=16000;;D=001;;SR;;R=10;;P2=-400;;P3=400;;P5=4000;;P6=800;;P7=-800;;D=...
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

habeIchVergessen

#854
ich würde P0 auch in die Wiederholungen beim Senden einbauen. ist ja "nur" eine Pause.

der sduino ist mit cc1101? wenn ja geht vielleicht geht noch was, wenn die Frequenz variiert wird.
auf welcher Frequenz empfängst du aktuell?868MHz