Ueber telnet (mit dem fhem-Server) kommunizieren

Codeschnipsel die Nächste. „fhem“ ist seit geraumer Zeit meine Hausautomatisierungs-Lösung der Wahl. Dort kann man selbst bis zur Programmierebene eingreifen und ganz verschiedene Hardware einbinden, ohne in einer teuren und statischen Lösung der kommerziellen Anbieter gefangen zu sein.
 
Möchte man Werte seiner Sensoren z.B. auf Webseiten (oder wie bei uns auch auf einem digitalen Bilderrahmen und dem LCD des Hausservers) anzeigen oder von Ferne schalten, dann fragt man diese am besten remote über Telnet ab. Fhem bietet eine entsprechende Schnittstelle über den Port 7072. Gibt man diesen nicht nach außen frei oder sichert andersweitig ab, dann kann man Abfragen auch ohne Passwortabsicherung realisieren und es ist keine Interaktion und nur wenig Code für Abfragen und Kommandos notwendig.
 
Damit ist es dann kein Problem mehr, diesen in PHP oder Python in Webseiten oder in der Crontab zu integrieren. Für Python steht auch eine API zur Verfügung. So sieht ein diverses Schnipsel wie folgt aus:

import telnetlib
tnet_host= „xxxx“
tnet_port= 7072
 
def fhem_task(fcmd):
    tc= telnetlib.Telnet(tnet_host,tnet_port)
    tc.write(fcmd)
    erg= tc.read_until( „\n“ )
    tc.close()
    return erg
 
fhem_task(„get Temp_Aqua param temperature\r\n“)

In diesem Beispiel fragen wir den aktuellen Wert unseres Temperatursensors im Aquarium ab. Die „telnetlib“ stellt entsprechende Anweisungen bereit. „read_until“ nutzen wir, um zu schauen, wann die letzte Information übertragen wurde. Und wir packen das Ganze in eine Funktion „fhem_task“, um mehrere Abfragen in einem Skript günstig unterbringen zu können. Und in PHP:

$fhemhost = „xxxx“;
$fhemport = 7072;
 
$fsock = fsockopen($fhemhost, $fhemport, $errno, $errstr, 30);
$fcmd = „get Temp_Aqua param temperature\r\nquit\r\n“;
fwrite($fsock, $fcmd);
while(!feof($fsock)) {
$erg=fgets($fsock, 128);
echo $erg;

Hier werden am Ende noch ein „quit“ und die entsprechenden Returns übermittelt. PHP stellt den Socket bereit. Auf diese Weise zeigt z.B. unser Smart-TV eine Website mit Temperaturen und Luftfeuchten aus den einzelnen Räumen an. Und natürlich kann man das Ganze in Verbindung mit ganz anderen Geräten nutzen, welche ein Telnet-Protokoll zur Verfügung stellen. Wie etwa einem Rechner im Netzwerk oder der Fritzbox zu Hause…
 

Swen Hopfe

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert