[ERLEDIGT] notify erstellt AT mit IF-Prüfung

Begonnen von Felix_86, 25 April 2019, 21:02:10

Vorheriges Thema - Nächstes Thema

Felix_86

Hallo zusammen,

ich habe ein notify, welches auf die Präsenz eines Amazon FTV Stick reagiert und in Abhängigkeit der aktuellen Uhrzeit ein AT erstellt. Das funktioniert soweit auch problemlos.

Anbei das aktuelle notify:
(Presence_AmazonStick_WL:presence:.(present|absent)) {

# Dynamische Vergabe von Zeiten je nach tatsächlicher Sonnenuntergang-Funktion
my $Sonnenuntergang = ReadingsVal("Sonnenuntergang","state","");
my $STUNDE = (split(/:/,$Sonnenuntergang))[0];

if (Value("Presence_AmazonStick_WL") eq "absent")
{fhem("set  Hue_WZ_.* off;delete at_Praesenz_AmazonStick_Schaltet_Licht_.*");}

if (Value("Presence_AmazonStick_WL") eq "present" && ($hour >= "$STUNDE") )
{fhem("set Hue_WZ_Blume rgb  CD7600;set Hue_WZ_TV rgb 494949");}

# Wenn Amazon-Erkennung vor $Sonnenuntergang, dann wird ein AT für einmaliges Einschaltung zu $Sonnenuntergang gesetzt
if (Value("Presence_AmazonStick_WL") eq "present" && ($hour < "$STUNDE") )
{
fhem("define at_Praesenz_AmazonStick_Schaltet_Licht_Blume at $Sonnenuntergang set Hue_WZ_Blume rgb CD7600");
fhem("define at_Praesenz_AmazonStick_Schaltet_Licht_TV at $Sonnenuntergang set Hue_WZ_TV rgb 494949");
}

}


Nun möchte ich die Definition des ATs innerhalb des notify anpassen, damit das AT eine IF-Prüfung erhält, ob die Lampe ausgeschaltet ist.
Gebe ich folgendes in die FHEM Kommandozeile ein, wird ein AT nach meinen Wünschen erstellt:

define at_Praesenz_AmazonStick_Schaltet_Licht_TEST at 12:34 { if (Value("Hue_WZ_Blume") eq "OFF"){ set Hue_WZ_Blume rgb CD7600 } }

Hinterlege ich nun allerdings diese IF-Prüfung im Notify, gibt es scheinbar irgendwo ein Durcheinander mit den Anführungszeichen und ich erhalte einen Fehler.

(Presence_AmazonStick_WL:presence:.(present|absent)) {

# Dynamische Vergabe von Zeiten je nach tatsächlicher Sonnenuntergang-Funktion
my $Sonnenuntergang = ReadingsVal("Sonnenuntergang","state","");
my $STUNDE = (split(/:/,$Sonnenuntergang))[0];

if (Value("Presence_AmazonStick_WL") eq "absent")
{fhem("set  Hue_WZ_.* off;delete at_Praesenz_AmazonStick_Schaltet_Licht_.*");}

if (Value("Presence_AmazonStick_WL") eq "present" && ($hour >= "$STUNDE") )
{fhem("set Hue_WZ_Blume rgb  CD7600;set Hue_WZ_TV rgb 494949");}

# Wenn Amazon-Erkennung vor $Sonnenuntergang, dann wird ein AT für einmaliges Einschaltung zu $Sonnenuntergang gesetzt
if (Value("Presence_AmazonStick_WL") eq "present" && ($hour < "$STUNDE") )
{
fhem("define at_Praesenz_AmazonStick_Schaltet_Licht_TV at $Sonnenuntergang { if (Value("Hue_WZ_TV") eq "OFF"){ set Hue_WZ_TV rgb CD1231 } }");
fhem("define at_Praesenz_AmazonStick_Schaltet_Licht_Blume at $Sonnenuntergang { if (Value("Hue_WZ_Blume") eq "OFF"){ set Hue_WZ_Blume rgb CD7600 } }");
}
}



Fehler:

syntax error at (eval 212603) line 16, near ""define at_Praesenz_AmazonStick_Schaltet_Licht_TV at $Sonnenuntergang { if (Value("Hue_WZ_TV"
syntax error at (eval 212603) line 16, near ""define at_Praesenz_AmazonStick_Schaltet_Licht_Blume at $Sonnenuntergang { if (Value("Hue_WZ_Blume"


Kann mir wohl bitte jemand auf doe Sprünge helfen, wo der Fehler liegt und wie er zu beheben ist?

Besten Dank vorab,
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.4, ca 315 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

CoolTux

fhem("define at_Praesenz_AmazonStick_Schaltet_Licht_Blume at $Sonnenuntergang set Hue_WZ_Blume:FILTER=STATE=OFF rgb CD7600");
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

Felix_86

#2
Zitat von: CoolTux am 25 April 2019, 21:08:29
fhem("define at_Praesenz_AmazonStick_Schaltet_Licht_Blume at $Sonnenuntergang set Hue_WZ_Blume:FILTER=STATE=OFF rgb CD7600");

Hinweis für mich und andere: Der zu prüfende State-Filter ist Case sensitive.
Hier im Beispiel habe ich "OFF" geschrieben, tatsächlich im HUE Device ist der State allerdings "off", daher hat der Filter nicht funktioniert
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.4, ca 315 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2