Hallo zusammen,
ich steh noch ein bischen auf dem Kriegsfuss mit dem Syntax von fhem.
Ich habe bisher mit
define zuhause_on notify EG_Eingang_Bewegungsmelder:on.* { \
if( $hour >= 19 || $hour <= 5) { \
fhem ("set EG_Vorraum_Licht on-for-timer 120")\
fhem ("set EG_Vorraum_Licht on-for-timer 120")\
}\
}
2 Lampen im Eingangsbereich geschaltet was auch wunderbar funktioniert
hat - bis ich morgens mal später zur Arbeit bin und das Licht ab 05:01
nichtmehr eingeschaltet hat - logisch.
Nun wollte ich mit
if( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min) &&
sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min)) { \
(leicht abgewandelt aus dem Wiki)
anstelle von
if( $hour >= 19 || $hour <= 5) { \
das Licht innerhalb der Sonnenuntergangs (-30 Minuten)- und -
aufgangszeit (+30 Minuten) schalten lassen was aber leider nicht
klappt.
Das Licht reagiert den ganzen Tag auf den Bewegungsmelder.
Über eine kleine Hilfestellung wäre ich Euch dankbar.
Grüße
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Am 06.03.2012 um 17:32 schrieb puschel74:
> Hallo zusammen,
>
> ich steh noch ein bischen auf dem Kriegsfuss mit dem Syntax von fhem.
Du meinst perl.
> Nun wollte ich mit
> if( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min) &&
> sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min)) { \
> (leicht abgewandelt aus dem Wiki)
Wo im Wiki?
> anstelle von
> if( $hour >= 19 || $hour <= 5) { \
> das Licht innerhalb der Sonnenuntergangs (-30 Minuten)- und -
> aufgangszeit (+30 Minuten) schalten lassen was aber leider nicht
> klappt.
Weil Du nämlich nicht Äpfel mit Birnen, sorry...
das ergibt ausgewertet sowas wie
if( "18:57:30" >= "18:00" && ....)
Das kann nicht funktionieren, weil >= nur mit Zahlen funktioniert, Du hast hier aber Zeichenketten.
Bleibt nur entweder umwandeln, oder aber, wenn's in der Dämmerung auch ohne Licht geht, isday().
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Äh ja Syntax von Perl,
und das obwohl ich das Anfängerbuch am durchlesen bin ^^
Nach deiner Auswertung nach stimmt schon - ich vergleich mal wieder
Äpfel mit Birnen *grumpf*
Dann müsste ja anstelle von >= ein gt und von <= ein lt besser passen
und
sprintf("%%02d:%%02d", $hour, $min)
um
sprintf("%%02d:%%02d:%%02d", $hour, $min, $sec)
ergänzt sollte auch die Auswertung passen, oder seh ich das falsch?
Gleich mal probieren.
Grüße
On 6 Mrz., 18:07, Jan-Hinrich Fessel wrote:
> Am 06.03.2012 um 17:32 schrieb puschel74:
>
> > Hallo zusammen,
>
> > ich steh noch ein bischen auf dem Kriegsfuss mit dem Syntax von fhem.
>
> Du meinst perl.
>
> > Nun wollte ich mit
> > if( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min) &&
> > sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min)) { \
> > (leicht abgewandelt aus dem Wiki)
>
> Wo im Wiki?
>
> > anstelle von
> > if( $hour >= 19 || $hour <= 5) { \
> > das Licht innerhalb der Sonnenuntergangs (-30 Minuten)- und -
> > aufgangszeit (+30 Minuten) schalten lassen was aber leider nicht
> > klappt.
>
> Weil Du nämlich nicht Äpfel mit Birnen, sorry...
>
> das ergibt ausgewertet sowas wie
> if( "18:57:30" >= "18:00" && ....)
> Das kann nicht funktionieren, weil >= nur mit Zahlen funktioniert, Du hast hier aber Zeichenketten.
>
> Bleibt nur entweder umwandeln, oder aber, wenn's in der Dämmerung auch ohne Licht geht, isday().
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
War ja klar das das auch nicht klappt, wär ja zu schön gewesen.
Auf deine Frage wo im Wiki:
Ich habe das
sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min))
aus dem
http://fhemwiki.de/wiki/Licht_bei_Bedingungen_einschalten
genommen und dachte ich kann das recht einfach umstricken das es
passt.
Pustekuchen
Es geht mir eigentlich gerade um die Funktion während der Dämmerung -
das da das Licht auch einschaltet (daher -1800 / + 1800).
Grüße
On 6 Mrz., 18:21, puschel74
wrote:
> Äh ja Syntax von Perl,
> und das obwohl ich das Anfängerbuch am durchlesen bin ^^
>
> Nach deiner Auswertung nach stimmt schon - ich vergleich mal wieder
> Äpfel mit Birnen *grumpf*
>
> Dann müsste ja anstelle von >= ein gt und von <= ein lt besser passen
> und
> sprintf("%%02d:%%02d", $hour, $min)
> um
> sprintf("%%02d:%%02d:%%02d", $hour, $min, $sec)
> ergänzt sollte auch die Auswertung passen, oder seh ich das falsch?
>
> Gleich mal probieren.
>
> Grüße
>
> On 6 Mrz., 18:07, Jan-Hinrich Fessel wrote:
>
>
>
>
>
>
>
> > Am 06.03.2012 um 17:32 schrieb puschel74:
>
> > > Hallo zusammen,
>
> > > ich steh noch ein bischen auf dem Kriegsfuss mit dem Syntax von fhem.
>
> > Du meinst perl.
>
> > > Nun wollte ich mit
> > > if( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min) &&
> > > sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min)) { \
> > > (leicht abgewandelt aus dem Wiki)
>
> > Wo im Wiki?
>
> > > anstelle von
> > > if( $hour >= 19 || $hour <= 5) { \
> > > das Licht innerhalb der Sonnenuntergangs (-30 Minuten)- und -
> > > aufgangszeit (+30 Minuten) schalten lassen was aber leider nicht
> > > klappt.
>
> > Weil Du nämlich nicht Äpfel mit Birnen, sorry...
>
> > das ergibt ausgewertet sowas wie
> > if( "18:57:30" >= "18:00" && ....)
> > Das kann nicht funktionieren, weil >= nur mit Zahlen funktioniert, Du hast hier aber Zeichenketten.
>
> > Bleibt nur entweder umwandeln, oder aber, wenn's in der Dämmerung auch ohne Licht geht, isday().
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hej,
On Tuesday, March 6, 2012 6:21:29 PM UTC+1, puschel74 wrote:
>
> Äh ja Syntax von Perl,
> und das obwohl ich das Anfängerbuch am durchlesen bin ^^
>
> Nach deiner Auswertung nach stimmt schon - ich vergleich mal wieder
> Äpfel mit Birnen *grumpf*
>
> Dann müsste ja anstelle von >= ein gt und von <= ein lt besser passen
> und
> sprintf("%%02d:%%02d", $hour, $min)
> um
> sprintf("%%02d:%%02d:%%02d", $hour, $min, $sec)
> ergänzt sollte auch die Auswertung passen, oder seh ich das falsch?
>
Wo Du das so sagst, wäre das die dritte Möglichkeit, die mir mal wieder
nicht in den Sinn kam.
scheint zu gehen, zumindest mit sun*_abs:
[schneefix:trunk/fhem/FHEM] oskar% perl -e 'print "hello\n" if "18:00:00"
lt "19:00:00"'
hello
[schneefix:trunk/fhem/FHEM] oskar% perl -e 'print "hello\n" if "18:00:00"
gt "19:00:00"'
[schneefix:trunk/fhem/FHEM] oskar%
> Gleich mal probieren.
>
> Grüße
>
> On 6 Mrz., 18:07, Jan-Hinrich Fessel wrote:
> > Am 06.03.2012 um 17:32 schrieb puschel74:
> >
> > > Hallo zusammen,
> >
> > > ich steh noch ein bischen auf dem Kriegsfuss mit dem Syntax von fhem.
> >
> > Du meinst perl.
> >
> > > Nun wollte ich mit
> > > if( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min) &&
> > > sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min)) { \
> > > (leicht abgewandelt aus dem Wiki)
> >
> > Wo im Wiki?
> >
> > > anstelle von
> > > if( $hour >= 19 || $hour <= 5) { \
> > > das Licht innerhalb der Sonnenuntergangs (-30 Minuten)- und -
> > > aufgangszeit (+30 Minuten) schalten lassen was aber leider nicht
> > > klappt.
> >
> > Weil Du nämlich nicht Äpfel mit Birnen, sorry...
> >
> > das ergibt ausgewertet sowas wie
> > if( "18:57:30" >= "18:00" && ....)
> > Das kann nicht funktionieren, weil >= nur mit Zahlen funktioniert, Du
> hast hier aber Zeichenketten.
> >
> > Bleibt nur entweder umwandeln, oder aber, wenn's in der Dämmerung auch
> ohne Licht geht, isday().
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Am 06.03.2012 um 17:32 schrieb puschel74:
> Nun wollte ich mit
> if( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min) &&
> sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min)) { \
> (leicht abgewandelt aus dem Wiki)
> anstelle von
> if( $hour >= 19 || $hour <= 5) { \
irgendwie sind aber die Bedingungen falsch.
Unten willst Du Nachts schalten, oben aber nur tagsüber.
&& != ||
if( (sunset_abs() gt uhrzeit ) # es ist jetzt vor sonnenuntergang
&& (sunrise_abs() lt uhrzeit) ) # es ist jetzt außerdem nach sonnenaufgang
{ dann mach was }
if((sunset_abs(-1800) lt uhrzeit) || (sunrise_abs(1800) gt uhrzeit))
Sicherheitshalber auch lieber zu viele Klammern als zu wenige machen...
Vielleicht geht das ja so.
Grüße
Oskar
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Nun ja,
ich bin davon ausgegangen das ich mit
( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min)
zwischen 30 Minuten vor dem errechneten Sonnenuntergang (also
sunset_abs-1800 sec >= Uhrzeit
&& mit
sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min))
30 Minuten nach dem errechneten Sonnenaufgang
die Lampen durch den Bewegungsmelder einschalten kann.
Ich war der Meinung das ich die Nacht mit Abend- und Morgendämmerung
damit erwische.
Ich versuch jetzt mal
if((sunset_abs(-1800) lt sprintf("%%02d:%%02d:%%02d", $hour, $min,
$sec)) || (sunrise_abs(1800) gt sprintf("%%02d:%%02d:%%02d", $hour,
$min, $sec)))
von Jan-Hinrich.
Ich hoffe ich hab das mit der uhrzeit richtig verstanden und
eingefügt.
Danke schonmal an Euch für die Hilfe.
Grüße
On 6 Mrz., 18:52, Jan-Hinrich Fessel wrote:
> Am 06.03.2012 um 17:32 schrieb puschel74:
>
> > Nun wollte ich mit
> > if( sunset_abs(-1800) >= sprintf("%%02d:%%02d", $hour, $min) &&
> > sunrise_abs(1800) <= printf("%%02d:%%02d", $hour, $min)) { \
> > (leicht abgewandelt aus dem Wiki)
> > anstelle von
> > if( $hour >= 19 || $hour <= 5) { \
>
> irgendwie sind aber die Bedingungen falsch.
>
> Unten willst Du Nachts schalten, oben aber nur tagsüber.
> && != ||
>
> if( (sunset_abs() gt uhrzeit ) # es ist jetzt vor sonnenuntergang
> && (sunrise_abs() lt uhrzeit) ) # es ist jetzt außerdem nach sonnenaufgang
> { dann mach was }
>
> if((sunset_abs(-1800) lt uhrzeit) || (sunrise_abs(1800) gt uhrzeit))
>
> Sicherheitshalber auch lieber zu viele Klammern als zu wenige machen...
>
> Vielleicht geht das ja so.
>
> Grüße
> Oskar
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Ich versuch jetzt mal
Da kann man nicht mehr tatenlos zuschauen :) Wie waers mit:
my $now=sprintf("%%02d:%%02d",$hour,$min);;\
if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
...\
}
Evtl kann man aber auch in 99_SUNRISE_EL.pm $altit anpassen, und
if(isday()) {\
...\
}
verwenden. Oder auf die Anpassung ganz verzichten :)
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Guten morgen und danke nochmal für die Hilfe
aber mit deinem $now_________ Rudi lies sich das Licht die ganze Nacht
nicht dazu bewegen einzuschalten.
Grüße
On 6 Mrz., 20:10, Rudolf Koenig wrote:
> > Ich versuch jetzt mal
>
> Da kann man nicht mehr tatenlos zuschauen :) Wie waers mit:
>
> my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
> ...\
>
> }
>
> Evtl kann man aber auch in 99_SUNRISE_EL.pm $altit anpassen, und
> if(isday()) {\
> ...\
> }
> verwenden. Oder auf die Anpassung ganz verzichten :)
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hej,
ich glaube, da hat sich ein Tippfehler eingeschlichen.
Richtig müsste es wohl lauten:
my $now=sprintf("%%02d:%%02d",$hour,$min);;\
if(sunrise_abs(1800) lt $now && $now gt sunset_abs(-1800)) {\
...\
}
Aber Rudi möge mich schnellstmöglich korrigieren (und nicht gleich
schlagen), sollte ich mich irren. :-)
Greetz,
Gerhard
Am 7. März 2012 05:45 schrieb puschel74
:
> Guten morgen und danke nochmal für die Hilfe
>
> aber mit deinem $now_________ Rudi lies sich das Licht die ganze Nacht
> nicht dazu bewegen einzuschalten.
>
> Grüße
>
> On 6 Mrz., 20:10, Rudolf Koenig wrote:
>> > Ich versuch jetzt mal
>>
>> Da kann man nicht mehr tatenlos zuschauen :) Wie waers mit:
>>
>> my $now=sprintf("%%02d:%%02d",$hour,$min);;\
>> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
>> ...\
>>
>> }
>>
>> Evtl kann man aber auch in 99_SUNRISE_EL.pm $altit anpassen, und
>> if(isday()) {\
>> ...\
>> }
>> verwenden. Oder auf die Anpassung ganz verzichten :)
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hallo zusammen,
ich behaupte mal Rudi hat den Tippfehler absichtlich eingebaut um zu
schauen ob ich auch ein bischen mitdenke ;-)
Aber gestern abend war ich schon im Stand-By und hab nur noch
copy&paste gemacht.
Ich hatte mich aber schon über die 2 lt gewundert - naja.
Ich hab die Zeile mal angepasst - danke Gerhard
Grüße
On 7 Mrz., 07:03, Gerhard Pfeffer
wrote:
> Hej,
>
> ich glaube, da hat sich ein Tippfehler eingeschlichen.
> Richtig müsste es wohl lauten:
>
> my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> if(sunrise_abs(1800) lt $now && $now gt sunset_abs(-1800)) {\
> ...\
>
> }
>
> Aber Rudi möge mich schnellstmöglich korrigieren (und nicht gleich
> schlagen), sollte ich mich irren. :-)
>
> Greetz,
> Gerhard
>
> Am 7. März 2012 05:45 schrieb puschel74 :
>
>
>
>
>
>
>
> > Guten morgen und danke nochmal für die Hilfe
>
> > aber mit deinem $now_________ Rudi lies sich das Licht die ganze Nacht
> > nicht dazu bewegen einzuschalten.
>
> > Grüße
>
> > On 6 Mrz., 20:10, Rudolf Koenig wrote:
> >> > Ich versuch jetzt mal
>
> >> Da kann man nicht mehr tatenlos zuschauen :) Wie waers mit:
>
> >> my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> >> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
> >> ...\
>
> >> }
>
> >> Evtl kann man aber auch in 99_SUNRISE_EL.pm $altit anpassen, und
> >> if(isday()) {\
> >> ...\
> >> }
> >> verwenden. Oder auf die Anpassung ganz verzichten :)
>
> > --
> > To unsubscribe from this group, send email to
> > fhem-users+unsubscribe@googlegroups.com
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hej,
bin nicht der Fitteste mit Perl, aber was mir gerade noch aufgefallen ist:
sollte statt dem && nicht ein || stehen? && wuerde wohl nur gelten, wenn
Perl tagesuebergreifend "denkt". :-)
Greetz,
Gerhard
Am 07.03.2012 17:00 schrieb "puschel74"
:
> Hallo zusammen,
>
> ich behaupte mal Rudi hat den Tippfehler absichtlich eingebaut um zu
> schauen ob ich auch ein bischen mitdenke ;-)
> Aber gestern abend war ich schon im Stand-By und hab nur noch
> copy&paste gemacht.
> Ich hatte mich aber schon über die 2 lt gewundert - naja.
>
> Ich hab die Zeile mal angepasst - danke Gerhard
>
> Grüße
>
> On 7 Mrz., 07:03, Gerhard Pfeffer wrote:
> > Hej,
> >
> > ich glaube, da hat sich ein Tippfehler eingeschlichen.
> > Richtig müsste es wohl lauten:
> >
> > my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> > if(sunrise_abs(1800) lt $now && $now gt sunset_abs(-1800)) {\
> > ...\
> >
> > }
> >
> > Aber Rudi möge mich schnellstmöglich korrigieren (und nicht gleich
> > schlagen), sollte ich mich irren. :-)
> >
> > Greetz,
> > Gerhard
> >
> > Am 7. März 2012 05:45 schrieb puschel74 :
> >
> >
> >
> >
> >
> >
> >
> > > Guten morgen und danke nochmal für die Hilfe
> >
> > > aber mit deinem $now_________ Rudi lies sich das Licht die ganze Nacht
> > > nicht dazu bewegen einzuschalten.
> >
> > > Grüße
> >
> > > On 6 Mrz., 20:10, Rudolf Koenig wrote:
> > >> > Ich versuch jetzt mal
> >
> > >> Da kann man nicht mehr tatenlos zuschauen :) Wie waers mit:
> >
> > >> my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> > >> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
> > >> ...\
> >
> > >> }
> >
> > >> Evtl kann man aber auch in 99_SUNRISE_EL.pm $altit anpassen, und
> > >> if(isday()) {\
> > >> ...\
> > >> }
> > >> verwenden. Oder auf die Anpassung ganz verzichten :)
> >
> > > --
> > > To unsubscribe from this group, send email to
> > > fhem-users+unsubscribe@googlegroups.com
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hm,
hab das grad auf || geändert.
Wenn jetzt 19:00 ist dann stimmt zwar der Vergleich mit sunset (wenn
sunset z.b. 19:10 liefert) aber der Vergleich mit sunrise muss dann
zwangsläufig fehlschlagen da 19:00 unmöglich kleiner als 06:30 z.b.
sein kann.
Da die beiden mit && verknüpft sind würde das Licht sowieso nie
leuchten.
|| muss eigentlich richtig sein da die Uhrzeit ja entweder größer als
Sonnenuntergang ODER kleiner als Sonnenaufgang sein muss btw. nur sein
kann aber nie beides.
Danke nochmal für den Hinweis Gerhard.
Grüße
On 7 Mrz., 17:12, Gerhard Pfeffer
wrote:
> Hej,
>
> bin nicht der Fitteste mit Perl, aber was mir gerade noch aufgefallen ist:
> sollte statt dem && nicht ein || stehen? && wuerde wohl nur gelten, wenn
> Perl tagesuebergreifend "denkt". :-)
>
> Greetz,
> Gerhard
> Am 07.03.2012 17:00 schrieb "puschel74" :
>
>
>
>
>
>
>
> > Hallo zusammen,
>
> > ich behaupte mal Rudi hat den Tippfehler absichtlich eingebaut um zu
> > schauen ob ich auch ein bischen mitdenke ;-)
> > Aber gestern abend war ich schon im Stand-By und hab nur noch
> > copy&paste gemacht.
> > Ich hatte mich aber schon über die 2 lt gewundert - naja.
>
> > Ich hab die Zeile mal angepasst - danke Gerhard
>
> > Grüße
>
> > On 7 Mrz., 07:03, Gerhard Pfeffer wrote:
> > > Hej,
>
> > > ich glaube, da hat sich ein Tippfehler eingeschlichen.
> > > Richtig müsste es wohl lauten:
>
> > > my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> > > if(sunrise_abs(1800) lt $now && $now gt sunset_abs(-1800)) {\
> > > ...\
>
> > > }
>
> > > Aber Rudi möge mich schnellstmöglich korrigieren (und nicht gleich
> > > schlagen), sollte ich mich irren. :-)
>
> > > Greetz,
> > > Gerhard
>
> > > Am 7. März 2012 05:45 schrieb puschel74 :
>
> > > > Guten morgen und danke nochmal für die Hilfe
>
> > > > aber mit deinem $now_________ Rudi lies sich das Licht die ganze Nacht
> > > > nicht dazu bewegen einzuschalten.
>
> > > > Grüße
>
> > > > On 6 Mrz., 20:10, Rudolf Koenig wrote:
> > > >> > Ich versuch jetzt mal
>
> > > >> Da kann man nicht mehr tatenlos zuschauen :) Wie waers mit:
>
> > > >> my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> > > >> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
> > > >> ...\
>
> > > >> }
>
> > > >> Evtl kann man aber auch in 99_SUNRISE_EL.pm $altit anpassen, und
> > > >> if(isday()) {\
> > > >> ...\
> > > >> }
> > > >> verwenden. Oder auf die Anpassung ganz verzichten :)
>
> > > > --
> > > > To unsubscribe from this group, send email to
> > > > fhem-users+unsubscribe@googlegroups.com
>
> > --
> > To unsubscribe from this group, send email to
> > fhem-users+unsubscribe@googlegroups.com
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hej,
Am 07.03.2012 um 17:12 schrieb Gerhard Pfeffer:
> Hej,
>
> bin nicht der Fitteste mit Perl, aber was mir gerade noch aufgefallen ist: sollte statt dem && nicht ein || stehen? && wuerde wohl nur gelten, wenn Perl tagesuebergreifend "denkt". :-)
>
Das hatte ich schon an anderer Stelle angemerkt ;-)
Gerhard:
> if(sunrise_abs(1800) lt $now && $now gt sunset_abs(-1800)) {\
Wenn der Sonnenaufgang mehr als 1800 Sekunden zurückliegt und es später als 1800 Sekunden bis zum Sonnenuntergang ist, dann mach was. Dann geht abends was, morgens aber nicht.
Rudi:
> > >> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
Wenn der Sonnenaufgang mehr als 1800 Sekunden zurückliegt und es noch mindestens 1800 Sekunden bis zum Sonnenuntergang ist, dann mach was. Dann geht tagsüber was.
Ich würde
if(sunrise_abs(1800) gt $now || $now gt sunset_abs(-1800)) {\
denken. Also vor Sonnenaufgang(+1800) oder nach Sonnenuntergang(-1800) soll was getan werden dürfen.
Kann natürlich sein, das ich das falsch verstehe. Mit der Logik ist das ja nicht immer so einfach.
Grüße
Oskar
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Also erstmal eines vorweg
Jan-Hinrich und Gerhard - ihr seid beide mit eurer Logik richtig
gelegen ;-)
|| anstelle von &&
und Jan-Hinrich
beidemale gt anstelle von lt && gt.
Mit
if(sunrise_abs(1800) gt $now || $now gt sunset_abs(7200)) {\
bleibt um 17:50 das Licht aus und mit
if(sunrise_abs(1800) gt $now || $now gt sunset_abs(-1800)) {\
geht das Licht an.
Danke nochmal für Eure Hilfe - dir natürlich auch nochmal danke Rudi.
Grüße
On 7 Mrz., 17:34, Jan-Hinrich Fessel wrote:
> Hej,
> Am 07.03.2012 um 17:12 schrieb Gerhard Pfeffer:
>
> > Hej,
>
> > bin nicht der Fitteste mit Perl, aber was mir gerade noch aufgefallen ist: sollte statt dem && nicht ein || stehen? && wuerde wohl nur gelten, wenn Perl tagesuebergreifend "denkt". :-)
>
> Das hatte ich schon an anderer Stelle angemerkt ;-)
> Gerhard:
>
> > if(sunrise_abs(1800) lt $now && $now gt sunset_abs(-1800)) {\
>
> Wenn der Sonnenaufgang mehr als 1800 Sekunden zurückliegt und es später als 1800 Sekunden bis zum Sonnenuntergang ist, dann mach was. Dann geht abends was, morgens aber nicht.
> Rudi:> > >> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
>
> Wenn der Sonnenaufgang mehr als 1800 Sekunden zurückliegt und es noch mindestens 1800 Sekunden bis zum Sonnenuntergang ist, dann mach was. Dann geht tagsüber was.
>
> Ich würde
> if(sunrise_abs(1800) gt $now || $now gt sunset_abs(-1800)) {\
> denken. Also vor Sonnenaufgang(+1800) oder nach Sonnenuntergang(-1800) soll was getan werden dürfen.
> Kann natürlich sein, das ich das falsch verstehe. Mit der Logik ist das ja nicht immer so einfach.
>
> Grüße
> Oskar
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Achso ja... Nachdem now einmal vorne und bei der anderen Bedingung hinten
steht, muss beide Male gt stehen (immer diese Kleinigkeiten). :-)
Greetz,
Gerhard
Am 07.03.2012 17:58 schrieb "puschel74"
:
> Also erstmal eines vorweg
>
> Jan-Hinrich und Gerhard - ihr seid beide mit eurer Logik richtig
> gelegen ;-)
> || anstelle von &&
> und Jan-Hinrich
> beidemale gt anstelle von lt && gt.
> Mit
> if(sunrise_abs(1800) gt $now || $now gt sunset_abs(7200)) {\
> bleibt um 17:50 das Licht aus und mit
> if(sunrise_abs(1800) gt $now || $now gt sunset_abs(-1800)) {\
> geht das Licht an.
>
> Danke nochmal für Eure Hilfe - dir natürlich auch nochmal danke Rudi.
>
> Grüße
>
> On 7 Mrz., 17:34, Jan-Hinrich Fessel wrote:
> > Hej,
> > Am 07.03.2012 um 17:12 schrieb Gerhard Pfeffer:
> >
> > > Hej,
> >
> > > bin nicht der Fitteste mit Perl, aber was mir gerade noch aufgefallen
> ist: sollte statt dem && nicht ein || stehen? && wuerde wohl nur gelten,
> wenn Perl tagesuebergreifend "denkt". :-)
> >
> > Das hatte ich schon an anderer Stelle angemerkt ;-)
> > Gerhard:
> >
> > > if(sunrise_abs(1800) lt $now && $now gt sunset_abs(-1800)) {\
> >
> > Wenn der Sonnenaufgang mehr als 1800 Sekunden zurückliegt und es später
> als 1800 Sekunden bis zum Sonnenuntergang ist, dann mach was. Dann geht
> abends was, morgens aber nicht.
> > Rudi:> > >> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
> >
> > Wenn der Sonnenaufgang mehr als 1800 Sekunden zurückliegt und es noch
> mindestens 1800 Sekunden bis zum Sonnenuntergang ist, dann mach was. Dann
> geht tagsüber was.
> >
> > Ich würde
> > if(sunrise_abs(1800) gt $now || $now gt sunset_abs(-1800)) {\
> > denken. Also vor Sonnenaufgang(+1800) oder nach Sonnenuntergang(-1800)
> soll was getan werden dürfen.
> > Kann natürlich sein, das ich das falsch verstehe. Mit der Logik ist das
> ja nicht immer so einfach.
> >
> > Grüße
> > Oskar
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
On Tuesday, March 6, 2012 8:10:08 PM UTC+1, Rudolf Koenig wrote:
>
> > Ich versuch jetzt mal
>
> Da kann man nicht mehr tatenlos zuschauen :) Wie waers mit:
>
> my $now=sprintf("%%02d:%%02d",$hour,$min);;\
> if(sunrise_abs(1800) lt $now && $now lt sunset_abs(-1800)) {\
> ...\
> }
>
>
> Evtl kann man aber auch in 99_SUNRISE_EL.pm $altit anpassen, und
> if(isday()) {\
> ...\
> }
> verwenden. Oder auf die Anpassung ganz verzichten :)
>
Auch ich habe offenbar ein Definitionsproblem mit sunrise(). Folgendes
schlägt fehl:
{if (!$we) {fhem("define WZ_Rollladen_hoch at *{sunrise(0,"06:00","08:00")}
set Rollo_wz on")} else {fhem("define WZ_Rollladen_hoch at *07:45:00 set
Rollo_wz on")}}
Die zugehörige Fehlermeldung aus dem fhem-log-File lautet:
Number found where operator expected at (eval 303) line 1, near ""define WZ_Rollladen_hoch at *{sunrise(0,"06"
(Missing operator before 06?)
String found where operator expected at (eval 303) line 1, near "00",""
(Missing operator before ","?)
Number found where operator expected at (eval 303) line 1, near "","08"
(Missing operator before 08?)
String found where operator expected at (eval 303) line 1, near "00")} set Rollo_wz on""
(Missing operator before ")} set Rollo_wz on"?)
2012.03.07 19:16:51 3: Please define WZ_Rollladen_hoch first
Trennt man die einzelnen Zweige innerhalb der if-Anweisung auf und verwendet diese einzeln, kommt es zu keiner Fehlermeldung.
Weiterhin beschäftigt mich die Frage, ob die 99_SUNRISE_EL.pm noch irgendwie in die fhem.cfg eingebunden werden muss,
da eine Änderung der Variable *$altit* in der 99_SUNRISE_EL.pm auf welchen Wert auch immer keine Veränderung an den Zeiten bewirkt.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Auch ich habe offenbar ein Definitionsproblem mit sunrise(). Folgendes
> schlägt fehl:
Klar, " in " ist nicht klug. Entweder mit \ schuetzen, oder abwechselnd " und '
verwenden. Wobei man wissen sollte, dass Variablen in ' Strings nicht ersetzt
werden. Das Kamel laesst gruessen :)
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
On Thursday, March 8, 2012 9:23:18 AM UTC+1, Rudolf Koenig wrote:
>
> > Auch ich habe offenbar ein Definitionsproblem mit sunrise(). Folgendes
> > schl�gt fehl:
>
> Klar, " in " ist nicht klug. Entweder mit \ schuetzen, oder abwechselnd "
> und '
> verwenden.
>
Tut mir leid, aber ich verstehe nicht, was hier mit "in" gemeint ist und
auch nicht
was bzw. wie ich was mit \ schützen oder wo ich ein "und" verwenden sollte.
Die Anweisung verwende ich derzeit so, dass ich auf die beiden Argument
"06:00","08:00"
verzichtet habe (*sunrise(0)*).
Dann habe ich zwar keine Fehlermeldung mehr, aber die Funktionalität ist,
wie ich gerade bemerkt habe,
genau anders herum wie von mir erwartet.
Eigentlich soll Wochentags das Rollo zum Sonnenaufgang, bzw. zwischen sechs
und acht Uhr aufgehen und
am Wochenenende um 7:45 Uhr.
Heute morgen ging es jedoch erst um 7:45 Uhr auf. Was am Wochenende ist,
habe ich nich nicht probieren können.
Entferne ich jedoch das "!" vor $we, wird die frühere Zeit angezeigt.
> Wobei man wissen sollte, dass Variablen in ' Strings nicht ersetzt
> werden. Das Kamel laesst gruessen :)
Soweit ich das sehe, habe ich auch keine Variablen innerhalb von Strings
verwendet, lediglich Funktionen mit Argumenten.
Was nach wie vor offen bleibt ist, dass eine Änderung von* $altit* in der99_SUNRISE_EL.pm keine Auswirkungen
auf die Schaltzeiten hat.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Ich glaube Rudolf meinte damit, dass Du es anstatt mit "
{if (!$we) {fhem("define WZ_Rollladen_hoch at
*{sunrise(0,"06:00","08:00")}
mit ' ausprobieren kannst
{if (!$we) {fhem("define WZ_Rollladen_hoch at
*{sunrise(0,'06:00','08:00')}
Mit den Hochkommas habe ich auch schon meine Probleme gehabt. :D
LG Jörg
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Am 08.03.2012 18:30, schrieb Hubert Melzer:
>
> Klar, " in " ist nicht klug. Entweder mit \ schuetzen, oder
> abwechselnd " und '
>
> verwenden.
>
> Tut mir leid, aber ich verstehe nicht, was hier mit "in" gemeint ist
> und auch nicht
> was bzw. wie ich was mit \ schützen oder wo ich ein "und" verwenden
> sollte.
Rudi schreibt: Gänsefüßchen in Gänsefüßchen ist nicht klug. Entweder mit
Backslash schützen oder abwechselnd Gänsefüßchen und Hochkomma verwenden.
Mit Backslash schützen: Du machst aus " dann \".
Empfehlung: Rainer Krienke, Programmieren in Perl, Hanser, ISBN
3-446-22013-5
>
> Was nach wie vor offen bleibt ist, dass eine Änderung von/$altit/in
> der99_SUNRISE_EL.pm keine Auswirkungen
> auf dieSchaltzeiten hat.
>
Modul neu geladen?
Grüße
Boris
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
On Thursday, March 8, 2012 7:19:50 PM UTC+1, Boris wrote:
>
> Am 08.03.2012 18:30, schrieb Hubert Melzer:
>
>
> Klar, " in " ist nicht klug. Entweder mit \ schuetzen, oder abwechselnd "
> und '
>
>> verwenden.
>>
> Tut mir leid, aber ich verstehe nicht, was hier mit "in" gemeint ist und
> auch nicht
> was bzw. wie ich was mit \ schützen oder wo ich ein "und" verwenden sollte.
>
>
> Rudi schreibt: Gänsefüßchen in Gänsefüßchen ist nicht klug. Entweder mit
> Backslash schützen oder abwechselnd Gänsefüßchen und Hochkomma verwenden.
>
> Mit Backslash schützen: Du machst aus " dann \".
>
> Empfehlung: Rainer Krienke, Programmieren in Perl, Hanser, ISBN
> 3-446-22013-5
>
>
> Was nach wie vor offen bleibt ist, dass eine Änderung von* $altit* in der99_SUNRISE_EL.pm keine Auswirkungen
> auf die Schaltzeiten hat.
>
> Modul neu geladen?
>
> Ja, auch danach gibt es keine Änderung!
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Am 08.03.2012 19:37, schrieb Hubert Melzer:
> Modul neu geladen?
>
> Ja, auch danach gibt es keine Änderung!
Debug das doch mal bitte. Der Befehl
{ sunrise(0,'06:00','08:00') }
gibt Dir die Uhrzeit des Beginns der zivilen Dämmerung aus ($altit= -6).
Bei mir:
30:16:26
30 Uhr heißt hier morgen um 6 Uhr. Wenn ich $altit ändere und
reload 99_SUNRISE_EL.pm
eingebe, bekomme ich eine andere Zeit => bei mir funktioniert das. Und
bei Dir?
Grüße
Boris
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
On Thursday, March 8, 2012 7:47:19 PM UTC+1, Boris wrote:
>
> Am 08.03.2012 19:37, schrieb Hubert Melzer:
> > Modul neu geladen?
> >
> > Ja, auch danach gibt es keine Änderung!
>
> Debug das doch mal bitte. Der Befehl
>
> { sunrise(0,'06:00','08:00') }
>
> gibt Dir die Uhrzeit des Beginns der zivilen Dämmerung aus ($altit= -6).
> Bei mir:
>
> 30:16:26
>
>
> 30 Uhr heißt hier morgen um 6 Uhr. Wenn ich $altit ändere und
>
> reload 99_SUNRISE_EL.pm
>
> eingebe, bekomme ich eine andere Zeit => bei mir funktioniert das. Und
> bei Dir?
>
Wenn ich das so mache bekomme ich auch eine andere Zeit.
Die Zeitangabe bei den at-Befehlen ändert sich jedoch nicht.
Danke Hubert
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Am 08.03.2012 20:51, schrieb Hubert Melzer:
> Die Zeitangabe bei den at-Befehlen ändert sich jedoch nicht.
Wie sehen die at-Befehle aus? Ich könnte Dir besser helfen, wenn Du mehr
Kontext liefertest.
Grüße
Boris
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
On Thursday, March 8, 2012 9:02:15 PM UTC+1, Boris wrote:
>
> Am 08.03.2012 20:51, schrieb Hubert Melzer:
> > Die Zeitangabe bei den at-Befehlen ändert sich jedoch nicht.
> Wie sehen die at-Befehle aus? Ich könnte Dir besser helfen, wenn Du mehr
> Kontext liefertest.
>
> Grüße
> Boris
>
Hallo Boris,
die Zeit ändert sich, wie ich jetzt bemerkt, habe schon, wenn auch nicht
sofort.
Nach welcher Zeit eine Aktualisierung erfolgt oder was der Auslöser einer
solchen ist,
habe ich noch nicht ermittel können.
Gruß Hubert
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Alle Hinweise beherzigt. Nun funktioniert es zwar grundsätzlich, aber
dennoch nicht wie erwartet.
So wie die Definition jetz aussieht, sollte am Wochenende, ($we =1), das
Rollo um 07:45 hoch gehen,
in der Woche dann im Ergebnis von sunrise().
Bei mir ist es gerade umgekehrt.
Kann mir das jemand erklären?
{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")} \
}
Gruß Hubert
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Probier doch mal anstatt auf ($we == 1) zu testen nur {if ($we)
{fhem(" bla... zu verwenden. Das müsste eigentlich reichen und liefert
bei mir die richtigen Ergebnisse.
(Um 7:45 am WE aufstehen? Ist ja schrecklich.)
On 12 Mrz., 22:15, Hubert Melzer wrote:
> Alle Hinweise beherzigt. Nun funktioniert es zwar grundsätzlich, aber
> dennoch nicht wie erwartet.
> So wie die Definition jetz aussieht, sollte am Wochenende, ($we =1), das
> Rollo um 07:45 hoch gehen,
> in der Woche dann im Ergebnis von sunrise().
> Bei mir ist es gerade umgekehrt.
> Kann mir das jemand erklären?
>
> {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")} \
>
> }
>
> Gruß Hubert
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hallo Hubert,
warum machst Du immer wieder ein DEFINE? Jedes davon erzeugt einen
täglich wiederholten Aufruf - wozu, wenn Du doch eh jeden Tag aufs neue
testest, ob Wochenende ist?
Außerdem: Da fehlen doch auch noch ein paar Zeilen drum herum, wann
genau (bzw. unter welchen Umständen) wird denn dieses Codeschnipsel
überhaupt ausgeführt?
Gruß
Torsten
Am 12.03.2012 22:15, schrieb Hubert Melzer:
> Alle Hinweise beherzigt. Nun funktioniert es zwar grundsätzlich, aber
> dennoch nicht wie erwartet.
> So wie die Definition jetz aussieht, sollte am Wochenende, ($we =1), das
> Rollo um 07:45 hoch gehen,
> in der Woche dann im Ergebnis von sunrise().
> Bei mir ist es gerade umgekehrt.
> Kann mir das jemand erklären?
>
> {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")} \
> }
>
> Gruß Hubert
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo Torsten,
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.
Wo man nun das oder die DEFINE hinschreibt, ob innerhalb von if...else...
oder
außerhalb, ist wahrscheinlich Geschmacksache.
Allerdings muss ich gestehem, dass ich nicht genau weiss, was du wirklich
meinst,
auch nicht, wass da noch fehlen soll.
Die Anregung von Zrrronggg! muss ich noch ausprobieren, sitze z. Zt. nicht
an der FB
und Fernzugriff ist ja immer noch nicht möglich.
Gruß Hubert
Am Dienstag, 13. März 2012 10:58:03 UTC+1 schrieb Borsti67:
>
> Hallo Hubert,
>
> warum machst Du immer wieder ein DEFINE? Jedes davon erzeugt einen
> täglich wiederholten Aufruf - wozu, wenn Du doch eh jeden Tag aufs neue
> testest, ob Wochenende ist?
> Außerdem: Da fehlen doch auch noch ein paar Zeilen drum herum, wann
> genau (bzw. unter welchen Umständen) wird denn dieses Codeschnipsel
> überhaupt ausgeführt?
>
> Gruß
> Torsten
>
> Am 12.03.2012 22:15, schrieb Hubert Melzer:
> > Alle Hinweise beherzigt. Nun funktioniert es zwar grundsätzlich, aber
> > dennoch nicht wie erwartet.
> > So wie die Definition jetz aussieht, sollte am Wochenende, ($we =1), das
> > Rollo um 07:45 hoch gehen,
> > in der Woche dann im Ergebnis von sunrise().
> > Bei mir ist es gerade umgekehrt.
> > Kann mir das jemand erklären?
> >
> > {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")} \
> > }
> >
> > Gruß Hubert
> >
> > --
> > To unsubscribe from this group, send email to
> > fhem-users+unsubscribe@googlegroups.com
>
>
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
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
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
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
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
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
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
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
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
> 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
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
> 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
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
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