FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: geiercasi am 01 Mai 2017, 18:10:50

Titel: gelöst, return value: Unknown command if
Beitrag von: geiercasi am 01 Mai 2017, 18:10:50
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
Titel: Antw:return value: Unknown command if
Beitrag von: Manul am 01 Mai 2017, 18:32:31
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.
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 01 Mai 2017, 18:35:21
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
Titel: Antw:return value: Unknown command if
Beitrag von: Manul am 01 Mai 2017, 18:41:17
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")}
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 01 Mai 2017, 18:59:29
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ß
Titel: Antw:return value: Unknown command if
Beitrag von: CoolTux am 01 Mai 2017, 19:07:42

define CasiStatusAnwesend notify CasiStatus:1 {     fhem("set HomeStatus 1");
                if (Value("LichtStatus")<2) {
                     fhem("set FlurLichtTag on; sleep 300; set FlurLichtTag off");
                 }
}
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 01 Mai 2017, 19:16:38
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
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 01 Mai 2017, 23:38:04
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
Titel: Antw:return value: Unknown command if
Beitrag von: CoolTux am 02 Mai 2017, 06:09:58
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");
                 }
}
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 02 Mai 2017, 09:33:50
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ß
Titel: Antw:return value: Unknown command if
Beitrag von: Thorsten Pferdekaemper am 02 Mai 2017, 15:55:09
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
Titel: Antw:return value: Unknown command if
Beitrag von: CoolTux am 02 Mai 2017, 16:02:02
Gib mal bitte ein list von Notify Device. Irgendwas machst Du "anders"
Titel: Antw:return value: Unknown command if
Beitrag von: Frank_Huber am 02 Mai 2017, 16:51:19
Eine geschweifte klammer zuviel, eine normale zuwenig. Oder seh ich das falsch?

Gesendet von meinem S3_32 mit Tapatalk

Titel: Antw:return value: Unknown command if
Beitrag von: CoolTux am 02 Mai 2017, 16:55:00
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.
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 02 Mai 2017, 17:18:54
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 ?
Titel: Antw:return value: Unknown command if
Beitrag von: CoolTux am 02 Mai 2017, 17:29:08
list Devicename in die FHEM Commandline eingeben.
Die cfg zu editieren bringt nur Probleme wie man sieht.
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 02 Mai 2017, 17:44:54
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:

Titel: Antw:return value: Unknown command if
Beitrag von: CoolTux am 02 Mai 2017, 17:52:46
Passt. So sollte es gehen. Hast du noch Probleme oder geht es nun?
Titel: Antw:return value: Unknown command if
Beitrag von: Frank_Huber am 02 Mai 2017, 18:37:52
Ich zähle 3 geschweifte und 7 normale. Wo ist mein Denkfehler?

Gesendet von meinem S3_32 mit Tapatalk

Titel: Antw:return value: Unknown command if
Beitrag von: CoolTux am 02 Mai 2017, 18:53:00
Keine Ahnung. Auf meinem Tablet sind 4 geschweifte und 8 normale. Muss wohl am Endgerät liegen
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 02 Mai 2017, 23:16:10
der Timer geht nicht, die Lampe bleibt an. Am Donnerstag kann ich weiter schauen.
Danke euch für die Hilfe bisher !

Gruß
Titel: Antw:return value: Unknown command if
Beitrag von: geiercasi am 08 Mai 2017, 13:25:55
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