Hauptmenü

Sunset und Sunrise

Begonnen von Puschel74, 06 März 2012, 17:32:45

Vorheriges Thema - Nächstes Thema

borsti67

                                                 

Hi Hubert,

> was das Script machen soll, hatte ich bereits eingangs geschrieben,
> nähmlich unterscheidliche Zeiten zu generieren, abhängig davon, ob
> nun Wochenende ist oder eben nicht. Das setzt nun mal auch zwei Wege
> voraus.

Das finde ich relativ sinnlos... Der DEFINE erzeugt Dir einen Timer, der
automatisch (!) immer wieder ausgeführt wird. Den also immer und immer
wieder neu zu machen, widerspricht dem Sinn eines sich wiederholenden
Timers.
Also hat einer von uns beiden einen massiven Denkfehler... ;)
Ich würde aus Deinen bisherigen Postings eher schließen, dass Du die
SCHALTUNG zu diesen Zeitpunkten erledigt haben möchtest

> wirklich meinst,
> auch nicht, wass da noch fehlen soll.

Dein Auszug beginnt mit einer geschweiften Klammer - das KANN so nicht
in der FHEM.CFG stehen. Da fehlt noch irgendwas davor und/oder danach.
Normalerweise beginnt jeder Anweisungsblock mit DEFINE...

>      > {if ($we == 1) \
>      > {fhem("define WZ_Rollladen_hoch at *07:45:00 set Rollo_wz on ")}\
>      > else\
>      > {fhem("define WZ_Rollladen_hoch at *{sunrise(0,'06:00','08:00')} set
>      > Rollo_wz on")} \
>      > }

Daraus könnte man dann schlussfolgern, wann bzw. unter welchen Umständen
Deine seltsamen DEFINEs überhaupt ausgewertet werden und somit der
scheinbaren Umkehrung der gewünschten Logik auf die Spur kommen.

Um das Ganze mal zu vereinfachen, meine Empfehlung wären ganz schlicht
und einfach ZWEI Timer:

define WZ_Rollladen_hoch_WE at *07:45:00 {if($we){fhem("set Rollo_wz on")}}
define WZ_Rollladen_hoch at *{sunrise(0,'06:00','08:00')}
{if(!$we){fhem("set Rollo_wz on")}}

(ungetestet!)

Gruss
Torsten

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

Zrrronggg!

                                                     

Exact das selbe wie Bortsi wollte ich auch schon anmerken, weil ich es
auch GENAU so mache. (und da meine Konfiguration auf Vorarbeiten von
Olaf hier aus dem Forum basiert wären wir dann schon zu dritt)

Ich war mir dann aber auf einmal wie Borsti unsicher, ob ICH da einen
Denkfehler habe und Huberts konfig einen Vorteil hat, den ich nicht
sehe.

In der Version von dir Hubert hat meiner Auffassung nach noch den
Nachteil, das sie ab dem zweiten Tag Fehlermeldungen wirft, weil dann
define WZ_Rollladen_hoch at *07:45:00 set Rollo_wz on vom VORTAG noch
existiert und ab da dann... hm... da fällt mir auf... da liegt auch
das Problem in deiner Konfig!
Was immer du ZUERST definierst, wird von der zweiten Definition ja
nicht überschrieben! Wenn du also z.b. am WE dein Script laufen lässt,
erzeugt es wie geplant:

define WZ_Rollladen_hoch at *07:45:00 set Rollo_wz on

Und was passiert am Montag? Das Script will

define WZ_Rollladen_hoch at *{sunrise(0,'06:00','08:00')} set
Rollo_wz on

ausführen, da es aber schon  WZ_Rollladen_hoch vom Wochenende gibt,
wird das gar nicht mehr erzeugt sondern es kommt die Fehlermeldung
"WZ_Rollladen_hoch allready exists, please delete it first"!  Und dann
geht der Rolladen mit der Sonntagszeit hoch!

Führst du dein Script hingegen an einem Freitag zuerst aus (oder
irgendeinem anderen Wochentag) ists genau umgekehrt.

Mit anderen Worten: das ist nicht nur Geschmacksfrage, so geht es
nicht.

Wenn du darauf bestehst, dass so rum zu machen wie von dir gedacht,
musst du meiner Meinung nach wie folgt formulieren:

{if ($we) \
    {fhem("delete WZ_Rollladen_hoch ;; define WZ_Rollladen_hoch at
*07:45:00 set Rollo_wz on ")}\
else\
    {fhem("delete WZ_Rollladen_hoch ;; define WZ_Rollladen_hoch at
*{sunrise(0,'06:00','08:00')} set
Rollo_wz on")} \

Das ergebe bei der allerersten Ausführung eine Fehlermeldung (die man
ignorieren könnte) und danach würde es gehen. Ich selber halte aber
borstis Vorschlag für deutlich besser.














On 13 Mrz., 12:43, borsti wrote:
> Hi Hubert,
>
> > was das Script machen soll, hatte ich bereits eingangs geschrieben,
> > nähmlich unterscheidliche Zeiten zu generieren, abhängig davon, ob
> > nun Wochenende ist oder eben nicht. Das setzt nun mal auch zwei Wege
> > voraus.
>
> Das finde ich relativ sinnlos... Der DEFINE erzeugt Dir einen Timer, der
> automatisch (!) immer wieder ausgeführt wird. Den also immer und immer
> wieder neu zu machen, widerspricht dem Sinn eines sich wiederholenden
> Timers.
> Also hat einer von uns beiden einen massiven Denkfehler... ;)
> Ich würde aus Deinen bisherigen Postings eher schließen, dass Du die
> SCHALTUNG zu diesen Zeitpunkten erledigt haben möchtest
>
> > wirklich meinst,
> > auch nicht, wass da noch fehlen soll.
>
> Dein Auszug beginnt mit einer geschweiften Klammer - das KANN so nicht
> in der FHEM.CFG stehen. Da fehlt noch irgendwas davor und/oder danach.
> Normalerweise beginnt jeder Anweisungsblock mit DEFINE...
>
> >      > {if ($we == 1) \
> >      > {fhem("define WZ_Rollladen_hoch at *07:45:00 set Rollo_wz on ")}\
> >      > else\
> >      > {fhem("define WZ_Rollladen_hoch at *{sunrise(0,'06:00','08:00')} set
> >      > Rollo_wz on")} \
> >      > }
>
> Daraus könnte man dann schlussfolgern, wann bzw. unter welchen Umständen
> Deine seltsamen DEFINEs überhaupt ausgewertet werden und somit der
> scheinbaren Umkehrung der gewünschten Logik auf die Spur kommen.
>
> Um das Ganze mal zu vereinfachen, meine Empfehlung wären ganz schlicht
> und einfach ZWEI Timer:
>
> define WZ_Rollladen_hoch_WE at *07:45:00 {if($we){fhem("set Rollo_wz on")}}
> define WZ_Rollladen_hoch at *{sunrise(0,'06:00','08:00')}
> {if(!$we){fhem("set Rollo_wz on")}}
>
> (ungetestet!)
>
> Gruss
> Torsten

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Dr. Boris Neubert

                                             

Am 12.03.2012 22:15, schrieb Hubert Melzer:
> Alle Hinweise beherzigt. Nun funktioniert es zwar grundsätzlich, aber
> dennoch nicht wie erwartet.

http://fhem.de/commandref.html#perl
5ter Bulletpoint von oben.

bn.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Guest

Originally posted by: <email address deleted>

Hallo!

Würde gerne um mich ein wenig mehr in das Thema ein zu arbeiten mit sunset
und sunrise versuchen,
habe zwei Homematic Aktoren und der Wz_LampeSofa soll auf ein notify von
Wz_LampeDeckeUp reagieren was er schon tut aber per zusätzlich nur per
sunset oder sunrise.
Mein versuch ist: define Licht_an notify Wz_LampeDeckeUp { if (sunset) {
fhem("set Wz_LampeSofa %") } } nur schaltet der Aktor immer zu jeder Zeit
mit,
wo wäre jetzt der Fehler? Wo könnte ich ansetzten? Wie gesagt bin Anfänger
und versuche mich da rein zu Arbeiten:-)
Mfg Ewies

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Zrrronggg!

                                                     

Also: Wz_LampeSofa soll ON gehen, wenn Wz_LampeDeckeUp ON geschaltet
wird.

Richtig?

Aber nur wenn... was?

> per zusätzlich nur per
> sunset oder sunrise.

Da kann zumindest ich eher nur ahnen, was du machen willst: Wenns
Dunkel ist soll Lampe angehen, sonst nicht. Richtig?

(und was soll passieren, wenn Wz_LampeDeckeUp auf OFF geht?)

Ich persönlich würde folgendes Versuchen:

1. nicht gegen sunset und sunrise checken, sondern ein Dummy
einführen, dass per sunrise und sunset befüllt wird.

Etwa so:

    define Tageslicht dummy

Dann die Variable "Tageslicht" befüllen:

    define SetDummy1 at *{sunset()} set Tageslicht hell
    define SetDummy2 at *{sunrise()} set Tageslicht dunkel

Dann dein Konstrukt:

    define Licht_an notify Wz_LampeDeckeUp { if ("%" eq "on" ||
"$value{Tageslicht}" eq "dunkel")  { fhem("set Wz_LampeSofa on") }
else { fhem("set Wz_LampeSofa off") } }


Vorteil dieser Übung ist, das man später die Variabel "Tageslicht"
auch mit anderen Kontrukten befüllen kann: Google wettervorhersage
(Gewitter = Dunkel), Dämmerungsschalter, zu bestimmten Zeiten
hartverdrahtet, unimatirx Daemmerungstool... etc., OHNE das man alle
notifies die mit hell/dunkle arbeiten immer einzeln angepasst werden
müssen.


(alles ungetestet, nur ne Idee hingeschrieben, die ich selber in den
nächsten Tagen ausprobieren will)


On 12 Apr., 20:45, Steffen wrote:
> Hallo!
>
> Würde gerne um mich ein wenig mehr in das Thema ein zu arbeiten mit sunset
> und sunrise versuchen,
> habe zwei Homematic Aktoren und der Wz_LampeSofa soll auf ein notify von
> Wz_LampeDeckeUp reagieren was er schon tut aber per zusätzlich nur per
> sunset oder sunrise.
> Mein versuch ist: define Licht_an notify Wz_LampeDeckeUp { if (sunset) {
> fhem("set Wz_LampeSofa %") } } nur schaltet der Aktor immer zu jeder Zeit
> mit,
> wo wäre jetzt der Fehler? Wo könnte ich ansetzten? Wie gesagt bin Anfänger
> und versuche mich da rein zu Arbeiten:-)
> Mfg Ewies

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Zrrronggg!

                                                     

Aeh... tschuldigung:


define Licht_an notify Wz_LampeDeckeUp { if ("%" eq "on" &&
"$value{Tageslicht}" eq "dunkel")  { fhem("set Wz_LampeSofa on") }
else { fhem("set Wz_LampeSofa off") } }

&& = und

|| = oder


On 12 Apr., 22:15, "Zrrronggg!" wrote:
> Also: Wz_LampeSofa soll ON gehen, wenn Wz_LampeDeckeUp ON geschaltet
> wird.
>
> Richtig?
>
> Aber nur wenn... was?
>
> > per zusätzlich nur per
> > sunset oder sunrise.
>
> Da kann zumindest ich eher nur ahnen, was du machen willst: Wenns
> Dunkel ist soll Lampe angehen, sonst nicht. Richtig?
>
> (und was soll passieren, wenn Wz_LampeDeckeUp auf OFF geht?)
>
> Ich persönlich würde folgendes Versuchen:
>
> 1. nicht gegen sunset und sunrise checken, sondern ein Dummy
> einführen, dass per sunrise und sunset befüllt wird.
>
> Etwa so:
>
>     define Tageslicht dummy
>
> Dann die Variable "Tageslicht" befüllen:
>
>     define SetDummy1 at *{sunset()} set Tageslicht hell
>     define SetDummy2 at *{sunrise()} set Tageslicht dunkel
>
> Dann dein Konstrukt:
>
>     define Licht_an notify Wz_LampeDeckeUp { if ("%" eq "on" ||
> "$value{Tageslicht}" eq "dunkel")  { fhem("set Wz_LampeSofa on") }
> else { fhem("set Wz_LampeSofa off") } }
>
> Vorteil dieser Übung ist, das man später die Variabel "Tageslicht"
> auch mit anderen Kontrukten befüllen kann: Google wettervorhersage
> (Gewitter = Dunkel), Dämmerungsschalter, zu bestimmten Zeiten
> hartverdrahtet, unimatirx Daemmerungstool... etc., OHNE das man alle
> notifies die mit hell/dunkle arbeiten immer einzeln angepasst werden
> müssen.
>
> (alles ungetestet, nur ne Idee hingeschrieben, die ich selber in den
> nächsten Tagen ausprobieren will)
>
> On 12 Apr., 20:45, Steffen wrote:
>
>
>
>
>
>
>
> > Hallo!
>
> > Würde gerne um mich ein wenig mehr in das Thema ein zu arbeiten mit sunset
> > und sunrise versuchen,
> > habe zwei Homematic Aktoren und der Wz_LampeSofa soll auf ein notify von
> > Wz_LampeDeckeUp reagieren was er schon tut aber per zusätzlich nur per
> > sunset oder sunrise.
> > Mein versuch ist: define Licht_an notify Wz_LampeDeckeUp { if (sunset) {
> > fhem("set Wz_LampeSofa %") } } nur schaltet der Aktor immer zu jeder Zeit
> > mit,
> > wo wäre jetzt der Fehler? Wo könnte ich ansetzten? Wie gesagt bin Anfänger
> > und versuche mich da rein zu Arbeiten:-)
> > Mfg Ewies

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Guest

Originally posted by: <email address deleted>

Hallo!

Danke erstmal sehr für deine Hilfe aber leider kommt bei mir "*Unknown
command "$value{Tageslicht}", try help Unknown command else, try help"!*
Habe es es genau so gemacht wie du mir beschrieben hattest?! Dummy
Tageslicht hat dann auch "???"!

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am Donnerstag, 12. April 2012 22:51:32 UTC+2 schrieb Steffen:
>
> Hallo!
>
> Danke erstmal sehr für deine Hilfe aber leider kommt bei mir "*Unknown
> command "$value{Tageslicht}", try help Unknown command else, try help"!*
> Habe es es genau so gemacht wie du mir beschrieben hattest?! Dummy
> Tageslicht hat dann auch "???"!
>
> Habe es nochmal ein gegeben uns es klappt, doch irgenwie schaltet
Wz_LampeSofa 2x kurz hintereinander???

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Zrrronggg!

                                                     

> Wz_LampeSofa 2x kurz hintereinander???

Hae? Wie meinen?



> Danke erstmal sehr für deine Hilfe aber leider kommt bei mir "*Unknown
> command "$value{Tageslicht}", try help Unknown command else, try help"!*
> Habe es es genau so gemacht wie du mir beschrieben hattest?! Dummy
> Tageslicht hat dann auch "???"!

Kann es sein, das du diese Zeile

define Licht_an notify Wz_LampeDeckeUp { if ("%" eq "on" &&
"$value{Tageslicht}" eq "dunkel")  { fhem("set Wz_LampeSofa on") }
else { fhem("set Wz_LampeSofa off") } }

Genau so oben einfach rauskopiert hast? Dann ist da nach jeder Zeile
ein CR (Zeilenumbruch)
und der erzeugt dann eine Neue Zeile die mit

"$value{Tageslicht}"

anfängt und das ist dann tatsächlich unknown.

Du musst meinen ganzen Sermon in EINE Zeile in die conf eintragen.
Zeilenümbrüche, die die Googlegroup Softwar hier einfügt musst du
entfernen!

> Dummy Tageslicht hat dann auch "???"!

Klar. Der Wert von "Tageslicht" wird ja erst gesetzt, wenn wenigstens
1x nach der Definition sunset oder sunrise war.
Denn erst

    define SetDummy1 at *{sunset()} set Tageslicht hell
    define SetDummy2 at *{sunrise()} set Tageslicht dunkel

weisst dem Dummy einen Wert zu. Vorher ist "Tageslicht" ohne Wert.

Zwischen 22:19 und 22:51 hat aber kein Sonnenauf- oder Untergang
stattgefunden, nicht wahr?

Zum Testen kannst du den Wert aber auch selber setzen ( ein weitere
Vorteil meines Vorschlags) indem du in die Kommandozeile eben einfach
z.B.

set Tageslicht dunkel

eingibst.






--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Guest

Originally posted by: <email address deleted>

Guten Morgen!

Nochmal super dank für meine mühe und sorry ich versuche mich erst da rein
zu arbeiten;-),

also wenn ich das alles mit || eingebe dann schaltet die Wz_lampeSofa
normal im set Dunkel "On" und im Hell bleibt sie "off",
wenn ich aber && setzte dann schaltet die Wz_LampeSofa zwei mal ganz kurz
hintereinander und manchmal garnicht in Fhem ist sie "on" aber die Hardware
bleibt "Off"?!
Wann schaltet denn Fhem sunset, sind beim SetDummy1 Next: 20:53:31
SetDummy2 Next: 05:56:49 die sunset oder sunrise Zeit angaben??
Mfg Ewies

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

>     define Tageslicht dummy
> Dann die Variable "Tageslicht" befüllen:
>     define SetDummy1 at *{sunset()} set Tageslicht hell
>     define SetDummy2 at *{sunrise()} set Tageslicht dunkel

Laut http://fhem.de/commandref.html#perl gibts schon sowas wie isday().

Das ergibt dann

define Licht_an notify Wz_LampeDeckeUp {\
  fhem "set Wz_LampeSofa ".("%" eq "on" or !isday() ? "on" : "off")\
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Zrrronggg!

                                                     

Dabei LESE ich doch nun fast jeden Tag in den Commandrefs... seufz.


>Wann schaltet denn Fhem sunset, sind beim SetDummy1 Next: 20:53:31
>SetDummy2 Next: 05:56:49 die sunset oder sunrise Zeit angaben??

Klar.

>also wenn ich das alles mit || eingebe dann schaltet die Wz_lampeSofa
>normal im set Dunkel "On" und im Hell bleibt sie "off",
>wenn ich aber && setzte dann schaltet die Wz_LampeSofa zwei mal ganz kurz
>hintereinander und manchmal garnicht in Fhem ist sie "on" aber die Hardware
>bleibt "Off"?!

Wie gesagt, ich habe das auf die Schnelle als Denkmodell
hingeschrieben, nicht als fertig durchdachte Endlösung. Ich werde da
am WE mal drüber nachdenken, wo da mein Fehler lag, so lange versuch
mal Rudolfs Lösung, die ist sowieso besser.



On 13 Apr., 08:25, Rudolf Koenig wrote:
> >     define Tageslicht dummy
> > Dann die Variable "Tageslicht" bef llen:
> >     define SetDummy1 at *{sunset()} set Tageslicht hell
> >     define SetDummy2 at *{sunrise()} set Tageslicht dunkel
>
> Lauthttp://fhem.de/commandref.html#perlgibts schon sowas wie isday().
>
> Das ergibt dann
>
> define Licht_an notify Wz_LampeDeckeUp {\
>   fhem "set Wz_LampeSofa ".("%" eq "on" or !isday() ? "on" : "off")\
>
>
>
>
>
>
>
> }

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Guest

Originally posted by: <email address deleted>

Hallo! Soweit klappt es jetzt danke sehr nochmal dafür! Könnte ich eigentlich auch das Twilight modul dafür nehmen? Habe schon definiert und könnte man dann doch an den "light" readings ankoppeln?! Mfg Ewies

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com