SIGNALDuino - Analyse unbekannter Funkprotokolle

Begonnen von plin, 26 Februar 2018, 17:42:45

Vorheriges Thema - Nächstes Thema

plin

Hallo,

dieser Thread wurde aus dem SIGNALDuino-Thread ausgelagert und soll Hilfestellung bei der Analyse mitgeschnittener Funkprotokolle geben.

VG plin

Edit 8.4.2018: Es entsteht gerade ein Wiki-Artikel https://wiki.fhem.de/wiki/Unbekannte_Funkprotokolle mit den gesammelten Erkenntnissen.
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

RIO-Funkprotokoll

übernommen aus dem Original-Thread https://forum.fhem.de/index.php/topic,58396.msg771128.html#msg771128

Hallo,

meine Rollladenmotoren nutzen das RIO-Funksystem. Nach Angabe des Herstellers ist es ein hauseigenes Protokoll, keiner der bekannten Standards. Die Frequenz ist 868 MHz. Sowohl auf dem Motor als auch der Fernbedienung ist RC15 angegeben. Ich habe eine Fernbedienung für max. 8 Motoren vom Typ HS 8 RIO im Einsatz. Ziel ist es die Rollläden über FHEM anzusteuern.

Ich habe einen V 3.3.1-dev SIGNALduino cc1101 - compiled at Mar 10 2017 22:54:50 im Einsatz. Der cc1101 ist die kleine 868 MHz-Version mit der gewendelten Antenne.
ccconf: freq:868.000MHz bWidth:650KHz rAmpl:42dB sens:4dB (DataRate:5603.79Baud)

Ich habe viele Mitschnitte dessen gesammelt, was meine mitgelieferte Fernbedienung lt. SIGNALduino aussendet, auf github gepostet und erste hilfreiche Hinweise bekommen.

Die Sender senden ein Protokoll das vom SIGNALduino als MU halbwegs brauchbar verarbeitet werden kann.

Die Mitschnitte zeigen ein Format
P0=-32001;P1=15874;P2=-364;P3=447;P4=4060;P5=-762;P6=853;D=0123232323232323232323232453265326535326535326265353262653265353535326265353265326262653265326265353535353532653535353262653265353265353535353535353532626;

Ralf9 hat mich auf die Spur gebracht, dass die Sequenzen mit einer Präambel "01232323232323232323232324" beginnen und danach ein sich wiederholender Steuercode kommt. Senden kann man so etwas mit
set mySIGNALduino raw SC;;SR;;P0=-32001;;P1=15874;;D=01;;SR;;R=20;;P0=-32001;;P1=15874;;P2=-364;;P3=447;;P4=4060;;P5=-762;;P6=853;;D=23232323232323232323232453265326535326535326265353262653265353535326265353265326262653265326265353535353532653535353262653265353265353535353535353532626;;

Ich habe die Mitschnitte unter dem Blickwinkel einer sauberen Präambel analysiert/gefiltert und den rohen Steuercode extrahiert. Der Parameterblock unterscheidet sich von Command zu Command, scheint aber als Grundraster so etwas in der Größenordnung wie
P0=-32000;P1=16000;P2=-400;P3=400;P4=4000;P5=-800;P6=800
zu haben. Wenn ich die real gemessenen Parameter mit den Zahlen des Steuercodes ausmultipliziere, komme ich immer auf ca. 90 mSec. Ich scheine also auf einem brauchbaren Weg zu sein.

Die Liste der vermutlich brauchbaren Codes habe ich per Script durchgetestet und die extrahiert, bei denen der Rollladenmotor reagierte. Das gab dann sozusagen die Erstaussattung der Steuercodes.

Als erstes habe ich dann festgestellt, dass vom Obergeschoss aus der entfernteste Rollladenmotor nicht reagierte. Eine Verlagerung meines Raspi mit dem SIGNALduino (=keine Betondecke mehr) brachte den Erfolg. Die Sendeleistung habe ich vorsorglich auf 10dB erhöht.

Ich beobachte ferner, dass die Rollladenmotoren nicht stabil reagieren. Verschiedene Standorte des Raspi/SIGNALduino im Erdgeschoss, teils Antenne nach oben gerichtet, teils horizontal, brachten unterschiedliche Ergebnisse. Den Wiederholungsfaktor für den Steuercode muss ich teilweise auf 30-50 erhöhen (50 = 5 Sekunden senden). Außerdem habe ich das Gefühl, als ob der SIGNALdunio bei zuviel Last den Sendebtetrieb einstellt. Führe ich denselben Befehl Stunden später aus reagiert der Rollladenmotor.

Nun meine Fragen:

  • Sendet der SIGANLduino/cc1101 jedes Mal wenn er senden soll oder gibt es Beschränkungen, um den Funkverkehr in innerhalb legaler Grenzen zu halten?
  • Welche Richtcharakteristik hat die Wendelantenne? Kugelförmig? Wie soll ich den SIGNALduino ausrichten?
  • Hat sich jemand mal mit den als MU mitgeschnittenen Sequenzen auseinandergesetzt und diese weiter analysiert?
  • Wie komme ich auf der Basis von nn brauchbaren Codes zu dem optiomalen, bei dem die Motoren jedesmal reagieren?

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

plin

erste Hilfreiche Antwort von habeIchVergessen im Original-Thread

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

nächster Schritt von plin

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.


Ansatz wurde von habeIchVergessen bestätigt
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

#4
Eine Analyse von plin 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)???

Korrektur von habeIchVergessen

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)

Eine weitere Analyse von plin bestätigte diesen Ansatz (dank zweier Fernbedienungen):

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


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

plin

Zitat von: habeIchVergessen am 24 Februar 2018, 10:35:48
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
Ich habe bereits mit Frequenz und Bandbreite rumgespielt. Der Empfang klappt nur bei 868.000 MHz und 650 kHz Bandbreite.

Antwort von habeIchVergessen

ändert sich das Sendeverhalten bei einem kurzen und langen Tastendruck?

Antwort von plin/Analayse von habeIchVergessen

zeigte, dass auch zwei drei kurze mitgeschnittene MU-Sequenzen in SUmme einen brauchbaren Code ergeben.
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

Aktueller Stand bei Öffnung dieses Themas

Ich habe mittlerweile weitere Erkenntnisse zu den Nibbles: Die sind fernbedienungs-, motor und richtungsabhängig. Einer meiner Motoren ist eben mit dem down-Nibble beim up-Command schön brav nach unten gefahren :-)

Die Synthese scheint es also (bisher noch) nicht zu bringen. Auf Basis der jetzigen Erkenntnisse lassen sich aber zumindest aus den mitgeschnittenen Codes sehr präzise die halbwegs brauchbaren rausfischen.


Antwort von habeIchVergessen

was sendest du?
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

Zitat von: plin am 26 Februar 2018, 18:01:03
was sendest du?

Motor: 4
Richtung: 1 (up)
Faktor: 10
Fernbedienung: 2
Nibble: 27
set mySIGNALduino raw SC;;SR;;P0=-16000;;P1=16000;;D=001;;SR;;R=10;;P0=-16000;;P1=16000;;P2=-400;;P3=400;;P4=4000;;P5=-800;;P6=800;;D=23232323232323232323232453532626265353262653535326535353262653535353262653535353262626262626535353535353265353532653262653265353265353535353535353265326;;


"53265326" am Ende des Codes steht für "up", "down" wäre "53532626"
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

das Rollo reagiert zeitnah auf die FB hattest du geschrieben.
Wenn dem so ist, dann sind Pausen von mehreren Sekunden vor dem ersten Signal vermutlich nicht richtig. ggf. ist das ein Bug beim Empfang.

Deshalb habe ich den Teil sSsSsSsSsSsSsSsSsSsSsSsP nicht als Vor- sondern Nachspann eingebaut. Die erste SR habe ich weggelassen, weil das 48s warten sind.

SR;;R=5;;P0=-800;;P1=800;;P2=-400;;P3=400;;P4=4000;;D=03032121210303212103030321030303212103030303212103030303212121212121030303030303210303032103212103210303210303030303030303210321232323232323232323232324;;

plin

set mySIGNALduino raw SR;;R=10;;P0=-800;;P1=800;;P2=-400;;P3=400;;P4=4000;;D=03032121210303212103030321030303212103030303212103030303212121212121030303030303210303032103212103210303210303030303030303210321232323232323232323232324;;

mir R=10 bewegt Motor 4 nach unten
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

#10
mmh.

120ms (ein long low/high + short low/high) pro Bit * 32 = 3.840ms => knapp 4s
bei 10 Wiederholungen, damit sich etwas bewegt, sind das mehr als 30s. wie lange dauert es, bis sich etwas bewegt?
(wie bin ich nur auf ms gekommen und dann von falsch addiert)

1,2ms (ein long low/high + short low/high) pro Bit * 32 = 3,840ms.

die Shorts am Ende scheinen ihn aus dem Tritt gebracht zu haben. es war eingentlich ein Up.

probiert mal das Kommando (hat jetzt auch lange Pausen)

SR;;R=5;;P0=-800;;P1=400;;P2=-400;;P3=800;;P4=4000;;P5=8000;;D=52121212121212121212121240123232323230101010123010123230123230123012301232323230123012301012323010101010123010101230123230123010123010101010101010123012325;;


P5 nochmals geändert

plin

tja, ich vermute der Code sollte Rolllade 4 nach oben bewegen. Da tut sich aber nichts. Weder bei R=5, R=10 noch R=30
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

Ansonsten: Dank der Codeanalyse konnte ich für 4 der 6 Motoren brauchbare mitgeschnittene Code-Sequenzen finden. Nummer 3 geht manachmal, Nummer 2 ist immer noch problematisch. Auf die Fernbedienung reagieren die aber sofort. Meine Hoffung ist nun der zweite CC1101 (ist noch auf dem Postweg). Dann kann ich

  • vergleichen, ob beide SIGNALduinos dieselben Code-Sequenzen mitschneiden
  • was der zweite versteht wenn der erste sendet
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

Sidey

Hast Du schon das Projekt Logic Analyse probiert?
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

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