Protokoll-Analyse: Rauchmelder Flamingo FA20RF (KD101)

Begonnen von Christian., 07 Dezember 2014, 20:48:18

Vorheriges Thema - Nächstes Thema

Christian.

Hallo zusammen,

ich habe ein paar Rauchmelder Flamingo FA20RF (offenbar baugleich mit KD101 und ELRO RF150) und versuche, diese in FHEM einzubinden. Ich habe schon gelesen, dass sie vom RFXtrx433-Transceiver unterstützt werden (KD101 Rauchmelder, Wiki). Ich habe hier aber nur einen einfachen 433 MHz-Empfänger, den ich für die Fernbedienung von Intertechno-kompatiblen Baumarkt-Steckdosen verwende. Im FHEMduino-Thread wird beschrieben, dass dieser Rauchmelder mit einem solchen Empfänger unterstützt wird; leider funktioniert die Implementierung aber nicht mit meinen Rauchmeldern. Vermutlich gibt es noch Unterschiede zwischen den Modellen.

Ich habe deshalb mit einem Arduino-Sketch die Daten mitgeschnitten, die mein 433 MHz-Empfänger beim Pairing des Rauchmelders empfängt, und versuche jetzt, das Protokoll des Rauchmelders zu analysieren. Meine Quellen: pilight-Forum, Nodo-Implementierung, FHEMduino-Implementierung

Meine Vermutung: Ein Daten-Bit besteht aus zwei aufeinanderfolgenden Signalen. Das erste Signal ist kürzer als das zweite Signal (deckt sich mit dem pilight-Forum und dem Nodo-Code). Die Länge der einzelnen Signale kann variieren, aber ihre Summe ergibt immer eine konstanten Wert: die Länge des 0-Bits ist 2200 µs, die des 1-Bits 3540 µs. Zu Start-, Stop- oder Sync-Bits konnte ich noch nichts herausfinden, außer dass sie vermutlich deutlich länger sind.

Ich habe 5 Tests gemacht und die Zahlen in die angehängte Tabelle eingetragen. Durch die bedingte Formatierung werden die von mir als Datenbits vermuteten Signale farblich hervorgehoben.

Jetzt bin ich an einem Punkt, an dem ich nicht so recht weiter weiß. Offen:

  • Gibt es Start-/Stop-/Sync-Bits? Welches Format haben sie?
  • Die Anzahl der gültigen Bits sollte laut den genannten Quellen eigentlich 24 sein, das kann ich mit meinen Logs aber nicht bestätigen.
Das ist mein erster Versuch einer Protokoll-Analyse, ich bin für jede Hilfe dankbar.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

Tueftler1983

Hallo bist du weiter gekommen? Habe auch diese Rauchmelder und würde sie gerne in FHEM integrieren

Hauswart

Zitat von: Tueftler1983 am 13 November 2015, 11:53:39
Hallo bist du weiter gekommen? Habe auch diese Rauchmelder und würde sie gerne in FHEM integrieren

Den FA21RF bin ich gerade mit Sidey und Signalduino dran zu decodieren. :)
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Christian.

Zitat von: Tueftler1983 am 13 November 2015, 11:53:39
Hallo bist du weiter gekommen? Habe auch diese Rauchmelder und würde sie gerne in FHEM integrieren

Nein, ich habe nichts Neues zu berichten. Vielleicht hast Du ja mehr Glück mit FHEMduino (bzw. inzwischen auch SIGNALduino) als ich; es scheint ja einige Rauchmelder-Exemplare zu geben, die damit funktionieren.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

Christian.

Ich habe heute nochmal unter geänderten Bedingungen getestet, und es sieht nun besser aus.

Als Empfänger hatte ich ursprünglich einen XY-MK-5V im Einsatz, der mit meinen Baumarkt-Funksteckdosen auch gut funktoniert. In einigen Foren (z.B. im pimatic-Forum) wird von diesem Empfänger abgeraten. Ich teste deshalb jetzt mit einem RXB6 (oft als Superheterodyne beworben).

Software-seitig habe ich das FHEMduino Release 2.3 (FHEMduino und FHEMduino-Module) im Einsatz und den DEBUG-Schalter gesetzt.

Ich habe insgesamt 9 Rauchmelder, von denen ich bis jetzt 7 testen konnte. Die Debug-Ausgabe von FHEMduino war dabei sehr hilfreich. Es scheint, dass die Bitlängen im FHEMduino-Sketch noch nicht 100%ig zu meinen Rauchmeldern passen. Ein 0-Bit hat dort eine Länge von 1450µs (+/- 70 µs Toleranz), die meiner Rauchmelder variieren zwischen 1344µs und 1456µs.

Ich möchte noch die verbleibenden 2 Rauchmelder testen, um dann einen passenden Wert für das 0-Bit zu finden. Ich möchte auch nochmal mit anderen Batterien testen, um Abweichungen wegen zu geringer Spannung auszuschließen. Und zu guter Letzt fehlt noch die Einbindung in FHEM über das Modul FHEMduino_FA20RF.

Ich bin zuversichtlich, die Rauchmelder doch noch in FHEM integrieren zu können.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

Christian.

Ich habe heute erfolgreich SIGNALduino getestet. Dazu habe ich FHEM zunächst per update auf den aktuellen Stand gebracht und dann folgende Schritte durchgeführt.

1.) FHEM-Device für SIGNALduino anlegen
Ich habe unter Windows getestet und den Arduino an der seriellen Schnittstelle COM13 angeschlossen. Um in Schritt 3 Log-Ausgaben zu erhalten, muss das Attribut verbose mindestens auf den Wert 4 gesetzt werden.
define sduino SIGNALduino COM13@57600
attr   sduino verbose 4


2.) Arduino mit dem Sketch flashen
Im einfachsten Fall hat man einen Arduino Nano zur Hand, dann kann man aus FHEM heraus die mitgelieferte Datei FHEM/firmware/SIGNALduino_nano328.hex gemäß Wiki flashen. Ich habe einen Arduino Pro Mini mit 3,3V/8MHz. Die Datei SIGNALduino_promini328.hex funktioniert damit nicht (ich kann nicht einmal die Version abfragen). Ich vermute, die Datei ist für die 5V/16MHz-Variante gebaut. Deshalb habe ich Version 3.1 gebaut und geflasht. Damit kann ich die Version erfolgreich abfragen (3.1.8) und habe somit meinen SIGNALduino zur Verfügung. Für Interessierte hängt die HEX-Datei an.

3.) Rauchmelder auslösen
Zunächst wird der Rauchmelder gemäß Anleitung durch zweimaliges Drücken auf LEARN in den Master-Modus versetzt. Die LED leuchtet dann dauerhaft grün. Dann muss man den TEST-Button ein paar Sekunden gedrückt halten. Im FHEM-Log erscheint u.a.

2015.11.15 15:52:23 4: SIGNALduino/msg READ: MS;P0=8068;P1=-936;P2=772;P3=-1387;P4=-2757;P5=-12232;D=250123242424242424242424232323242324242324242423232323;CP=2;SP=5;
2015.11.15 15:52:23 4: Found matched Protocol id 20 -> livolo
2015.11.15 15:52:23 4: Found matched Protocol id 13 -> 21RF
2015.11.15 15:52:23 4: SIGNALduino_unknown incomming msg: u13#803A478
2015.11.15 15:52:23 4: SIGNALduino_unknown rawData: 803A478
2015.11.15 15:52:23 4: SIGNALduino_unknown Protocol: 13
2015.11.15 15:52:23 4: SIGNALduino_unknown converted to bits: 1000000000111010010001111000
2015.11.15 15:52:23 4: SIGNALduino_unknown found RF21 protocol. model=#, devicecode=03A47, freq=8

Was sagt mir das? SIGNALduino hat eine Nachricht empfangen und das RF21-Protokoll entdeckt. Es gibt in meiner FHEM-Installation kein Modul, das sich dafür zuständig fühlt, deshalb übernimmt SIGNALduino_unknown. Soweit, so gut. Das ist schonmal viel mehr als bei meinen vorigen Versuchen.

4.) FHEM-Device anlegen
Ich kann jetzt entweder ein eigenes FHEM-Modul für meine Rauchmelder schreiben - aufwändig. Oder ich greife wie von Sidey beschrieben auf das vorhandene Modul DOIF zurück:

define rauchmelder_1 DOIF ([sduino:&DMSG] =~ "u13#803A47") ()
attr   rauchmelder_1 do always
attr   rauchmelder_1 cmdState alarm

Bedeutung: jedesmal, wenn das Gerät sduino sein internes Reading DMSG mit dem Wert u13#803A47 belegt, erhält das Gerät rauchmelder den state alarm.

Und das funktioniert.

Je nach Gerät und vorliegenden FHEM-Modulen kann Schritt 4 übrigens entfallen. Das war z.B. bei meinen Baumarkt-Funksteckdosen der Fall. Bei einem Druck auf die Fernbedienung wurden passende IT-Devices automatisch angelegt. Großartig!

Ich möchte jetzt noch herausfinden, ob und wie ich die Rauchmelder aus FHEM heraus auslösen kann. Ich vermute, dazu muss eine passende Nachricht per set sduino raw abgesetzt werden.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

Hauswart

Guten Morgen Christian,

hört sich doch super an! Ich habe Sidey nochmal geschrieben, ob er mit meinen FA21RF Logs schon weitergekommen ist und habe ihm auch den Link zu diesem Thema hier geschickt. Eventuell kann er die Verarbeitung weiter optimieren.  8)

Gruss
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Sidey

#7
Hi,

spitzen Leistung,
Bezüglich der verteilten Firmware, ja die sind alle für die 16 Mhz Variante.

Für den FA21RF bin ich noch nicht weiter gekommen. Hatte die letzten Tage doch nicht so viel Zeit.
Senden geht via

Um diesen Lerarn Code zu senen wäre folgendes notwendig:
set sduino raw
SR;;R=6;;P0=8068;;P1=-936;;P2=772;;P3=-1387;;P4=-2757;;P5=-12232;;D=250123242424242424242424232323242324242324242423232323;;



Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

Hardlife

Hallo!

Habe auch die angesprochene FA21RF und wollte fragen, ob es bezüglich Signalduino Fortschritte gibt?

Danke
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

Hauswart

Es gab vor ein paar Tagen eine Anpassung im dev32 Branch jedoch habe ich noch kein Feedback von Sidey erhalten was sich geändert hat
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Sidey

Hi,

ich habe eigentlich nur die Debug Ausgaben im Helper Modul angepasst.

Im Grunde funktioniert die Rauchmelder Erkennung im dev-r32 Zweig.
Auf den Code (den muss man halt 1x durch auslösen ermitteln) kann man mit einem DOIF eine Aktion ausführen.

Wer jetzt seine Rauchmelder von FHEM aus alamieren will muss vermutlich noch ein wenig "basteln", aber ist das ein Anwendungsfall?

Ich nehme jetzt erst mal an, die Integration in FHEM ist ausreichend.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

Hauswart

Wie kann ich den manuell einen Alarm über FHEM auslösen?  8)

Bzw. welche raw Werte muss ich senden?
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Sidey

Also Senden geht am einfachsten, wenn Du das Signal was empfangen wird einfach wieder abspulst.

Ein Empfangenes Signal sieht irgendwie so aus (exemplarisch):

MS;P0=100;P1=-200;P2=300;P4=-400;D1234123412341234;


Wenn Du nun genau das senden möchtest übergibst Du den Befehl

set sduino raw SR;;R=3;;P0=100;;P1=-200;;P2=300;;P4=-400;;D1234123412341234;;

Damit sendet der Adrduino genau 3x (R=3) das dort angegebene Signal.
Um das ganze nicht zu kompliziert zu machen: Stelle den SIGNALduino auf Verbose 4.
Löse den Rauchmelder aus. Suche im Log, welches Signal umgerechnet wurde. Den Teil der Signaldaten kopierst Du einfach in den Sendebefehl. Eventuell brauchst Du auch 6 oder 10 Wiederholungen. Einfach mal probieren.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

Hauswart

#13
 Im Eventmonitor und mein DOIF melden den Alarm zwar, aber die Rauchmelder geben keinen Ton von sich?!?


Learn-taste (Master) + Test:
Zitat
2016.01.11 18:46:39 4: SIGNALduino/msg READ: MS;P0=;P1=-;P2=-;P3=-;P4=;P5=-;D=;CP=0;SP=3;

2016.01.11 18:46:39 4: Founded matched MS Protocol id 1 -> ConradRSL
2016.01.11 18:46:39 4: Founded matched MS Protocol id 13 -> 21RF
2016.01.11 18:46:39 4: Decoded matched MS Protocol id 13 dmsg u13#A69C4A length 24
2016.01.11 18:46:39 4: SIGNALduino_unknown incomming msg: u13#A69C4A
2016.01.11 18:46:39 4: SIGNALduino_unknown rawData: A69C4A
2016.01.11 18:46:39 4: SIGNALduino_unknown Protocol: 13
2016.01.11 18:46:39 4: SIGNALduino_unknown converted to bits: XXX
2016.01.11 18:46:39 4: SIGNALduino_unknown found RF21 protocol. devicecode=XXX, unit=1
Sduino Raw:
Zitat
set sduino raw SR;;R=3;;P0=;P1=-;P2=-;P3=-;P4=;P5=-;D=;;
Evenmonitor:
Zitat
2016-01-11 19:07:09 DOIF FA21RF cmd_nr: 1
2016-01-11 19:07:09 DOIF FA21RF cmd_event: sduino
2016-01-11 19:07:09 DOIF FA21RF alarm
2016-01-11 19:07:09 SIGNALduino sduino raw SR;;R=10;;P0=;P1=-;P2=-;P3=-;P4=;P5=-;D=;;


Die P0,P1,P2,P3,P4,P5 und D Werte sind natürlich überall identisch.


Edit: Ging nun einmal mit R=20... aber auch nur sporadisch.
Edit 2: Mit R=100 gingen nun zum ersten Mal auch Master und Slave an :)
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Hardlife

Hi Hauswart!

Zitatset sduino raw SR;;R=3;;P0=;P1=-;P2=-;P3=-;P4=;P5=-;D=;;

Warum nach P0= usw... immer nur ein Semikolon ( ; )?
Oder ist das ein Tippfehler im Forum?

Ich aktiviere die Melder z. B. mit:
set sduino raw SR;; R=1;;P0=-1365;;P1=-7424;;P2=5116;;P3=-954;;P4=854;;P5=-1738;;D=0447474568820445452822882828040454045656565454043;;
Und ab R=2 sprechen eigentlich immer alle an...

Immer doppelte ;; nach jedem Setting.
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462