Guten Abend
fhem soll bei Anwesenheit meines Handys das Licht einschalten, aber nur wenn es dunkel ist. Mein Versuch bringt den Fehler
CasiStatusAnwesend return value: Unknown command if, try help.
Um diese Zeile geht es.
define CasiStatusAnwesend notify CasiStatus:1 set HomeStatus 1;; if (Value("LichtStatus")<2) {fhem("set FlurLichtTag on;; sleep 300;; set FlurLichtTag off")}
Kann mir bitte jemand helfen ?
#Licht an oder aus beim Heimkommen
#1= licht an 2=licht aus
define LichtStatus dummy
attr LichtStatus setList LichtStatus 1 2
attr LichtStatus room Haus
define Lichtan at *{sunset("HORIZON=-3.0",0,"14:30","22:30")} set LichtStatus 1
attr Lichtan room Timer
define Lichtaus at *{sunrise(0,"04:30","09:30")} set LichtStatus 2
attr Lichtaus room Timer
Gruß und danke
Ich bin nicht 100% sicher, aber ich denke, Du musst das komplette if-Konstrukt noch in geschweifte Klammern setzen, damit es als Perl erkannt wird.
Hallo Manul
so {if (Value("LichtStatus")<2) {fhem("set FlurLichtTag on;; sleep 300;; set FlurLichtTag off")}}
hatte ich es vorher, mit dem selben Fehler. Oder meintest du das anders ?
danke für deine Mühe
So meinte ich es, ja. Ich habe noch mal in die Commandref geschaut: notify kann wohl entweder FHEM oder perl-Kommandos aufrufen, aber keinen Mix. Versuch doch mal:
define CasiStatusAnwesend notify CasiStatus:1 { fhem("set HomeStatus 1"); if (Value("LichtStatus")<2) {fhem("set FlurLichtTag on;; sleep 300;; set FlurLichtTag off")}
CasiStatusAnwesend return value: Unknown command {, try help.
wenn ich die { am ende zu Mache,
define CasiStatusAnwesend notify CasiStatus:1 { fhem("set HomeStatus 1"); if (Value("LichtStatus")<2) {fhem("set FlurLichtTag on;; sleep 300;; set FlurLichtTag off")}}
gibt es den selben Fehler.
define CasiStatusAnwesend notify CasiStatus:1 fhem("set HomeStatus 1"); if (Value("LichtStatus")<2) {fhem("set FlurLichtTag on;; sleep 300;; set FlurLichtTag off")}
CasiStatusAnwesend return value: Unknown command fhem("set, try help.
Danke Dir.
Gruß
define CasiStatusAnwesend notify CasiStatus:1 { fhem("set HomeStatus 1");
if (Value("LichtStatus")<2) {
fhem("set FlurLichtTag on; sleep 300; set FlurLichtTag off");
}
}
Hallo CoolTux,
danach startet FHEM nicht mehr
WARNING: sleep without additional commands is deprecated and blocks FHEM
leider übersteigt das mein aktuelles Wissen....
Gruß und danke
Diesen Fehler konnte ich jetzt beseitigen, durch einen on-for-timer. Dafür gibts jetzt den alten Fehler wieder :)
CasiStatusAnwesend return value: Unknown command {, try help.
define CasiStatusAnwesend notify CasiStatus:1 { fhem("set HomeStatus 1");
if (Value("LichtStatus")<2) {
fhem("set HUEDevice18 on-for-timer 300");
}
}
Gruß & gute n8
Das verstehe ich nicht. Mein Code ist einfach und sollte genau so laufen.
Wenn Du das im DEF Bereich des Notifys ein gibst und dann auf modify drückst sollte er entweder meckern wenn der Code nicht stimmt oder abspeichern und lauffähig sein
CasiStatus:1 { fhem("set HomeStatus 1");
if (Value("LichtStatus")<2) {
fhem("set HUEDevice18 on-for-timer 300");
}
}
define CasiStatusAnwesend notify CasiStatus:1 { fhem("set HomeStatus 1");
if (Value("LichtStatus")<2) {
fhem("set HUEDevice18 on-for-timer 300");
}
}
Missing right curly or square bracket at (eval 369) line 1, at end of line
syntax error at (eval 369) line 1, at EOF
Unknown command if, try help.
Unknown command }, try help.
Danke für deine Hilfe
Gruß
Zitat von: CoolTux am 02 Mai 2017, 06:09:58Wenn Du das im DEF Bereich des Notifys ein gibst und dann auf modify drückst
Hast Du das wirklich ganz genau so gemacht?
Gruß,
Thorsten
Gib mal bitte ein list von Notify Device. Irgendwas machst Du "anders"
Eine geschweifte klammer zuviel, eine normale zuwenig. Oder seh ich das falsch?
Gesendet von meinem S3_32 mit Tapatalk
Also wenn ich nicht ganz blind bin stimmen zu mindest die Klammern in meinem Beispiel. Am besten wir warten Mal auf das list. Habe den Verdacht wir haben hier ein cfg Editierer wo das ganze schief geht.
bisher wurden die Daten per nano in der jeweiligen .cfg Datei geändert.
Ich habe nun ein Device in der Config erstellt
define CasiStatusAnwesend notify CasiStatus:1 set HomeStatus 1
und dann der DEF Bereich per Gui angepasst.
CasiStatus:1 { fhem("set HomeStatus 1");
if (Value("LichtStatus")<2) {
fhem("set HUEDevice18 on-for-timer 300");
}
}
wurde ohne fehler übernommen und funktioniert im Test.
@CoolTux wie bitte erstelle ich das list ?
list Devicename in die FHEM Commandline eingeben.
Die cfg zu editieren bringt nur Probleme wie man sieht.
Internals:
CFGFN /opt/fhem/cfg/casi.cfg
DEF CasiStatus:1 { fhem("set HomeStatus 1");
if (Value("LichtStatus")<2) {
fhem("set HUEDevice18 on-for-timer 300");
}
}
NAME CasiStatusAnwesend
NOTIFYDEV CasiStatus
NR 489
NTFY_ORDER 50-CasiStatusAnwesend
REGEXP CasiStatus:1
STATE 2017-05-02 17:11:27
TYPE notify
Readings:
2017-05-02 17:08:55 state active
Attributes:
Passt. So sollte es gehen. Hast du noch Probleme oder geht es nun?
Ich zähle 3 geschweifte und 7 normale. Wo ist mein Denkfehler?
Gesendet von meinem S3_32 mit Tapatalk
Keine Ahnung. Auf meinem Tablet sind 4 geschweifte und 8 normale. Muss wohl am Endgerät liegen
der Timer geht nicht, die Lampe bleibt an. Am Donnerstag kann ich weiter schauen.
Danke euch für die Hilfe bisher !
Gruß
Sorry, hat ein bischen länger gedauert. Die TabletUI kam mir dazwischen :)
so
define CasiStatusAnwesend notify CasiStatus:1 {if (Value("HomeStatus")>1) {fhem("set HomeStatus 1")}};; {if (Value("LichtStatus")<2) {fhem("set HUEDevice18 on-for-timer 300")}}
funktioniert es jetzt.
Gruß und danke für Eure Hilfe