FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Konni am 26 April 2013, 11:08:10

Titel: Licht Status und Zeitabhängig schalten
Beitrag von: Konni am 26 April 2013, 11:08:10
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
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Rohan am 26 April 2013, 13:29:30
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
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 26 April 2013, 14:29:59
Genau. Wenn du uns sagst, wie dein Verandatürkontakt und das Verandalicht heisst, dann kann man was vorschlagen.
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Konni am 26 April 2013, 14:55:24
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
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 26 April 2013, 15:14:14
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.
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Konni am 26 April 2013, 22:22:37
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 ;)
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 26 April 2013, 23:29:59
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.
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Konni am 26 April 2013, 23:52:24
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 "} }"

Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 27 April 2013, 01:11:21
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.
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Konni am 27 April 2013, 11:53:02
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).
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 27 April 2013, 19:13:28
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.
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 27 April 2013, 19:57:09
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 ") } }
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Konni am 27 April 2013, 20:49:40
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 ") } }
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 27 April 2013, 21:26:32
Okay, ich stehe gerade auf'm Schlauch und/oder bin betriebsblind.

Ich sehe nachher noch mal drauf, vielleicht fällt es mir dann auf.
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Konni am 27 April 2013, 21:28:19
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.
Titel: Aw: Licht Status und Zeitabhängig schalten
Beitrag von: Zrrronggg! am 27 April 2013, 21:38:16
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...