Hallo,
z.Zt. habe ich das:
defmod BadNachtlicht at *22:00:00 set MQTT2_DVES_B60FAD_CH2 rgb FF9E1F ;; set MQTT2_DVES_B60FAD_CH2 pct 25 ;; set MQTT2_DVES_B60FAD_CH2 on-till-overnight 06:00:00
Ich würde das aber gern so schalten wollen:
22:00 Uhr oder wenn sunset später ist mit sunset einschalten
06:00 Uhr oder wenn sunrise eher ist mit sunrise ausschalten
soll ich das eher mit DOIF versuchen?
matze1999
sehe keine prinzipiellen Hindernisse.
Für Teil 1 (at) siehe "help at" (unter Beachtung von "computeAfterInit", falls die "Eckdaten" aus einem anderen Device kommen sollen), und für Teil 2 (on-till-overnight) verwendet MQTT2_DEVICE dann SetExtensions, wozu unter "help set" ein paar Hinweise zu finden sind, wie das mit Perl für die Zeit aussieht.
Zitat von: Beta-User am 05 Mai 2022, 11:45:52
Für Teil 1 (at) siehe "help at"
...
für Teil 2 (on-till-overnight)
Um "on-till-overnight" geht es doch gar nicht. Das Ausschalten soll künftig anhand von sunrise erfolgen.
Für Teil 3
Zitat von: matze1999 am 05 Mai 2022, 11:35:58
22:00 Uhr oder wenn sunset später ist mit sunset einschalten
06:00 Uhr oder wenn sunrise eher ist mit sunrise ausschalten
siehe "help SUNRISE_EL"
Zitat von: betateilchen am 05 Mai 2022, 12:19:01
Um "on-till-overnight" geht es doch gar nicht. Das Ausschalten soll künftig anhand von sunrise erfolgen.
Aha. Der TE hatte halt einen "on-till-overnight"-Befehl zum Ausschalten in seinem Post drin, von daher war ich davon ausgegangen, dass er nicht per 2. at ausschalten will, sondern "nur" den Befehl anpassen ;) .
Zitat
Für Teil 3
siehe "help SUNRISE_EL"
... kann man auch "help at" anschauen. Da sind Beispiele mit Grenzen drin ::) ...
Es schadet aber sicher nicht, sich die Erläuterungen an dieser Stelle zu "Teil 3" auch noch anzuschauen.
Hallo,
Danke, werde ich mir alles in Ruhe anschauen und dann berichten.
matze1999
define lichtan at *{sunset("REAL",0,"22:00","23:59")} mach was an
define lichtaus at *{sunrise("REAL",0,"00:00","06:00")} mach was aus
Bleibt die philosophische Frage, wann ist Sonnenauf und Untergang.
Das kann man hier https://wiki.fhem.de/wiki/SUNRISE_EL (https://wiki.fhem.de/wiki/SUNRISE_EL) nachlesen und lange darüber streiten ;D
Hallo,
ich tu mich etwas schwer:
hier noch mal die Anforderung:
jeden Tag, soll ein Nachtlicht um 22:00 Uhr angeschaltet werden (auch wenn es vorher schon dunkel ist), ausser wenn es draussen noch nach 22:00 Uhr hell ist, dann soll es erst bei Sonnenuntergang eingeschaltet werden.
eigentlich muss geprüft werden, ob der Sonnenuntergang nach 22:00 Uhr stattfindet, wenn nicht um 22:00 Uhr einschalten, wenn ja erst mit Sonnenuntergang einschalten.
also ein DOIF (?)
Wenn Sunset > 22:00 Uhr dann wenn sunset dann ein sonst wenn 22:00 Uhr dann ein
matze1999
Zitat von: matze1999 am 06 Mai 2022, 15:03:36
ich tu mich etwas schwer:
Das merkt man. Die eigentliche Frage ist: Warum?
Alle Bausteinchen liegen doch vor deiner Nase... :o
Zitat
also ein DOIF (?)
No comment. DOIF ist mAn. was für Leute, die wissen was sie tun, und ich kann das z.B. nicht, ist mir zu kompliziert.
Ich würde die Bausteinchen jedenfalls so zusammenbauen:
defmod BadNachtlicht at *{sunset('CIVIL',0,'22:00','23:59')} set MQTT2_DVES_B60FAD_CH2 rgb FF9E1F ;; set MQTT2_DVES_B60FAD_CH2 pct 25 ;; set MQTT2_DVES_B60FAD_CH2 on-till-overnight {sunrise('REAL',0,'00:00','06:00')}
DOIF geht natürlich auch, Du musst nur 2 unterschiedliche Trigger nehmen:
defmod BadNachtlicht DOIF ( ( [{sunset('CIVIL',0,'22:00','23:59')}] && [?22:00-23:59] ) | ( [22:00] && [?{sunset('CIVIL',0,'22:00','23:59')}] ) )\
(<Deine Befehle>,<Deine Befehle>,<Deine Befehle>)
hallo, vielen Dank, beide Varianten tun es.
matze1999
Irgendwie habe ich das Problem nicht verstanden. Beide sun-Funktionen bringen schon die gewünschte Funktionalität, da muss man doch nichts zusätzlich definieren/programmieren:
defmod di_sunset DOIF ([{sunset('CIVIL',0,'22:00','23:59')}]) (set bla on) DOELSEIF ([{sunrise('CIVIL',0,'03:00','06:00')}]) (set bla off)
@Damian,
sunset und sunrise als alleinigen Trigger möchte ich nur, wenn der Sonnenuntergang nach 22.00 Uhr stattfindet und der Sonnenaufgang vor 6:00 Uhr. Sonst soll es 22:00 und 06.00 Uhr schalten.
matze1999
Zitat von: matze1999 am 08 Mai 2022, 18:38:45
@Damian,
sunset und sunrise als alleinigen Trigger möchte ich nur, wenn der Sonnenuntergang nach 22.00 Uhr stattfindet und der Sonnenaufgang vor 6:00 Uhr. Sonst soll es 22:00 und 06.00 Uhr schalten.
matze1999
Und genau das macht meine Definition, probiere es aus ;)
@Damian,
ja, ich werde das probieren.
matze1999
@Damian,
das Nachtlicht hat sich früh nicht abgeschaltet
defmod BadNachtlicht.di DOIF ([{sunset('CIVIL',0,'22:00','23:59')}]) (set MQTT2_DVES_B60FAD_CH2 rgb FF9E1F,set MQTT2_DVES_B60FAD_CH2 pct 25,set MQTT2_DVES_B60FAD_CH2 on) DOELSEIF ([{sunrise('CIVIL',0,'03:00','06:00')}]) (set MQTT2_DVES_B60FAD_CH2 off)
obwohl das
([{sunrise('CIVIL',0,'03:00','06:00')}])
bedeutet bei Sonnenaufgang aber nicht vor 03:00 und nicht nach 06:00, sind dann 03:00 und 06:00 Trigger?
matze1999
jetzt versuch ich es mal damit:
defmod BadNachtlicht.at at *{sunset('CIVIL',0,'22:00','23:59')} set MQTT2_DVES_B60FAD_CH2 rgb FF9E1F ;; set MQTT2_DVES_B60FAD_CH2 pct 25 ;; set MQTT2_DVES_B60FAD_CH2 on-till-overnight {sunrise('REAL',0,'00:00','06:00')}
matze1999
Zitat von: matze1999 am 09 Mai 2022, 16:31:05
@Damian,
das Nachtlicht hat sich früh nicht abgeschaltet
defmod BadNachtlicht.di DOIF ([{sunset('CIVIL',0,'22:00','23:59')}]) (set MQTT2_DVES_B60FAD_CH2 rgb FF9E1F,set MQTT2_DVES_B60FAD_CH2 pct 25,set MQTT2_DVES_B60FAD_CH2 on) DOELSEIF ([{sunrise('CIVIL',0,'03:00','06:00')}]) (set MQTT2_DVES_B60FAD_CH2 off)
obwohl das
([{sunrise('CIVIL',0,'03:00','06:00')}])
bedeutet bei Sonnenaufgang aber nicht vor 03:00 und nicht nach 06:00, sind dann 03:00 und 06:00 Trigger?
matze1999
Wenn er nicht geschaltet hat, dann liegt es aber nicht an der Definition. Wann er geschaltet hat oder schalten wird, siehst du an den Readings.
hallo,
ich werde es noch mal versuchen.
matze1999
Zitat von: matze1999 am 10 Mai 2022, 07:58:10
hallo,
ich werde es noch mal versuchen.
matze1999
Du kannst es auch direkt in der Kommandozeile testen:
{sunset('CIVIL',0,'22:00','23:59')}
liefert 22:00 als Triggerzeit, weil der Sonnenuntergang vor 22:00 Uhr ist.
Wenn in ein paar Wochen der Sonnenuntergang später als 22:00 Uhr sein wird, dann wird die Sonnenuntergangszeit größer als 22:00 Uhr als Triggerzeit geliefert.
Bei
{sunrise('CIVIL',0,'03:00','06:00')}
kommt jetzt eine Zeit vor 06:00 Uhr (bzw. Zeit+24 Stunden für den nächsten Tag), im Herbst wird dann 06:00 Uhr als Triggerzeit kommen, wenn der Sonnenaufgang nach 06:00 Uhr kommt.
So ist die Syntax der sun-Funktionen beschrieben und so ist es auch von dir auch gewollt gewesen.
Zitat von: Damian am 10 Mai 2022, 10:15:35
so ist es auch von dir auch gewollt gewesen.
Bisher war noch nirgends die Frage wirklich beantwortet worden, die DetelefR zurecht gestellt hattte...
Zitat von: DetlefR am 05 Mai 2022, 22:16:19
Bleibt die philosophische Frage, wann ist Sonnenauf und Untergang.
'CIVIL' dürfte in den meisten Fällen eine gute Näherung sein, und das etwas provokante 'REAL' hat matze1999 vermutlich schlicht überlesen...?
Zitat von: matze1999 am 09 Mai 2022, 16:37:23
jetzt versuch ich es mal damit:
defmod BadNachtlicht.at at *{sunset('CIVIL',0,'22:00','23:59')} set MQTT2_DVES_B60FAD_CH2 rgb FF9E1F ;; set MQTT2_DVES_B60FAD_CH2 pct 25 ;; set MQTT2_DVES_B60FAD_CH2 on-till-overnight {sunrise('REAL',0,'00:00','06:00')}
Wie dem auch sei, man kann auch die vorhergesagte Wolkendecke noch berücksichtigen, z.B. indem man Twilight mit ins Boot holt. Aber solange solche "Kleinigkeiten" wie CIVIL und REAL noch nicht mal wahrgenommen werden, ist es wohl müßig, das zu vertiefen ::) ...
Zitat von: Beta-User am 10 Mai 2022, 10:28:44
Bisher war noch nirgends die Frage wirklich beantwortet worden, die DetelefR zurecht gestellt hattte...
Das stimmt nicht, das war eindeutig formuliert gewesen:
ZitatIch würde das aber gern so schalten wollen:
22:00 Uhr oder wenn sunset später ist mit sunset einschalten
06:00 Uhr oder wenn sunrise eher ist mit sunrise ausschalten
Zitat von: Damian am 10 Mai 2022, 10:31:31
Das stimmt nicht, das war eindeutig formuliert gewesen:
Aha... Stimmt.
Jedenfalls, wenn man unterstellt, dass bewußt auf den default "CIVIL" abgestellt wurde ::) . Lassen wir das mal so stehen...