FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Unicorn am 18 September 2017, 21:11:40

Titel: Abfrage von PRESENCE in IF?
Beitrag von: Unicorn am 18 September 2017, 21:11:40
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?
Titel: Antw:Abfrage von PRESENCE in IF?
Beitrag von: CoolTux am 18 September 2017, 21:26:56

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.
Titel: Antw:Abfrage von PRESENCE in IF?
Beitrag von: Unicorn am 18 September 2017, 21:48:24
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.
Titel: Antw:Abfrage von PRESENCE in IF?
Beitrag von: Unicorn am 18 September 2017, 21:51:49
Ok, Lösung gefunden: Mit "" und ohne Schreibfehler...
Kaum macht man es richtig, schon funktionierts  ::) :o
Titel: Antw:Abfrage von PRESENCE in IF?
Beitrag von: CoolTux am 18 September 2017, 21:51:56
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
Titel: Antw:Abfrage von PRESENCE in IF?
Beitrag von: Unicorn am 18 September 2017, 21:57:58
Danke!
Da sucht man ewig und versucht den Code zu verbessern und dann hat sich nur ein blöder Schreibfehler eingeschlichen...
Titel: Antw:Abfrage von PRESENCE in IF?
Beitrag von: Otto123 am 18 September 2017, 22:04:54
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