Hauptmenü

Abfrage von PRESENCE in IF?

Begonnen von Unicorn, 18 September 2017, 21:11:40

Vorheriges Thema - Nächstes Thema

Unicorn

Hallo zusammen!

Ich habe folgendes Szenario:
Wenn ein Fester geöffnet wird, soll nach der Zeit x eine Nachricht aufs Handy geschickt werden, dass das Fenster geschlossen werden soll, sofern dies noch nicht wieder geschlossen wurde.

Das funktioniert ganz gut per Watchdog und Telegram-Bot:
define Fenster_timer watchdog Fenster:open 00:10:00 Fenster:closed
    { fhem("set Bot message Fenster schließen") }
attr Fenster_timer autoRestart 1
attr Fenster_timer regexp1WontReactivate 1


Da im Haus 2 Personen wohnen, soll die Nachricht nur an anwesende Smartphones gesendet werden. Die Anwesenheitserkennung läuft über PRESENCE per WLAN-ping:
define Phone1 PRESENCE lan-ping 192.168.123.12 60
attr Phone1 userattr presence presence_map structexclude
define Phone2 PRESENCE lan-ping 192.168.123.23 60
attr Phone2 userattr presence presence_map structexclude


Leider habe ich aber mit folgendem Code keinen Erfolg:
define Fenster_timer watchdog Fenster:open 00:10:00 Fenster:closed
    { fhem("set Bot message Fenster schließen") if(Value(Phone1) eq "present")} ;;
    { fhem("set Bot message @123456789 Fenster schließen") if(Value(Phone2) eq "present")}


Scheinbar ist hier die Abfrage Value(Phone1) eq "present" falsch, da es mit z. B. if("present" eq "present") funktioniert.

Was mache ich falsch?

CoolTux


define Fenster_timer watchdog Fenster:open 00:10:00 Fenster:closed  {
    fhem("set Bot message Fenster schließen") if(Value(Phone1) eq "present");
    fhem("set Bot message @123456789 Fenster schließen") if(Value(Phone2) eq "present");
}


Und bitte nicht direkt die fhem.cfg bearbeiten. Und bisschen Perl lernen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Unicorn

Den Code bearbeite ich über die Oberfläche, aber um den Überblick zu bekommen ist bei manchen Sachen die cfg besser  :)
Ich arbeite mich in Perl ein, momentan ist aber vieles noch ähnlichen Code suchen, versuchen den zu verstehen und dann auf das eigene übertragen...

Irgendwas passt da noch nicht.
Mit fhem("set Bot message Fenster  schließen") if(Value("Phone1") eq "present" );
fhem("set Bot message Nachricht 2") if("2" eq "2"); }

Bekomme ich zumindest die 2. Nachricht (die ich als Kontrolle eingefügt habe.

Wenn ich if(Value(Phone1) eq "present" ) schreibe, ohne "" wie du geschrieben hast, wird überhaupt keine Nachricht gesendet. Das bringt wohl den ganzen Befehl durcheinander.

Unicorn

Ok, Lösung gefunden: Mit "" und ohne Schreibfehler...
Kaum macht man es richtig, schon funktionierts  ::) :o

CoolTux

Sorry hatte nur kopiert von Dir. Mein Fehler

define Fenster_timer watchdog Fenster:open 00:10:00 Fenster:closed  {
    fhem("set Bot message Fenster schließen") if(Value("Phone1") eq "present");
    fhem("set Bot message @123456789 Fenster schließen") if(Value("Phone2") eq "present");
}


Hoffe jetzt passt ea
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Unicorn

Danke!
Da sucht man ewig und versucht den Code zu verbessern und dann hat sich nur ein blöder Schreibfehler eingeschlichen...

Otto123

Hi,

noch ein Hinweis zum Titel:
if ist ein Perl Befehl
IF ist ein FHEM Befehl

Groß und Kleinschreibung ist wie so oft in diesem Umfeld äußerst wichtig!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz