SIGNALduino
SIGNALduino | |
---|---|
Zweck / Funktion | |
Unterstützung für CUL-Klon auf Arduino-Basis | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE Thema |
Support (Forum) | Sonstige Systeme |
Modulname | 00_SIGNALduino.pm |
Ersteller | Sidey (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das Modul SIGNALduino unterstützt den gleichnamigen Low-Cost Empfänger für digitale Signale, ähnlich einem CUL. Der SIGNALduino (Hardware) basiert auf einem Arduino. Hauptsächlich wurde er für den Arduino Nano entwickelt. Es stehen jedoch auch für den [UNO] und [PRO Mini] Firmware Dateien zur Verfügung.
Er wird derzeit über den USB Port angeschlossen. Die Schaltung entspricht der des FHEMduino.
- Das Modul ist nicht fertig und kann als frühes Release bezeichnet werden.
- Das Modul gibt bei Bedarf sehr viele Meldungen ins Logfile, in den Normaleinstellungen verhält es sich aber relativ ruhig.
Was macht dieser SIGNALduino?
Digitale Signale anhand von Mustern erkennen und zum Auswerten an FHEM weitergeben, dort können die Daten dann dekodiert werden. Zwischenzeitlich gibt der Arduino alle erkannten Signale an FHEM weiter, dies hilft um vor allem Signale zu finden, die noch nicht bekannt sind.
Beispiel: Arduino mit 433 Mhz Empfänger an einen Fhem Server anschließen und IT Steckdosen empfangen / schalten
Das System ist jedoch nicht auf 433 Mhz beschränkt. Es funktioniert auch mit anderen Frequenzen oder Medien, z.B. auch mit Infrarot oder direkt angebunden via Draht.
Worin liegt der Vorteil zu einem CUL oder FHEMduino?
Erst mal gibt es noch keinen richtigen Vorteil. Der ergibt sich erst, wenn man in FHEM die Signaldaten entsprechend verarbeitet. Für einige wenige Dinge ist das bereits implementiert, z.B. lassen sich Wettersensoren oder Funksteckdosen damit empfangen. Wer Lust hat weitere Protokolle zu dekodieren, braucht dazu nur ein passendes FHEM Modul entwickeln. Änderungen am Arduino Code sind "eigentlich" nicht notwendig, dadurch skaliert das System gut.
Andere Möglichkeit, wer einen Wettersensor dekodieren möchte muss ja erst mal feststellen, was der Sensor sendet. Dazu kann man den SIGNALduino auch an den Sendeausgang des Sensors anbinden und empfängt die digitalen Signale. Bitte achtet aber auf die passenden Spannungen, bevor ihr eine solche Schaltung vornehmt. Ein Arduino Nano verträgt 5V.
Unterstützte Geräte
Für die folgenden Geräte gibt es derzeit eine Unterstützung für den Betrieb mit Fhem. Die Geräte werden automatisch erkannt und in der Konfiguration eingetragen wenn der SIGNALduino mal läuft.
Produkt | (E)mpfangen (S)enden |
Hinweise | Verwendetes Modul |
---|---|---|---|
TCM Wetterstation (97001 und 21xxx Serie) | E | CUL_TCM97001 | |
ABS Wetterstation (ABS 700) | E | CUL_TCM97001 | |
Prologue Wetterstation | E | CUL_TCM97001 | |
Rubicson Wetterstation | E | CUL_TCM97001 | |
NC_WS Wetterstation | E | CUL_TCM97001 | |
GT-WT-02 Wetterstation | E | CUL_TCM97001 | |
AURIOL Wetterstation | E | CUL_TCM97001 | |
Mebus Wetterstation | E | CUL_TCM97001 | |
Intertechno Funkschalter | E S | IT | |
E S | Funktioniert aktuell nicht | SIGNALduino_RSL | |
Oregon Scientific Wettersensoren | E | Protokoll V2 implementiert | OREGON |
Bresser Temp/Hydro Sensor | E | Hideki | |
Hama TS33C | E | Hideki | |
TFA Temp/Hydro Sensor | E | Hideki | |
Lacrosse TX2/TX3 Sensoren | E | CUL_TX | |
TFA 30320902 | E | SD_WS07 | |
Eurochon eas800z | E | SD_WS07 | |
Technoline WS6750/TX70DTH | E | SD_WS07 | |
FreeTec Außenmodul NC-7344 | E | SD_WS07 |
Hardware
Wie muss der Arduino verkabelt werden? Die Verkabelung ist Identisch zum FHEMduino
Einbinden in FHEM
FHEM 5.6 muss in der Revision 7914 vom 08.02.2015 oder höher laufen, ältere Versionen sind unbedingt mittels update auf eine neuere Revision zu heben.
Danach könnt ihr das SIGNALduino Modul installieren. Dazu einfach folgenden Befehl in Fhem ausführen:
durch das Update wird auch die Firmware geladen. Im Log File seht ihr, wo diese hinkopiert wurden: z.B. nach FHEM/firmware/SIGNALduino_nano328.hex
Danach kann das Gerät wie folgt definiert werden. Den USB Anschluss müsst ihr natürlich euren Gegebenheiten anpassen:
define sduino SIGNALduino /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
Nach dem Einbinden wird der SIGNALduino falls er erkannt wird im Status "Opened" angezeigt. Erst wenn die richtige Firmware auf dem Arduino ist wird der Status "Initialized" angezeigt
Flashen des Ardunio mit der SIGNALduino Firmware
- Falls avrdude noch nicht vorhanden ist kann man das z.B. so auf dem FHEM Server installieren:
sudo apt-get install avrdude
- In Fhem ist der SIGNALduino ja bereits mit dem Status "Open" vorhanden. Jetzt müssen wir FHEM noch mitteilen, welche Hardware wir angeschlossen haben.
Über das Attribut hardware lässt sich zwischen den mitgelieferten Firmware Dateien wechseln.
Beispiel:
attr sduino hardware nano328
Anschließend kann der flash Befehl abgesetzt werden: sduino flash Dadurch wird der Arduino mit der gewählten Firmware geflasht. Das Ergebnis wird im Webinterface direkt angezeigt.
Alternativ kann auch der Flash Befehl mit einem Dateinamen aufgerufen werden, dies sollte jedoch nur verwendet werden, wenn ihr die SIGNALduino Firmware selbst compiliert habt und eine andere Hardware verwendet.
- etwa so aufgerufen wird:
sduino flash FHEM/firmware/SIGNALduino_mega2560.hex
(je nachdem wo das hex file abgelegt wurde und wie ihr es benannt habt).
- etwa so aufgerufen wird:
- Wenn alles gut geht und man wählt nochmal den SIGNALduino aus steht dort nicht mehr open sondern initialized.
Daten aus dem Logfile erklärt
Im Logfile ab Verbose 4 tauchen diverse Meldungen auf, deren Bedeutung kurz erläutert wird:
Unknown Code, so oder ähnlich bedeutet, dass der SIGNALduino Signaldaten empfangen und diese binär interpretiert hat. Diese Meldung soll uns nun aber mitteilen, dass es dann nicht weiter verarbeitet werden kann, da kein Modul existiert, welches diese Daten jetzt in ihre Bedeutung umwandeln kann.
sduino: Unknown code u1FFFFF0, help me!
MS - Nachricht mit Sync Puls: Es wurde eine Signal empfangen. P0-P6 sind die Signalpegel (dauer und positiv/negativ). Hinter D= befindet sich die Abfolge der Signale. 15 Bedeutet es wurde ein Signalpegel (1) 395 Mikrosekundenhigh und Anschließend (5) 8916 Mikrosekunden low gemessen. CP=1 ist die Referenz auf den Takt des Signales. Getaktet wird in diesem Fall mir ~395 Mikrosekunden. SP=5 gibt die Referenz zum Syncpuls an. Welche Signalfolge nun eine binäre 1 bzw. 0 Bedeutet wird im SIGNALduino über die integrierte Protokoll Liste realisiert.
MS;P0=-108;P1=395;P2=-1033;P3=-547;P4=-19932;P5=-8916;P6=1368;D=151313131312131313131313131313131312121212121313131313131312131212132;CP=1;SP=5;
MC - Nachricht vom Typ Manchester: Manchester Kodierte Signale, können bereits sehr einfach im Arduino in eine Binärform umgewandelt werden. Es wird hier nach IEEE 802.3 umgewandelt. In Manchster Signalen gibt es Lange und kurze Pulse. Deren Durchschnittswert wird mit LL (long low), LH (long high), SL (short low) und SH (short high) übermittelt. Zusätzlich um das Protokoll schneller erkenne zu können, wird die Taktfrequenz mit übermittelt (C=429 Mikrosekunden). Die Daten befinden sich hinter D= und werden in HEX Form übergeben.
MC;LL=-1066;LH=904;SL=-562;SH=385;D=332B4B4D54D5554B552CD2D554B2B5354A;C=429;
MU - Message unsynced: Diese Art von Nachrichten, sind nicht nach Manchester codiert und diese haben auch keinen erkennbaren Sync / Clock Signalpegel am Start der Nachricht.
Bei diesen Nachrichtentypen ist es, im Vergleich zu den anderen, am wahrscheinlichsten, dass das übermittelte Signal unvollständig oder überhaupt kein Signal ist.
Wie bei MS sind P0-P6 die Signalpegel und in D= wird die Abfolge der Signalpegel referenziert. CP=2 gibt auch hier die Referenz zum Takt an, allerdings muss dieser nicht korrekt erkannt worden sein.
MU;P0=1372;P1=-580;P2=362;P3=-1047;D=01212321212321212121212121212123212123212321232121212121212321;CP=2;
Mein Gerät wird in FHEM nicht erkannt
1. Prüfen ob vom Sensor die Signaldaten (verbose >=4) erkannt werden. Sobald ihr die empfangenen Signaldaten im Logfile zuordnen könnt, geht es weiter mit:
2. Eröffnet ein Thema unter github nach folgendem Muster:
Thema : Protokoll für <Das verwendete Gerät>
Inhalt: Eure Hardware z.B. Arduino Nano mit XYZ Empfänger, oder Arduino Nano direkt an Gerät x Auszug aus dem Logfile, welches zum Gerät gehört. Alles was ihr sonst noch über das Gerät und die übertragenen Daten wisst.
Alternativ könnt ihr auch im Forum posten, um einzelne Erweiterungen besser im Überblick zu behalten, eignet sich das github jedoch besser.