[behoben] Wie korrekt mit disabledForIntervals Modul de.-/aktivieren ?

Begonnen von TomLee, 17 März 2022, 17:27:44

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

bin mir nicht sicher ob die Angabe 24-24 korrekt ist, durch ausprobieren hatte ich aber mal festgestellt das damit das Modul aktiv ist.

Folgendes at-Definition macht somit was es soll wie ich mir vorstelle:
defmod Demo_at at *{at_ultimo()} {}
attr Demo_at disabledForIntervals 24-24

setstate Demo_at Next: 2022-03-31 23:59:00
setstate Demo_at 2022-03-17 17:14:38 state Next: 2022-03-31 23:59:00


Genauso :
defmod Demo_at at *{at_ultimo()} {}
attr Demo_at disabledForIntervals 00-24

setstate Demo_at disabled
setstate Demo_at 2022-03-17 17:19:02 state disabled



Kann mir wer die Frage beantworten weshalb es mit dem if nicht zum gleichen Verhalten kommt ?

defmod Demo_at at *{at_ultimo()} {}
attr Demo_at disabledForIntervals {$month == 3 ? '24' : '00' }-24

setstate Demo_at disabled
setstate Demo_at 2022-03-17 17:22:52 state disabled



Gruß

Thomas

TomLee

Dann steht in dem Reading das drin was ich erwarte, Danke.

Ich hab nur getestet mit DEF bearbeiten und anschliessendem modify demo_at, damit wird bei Angabe nur eines Tupels das Reading direkt aktualisiert.

Ich verstehe jetzt aber immer noch nicht ob der restart nur für die Optik ist oder das at auch ohne greifen würde ?

betateilchen

Örks, ich hab grade versehentlich falsch geklickt, als ich meinen letzten Beitrag bearbeiten wollte... nun isser weg.

Warum willst Du eine Ausführung über disabledForIntervals ein-/ausschalten und nicht per disable oder direkt im Ausführungsteil?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

Bei mir will ich gar nix umsetzen, ich hatte hier eine weitere Möglichkeit gezeigt es anzugehen und im nachhinein das oben geschilderte Verhalten festgestellt, das wollte ich einfach nur für mich nochmal klären (weil da egal von welcher Seite keine Rückmeldung kam) das das auch korrekt so vorgeschlagen war (mit restart halt schon irgendwie doof), das müsste man dann vlt. bei meiner vorgeschlagenen Lösung ergänzen.

rudolfkoenig

Wenn ich
attr Demo_at disabledForIntervals {$month == 3 ? '24' : '00' }-24

setze, dann steht bei mir im Log
Zitat2022.03.17 18:15:36 1: PERL WARNING: Use of uninitialized value in substitution iterator at fhem.pl line 911.
2022.03.17 18:15:36 3: eval: $month == 3 ? '24' : '00'
Liegt wohl daran, dass disabledForIntervals fuer {} nur eval aufgerufen hat, und nicht AnalyzePerlCommand.
Das habe ich jetzt gefixt.