Notify mit Bedingung hat Syntaxfehler

Begonnen von kh.schmidt, 15 November 2016, 10:24:58

Vorheriges Thema - Nächstes Thema

kh.schmidt

Hallo,
ich bin letztes Jahr auf Urlaub gefahren und habe die Haustüre nicht versperrrt. Deswegen möchte ich jetzt eine Pushmeldung senden, wenn ich als Abwesend erkannt werde und die Haustüre nicht versperrt ist.

Abwesenheitserkennung mit Bluetooth funktioniert bereits, ebenso das Versenden von Meldungen mit Push

Ein Notify mit DEF:
HA.Jay:off.* set pushmsg msg 'FHEM' 'Abwesend'
funktioniert. Nun möchte ich die Bedingung der offenen Haustüre einfügen:
HA.Jay:off.* {if(ReadingsVal("Eingang","Status,"offen") eq "offen") set pushmsg msg 'FHEM' 'Eingangstuer nicht versperrt!'}

das funktioniert aber nicht.
Wenn ich das Ereignis mit "trigger HA.Jay off" auslöse erhalte ich nur eine Warning im Log

Hat hier jemand eine Tipp, wo ich falsch liege


marvin78

Du bist im Perl Bereich. Also musst du den FHEM-Teil auch innerhab der fhem() Funktion ausführen um es wieder an FHEM zurück zugeben. Siehe Perl Specials in der commandref und diverse Einsteiger-Lektüre.

kh.schmidt


Wuppi68


if(ReadingsVal("Eingang","Status,"offen") eq "offen")


ist Strategisch "unklug"

Beim ReadingsVal setzt Du den Defaultwert auf den Vergleichenden ... tritt dabei ein Fehler auf bekommst Du trotzdem ein wahres Ergeniss

ich würde es z.B. so lösen


if(ReadingsVal('Eingang','Status','notavail') eq 'offen')
FHEM unter Proxmox als VM

Benni

Zitat von: Wuppi68 am 15 November 2016, 10:46:19
Beim ReadingsVal setzt Du den Defaultwert auf den Vergleichenden ... tritt dabei ein Fehler auf bekommst Du trotzdem ein wahres Ergeniss

Man könnte aber auch argumentieren, dass es in diesem relativ "kritischen" Fall (Haustür ist noch offen) erwünscht ist, im Fehlerfall lieber eine, zugegebenermaßen falsche Meldung zu bekommen, als gar keine. Der tatsächliche Status der Tür ist ja zu dem Zeitpunkt quasi undefiniert und könnte beides sein (Schrödingers Haustür sozusagen ;D)