Serial/Netzwerk-RS485-Adapter
Vorbemerkungen
Alternativ zum HomeMatic_Wired_RS485_LAN_Gateway, können einfache Serial/Netzwerk-RS485-Adaptern für die Kommunikation von FHEM zu HomeMatic-Wired-Geräten eingesetzt werden. In diesem Artikel werden sowohl RS232-RS485-Adapter, USB-RS485-Adapter als auch Netzwerk-RS485-Adapter als Serial-RS485-Adaptern bezeichnet, denn in jedem Fall wird ein serieller Datenstrom an den RS485 Tranceiver weitergeleitet.
Da diese hier beschriebenen Interfaces keine "Intelligenz" besitzen, also die Daten lediglich auf den RS485-Bus umsetzen, wird zur Ansteuerung noch der hm485d.pm-Daemon benötigt. Dieser Prozess setzt die RAW-Befehle in das HomeMatic-Wired-Protokoll um. Der hm485d kann dabei transparent im Hintergrund arbeiten.
Liste der aktuell getesteten Adapter / Schnittstellen (bitte ggf. ergänzen)
- DIGITUS DA-70157: USB-Serial Adapter mit RS485 Schnittstelle, funktioniert auch an der FritzBox [1]
- Wiznet - WIZ108SR Compact RS422/RS485-to-Ethernet module [2]
- Wiznet - WIZ108SR im Hutschienengehäuse [3]
Einbindung in FHEM
Zum Einbinden des HMW-LAN-GW müssen folgend Zeilen in die fhem.cfg eintragen werde:
define HM485_LAN HM485_LAN localhost:2000 attr HM485_LAN hmwId 00000001 attr HM485_LAN HM485d_device <SerialDevice> attr HM485_LAN HM485d_bind 1 attr HM485_LAN room HM485
Der Name HM485_LAN kann frei vergeben werden. Bei <SerialDevice> muss der Gerätename angegeben werden unter dem das serielle Device anzusprechen ist.
Beispiele:
# Serieller USB-RS485-Adapter attr HM485_LAN HM485d_device /dev/ttyUSB0
# Netzwerk-RS485-Adapter attr HM485_LAN HM485d_device 192.168.1.15:5000
HM485d_bind 1 sorgt dafür, dass der hm485d beim FHEM-Start automatisch mit gestartet wird und durch FHEM auch gesteuert, also auch beendet werden kann.
HM485_LAN kennt weitere Attribute, die zur Kontrolle des hm485d dienen. Wichtig ist vor allem, für HM485_LAN eine Adresse festzulegen. Die HMW-ID muss eine 8-stellige Hexadezimalzahl sein. Theoretisch könnten die bis zu 256 HMW-LAN-GW angelegt werden. Diese Annahme ist aktuell aber nur Theorie und noch nicht getestet und ggf. mit einigen Problemen verbunden. Die HMW-ID's für die HMW-Interfaces könnten dafür im Bereich von 00000001 - 000000FF gewählt werden. Da in den HMW-Geräten die HMW-ID der Zentrale aber mit 00000001 vordefiniert ist, sollte hier aktuell nur diese ID verwendet werden.
Zu beachten ist auch, dass der hm485d gleichzeitig nur eine Netzwerkverbindung erlaubt. Somit ist ein Gateway auch nur mit einer Zentrale / FHEM-Instanz zur gleichen Zeit nutzbar.
HM485_LAN Attribute
- hmwId Hier muss die HMW-ID angegeben werden. Standardmäßig wird die 00000001 benutzt.
- do_not_notify FileLog/notify/inform Benachrichtigung für das Gerät ist abgeschaltet.
- HM485d_bind Startet den hm485d automatisch beim Start von FHEM und ermöglicht FHEM zudem die Prozesskontrolle
- HM485d_startTimeout Manchmal, z.B. auf langsameren Geräten wie der FritzBox oder dem Raspberry Pi, ist es erforderlich den hm485d verzögert zu starten. Hier kann die Verzögerung in Sekunden angegeben werden.
- HM485d_device Das serielle Gerät zum Interface (siehe Beispiel oben).
- HM485d_serialNumber Die Seriennummer die der hm485d an die Zentrale (FHEM) melden soll.
- HM485d_logfile Der hm485d kann ein eigenes Logfile schreiben. Hier kann dafür ein Dateiname angegeben werden.
- HM485d_detatch Wenn der hm485d mit FHEM zusammen gestartet wird (siehe HM485d_bind) so kann der Prozess hier von FHEM entkoppelt werden. Der Prozess wird dann auch nicht zusammen mit FHEM beendet.
- HM485d_logVerbose Der Loglevel vom hm485d.
Die folgenden drei Attribute können verwendet werden, wenn der hm485d über einen einfachen UART ohne Flusskontrolle z.B. über den UART des Raspberry Pi, an einen RS485 Tranceiver angeschlossen wird. Dafür müssen ggf. GPIO-Pins zur Steuerung des RS485 Tranceivers (Senden/Empfangen) definiert werden:
- HM485d_gpioTxenInit Shell-Befehl zum initialisieren des benutzten GPIO-Pins für die Sendekontrolle
- HM485d_gpioTxenCmd0 Shell-Befehl um den Sende-GPIO-Pin zurück zu setzen
- HM485d_gpioTxenCmd1 Shell-Befehl um den Sende-GPIO-Pin zu setzen
Hinweis
Da auch der hm485d sich noch in Entwicklung befindet, ist es möglich dass es in einigen Fällen noch zu Fehlverhalten kommen kann.
Pairen von Geräten
Jedes HM Geräte muss vor Verwendung mit der Zentrale, hier also FHEM, gepairt werden. Anders als bei den HomeMatic-Funk-Geräten erfolgt das Pairing bei HMW automatisch, sobald ein Gerät das erste Mal eine Nachricht über den Bus versendet. Alternativ kann das Pairing auch durch das Absetzen eines Discovery-Befehls ausgelöst werden. Beim Pairen werden die Geräteadressen FHEM bekannt gemacht. Die Adresse der HMW Geräte ist nicht frei wählbar, sondern fest in den Geräten eingestellt. Alle HMW-Geräte haben standardmäßig die Adresse 00000001 als Zentralen-Adresse gespeichert.
Discovery
Mit dem discovery-Befehl wird der gesamte RS485-Bus nach unbekannten HMW Geräten durchsucht.
set HM485_LAN discovery start
Nachdem neue Geräte gefunden worden, werden diese automatisch mit FHEM gepairt.
RAW-Befehle
Über den HM485_LAN können so genannte RAW-Befehle an die am Bus angeschlossenen Geräte gesendet werden. Mit diesen RAW-Befehlen können z.B. Funktionen ausgelöst werden, die aktuell für ein Gerät noch nicht in FHEM implementiert sind.
Beispiel:
set HM485_LAN RAW 01234567 98 00000001 DDDDDD
- 01234567 - entspricht hier der Adresse des Gerätes an das der Befehl gesendet werden soll
- 98 - das so genannte Steuerzeichen (Siehe HMW-Protokoll-Dokumentation)
- 00000001 - die HMW-ID der Zentrale (FHEM)
- DDDDDD - das sind die zu sendenden Daten.
Da zum Senden von RAW-Befehlen Kenntnisse über das HMW-Protokoll vorhanden sein sollten, lohnt sich ein Blick in die HMW-Protokoll-Doku
Funktionale Beispiele:
# Rollladenaktor öffnen set HM485_LAN RAW 01234567 98 00000001 7802C8 # Rollladenaktor stoppen set HM485_LAN RAW 01234567 98 00000001 7802C9 # Rollladenaktor schließen set HM485_LAN RAW 01234567 98 00000001 780200 # erster Ausgang (Relais) eines HMW-IO-12-Sw14-DR ein set HM485_LAN RAW 01234567 98 00000001 730003FF # erster Ausgang (Relais) eines HMW-IO-12-Sw14-DR aus set HM485_LAN RAW 01234567 98 00000001 73000000
Wechsel von Serial/Netzwerk-RS485-Adaptern zu HMW-LAN-GW
Der Wechsel zwischen den verschiedenen Interface-Typen geht einfach und bedarf kein neues Pairing. Ggf. müssen einige interfacespezifische Attribute in der fhem.cfg hinzugefügt bzw. gelöscht werden.