FHEM Forum

FHEM => Automatisierung => Thema gestartet von: lunepi am 02 April 2025, 22:24:56

Titel: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: lunepi am 02 April 2025, 22:24:56
Moin,

ich habe mir diverse dummy device angelegt und dort 2 Uhrzeiten  mit setReading eingetragen. Diese wollte ich dann mit hilfe von at zum ein bzw. ausschalten von Lampen bzw. Steckdosen nutzen. Simple bei Sonnenuntergang einschalten und an Hand des Readings wieder ausschalten. Das gleiche Morgens, mit Hilfe des REadings einschalten und dann zu Sonnen aufgang wieder aus.

Beispiel für abends
defmod WZ_L1_abends at *{sunset_abs("REAL")} set FuSt.HC30A on-till [WZ_L1_timer:abends_time]
attr WZ_L1_abends computeAfterInit 0

bzw. für morgens

defmod WZ_L1_morgens at *{ReadingsVal("WZ_L1_timer","morgens_time","06:31:00")} { if( !isday()) { fhem("set FuSt.HC30A on-till " .sunrise_abs("REAL")) }}
attr WZ_L1_morgens computeAfterInit 0

Alle 10 Steckdosen die ich schalten möchte habe ich genauso aufgesetzt und entsprechend die Dummy devices mit den readings erzeugt.

Das Problem ist bei manchen funktionert es, bei manchen nicht. Manche Lampen springen zur rechten Zeit an aber nicht aus. Manche machen exakt das was ich will. Andere werden nicht eingeschaltet. Abends oder morgens scheint dabei keine Rolle zu spielen. Ich habe es wie man sieht mit ReadingsVal und dem direkten Zugriff auf die Variable gespielt. Ich habe computeAfterInit mit 0 und 1 ausprobiert, wobei wenn ich es richtig verstanden habe der Wert eigentlich keine Rolle spielt.

Wo ist der Fehler?

Gruß Christian
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: Otto123 am 03 April 2025, 11:40:22
Hallo Christian,
Zitat von: lunepi am 02 April 2025, 22:24:56Ich habe computeAfterInit mit 0 und 1 ausprobiert, wobei wenn ich es richtig verstanden habe der Wert eigentlich keine Rolle spielt.
Beim zweiten Beispiel würde er beim Neustart von FHEM eine Rolle spielen, beim ersten Beispiel spielt er keine Rolle
ZitatcomputeAfterInit
Falls perlfunc() im timespec Readings or Statusinformationen benögt, dann wird sie eine falsche Zeit beim FHEM-Start zurückliefern, da zu diesem Zeitpunkt die Readings noch nicht aktiv sind. Mit gesetztem computeAfterInit wird perlfunc nach Setzen aller Readings erneut ausgeführt. (Siehe Forum #56706)

Die _abs Funktionen im at zu nehmen ist kontraproduktiv, sunrise() oder sunset() liefern für das at die richtigen Werte ( auch wenn sie manchmal verwirrend aussehen)

Du musst Dir die Details (das list) anschauen, dort könnte man eventuell mehr sehen, wann ein at anspringen würde.

Wenn Du bei sunrise "REAL" verwendest solltest Du das auch bei isday() tun, Default ist nämlich "CIVIL"
ZitatSUNRISE_EL geht von einem Höhenwinkel der Sonne bezogen zum Horizont, h, von -6° aus. Dieser Wert bedeutet, dass die Sonne 6° unter dem Horizont steht und Lesen im Freien ohne künstliche Beleuchtung nicht mehr möglich ist (civil twilight, bürgerliche Dämmerung). SUNRISE_EL speichert diesen Wert in $defaultaltit.
Gruß Otto
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: frober am 03 April 2025, 12:39:30
Warum nimmst du nicht den weekdaytimer?

https://wiki.fhem.de/wiki/WeekdayTimer (https://wiki.fhem.de/wiki/WeekdayTimer)
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: betateilchen am 03 April 2025, 13:10:54
Zitat von: frober am 03 April 2025, 12:39:30Warum nimmst du nicht den weekdaytimer?

Vielleicht, weil ein at im Durchschnitt 728 Mal flexibler und einfacher in der Handhabung ist?
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: frober am 03 April 2025, 17:41:06
Zitat von: betateilchen am 03 April 2025, 13:10:54
Zitat von: frober am 03 April 2025, 12:39:30Warum nimmst du nicht den weekdaytimer?

Vielleicht, weil ein at im Durchschnitt 728 Mal flexibler und einfacher in der Handhabung ist?

ZitatAlle 10 Steckdosen die ich schalten möchte habe ich genauso aufgesetzt und entsprechend die Dummy devices mit den readings erzeugt

10 Dummys und 20 at ist einfacher und flexibler?!?  8)
OK flexibel ist es schon... ;D

Da nimmt man wenigstens eine structure...
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: rabehd am 03 April 2025, 19:45:05
Wer weiss denn, ob die alle zur gleichen Zeit geschaltet werden sollen?
Ich habe die Zeiten nicht in Dummys, sondern als Userreading.
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: lunepi am 03 April 2025, 22:18:22
Moin Otto,

Danke erstmal für die erhellende Antwort.

Zitat von: Otto123 am 03 April 2025, 11:40:22Die _abs Funktionen im at zu nehmen ist kontraproduktiv, sunrise() oder sunset() liefern für das at die richtigen Werte ( auch wenn sie manchmal verwirrend aussehen)
Ja das hatte ich gesehen... aber wat der Bur nich kennt versucht er nicht. Wenn ich die command reference dann aber richtig verstehe muss man dann
at +*{sunrise()}verwenden?  Ach ne das war mit sunset_rel().
Nagut ich versuch das mal mit sunrise().
Zitat von: Otto123 am 03 April 2025, 11:40:22Wenn Du bei sunrise "REAL" verwendest solltest Du das auch bei isday() tun, Default ist nämlich "CIVIL"
:-[ - Verdammt, heute morgen hatte ich bei einigen Lampen, die nicht angeschaltet waren und den definierten Einschaltzeiten gedacht, ob es da tatsächlich nicht ein Clash gibt. Bingo, das wird es in gewesen sein. Ich hab is_day() immer nur so benutzt, mir war gar nicht klar, dass der die gleichen Optionen nutzt wie sunset() bzw. sunrise().

Gruß Christian
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: lunepi am 03 April 2025, 22:43:54
Zitat von: frober am 03 April 2025, 17:41:0610 Dummys und 20 at ist einfacher und flexibler?!?  8)
OK flexibel ist es schon... ;D

Naja zum einen will ich unterschiedliche Einschalt bzw. Ausschaltzeiten nutzen und weil meine Frau die Zeiten gerne mal verstellen möchte, war dass jetzt meine Lösung, damit sie die Zeiten einfach über eine  Eingabezeile im Browser im Dummy device  setzen kann und ich diese im Hintergrund auslesen, setzen und nutzen kann.
Weekdaytimer hatte ich vorher aber da habe ich es nicht hinbekommen, dass die Lampe aus bleibt wenn die Einschaltzeit im Laufe des Frühjahrs irgendwann nach dem Sonnenaufgang liegt.
Und so aufwendig ist ein kleines Skript, was erstmal die gewünschte Grundconfig mit allen at's und dummy's anlegt auch nicht.

Wenn ich auch überzeugt bin, dass es bestimmt viel bessere bzw elegantere Lösungen gibt. Aber das ist halt erstmal(!) meine Lösung, die ich bis hierhin hinbekommen habe. 
Hinweise wie es besser geht nehme ich gerne an.
(Sofern ich diese verstehe ;) )

Gruß Christian

Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: frober am 04 April 2025, 05:58:29

Zitat von: lunepi am 03 April 2025, 22:43:54Naja zum einen will ich unterschiedliche Einschalt bzw. Ausschaltzeiten nutzen und weil meine Frau die Zeiten gerne mal verstellen möchte...
Hättest du diesen Kontext gleich geschrieben...

Zitatdamit sie die Zeiten einfach über eine  Eingabezeile im Browser im Dummy device  setzen kann
Widgetoverwrite

https://wiki.fhem.de/wiki/FHEMWEB/Widgets (https://wiki.fhem.de/wiki/FHEMWEB/Widgets)
Damit kannst du mit time direkt die Zeit wählen. Vielleicht ist das eine Option.
Ansonsten kannst du die Readings etc. in jedes Device einbauen und die Dummys sparen.

Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: lunepi am 06 April 2025, 13:32:42
Moin,

Morgens war es tatsächlich das Probelm mit dem isday("REAL") das läuft jetzt wie geschmiert. Danke Otto.

Aber Abends verstehe ich es nicht.

Dieses schaltet abends wie gewünscht:

Internals:
  COMMAND    set FuSt.HC31C on-till [MB_L1_timer:abends_time]
  DEF        *{sunset("REAL")} set FuSt.HC31C on-till [MB_L1_timer:abends_time]
  FUUID      67eef3af-f33f-cb93-c07e-903c8bfd0b876915
  NAME      MB_L1_abends
  NR        374
  NTM        20:00:54
  PERIODIC  yes
  RELATIVE  no
  REP        -1
  STATE      Next: 20:00:54
  TIMESPEC  {sunset("REAL")}
  TRIGGERTIME 1743962454
  TRIGGERTIME_FMT 2025-04-06 20:00:54
  TYPE      at
  eventCount 2
  READINGS:
    2025-04-05 19:59:07  state          Next: 20:00:54
Attributes:
  computeAfterInit 0
  room      Zeiten

Dieser nicht:

Internals:
  COMMAND    set FuSt.HC30A on-till [WZ_L1_timer:abends_time]
  DEF        *{sunset("REAL")} set FuSt.HC30A on-till [WZ_L1_timer:abends_time]
  FUUID      67eef3c7-f33f-cb93-5306-7d2d17ac2280ada5
  NAME      WZ_L1_abends
  NR        383
  NTM        20:00:54
  PERIODIC  yes
  RELATIVE  no
  REP        -1
  STATE      Next: 20:00:54
  TIMESPEC  {sunset("REAL")}
  TRIGGERTIME 1743962454
  TRIGGERTIME_FMT 2025-04-06 20:00:54
  TYPE      at
  eventCount 2
  READINGS:
    2025-04-05 19:59:07  state          Next: 20:00:54
Attributes:
  computeAfterInit 0
  room      Zeiten
Das sind nur 2 Beispiel devices. BEide kann ich probemlos via FHEM "set DEV on" schalten, es ist also kein Kommunikationsprobelm zwischen FHEM und dem  Device. Beide sind die gleiche billge Baumarksteckdosen. Wenn ich manuell set on-till setze funktioniert es.

Wenn alle devices so nicht funktionieren würde, wäre es ja klar. Aber warum einige devices so funktionieren und anderen nicht ist mir schleierhaft.

Hat jemand noch ne Idee, was ich tun,testen ändern oder kann?

Gruß Christian
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: betateilchen am 06 April 2025, 13:45:23
Was steht denn im Logfile zu dem Thema?

Entweder die resultierende timespec aus WZ_L1_timer ist falsch oder der set-Befehl wird erst gar nicht aufgerufen.

Poste doch mal ein list von WZ_L1_timer.
Titel: Aw: Readings und sunset/sunrise mit at funktionieren manchmal
Beitrag von: frank am 06 April 2025, 13:48:59
vielleicht mal zeitlich etwas entzerren, also nicht alle zur exakt selben Zeit schalten.