Hallo zusammen.
Ich hoffe das ich hier richtig bin. Derzeit stehe ich komplett auf dem Schlauch und weiß nicht warum es nicht funktioniert.
Über das PRESENCE Modul (Name: internet_watchdog) möchte ich über Lan-Ping den DNS (8.8.8.8) von Google anpingen um meine Internetverbindung zu testen ob ich "online" bin.
Dies funktioniert auch wunderbar und ich bekomme die beiden Statusmeldungen "present" und "absent".
Über ein Notify möchte ich nun, ganz simpel, eine zwei farben LED (rot/grün) ansteuern wenn diese Verbindung nicht mehr gegeben ist und ich quasi "offline" bin.
Dieses schaut wie folgt aus.
internet_watchdog:state:.*{
if ($EVTPART1 eq "present") {
fhem("set LED_gruen on);
fhem("set LED_rot off);
}
elsif ($EVTPART1 eq "absent") {
fhem("set LED_gruen off");
fhem("set LED_rot on")
}
else {
}
}
Über FHEM kann ich ich die LED`S problemlos ansteuern. Und im $EVTPART1 sollte doch eigentlich der "Zustand" stehen oder?
Vielen Dank im voraus
Entweder nimmst Du das ":state" aus dem notify raus oder Du gibst ihm das Attribut "addStateEvent 1" hinzu.
Gruß
Dan
Zitat von: DeeSPe am 27 April 2018, 16:50:06
Entweder nimmst Du das ":state" aus dem notify raus oder Du gibst ihm das Attribut "addStateEvent 1" hinzu.
Gruß
Dan
Jap... jetzt ist die Verwirrung komplett
Sorry ich bin blutiger Anfänger und kämpfe mich gerade mit dem FHEM PDF und allem durch. addStateEvent habe ich beim Notify nun auf 1 aber leider weiß ich nun nicht warum es nun funktionieren soll (was es auch noch nicht macht)
und mit dem :state "weglassen habe ich es auch schon mit allen varianten was $EVTPART1 + $EVTPART0 angeht versucht.. :-\
internet_watchdog:.*{
if ($EVTPART1 eq "present") {
fhem("set LED_gruen on);
fhem("set LED_rot off);
}
elsif ($EVTPART1 eq "absent") {
fhem("set LED_gruen off");
fhem("set LED_rot on")
}
else {
}
}
Moin,
Da fehlt ein Semikolon am Ende des elsif-Blocks.
Öffne bitte den Eventmonitor und schaue Dir das Event an. Am besten hier posten. Dann kann man auch was zu sagen. So kann man nur raten ob es überhaupt ein EVTPART1 geben kann oder nicht.
Danke für Eure Antwort.
Ja das Semikolon fehlte nur hier. Das habe ich wohl versehentlich gelöscht beim Code einfügen. Aber in FHEM ist es drin.
Folgender Text kommt im Event Monitor
Zitat2018-04-28 07:01:52 PRESENCE internet_wachtdog absent
2018-04-28 07:01:52 PRESENCE internet_wachtdog presence: absent
2018-04-28 07:02:55 PRESENCE internet_wachtdog present
2018-04-28 07:02:55 PRESENCE internet_wachtdog presence: present
2018-04-28 07:01:52 PRESENCE internet_connect absent
Wenn du diesen Event beim Notify verwendest, dann hast Du kein EVTPART1
2018-04-28 07:01:52 PRESENCE internet_connect presence: absent
Bei diesem Event bekommst Du ein EVTPART1
Das liegt daran wie der Event aufgebaut ist. Beim ersten ist das der Event
absent
Beim zweiten sieht der Event so aus
presence: absent
Zitat von: CoolTux am 28 April 2018, 07:20:14
2018-04-28 07:01:52 PRESENCE internet_connect absent
Wenn du diesen Event beim Notify verwendest, dann hast Du kein EVTPART1
2018-04-28 07:01:52 PRESENCE internet_connect presence: absent
Bei diesem Event bekommst Du ein EVTPART1
Das liegt daran wie der Event aufgebaut ist. Beim ersten ist das der Event
absent
Beim zweiten sieht der Event so aus
presence: absent
Vielen Dank für die schnelle Antwort und Erklärung!
Leider funktioniert es noch immer nicht. Habe es nun wie folgt
internet_connect presence:.*{
if ($EVTPART1 eq "present"){
fhem("set LED_gruen on);
fhem("set LED_rot off);
}
else {
fhem("set LED_gruen off");
fhem("set LED_rot on");
}
}
(ach ja um die Verwirrung aufzuklären einmal "internet_connect" und einmal "internet_watchdog"...Da ich zwischenzeitlich alles mögliche versucht habe mit die $EVTPART 0 &1 anzuzeigen wollte ich mir diese via telegram aufs Handy schicken um zu sehen was da drin steht. Vor lauter Frust dann alles wieder gelöscht und neu angefangen. Daher die unterschiedlichen Bezeichnungen).
Zitatinternet_connect:presence:.*
Zitat von: TomLee am 28 April 2018, 08:11:45
funktioniert leider auch nicht :-\
Wenn ich jedoch das hier mache, leuchtet die LED sobald ich die Internetverbindung wieder aufbaue
internet_connect:presence:.present set LED_gruen on
Weil da wsl. noch zwei Anführungszeichen fehlen:
Zitatinternet_connect presence:.*{
if ($EVTPART1 eq "present"){
fhem("set LED_gruen on");
fhem("set LED_rot off");
}
else {
fhem("set LED_gruen off");
fhem("set LED_rot on");
}
}
internet_connect.(present|absent) {
if ($EVENT eq "present"){
fhem("set LED_gruen on");
fhem("set LED_rot off");
}
else {
fhem("set LED_gruen off");
fhem("set LED_rot on");
}
}
Bitte richtig abschreiben
Zitat von: CoolTux am 28 April 2018, 08:36:12
internet_connect.(present|absent) {
if ($EVENT eq "present"){
fhem("set LED_gruen on");
fhem("set LED_rot off");
}
else {
fhem("set LED_gruen off");
fhem("set LED_rot on");
}
}
Bitte richtig abschreiben
Vielen Vielen Dank euch!!!
So funktioniert es. Sehr cool. Jetzt muss ich nur noch den unterschied in zusammenhang mit der Syntay verstehen zwischen EVTPART und EVENT
ZitatBitte richtig abschreiben
Ungluecklich war in diesem Fall, dass wg. dem ersten Leerzeichen in "internet_connect presence:.*{..." das notify Modul "presence:.*{..." als Befehl angenommen hat, es deswegen diesen nicht als Perl-Befehl erkannt hat, und deswegen die Perl Syntaxpruefung auch nicht zugeschlagen hat.
ZitatJetzt muss ich nur noch den unterschied in zusammenhang mit der Syntay verstehen zwischen EVTPART und EVENT
http://fhem.de/commandref.html#notify
Noch ein Tipp,
Zitat von: TomLee am 28 April 2018, 08:30:17
Weil da wsl. noch zwei Anführungszeichen fehlen:
heißt schlussfolgernd das du die fhem.cfg von Hand editierst.
Beim bearbeiten über den DEF-Editor hättest einen Fehler beim modify angezeigt bekommen der auf die fehlenden Anführungszeichen hinweist .