FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Himi am 26 November 2020, 10:48:27

Titel: Nachtlicht mit sunset
Beitrag von: Himi am 26 November 2020, 10:48:27
Hallo zusammen,

ich steuere z.Z. über eine HUE Bridge mein Schlafzimmer-Nachtlicht über ein DOIF...define Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:state] eq "motion" and [20:00-07:30]) (set Schlafz_Nachtlicht on-for-timer 25)

Die Steuerung wird als z.Z. zwischen 20:00 - 07:30 Uhr freigegeben. Ich möchte aber weg von der Statischen Uhrzeit und auf Sonnenauf.-und Untergang umstellen. Also mit sunset und sunrise arbeiten.

Ich würde es gern so haben...

Das Nachtlicht soll zwischen Sonnenuntergang und Sonnenaufgang aber nicht zwischen 7:30 und 20:00 Uhr freigegeben werden. So recht komme ich im Wiki und im Forum nicht klar.

Wer kann mir da weiterhelfen?

Besten Dank im Voraus..
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Beta-User am 26 November 2020, 10:56:09
So könnte das z.B. klappen:
define Nachtlicht_2 notify Schlafzimmer_Bewegungsmelder:motion {fhem("set Schlafz_Nachtlicht on-for-timer 25") if !isday() }
Titel: Antw:Nachtlicht mit sunset
Beitrag von: betateilchen am 26 November 2020, 15:56:30
@Beta-User: netter Versuch, aber so einfach funktioniert das nicht.

Warum nicht? Weil Sonnenaufgang durchaus NACH 07:30 Uhr und Sonnenuntergang auch VOR 20:00 Uhr liegen kann.

Und damit ist die Forderung

Zitat von: Himi am 26 November 2020, 10:48:27
Das Nachtlicht soll zwischen Sonnenuntergang und Sonnenaufgang aber nicht zwischen 7:30 und 20:00 Uhr freigegeben werden.

nicht umgesetzt.

Anderer Lösungsvorschlag:

Wenn man kein DOIF verwenden möchte, definiert man zwei wiederholende at mit sunrise() und sunset(), in denen die entsprechenden Zeitlimits eingetragen sind.
Mit diesen at kann man das notify auf active oder inactive setzen, womit man sich die Abfrage des Zeitpunktes direkt im notify erspart.

Und wenn man mehrere Dinge hat, die bei Sonnenauf- bzw. -untergang von FHEM erledigt werden sollen, kann man das alles in diesen beiden at devices zur Ausführung bringen.
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Beta-User am 26 November 2020, 16:03:42
ähm, ja!

Sorry, hatte einfach das "weg von starr" gesehen.

Was auch gehen sollte: das vorgeschlagene notify kombinieren mit disableForIntervals, und da eben dann die Zeit zwischen 07:00 und 19:59 Uhr reinnehmen...
https://fhem.de/commandref_modular.html#disabledForIntervals
Titel: Antw:Nachtlicht mit sunset
Beitrag von: rabehd am 26 November 2020, 16:29:58
defmod LichtSeiteoben DOIF ([{sunset("REAL",+300)}-23:06|01234] and [Anwesenheit] eq "jemandda" ) (set FS_1 on)

Ein Ausschnitt aus einer meiner Lampensteuerungen.
Titel: Antw:Nachtlicht mit sunset
Beitrag von: TomLee am 26 November 2020, 17:09:40
ungetestet, hoffe der trigger stimmt

disabledForIntervals-Vorschlag (sind ein paar weniger Klammern als mit DOIF   ;))

defmod Nachtlicht notify MQTT2_Schlafzimmer_Bewegungsmelder:.motion set Schlafz_Nachtlicht on-for-timer 25
attr Nachtlicht disabledForIntervals 07:30-19:59
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Beta-User am 26 November 2020, 17:22:28
...oder eben mit Perl in dem Attribut, wie in der cref zu finden:
ZitatIf parts of the attribute value are enclosed in {}, they are evaluated:

       
  • {sunset_abs()}-24 {sunrise_abs()}-08
Es müssen dann eben ggf. die Zeitgrenzen mitgegeben werden, z.B.
{sunset_abs(0,"20:00",)}
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Damian am 26 November 2020, 17:32:03
defmod Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:state] eq "motion" and [{sunset(0,"20:00","23:00")}-{sunrise(0,"04:00","07:30")}]) (set Schlafz_Nachtlicht on-for-timer 25)
Titel: Antw:Nachtlicht mit sunset
Beitrag von: betateilchen am 26 November 2020, 17:37:55
Zitat von: TomLee am 26 November 2020, 17:09:40
disabledForIntervals-Vorschlag

Damit hast Du aber auch wieder die festen Zeiten drin, die der TE nicht haben möchte.

Zitat von: Himi am 26 November 2020, 10:48:27
Ich möchte aber weg von der Statischen Uhrzeit und auf Sonnenauf.-und Untergang umstellen. Also mit sunset und sunrise arbeiten.

Außerdem würde mit Deinem Vorschlag das Licht im Sommer auch um 20:05 Uhr angehen, wo es durchaus noch hell sein könnte.
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Himi am 26 November 2020, 17:47:19
Danke für die tolle Mitarbeit...

ich hatte !isday())  bis dato gar nicht auf dem Schirm.

Nach meiner Logik könnte doch nachfolgender Code auch funktionieren. (Erste Tests waren positiv)

define Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:state] eq "motion" and [20:00-07:30] and !isday()) (set Schlafz_Nachtlicht on-for-timer 25)

Titel: Antw:Nachtlicht mit sunset
Beitrag von: betateilchen am 26 November 2020, 18:10:31
ich überlege gerade, ob man bei isday() nicht die gleichen Parameter mitgeben kann wie bei sunset() und sunrise() auch.

Dabei fällt mir wieder ein, dass isday() für eine der am schlechtesten dokumentierten Funktionen in FHEM halte  8)
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Damian am 26 November 2020, 19:11:25
Zitat von: Himi am 26 November 2020, 17:47:19
Danke für die tolle Mitarbeit...

ich hatte !isday())  bis dato gar nicht auf dem Schirm.

Nach meiner Logik könnte doch nachfolgender Code auch funktionieren. (Erste Tests waren positiv)

define Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:state] eq "motion" and [20:00-07:30] and !isday()) (set Schlafz_Nachtlicht on-for-timer 25)

Ich würde nicht auf den Zustand, sondern auf das Event triggern und den Trigger beim Zeitintervall herausnehmen:


define Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:"^motion$"] and [?20:00-07:30] and !isday()) (set Schlafz_Nachtlicht on-for-timer 25)

Allerdings, wenn du nicht herausfindest, wie man isday feinjustiert, dann würde ich meinen Vorschlag nehmen, dort kannst du eine Verschiebung des Sonnenaufgangs und des Sonnenuntergangs vornehmen.
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Beta-User am 27 November 2020, 07:52:18
Zitat von: betateilchen am 26 November 2020, 18:10:31
ich überlege gerade, ob man bei isday() nicht die gleichen Parameter mitgeben kann wie bei sunset() und sunrise() auch.

Dabei fällt mir wieder ein, dass isday() für eine der am schlechtesten dokumentierten Funktionen in FHEM halte  8)
Kann man, und das steht auch ausdrücklich so in der commandref (ohne die Hervorhebung, SUNRISE_EL):
ZitatJede der folgenden Funktionen akzeptiert bis zu vier (bzw. fünf) Parameter in der angegebenen Reihenfolge:
...Die Frage ist daher doch eher, wie man Doku schreibt, dass man sie verstehen kann, aber ich bin da eher bei Rudi: Lieber einmal das Prinzip vorneweg statt einer ausufernden Kasuistik. "Eigentlich" hätten wir das direkt wissen können (ok, du hast es wahrscheinlich gesehen ::) )...

Vielleicht übernehme ich das Beispiel hier noch irgendwo an passender Stelle ins Wiki, mal schauen
define Nachtlicht_2 notify Schlafzimmer_Bewegungsmelder:motion {fhem("set Schlafz_Nachtlicht on-for-timer 25") if !isday(0,'07:30','20:00') }
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Himi am 28 November 2020, 08:49:01
Also ich habe zwei Varianten getestet die genau meinen oben beschriebenen Anforderungen entsprechen.

Variante 1: (mit Notify) define Nachtlicht notify Schlafzimmer_Bewegungsmelder:motion {fhem("set Schlafz_Nachtlicht on-for-timer 25") if !isday(0,'20:00','07:30') }
Variante 2: (mit DOIF) define Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:state] eq "motion" and [20:00-07:30] and !isday()) (set Schlafz_Nachtlicht on-for-timer 25)

Ich bedanke mich für Euere Mitarbeit bei den Lösungsvorschlägen.

Viele Grüße aus Hohenlohe
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Damian am 28 November 2020, 12:01:22
Zitat von: Himi am 28 November 2020, 08:49:01
Also ich habe zwei Varianten getestet die genau meinen oben beschriebenen Anforderungen entsprechen.

Variante 1: (mit Notify) define Nachtlicht notify Schlafzimmer_Bewegungsmelder:motion {fhem("set Schlafz_Nachtlicht on-for-timer 25") if !isday(0,'20:00','07:30') }
Variante 2: (mit DOIF) define Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:state] eq "motion" and [20:00-07:30] and !isday()) (set Schlafz_Nachtlicht on-for-timer 25)

Ich bedanke mich für Euere Mitarbeit bei den Lösungsvorschlägen.

Viele Grüße aus Hohenlohe

Dann wollen wir nicht eine dritte aus den hier gemachten Erkenntnissen vorenthalten:

define Nachtlicht DOIF ([Schlafzimmer_Bewegungsmelder:state] eq "motion" and !isday(0,'20:00','07:30')) (set Schlafz_Nachtlicht on-for-timer 25)
Titel: Antw:Nachtlicht mit sunset
Beitrag von: Himi am 28 November 2020, 13:38:09
Hallo Damian,

sorry auch die 3.Variante habe ich erfolgreich getestet. Das ist natürlich auch Erwähnenswert...

Gerade für Anfänger sind Beispiele in vielen Fällen hilfreich. So auch sicherlich in den drei genannten.