[at] trotz "attr disable 1" werden wiederholende at ständig neu gestartet.

Begonnen von frank, 23 Oktober 2024, 19:48:09

Vorheriges Thema - Nächstes Thema

frank

hallo rudi,

bug oder feature?

ich habe einige wiederholende at, die disabled sind, da ich sie nur selten zum testen benötige. nun habe ich heute zufällig festgestellt, dass die timer trotzdem alle regelmässig wie definiert gestartet werden.

disabled ist nur der ausführungsteil.
"set inactive" macht das selbe.

erwartet hatte ich eigentlich "vollständiges" nichts tun.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

betateilchen

Nein, das Verhalten ist völlig normal so - und so gewollt. Es kann ja sein, dass Du zwischenzeitlich das disabled wieder gelöscht hast, dann wird das at beim nächsten errechneten Zeitpunkt wieder wie gewünscht ausgeführt. Das Verhalten ist sehr hilfreich beim automatisierten Ein- und Ausschalten der Reaktion von devices, und nicht nur at verhält sich so, sondern eigentlich alle devices, die das Attribut unterstützen.

Deine Erwartungshaltung ist "falsch".
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

frank

Zitat von: betateilchen am 23 Oktober 2024, 22:06:41Deine Erwartungshaltung ist "falsch".
meine erwartungshaltung resultiert ja aus der vielzahl an möglichkeiten und deren beschreibung in der commandref.
teilweise wird dort explizit auf "cmd execution" hingewiesen.
bei disable/inactive hingegen ist die rede von device: "Disables the corresponding device".

Zitat von: betateilchen am 23 Oktober 2024, 22:06:41Das Verhalten ist sehr hilfreich beim automatisierten Ein- und Ausschalten der Reaktion von devices
da ich immer vom neustart des timers beim enable ausgegangen bin, habe ich für diese fälle immer zusätzlich das attribut alignTime benutzt.

da disable/inactive nahezu gleich funktionieren wünsche ich mir, dass beim attribut disable auch der timer "ab-/angeschaltet" wird.
besonders beim fhem start erscheint es mir kontraproduktiv den timer zu starten, wenn das attribut disable gesetzt ist.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

betateilchen

Zitat von: frank am 26 Oktober 2024, 10:31:46da ich immer vom neustart des timers beim enable ausgegangen bin, habe ich für diese fälle immer zusätzlich das attribut alignTime benutzt.

Das Eine hat mit dem Anderen aber überhaupt nichts zu tun.

Zitat von: frank am 26 Oktober 2024, 10:31:46da disable/inactive nahezu gleich funktionieren wünsche ich mir, dass beim attribut disable auch der timer "ab-/angeschaltet" wird.

Auch bei set ... incative wird der Timer nicht abgeschaltet.

Und das "nahezu gleich funktionieren" ist ein Trugschluss - das eine ist ein set Befehl, das Andere ist ein Attribut.

Das Einzige, was den beiden Varianten gemeinsam ist, ist die Tatsache, dass der jeweilige Zustand über die Funktion IsDisabled() in der fhem.pl ermittelt wird. Und zwar für alle in FHEM vorhandenen Module, sofern sie diese Funktion benutzen.

Zitat von: frank am 26 Oktober 2024, 10:31:46besonders beim fhem start erscheint es mir kontraproduktiv den timer zu starten, wenn das attribut disable gesetzt ist.

Denke bitte einfach mal logisch mit: Beim Start von FHEM wird zuerst das define des at-devices ausgeführt. Zu diesem Zeitpunkt ist noch kein Attribut "disabled" gesetzt und auch noch kein reading "state" mit dem Wert "inactive" vorhanden. Es gibt also zu diesem Zeitpunkt noch gar keine Möglichkeit, das Starten des Timers zu unterbinden.



Mein Wunsch ist, dass am bestehenden Verhalten nichts geändert wird.
Das Verhalten finde ich logisch, sinnvoll und nachvollziehbar.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

Zitat von: frank am 23 Oktober 2024, 19:48:09hallo rudi,

bug oder feature?

ich habe einige wiederholende at, die disabled sind, da ich sie nur selten zum testen benötige. nun habe ich heute zufällig festgestellt, dass die timer trotzdem alle regelmässig wie definiert gestartet werden.

disabled ist nur der ausführungsteil.
"set inactive" macht das selbe.

erwartet hatte ich eigentlich "vollständiges" nichts tun.


Würde ich auch so erwarten. attr disable schaltet komplett die Funktionalität des Devices ab, set inactive unterbindet nur die Ausführung und lässt den Timer in seinem Takt. Da sollte vielleicht der Autor seine Meinung dazu sagen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

Zitat von: Damian am 26 Oktober 2024, 18:54:53Da sollte vielleicht der Autor seine Meinung dazu sagen.

Das hat Rudi bereits 2015 in dem Thread getan, der letztlich zur Schaffung der set Befehle (zusätzlich zum lange vorher existierenden Attribut 'disable') führte.

https://forum.fhem.de/index.php?topic=34603

Ein unterschiedliches Verhalten bezüglich der Timer oder der Ausführungen war wohl damals schon nicht beabsichtigt. Auch die commandref ist diesbezüglich m.E. eindeutig, die Unterschiede liegen demnach nur darin, wie der Status gespeichert wird. Dort steht zu den set Befehlen:

- inactive
Inactivates the current device. Note the slight difference to the disable attribute: using set inactive the state is automatically saved to the statefile on shutdown, there is no explicit save necesary.
This command is intended to be used by scripts to temporarily deactivate the at.
The concurrent setting of the disable attribute is not recommended.
- active
Activates the current device (see inactive).

Warum muss man ein Verhalten, das seit 10 Jahren implementiert ist und bisher keinerlei Probleme verursacht hat, nach so langer Zeit plötzlich grundsätzlich in Frage stellen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!