Modul für Hhc-n8i8op 8 Kanal Netzwerk TCP Relaismodul

Begonnen von Mathea, 03 Juli 2022, 14:39:36

Vorheriges Thema - Nächstes Thema

Mathea

Hallo Leute,

ich habe für das Hhc-n8i8op Netzwerk Relaismodul zwei Module geschrieben, um es direkt via fhem anzusteuern.
Bei dem Relais handelt es sich um ein günstiges 8-fach Schaltrelais für Hutschienenmontage mit Netzwerkanschluss. Es gibt dafür bereits ein Git-Projekt, um es via MQTT anzusprechen, allerdings empfinde ich das als unnötigen Umweg.

Deshalb im Anhang meine Module, die direkt aus fhem heraus via DevIO mit dem Gerät kommunizieren. Es werden beide Dateien benötigt.

- 36_EthernetRelay.pm: Kümmert sich um die direkte Kommunikation mit dem Gerät (physisches Modul)
- 36_EthernetRelayChannel.pm: Pro Relaiskanal wird ein fhem-Device "EthernetRelayChannel" angelegt (Logisches Modul)

Definition wie folgt:

define <Name> EthernetRelay <IP-Addresse[:PORT]> <poll-Intervall>

Standard Port: 5000
Standard Interval: 60s

Damit wird das physische Gerät angelegt und automatisch die Verbindung hergestellt (Status: opened). Das Modul pollt im angegebenen Intervall-Abstand das Relais. Beim Empfang der Statusmeldung sollte pro Relaiskanal automatisch ein Device "EthernetRelayChannel" angelegt werden, über das das jeweilige Relais via "on / off"-Befehl gesteuert werden kann.

Einstellung am Gerät:
für das Relais gibt es eine Konfigurationssoftware, mit der es vorher eingestellt werden muss. Der entsprechende Betriebsmodus heißt "TCP Service". Ebenso muss das Relais natürlich eine IP bekommen (bei mir via DHCP). Ich habe auch die IP-Adresse meines FHEM-Servers im Feld "Destination ip" eingetragen, bin mir aber nicht sicher, ob das nötig ist.

Nicht implementiert:
- Abfrage der 8 Eingangskanäle
- Theoretisch kann das Relais Modbus TCP, allerdings habe ich nichts davon zum Laufen bringen können

Disclaimer:
Ich bin ziemlicher Coding-Laie und bin mir sicher, dass man den Code auch besser schreiben könnte. Ebenfalls werde ich leider keine Zeit haben, das Modul über diesen Post hinaus zu maintainen. Bei mir funktioniert es. Falls also Bedarf besteht, müsste jemand anderes ab hier übernehmen, bzw. kann der Code natürlich nach belieben verbessert und angepasst werden.

Viele Grüße,
Mathea