FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: slor am 13 März 2014, 15:17:13

Titel: Syntaxfehler im Notify
Beitrag von: slor am 13 März 2014, 15:17:13
Hallo zusammen,

ich möchte gerne, dass meine Küchenlampe angeht, sobald die Terassentür aufgeht.
Ich habe ein logfile erstellt, in das nur open und close von Haustür und Gartentür gelogged werden. (Zur besseren übersicht)

Nun habe ich noch einen Notify gebaut, der bei einem Open nach Sonnenuntergang das Licht für 600 Sek einschalten soll.

Kontakt_Gartentuer.open {\sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min)) {\fhem "set EG_Kueche_Deckenlampe on-for-timer 600";;\  }\ }

Bei folgendem Eintrag im Log soll der Notify reagieren: 2014-03-13_08:29:16 kontakte Gartentuer open
Das funktioniert auch soweit. Nur scheint, dass was ich danach genaut habe nicht so zu stimmen.
Fehler:
kontakt_Gartentuer_auf_licht_an return value: syntax error at (eval 28) line 1, near ")) "
syntax error at (eval 28) line 1, near "} }"


Kann mal bitte jemand von den Profi Codern da drauf schauen?

Vielen Dank!
Titel: Antw:Syntaxfehler im Notify
Beitrag von: dieda am 13 März 2014, 17:25:31
Hast du dir das Beispiel der If-Funktion aus dem Einsteigerleitfaden angeschaut und mit deinem verglichen?

define Schalter1Notify notify Schalter1 { if ( "%" eq "off") {fhem("set wz_Media off")} }

Dort steht {wenn ("der Wert der gelesen werden soll" eg "der Wert der sein soll") {fhem("set dein Aktor der schalten soll")} }

Das ist die Bedingung:
("der Wert der gelesen werden soll" eg "der Wert der sein soll")

Das was Fhem machen soll:
{fhem("set dein Aktor der schalten soll")}

Mehrere Bedingungen werden mit
&&
verkettet.

Beispiel:
define test notify .*:.* { if ($NAME eq "Taster" && $EVENT eq "on") [fhem("set lampe $EVENT")} }

Weitere Infos findest du im http://forum.fhem.de/index.php/topic,19621.0.html (http://forum.fhem.de/index.php/topic,19621.0.html) unter dem Punkt "Einfache Programmierung: if-Bedingung"
Titel: Antw:Syntaxfehler im Notify
Beitrag von: slor am 13 März 2014, 18:02:31
Danke für die Hinweise. Ich hatte mir das aus dem Forum / Wiki zusammengesucht. Scheinbar ist das noch die alte Schreibweise.

Ich werde mich da noch mal durchwühlen.

Für konkrete Tips wie mein Code funktionieren würde wäre ich trotzdem dankbar.
Titel: Antw:Syntaxfehler im Notify
Beitrag von: Haecksler am 13 März 2014, 18:34:43
Probiers mal so:
Kontakt_Gartentuer {if (Value("Kontakt_Gartentuer") eq "open" && (sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min)) {fhem ("set EG_Kueche_Deckenlampe on-for-timer 600")} }

Ist aber ohne Gewähr.

Gruß,
Stefan
Titel: Antw:Syntaxfehler im Notify
Beitrag von: Damian am 13 März 2014, 20:32:24
Darf es auch etwas weniger kryptisch sein?

define n_lampe notify Kontakt_Gartentuer.open IF ($hms gt sunset_abs(1800)) (set EG_Kueche_Deckenlampe on-for-timer 600)

IF findest du hier:

http://forum.fhem.de/index.php/topic,17895.msg118503.html#msg118503

Gruß

Damian
Titel: Antw:Syntaxfehler im Notify
Beitrag von: slor am 14 März 2014, 12:58:34
 :) Danke! Das ist ja deutlich einfacher und verständlicher. Ich probier das heute Abend mal aus.

Wird das on-for-timer eigentlich nach Ablauf der 600 Sek auf off zurückgesetzt? Bzw. zählt FHEM runter, so das man sehen könnte wie viel Zeit schon verstrichen ist?

Was muss ich eigentlich noch einbauen, falls die Küchen Lampe schon an ist und jemand die Garten Tür öffnet? Es soll den Timer nur sezten, wenn status der Lampe off ist.
Titel: Antw:Syntaxfehler im Notify
Beitrag von: Damian am 14 März 2014, 14:49:10
Zitat von: slor am 14 März 2014, 12:58:34
:) Danke! Das ist ja deutlich einfacher und verständlicher. Ich probier das heute Abend mal aus.

Wird das on-for-timer eigentlich nach Ablauf der 600 Sek auf off zurückgesetzt? Bzw. zählt FHEM runter, so das man sehen könnte wie viel Zeit schon verstrichen ist?

Was muss ich eigentlich noch einbauen, falls die Küchen Lampe schon an ist und jemand die Garten Tür öffnet? Es soll den Timer nur sezten, wenn status der Lampe off ist.

Der Status bleibt on-for-timer auch, wenn die Lampe ausgegangen ist. Du kannst aber ohne Fehlermeldung das Kommando absetzen, bevor die Lampe ausgegangen ist - die Zeit verlängert sich entsprechend.


Gruß

Damian
Titel: Antw:Syntaxfehler im Notify
Beitrag von: slor am 14 März 2014, 15:18:50
Ich meinte, was muss noch rein, wenn ich vor her die Lampe manuell angeschaltetet habe, damit das Kommando on-for-timer nicht gesetzt wird, da ja sonst die lampe aus geht. Z.B. beim Abendessen ist das Licht an und ich mache die Tür auf. Dann sitze ich nach 10 min im dunkeln.

Da muss noch eine zweite Bedingung rein und mit "und" mit dem bestehenden If verknüpft werden:
define n_lampe notify Kontakt_Gartentuer.open (IF ($hms gt sunset_abs(1800)) and IF ([EG_Kueche_Deckenlampe:state] eq "off")) (set EG_Kueche_Deckenlampe on-for-timer 600)

Richtig?
Titel: Antw:Syntaxfehler im Notify
Beitrag von: Damian am 14 März 2014, 16:04:08
Zitat von: slor am 14 März 2014, 15:18:50
Ich meinte, was muss noch rein, wenn ich vor her die Lampe manuell angeschaltetet habe, damit das Kommando on-for-timer nicht gesetzt wird, da ja sonst die lampe aus geht. Z.B. beim Abendessen ist das Licht an und ich mache die Tür auf. Dann sitze ich nach 10 min im dunkeln.

Da muss noch eine zweite Bedingung rein und mit "und" mit dem bestehenden If verknüpft werden:
define n_lampe notify Kontakt_Gartentuer.open (IF ($hms gt sunset_abs(1800)) and IF ([EG_Kueche_Deckenlampe:state] eq "off")) (set EG_Kueche_Deckenlampe on-for-timer 600)

Richtig?

Wenn schon, dann ohne zweiten IF:

define n_lampe notify Kontakt_Gartentuer.open IF ($hms gt sunset_abs(1800) and [EG_Kueche_Deckenlampe:state] eq "off") (set EG_Kueche_Deckenlampe on-for-timer 600)

oder noch eleganter:

define n_lampe notify Kontakt_Gartentuer.open IF ($hms gt sunset_abs(1800)) (set EG_Kueche_Deckenlampe:FILTER=STATE!=on on-for-timer 600)


Gruß

Damian
Titel: Antw:Syntaxfehler im Notify
Beitrag von: slor am 14 März 2014, 18:25:37
Herrlich, ich würd auch gern vernünftig Programmieren können...  :-[
Vielen Dank! Sobald ich Dein If Modul importiert habe mach ich mal einen Test. Ist ja so lansgam dunkel hier im Norden.

Sebastian
Titel: Antw:Syntaxfehler im Notify
Beitrag von: slor am 02 April 2014, 12:47:26
Moin Moin noch mal,

das Ganze läuft nun seit 2 Wochen ohne Probleme... bis ich heute mal nach 00 Uhr nach Hause gekommen bin.
Da ging das Licht nämlich nicht an :-( Ich dachte erst, es liegt an meinem Alkoholpegel... Aber nein, die Sonne ist heute ja noch nicht untergegangen.

Wie kan ich denn das Notify so erweitern, dass es zwischen Sonnenuntergang und Sonnnaufgang die Lampe anschltet?
Titel: Antw:Syntaxfehler im Notify
Beitrag von: Paul am 02 April 2014, 13:08:27
Schau mal nach isday
Titel: Antw:Syntaxfehler im Notify
Beitrag von: betateilchen am 02 April 2014, 14:09:06
Zitat von: slor
Herrlich, ich würd auch gern vernünftig Programmieren können...
...
Sobald ich Dein If Modul importiert habe

(Randbemerkung) ich kann zwar programmieren, aber der Sinn bzw. die Notwendigkeit von IF hat sich mir bis heute nicht erschlossen