Hauptmenü

weekdaytimer + isday

Begonnen von lunepi, 29 März 2024, 19:43:25

Vorheriges Thema - Nächstes Thema

lunepi

Moin,

wenn ich folgende Weekdaytimer Definition habe sehe ich schon, dass vermutlich das Licht trotzdem angeht wenn der Sonnenaufgang vorher stattfindet. Mit "at" bekomme ich das mit isday() gelöst aber wie bekommt man dass mit weekdaytimer?

FuSt.HC31D {sunset_abs("REAL",0,"15:00","23:00")}|on 00:05|off 06:30|on {sunrise_abs("REAL",0,"06:15","09:00")}|off

Nur in dem ich bei Sunrise die eine Zeit auch auf 6:30 setze oder kann? Oder kann ich hier auch irgendwie eine Bedingung mit isday() benutzen.

Gruß Lunepi

betateilchen

Das Problem habe ich noch nicht verstanden.

  • Der Parameter in sunset() ist doch genau dafür da, jeweils eine Uhrzeit "nicht vor..." und/oder "nicht nach..." festzulegen, damit das Licht nur innerhalb eines bestimmten Zeitfensters angeht?
  • Du hast doch sowieso schon perl-Code in Deiner Definition, da kannst Du doch alle Funktionen verwenden, die Du möchtest?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

lunepi

Hm, jein vielleicht hab ich auch nur ein Denkfehler.

Es geht mir um den Morgen. Sorry hätte nicht meine ganze Zeile kopieren sollen:

06:30|on {sunrise_abs("REAL",0,"06:15","09:00")}|off

Wenn jetzt der Sonnenaufgang um 6:25 ist, wäre die Lampe den ganzen Tag an. Richtig oder?

Jetzt kann ich wenn ich es richtig verstehe die Zeile so schreiben:

06:30|on {sunrise_abs("REAL",0,"06:30","09:00")}|off

Richtig?

Das würde aber bedeuten, dass ich bei allen Änderungen immer 2 Zeiten nämlich "on" und den Sunrise ändern muss.
Das wiederum würde bedeuten das ich das meiner Frau beibringen muss, die das verändern von Zeiten liebt :}

Ich frage mich halt ob es sowas gibt wie ich das vorher mit at gemacht hab

*06:30 { if( !isday() ) { fhem("set FuSt.HC31B on-till " .sunrise_abs("REAL",0, "5:30","9:00")) }}

Hier ist es halt Wurscht, denn das wird ja nur ausgeführt wenn es noch nicht Tag ist.

Ich finde hat am weekdaytimer attraktiv, dass ich halt alle Zeiten Morgen Mittags abends und zwischendurch nutzen kann.

Ich stell mir das halt so ähnlich vor

{if (!isday()){06:30} }|on {sunrise_abs("REAL",0,"06:30","09:00")}|off

Oder bin ich auf dem Holzweg oder denke zu kompliziert?

betateilchen

Bisher habe ich noch nicht verstanden, was Du eigentlich tun willst.

Warum willst Du mit weekdaytimer arbeiten, wenn Du schon eine Lösung mit at hast, die funktioniert?

Formuliere doch mal die konkrete Aufgabe, anstatt hier wirre Dinge zu beschreiben, die Du probierst und die nicht funktionieren wie Du Dir das vorstellst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

lunepi

Ich will verstehen ob und wie ich mit weekdaytimer eine Bedingung wie z.B. isday() einbauen kann.

Beta-User

#5
Zitat von: lunepi am 30 März 2024, 07:16:43Ich will verstehen ob und wie ich mit weekdaytimer eine Bedingung wie z.B. isday() einbauen kann.

a) weekdayTimer arbeitet Zeit(Punkt)-orientiert und ist nicht für andere Bedingungen konzipiert.
b) isday() nutzt dieselben Routinen, die hinter der Berechnung der sunset-etc.-Zeitpunkte stecken. Finde das ist eine unnötige Doppelung... Man könnte auf ein Reading zeigen für den frühesten Zeitpunkt (in sunrise()).
c) wenn unbedingt eine Ausnahme zu a) erforderlich ist, kann man das als condition definieren.
d) Der Ausführungsteil erlaubt Perl...

Genug Optionen also...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

juemuc

Und hier ein Beispiel:

defmod Esszimmerlampe_WT WeekdayTimer Esszimmerlampe_WT_dummy de 1234560|{sunset_abs("HORIZON=-0.9",0,"00:00","23:59")}|on 1234560|02:00|off  (ReadingsVal("Uhrzeit","state","") le "20:30")
Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

betateilchen

Zitat von: lunepi am 30 März 2024, 07:16:43Ich will verstehen ob und wie ich mit weekdaytimer eine Bedingung wie z.B. isday() einbauen kann.

Ja, kannst Du. Das habe ich doch schon in meiner ersten Antwort geschrieben.
Du verwendest perl-code, da kannst Du jede beliebige Funktion mit einbauen, wenn es sein muss, auch isday().
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!