Hallo,
ich bin noch recht neu mit fhem (und dazu muss ich leider auch sagen, von Perl hab ich bisher noch recht wenig Ahnung).
Also was ich gerne verwirklichen wollen würde ist folgendes.
Wenn der Türkontakt Veranda auf open schaltet und es nach Sonnenuntergang ist und das Licht auf der Veranda aus ist, soll für 2 Minuten das Licht auf der Veranda angehen.
Einfachere Sachen hab ich mithilfe des Wikis schon hinbekommen, bei obiger Konstellation scheitere ich noch.
MfG
Konni
Hi Konni,
dann poste doch Mal einen oder zwei deiner gescheiterten Versuche. Macht es klarer, wo evtl. Defizite sind und potenzielle Helfer wissen, wie du deine Geräte benannt hast.
Aus dem Wiki die CodeSnippets/HowTos zu sunset / Flurlicht usw. sind dir bekannt?
Gruß
Thomas
Genau. Wenn du uns sagst, wie dein Verandatürkontakt und das Verandalicht heisst, dann kann man was vorschlagen.
Also meine Versuche kann ich erst heut abend posten, aber die Namen weiß ich auswendig.
Der Türkontakt hat den Namen: OG.Veranda.Tuer und gibt als Status "open" zurück.
Der Lichtkontakt heißt: OG.Veranda.Licht.
Mfg
Konni
Ich schlage vor, in Namen *nicht* Punkte zu verwenden. Ich habe ein "ungutes Gefühl" was z.B. eventuell spätere Stringoperationen in PERL betrifft, denn der Punkt hat in PERL eine Bedeutung. Im Folgenden daher alles durch Underscore ersetzt.
define Verandalicht_2Min notify OG_Veranda_Tuer:open { if (!isday()) && (Value("OG_Veranda_Licht") eq "off" { fhem("setOG_Veranda_Licht on-for-timer 120 ") } }
isday orientiert sich an der bürgerlichen Dämmerung, d.h. die Umschaltung auf Nacht erfolgt, nachdem die Sonne ein paar Grad unter dem Horizont ist.
Edit:
Ersetze "ungutes Gefühl" durch: Geht definitiv nicht, darfst du nicht so machen.
Hallo,
die bige Variante hat leider nicht geklappt, ich hab immer einen Syntaxfehler bekommen.
Hab die ganze Sache jetzt etwas umgebaut, und folgende Variante scheint zu funktionieren.
define Verandalicht_2Min notify OG_WZ_TuerVeranda:open {if (!isday()) {if (Value("OG_Veranda_Licht") eq "off") { fhem "set OG_Veranda_Licht on-for-timer 30" }}}
Wenn ich mein "PHP" wissen auf Perl uminterpretire, sollte es jetzt wie folgt ablaufen:
Wenn nichtTag wahr,dann, wenn Licht aus wahr, dann mach das Licht für 30 sec an.
Zwar sicherlich nicht der sauberste Stiel, scheint aber zu funktionieren ;)
Zitatdie bige Variante hat leider nicht geklappt, ich hab immer einen Syntaxfehler bekommen.
Nämlich welchen?
ZitatHab die ganze Sache jetzt etwas umgebaut, und folgende Variante scheint zu funktionieren.
define Verandalicht_2Min notify OG_WZ_TuerVeranda:open {if (!isday()) {if (Value("OG_Veranda_Licht") eq "off") { fhem "set OG_Veranda_Licht on-for-timer 30" }}}
Ich finde es echt sehr erstaunlich, dass das überhaupt was macht.
Ich bin wirklich verblüfft.
Im Log kam folgender Fehler:
2013.04.26 19:44:59 3: Verandalicht_2Min return value: syntax error at (eval 23) line 1, near ") &&"
syntax error at (eval 23) line 1, near "} }"
Mein Fehler:
define Verandalicht_2Min notify OG_Veranda_Tuer:open { if (!isday()) && Value("OG_Veranda_Licht") eq "off" { fhem("setOG_Veranda_Licht on-for-timer 120 ") } }
sollte besser gehen.
Also mit der Variante
define Verandalicht_2Min notify OG_Veranda_Tuer:open { if (isday()) && Value("OG_Veranda_Licht") eq "off" { fhem("set OG_Veranda_Licht on-for-timer 120 ") } }
Kommt keine Fehlermeldung, aber es tut sich auch nichts (die negierung von isday hab ich weggemacht um jetzt unter Tags testen zu können).
Hm. Normal debuggen, also erstmal sehen, ob
define Verandalicht_2Min notify OG_Veranda_Tuer:open
triggert, z.b. durch ein simples
define Verandalicht_2Min notify OG_Veranda_Tuer:open set OG_Veranda_Licht on-for-timer 120
Danach die Bedingungen einzeln testen, z.b. so:
define Verandalicht_2Min notify OG_Veranda_Tuer:open { if (isday()) { fhem("set OG_Veranda_Licht on-for-timer 30 ") } }
Im Zweifel auch mal mit Telnet auf FHEM und inform timer nachsehen, was passiert.
Ich sehe gerade, dass ich vielleicht noch einen Fehler drin habe, sorry. (ich hatte das eben nur so aus dem Kopf hingesschrieben)
Probier mal bitte dies:
define Verandalicht_2Min notify OG_Veranda_Tuer:open { if (isday() && Value("OG_Veranda_Licht") eq "off") { fhem("set OG_Veranda_Licht on-for-timer 120 ") } }
Da bekomme ich jetzt folgende Meldung
2013.04.27 20:35:33 3: Verandalicht_2Min return value: Unknown command {, try help
Ok, den Fehler hab ich beseitigen können, der Browser hat eine Zeilenschaltung am ende eigefügt.
Trozdem funktioniert es so auch nicht, es kommt auch kein Fehler im Log.
Die Anweisungen jeweils alleine funktionieren auch.
Also sowohl { if (isday()) { fhem("set OG_Veranda_Licht on-for-timer 30 ") } }
Als auch {if (Value("OG_Veranda_Licht") eq "off") { fhem("set OG_Veranda_Licht on-for-timer 30 ") } }
Okay, ich stehe gerade auf'm Schlauch und/oder bin betriebsblind.
Ich sehe nachher noch mal drauf, vielleicht fällt es mir dann auf.
Mach dir doch keinen Streß, die doppel If Konstruktion funktioniert ja, ob der Code jetzt dadruch etwas aufgeblähter ist, ist doch egal ;)
Warum kompliziert, wenn es auch einfach geht.
Naja, so wie ich das sehe sollte dein Code eigentlich nicht funktionieren. Da fehlen Klammern und die doppelte Verschachtelung ist... sehr ungewöhnlich... to say the least.
Mir ist im Moment ein Rätsel wieso meines nicht geht und EBENSO wieso deines geht.
Aber okay: Wenn es erstmal das macht, was du willst...