Hauptmenü

Ethernet Port lauschen

Begonnen von bugster_de, 03 August 2015, 16:53:21

Vorheriges Thema - Nächstes Thema

bugster_de

Hallo,

gibt es bei FHEM eine Möglichkeit, ein Modul zu schreiben, welches einfach auf einem Port des Ethernet lauscht und dann bei eingehendem Traffic diesen liest?

Hintergrund: ich möchte kleine Arduino resp. ESP8266 basierte Sensor-Module per WLAN im Haus verteilen. Diese sollen sich dann bei Änderung von Werten bei FHEM melden; sprich einfach eine Message an 192.168.2.x (die Adresse des FHEM Servers), Port 112 (Beispiel) senden. Sprich die Sensoren sollen sich bei Bedarf an den Master (FHEM) wenden können. Bedarf heisst bei Event oder z.B. zyklisch.

Wenn ich es richtig sehe, dann kann ich zwar zu jedem einzelnen der Sensoren eine dauerhafte Verbindung halten (mittels DevIo_OpenDev unter IP und Port des jeweiligen ESP8266). Das geht aber schief, wenn der ESP8266 in den Tiefschlaf geht. Und schlafen soll er ab und zu, da z.B. Temperaturen sich ja nicht so schnell ändern und das Senden eines Wertes einmal pro Stunde ausreicht.

Hinweis: Firmata möchte ich nicht, da die Sensor- und Aktormodule eigene Intelligenz besitzen und nicht einfach die Ports durchrouten.
Das Schreiben eines zweistufigen FHEM Modules ist auch kein Thema (Squeezebox Unterstützung stammt von mir)

justme1968

ja. das geht. das telnet modul macht ja z.b. nicht anderes.

am einfachsten ist es die TcpServerUtils zu verwenden.

mit TcpServer_Open erzeugst du den server teil, wenn sich ein client connected wird deine ReadFn aufgerufen. wenn dort $hash->{SERVERSOCKET} gesetzt ist kannst du mir TcpServer_Accept die verbindung annehmen, wenn der client was sendet wird deine readFn mit dem client hash den du beim accept zurück bekommen hast aufgerufen hier kannst du dann ganz einfach mit sysread die daten lesen. mit TcpServer_Close kannst du eine verbindung und auch den server wieder zu machen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

bugster_de

Hi,

super! Danke für die Antwort ! Das probiere ich gleich mal aus.

Ich habe aber beim stöbern und Lesen das Stichwort MQTT gefunden und das hört sich eigentlich genau nach meinem Anwendungsfall an. Da werde ich nochmal genauer nach sehen.

bugster_de

So, nun habe ich mal MQTT probiert. Und wie ihr zwischen meinem letzten Post und dem jetzigen Post am Zeitstempel seht war das nicht besonders lang.

DUNNERLATTICH ! Das ist ja echt einfach und genau das, was ich gesucht habe !
Mosquitto auf dem Ubuntu Rechner installiert, die MQTT Lib für den Arduino runter geladen und schon geht es los. Jetzt kann der Winter und die veregneten Tage kommen  ;)