FHEM ESPEasy GPIO ansprechen / ESP-GPIOs über FHEM schalten

Ich habe ja schon berichtet das ich ESPEasy mit FHEM verbunden habe und nun gehe ich mal auf das Benutzen der GPIOs des ESP mit ESPEasy als Aktor für FHEM ein.
Beim ESPEasy wird dies direkt mit dem Aufruf der IP Adresse des ESPs und dem control cmd durchgeführt. Man ruft direkt die Webseite auf zB. mit http://espeasyip/control?cmd=GPIO,14,1 um den GPIO Port 14 auf 1 zu setzen.

Es gibt zwei Möglichkeiten diese in FHEM zu tun:

  1. ohne eigene Funktion
    Einen Notifier anlegen mit der folgenden Definition:
    define NotifyName notify NotifyEvent:An{ GetHttpFile("192.168.99.152:80","/control?cmd=GPIO,14,0") }
    Dieser ruft die Webseite des ESPEasy auf und setzt den GPIO auf den Wert.
  2. mit zusätzlicher Funktion
    Dazu müssen wir eine FHEM-Funktion in 99_myUtils.pm einfügen:

# setzt einen gpio am ESPEasy Kontroller
sub esppinstate
{
my $espdev = $_[0];
my $gpio = $_[1];
my $event = $_[2];
my $ret = "";
$ret .=  system("wget -q -O /dev/null 'http://$espdev/control?cmd=GPIO,$gpio,$event'");
$ret =~ s,[r
]*,,g;
Log 1, "esp $espdev returned: $ret";
}

Diese Funktion kann nun ganz normal mit einem Notify angesprochen werden:

define NotifyName notify NotifyEvent:An{esppinstate("Ip-des-ESP",GPIO-Port,Zustand)}


 

Hier ein weiterer Auszug aus meiner FHEM.cfg wofür ich die Notifiers verwende:

define Ke.Tuer.dum dummy
attr Ke.Tuer.dum alias Kellertür
attr Ke.Tuer.dum devStateIcon auf:fts_door_open zu:fts_door
attr Ke.Tuer.dum event-on-change-reading state
attr Ke.Tuer.dum fp_Keller 128,338,1, ,Ke.Tuer.dum
attr Ke.Tuer.dum room Wohnung
attr Ke.Tuer.dum setList zu auf
define Ke.Tuer.offen.not notify Ke.Tuer.dum:auf {esppinstate("192.168.xx.xx",14,1)}
attr Ke.Tuer.offen.not room Notifys
define Ke.Tuer.zu.not notify Ke.Tuer.dum:zu {GetHttpFile("192.168.xx.xx:80","/control?cmd=GPIO,14,0")}
attr Ke.Tuer.zu.not room Notifys
define Ke.Tuer.not notify esp152_s1:Switch:.* {\
#my $r1 = ReadingsVal("esp152_s1", "state", "");;;;\
my $r1 = $EVENT;;;;\
if ($r1 eq "Switch: 0.00") {\
fhem "set Ke.Tuer.dum zu"\
} else {\
fhem "set Ke.Tuer.dum auf"\
}\
}
attr Ke.Tuer.not room Notifys

So damit schaltet nun FHEM den ESPEasy Kontroller .

Schreibe einen Kommentar

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

Ich akzeptiere

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.