Frage zu sunrise/at

Begonnen von juliar, 29 Januar 2015, 08:32:58

Vorheriges Thema - Nächstes Thema

juliar

Hallo zusammen,

ich schalte schon mehrere Dinge wie Rollos anhand des Sonnenaufgangs und des Sonnenuntergangs. Die Befehle sind mir soweit bekannt. Nur mit einer Sache komme ich irgendwie nicht ganz klar. Ich würde gerne morgens eine Außenleuchte schalten mit folgender Bedingung:

"Leuchte einschalten um 6 Uhr, es sei denn der Sonnenaufgang ("REAL") liegt vor 6 Uhr (z.B. im Hochsommer)".

Fürs Ausschalten habe ich mir einen Befehl gemacht der immer 15 Minuten nach Sonnenaufgang die Leuchte ausschaltet. Wenn sie nicht an ist schaltet er halt nochmal aus, das sollte ja nicht weiter schlimm sein. Somit geht es mir eigentlich nur um die obige Einschaltbedindung wie man das am elegantesten lösen kann.

Vielen Dank und schönen Gruß
Julia

strauch

Wie sieht dein bisheriger Versuch aus? Ich hatte das mal mit isday überprüft.

Gesendet von meinem Nexus 4 mit Tapatalk
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

juliar

#2
Hab grad keinen Zugriff auf meine Box, aber müsste so aussehen:

define AussenlampeAn   at *06:00:00 set Aussenlampe on 
define AussenlampeAus at *{sunrise("REAL","900")} set Aussenlampe off

Das läuft zur Zeit auch wie es soll, aber wenn im Hochsommer der Sonnenaufgang z.B. um 5:30 Uhr ist, schaltet die Lampe um 5:45 Uhr auf "aus" und um 6 Uhr "ein". Daher würde ich das Einschalten gerne so begrenzen, dass es nur dann ausgeführt wird, wenn der Sonnenaufgang nach 6 Uhr liegt. Aber mit sunrise "nicht vor" "nicht nach" komme ich da nicht weiter. Oder kann man dort anstatt absoluter Uhrzeiten auch nochmal sunrise angeben? Also sowas in der Richtung:

define AussenlampeAn at *{sunrise("REAL","-10800","06:00",sunrise("REAL"))} set Aussenlampe on

Schönen Gruß
Julia

strauch

Also was geht zu überprüfen ob schon Tag ist oder nicht mit isday, ich weiß jetzt aber nicht ob es da nicht vielleicht auch ein Überkreuzen gibt. Das müsstest du mal testen.

define AussenlampeAn   at *06:00:00 { fhem("set Aussenlampe on ") if (!$isday) }

Schalte die Lampe nur dann an, wenn kein Tag ist.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

rudolfkoenig

isday beachtet nicht REAL und Co. Ich wuerde es so schreiben:
define AussenlampeAn at *06:00 set Aussenlampe on-till {sunrise_abs("REAL")}
on-till wird nicht ausgefuehrt, falls das Argument (sunrise) nach "jetzt" (06:00) liegt.

juliar

#5
Hallo Rudolf,

Danke für die Info. So 100%ig verstanden habe ich es jetzt noch nicht. Mit Deiner Lösung brauche ich also kein Ein- und Ausschalten mehr sondern alles in
einer Zeile:

define AussenlampeAn at *06:00 set Aussenlampe on-till {sunrise_abs("REAL","900")}

Die Lampe geht also um 6 Uhr an und bleibt so lange an bis Sonnenaufgang +15 Minuten erreicht ist. Beispiel:
Sonnenaufgang aktuell 8:15 Uhr:   Lampe ist von 6 Uhr bis 8:30 Uhr an
Sonnenaufgang Sommer 5:30 Uhr: Lampe ist von 6 Uhr bis 5:45 Uhr an (geht also garnicht erst an?)

Habe ich das so richtig verstanden? Ich hätte jetzt in zweiten Beispiel vermutet die Lampe geht um 6 Uhr an und bleibt bis 5:45 Uhr am nächsten morgen an. :-)

Wann genau verwendet man "sunrise" und wann "sunrise_abs"?

Danke und Gruß
Julia

rudolfkoenig

Ja, so ist das gedacht. Nachteil dieser Implementierung: ein um 22:00 gestarteter on-till bis 02:00 funktioniert nicht.
sunrise ist fuer das erste Argument von at gedacht, um doppelte Ausfuehrungen im Herbst zu vermeiden, da die Uhrzeit fuer die naechste Ausfuehrung direkt nach der Aktuellen berechnet wird. sunrise_abs fuer alles andere.

juliar

OK, vielen Dank!

Für mich passt in diesem Falle ja die Implementierung.  8) Aber hast natürlich recht das es Fälle gibt wo es dann nicht passt (wie Dein Beispiel).

Schönen Gruß
Julia

juliar

Hallo zusammen,

also so ganz funktioniert das bei mir aber mit dem obigen Beispiel nicht. In meiner Konfig steht:

define AussenlampeMorgens at *06:00 set Lampe_Haustuer on-till {sunrise_abs("REAL","900")}

Die Lampe ist auch um 6 Uhr angegangen, aber stand jetzt (10:20 Uhr) leuchtet sie immer noch obwohl sie um 8:30 Uhr hätte ausgehen müssen. Logfile der Lampe:

2015-02-01_06:00:00 Lampe_Haustuer set_on-till {sunrise_abs("REAL","900")}
2015-02-01_06:00:00 Lampe_Haustuer level: 100
2015-02-01_06:00:00 Lampe_Haustuer pct: 100
2015-02-01_06:00:00 Lampe_Haustuer deviceMsg: on (to CUL_0)
2015-02-01_06:00:00 Lampe_Haustuer on
2015-02-01_06:00:00 Lampe_Haustuer timedOn: running

Danach keine Einträge mehr im Logfile. Jemand eine Idee warum sie nicht ausgegangen ist?

Danke und Gruß
Julia

rudolfkoenig

on-till erstellt ein einmaliges at mit dem Namen Lampe_Haustuer_till, ein Blick auf deren Details lohnt sich.
Falls FHEM in der Zwischenzeit (ohne vorheriges Speichern) abgestuerzt ist, dann kann die Definition verlorengegangen sein.
Shutdown restart (ohne save) zaehlt nicht dazu, da einmalige ats beim shutdown gespeichert werden.


juliar

Danke schonmal soweit. Also abgestürzt oder neu gestartet ist nichts, siehe normales Logfile:

2015.02.01 06:00:00 3: CUL_HM set Lampe_Haustuer on-till {sunrise_abs("REAL","900")}
2015.02.01 06:01:18 1: Luefter: 1 (TPI 3.7, TPA -0.8, TPAP1 0.2, TempA 1.3, TempI 13.6, FeuchteI 51, FeuchteA 86 )
2015.02.01 06:01:18 3: CUL_HM set Steckdose_1 on-for-timer 3300
2015.02.01 06:01:18 3: CUL_HM set Steckdose_2 on-for-timer 3300
2015.02.01 07:01:18 1: Luefter: 0 (TPI 3.2, TPA -0.4, TPAP1 0.6, TempA 1.5, TempI 13.4, FeuchteI 50, FeuchteA 87 )
2015.02.01 07:01:18 3: CUL_HM set Steckdose_1 off
2015.02.01 07:01:18 3: CUL_HM set Steckdose_2 off
2015.02.01 08:01:18 1: Luefter: 0 (TPI 3.4, TPA -0.6, TPAP1 0.4, TempA 1.5, TempI 13.6, FeuchteI 50, FeuchteA 86 )
2015.02.01 08:01:18 3: CUL_HM set Steckdose_1 off
2015.02.01 08:01:18 3: CUL_HM set Steckdose_2 off
2015.02.01 09:01:18 1: Luefter: 0 (TPI 3.4, TPA -0.4, TPAP1 0.6, TempA 1.5, TempI 13.6, FeuchteI 50, FeuchteA 87 )
2015.02.01 09:01:18 3: CUL_HM set Steckdose_1 off
2015.02.01 09:01:18 3: CUL_HM set Steckdose_2 off
...

Meinst Du unter "Unsorted->at"? Da gibts nur die beiden normalen Einträge zur Lampe:
AussenlampeAbends Next: 17:43:23
AussenlampeMorgens Next: 06:00:00

Einen temporären Eintrag "Lampe_Haustuer_till" gibt es hier nicht. Oder muss ich an anderer Stelle suchen?

Schönen Gruß
Julia

strauch

Der sollte nur von 6 Uhr bis ca. 8:30 da sein zu dieser Jahreszeit.

Gesendet von meinem Nexus 4 mit Tapatalk

FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

juliar

Hi,
ja das schon nur da er ja nicht ausgelöst hat dachte Rudolf eventl. das er noch zu finden ist.

Abends schalte ich wie folgt:
define AussenlampeAbends  at *{sunset("REAL","1800","17:00","22:00")} set Lampe_Haustuer on-till 23:00

Lampe ist auch angegangen:
2015.02.01 17:43:23 3: CUL_HM set Lampe_Haustuer on-till 23:00

Unter Unsorted oder Everything finde ich aber trotzdem keinen temporären at obwohl jetzt erst 19:50 Uhr ist und die Lampe somit noch an. Daher nochmal die Frage ob ich woanders schauen muss. Ob sie ausgeht sehe ich dann später. ;-)

Danke und Gruß
Julia

rudolfkoenig

Ich habe gerade gesehen, dass das CUL_HM Modul on-till selbst implementiert, was bedeutet:
- {sunrise} kann man nicht als Argument angeben, nur Uhrzeit, Martin kennt wohl GetTimeSpec() noch nicht.
- generiert immer ein Einschalten und ein Ausschalten, notfalls am naechsten Tag, so wie du das am Anfang vermutet hast
- das Ausschaltsignal wird direkt beim Einschalten programmiert, in der Art von on-for-timer, ein FHEM at ist deswegen nicht notwendig, und wird auch nicht angelegt.

Dass deine Lampe eingeschaltet, aber nicht ausgeschaltet wurde, ist vermutlich ein Bug in CUL_HM. Ich finde es schade, dass Martin on-for-timer selbst implementiert hat, und damit Anwender und Supporter verwirrt.

juliar

Hallo Rudolf,

was genau bedeutet das? Ist Martin auch hier im Forum unterwegs und kann dazu evtl. Stellung nehmen bzw. den Fehler beheben und das Argument mit einbauen?

Hast Du eine Idee wie ich meine Wunschschaltung trotzdem hinbekomme? Stehe da jetzt irgendwie auf dem Schlauch.  :'(

Danke und schönen Gruß
Julia