DOIF reagiert verzögert auf schalten von devstateicon und aktualisiert nicht (visuel

Begonnen von holle75, 01 März 2026, 16:59:17

Vorheriges Thema - Nächstes Thema

holle75

zu dem hier entstandenen -> https://forum.fhem.de/index.php?topic=142783.msg1351980#msg1351980

und jetzt so (oder immer noch) aussenden DOIF RAW

defmod XtenderSet_Max_Solar DOIF ([$SELF:ZuBerechnendeGesamtleistung] > 800 and [$SELF:ZuBerechnendeGesamtleistung] > [$SELF:ZuBerechnendeGesamtleistung_old] and [$SELF:ZuBerechnendeGesamtleistung] <= 2000)\
    (set MQTT2_openDTU limit_absolute [$SELF:ZuBerechnendeGesamtleistung])\
DOELSEIF ([$SELF:ZuBerechnendeGesamtleistung] > 0 and [$SELF:ZuBerechnendeGesamtleistung] <= 2000)\
    (set MQTT2_openDTU limit_absolute [$SELF:ZuBerechnendeGesamtleistung])
attr XtenderSet_Max_Solar devStateIcon disabled:general_aus@red:initialize initialize:general_an@yellow:disable initialized:general_an@yellow:disable cmd_1.*:general_an@green:disable cmd_2.*:general_an@green:disable
attr XtenderSet_Max_Solar do resetwait
attr XtenderSet_Max_Solar event-on-change-reading ZuBerechnendeGesamtleistung,ZuBerechnendeGesamtleistung_old
attr XtenderSet_Max_Solar event_Readings ZuBerechnendeGesamtleistung: {(2800 - [Studer485_VT:PV_Power_W]) > 2000 ? 800 : (2800 - [Studer485_VT:PV_Power_W])}
attr XtenderSet_Max_Solar group System_2
attr XtenderSet_Max_Solar oldreadings ZuBerechnendeGesamtleistung,oldreadingsAlways
attr XtenderSet_Max_Solar room Xtender
attr XtenderSet_Max_Solar sortby 4
attr XtenderSet_Max_Solar stateFormat state\
<br>\
ZuBerechnendeGesamtleistung
attr XtenderSet_Max_Solar userReadings ZuBerechnendeGesamtleistung_old:ZuBerechnendeGesamtleistung.* { OldReadingsVal("XtenderSet_Max_Solar", "ZuBerechnendeGesamtleistung", "0") }
attr XtenderSet_Max_Solar wait 10:0

irritiert mich folgendes ... alle meine DOIF´s kann ich über das devStateIcon in der Weboberfläche schalten. DIESES Doif verzögert ca 10 Sekunden und wird dann erst bei reload/refresh der Page mit dem aktuellen Status angezeigt. Die anderen machen das sofort. Hat es etwas mit den event_Readings zu tun, oder hat noch jemand eine andere Erklärung?

attr XtenderSet_Max_Solar stateFormat state\
<br>\
ZuBerechnendeGesamtleistung

hatte ich auch schon versuchsweise gelöscht, ohne Änderung des Verhaltens

Guybrush

dein 10s wait bezieht sich doch auf (set MQTT2_openDTU limit_absolute [$SELF:ZuBerechnendeGesamtleistung]) und nicht aufs "hochfahren"? dh das wird jedesmal um 10s verzögert ausgeführt, wenn deine bedingung wahr ist?

wenn das dann auch noch binnen 10s neu getriggett wird, hast du das, dass es niemals ausgeführt und nur noch ggf beim start aktualisiert wird

holle75

Ich meinte das zB ein/ausschalten via "klick auf das devStateIcon im browser". Nicht die Funktionalität des DOIF´s

attr XtenderSet_Max_Solar devStateIcon disabled:general_aus@red:initialize initialize:general_an@yellow:disable initialized:general_an@yellow:disable cmd_1.*:general_an@green:disable cmd_2.*:general_an@green:disable

wenn das DOIF aktiv ist (zB cmd_1) und ich das icon anklicke -> disabled .... das dauert ca. 10 sek und Icon (-> was rot werden müsste) ändert sich erst nach refresh der Page. Dies ist das einzige von geschätzt 40 DOIF´s, die nach dem selben Prinzip angelegt sind, was sich so verhält.

Guybrush

nimms doch mal raus und guck dann. versteh den sinn vom wait da ohnehin nicht

holle75

Du meinst das wait 10?

Das verhindert ein zu schnelles Hochschalten des erlaubten Stroms. Nach unten "sofort", nach oben mit 10 Sek Verzögerung.

Könnte ich mal rausnehmen, aber dass das was mit Schalten von DevStateIcon zu tun hat, würde mich wundern. Die 10 Sekunden Verzögerung beim Schalten sind auch eher gefühlt als genau 10 Sekunden.

Guybrush

was heisst denn zu schnelles hochschalten? der Wert ist doch da. Wieso dann 10 sek warten? Das wait 10:0 blockiert die Ausführung des ersten Teils für 10 Sekunden. Ich weiß halt nicht, wie das intern im doif modul läuft. Gut möglich, dass das device solang blockiert ist, bis das wait rum ist. das devstateicon wird ja vom modul selbst abhängig sein. Wäre jedenfalls plausibel...

holle75

das doif berechnet den Strom den ein AC gekoppelter Mikrowechselrichter leisten darf. Bei jeder Änderung im Haupt-Solarcharger. Wenn er mehr darf wird das verzögert, wenn er weniger darf sofort. Warten, damit die Wahrscheinlichkeit einer Überschneidung (Zeit Steuerkette) minimiert wird. Zu wenig für ein paar Sekunden ist easy. Zuviel für nur ne Millisekunde kann teuer werden.

Ich nehm das wait morgen mal raus. Hab aber zig andere Doifs mit waits und da ist mir noch nie eine Verzögerung beim Schalten aufgefallen.
Ich will es nochmal betonen: mir gehts um das initialize/disable des Doifs, nicht um die Funktionalität.