Structure: State bei set mit FILTER Angaben

Begonnen von Phiolin, 13 April 2017, 08:02:30

Vorheriges Thema - Nächstes Thema

Phiolin

Ich habe dieses Problem bei meinen Strukturen jetzt auch wieder. Laut https://forum.fhem.de/index.php?topic=62394.0 bin ich vermutlich auch nicht der einzige. Das Problem gab es ja ursprünglich wohl auch schon mal hier: https://forum.fhem.de/index.php?topic=35382.0

Wenn ich eine übergeordnete Struktur mit set <structure> [FILTER=STATE!=off] off schalte, erhalten bei mir untergeordnete Strukturen in denen keine Verbraucher aktiv waren den State "[FILTER=STATE!=off] off". Das macht entsprechende Abfragen auf den State wieder schwierig, wenn man nicht entsprechend komplexe regex Ausdrücke bauen möchte oder diese nicht einsetzen kann.

Vielleicht kann hier noch mal geschaut werden, warum das so ist?

rudolfkoenig

Hab einen Fix eingebaut, bin auf Nebenwirkungen gespannt.

shrek71

Hallo,

ich muss mal das Thema nach oben bringen.

In einer DOIF schalte ich die Rolladen je nach Sonne oder Regen.
Beispiel hier Regenberechnung:

(([WettersensorPro_Garten_H_1:1.RAINING] ==1 and [Regenberechnung:RegenStatus] eq "inaktiv"))
(set Erdgeschoss [FILTER=rainAutomatic=on:FILTER=rainMode=off] rainMode on)
(set Obergeschoss [FILTER=rainAutomatic=on:FILTER=rainMode=off] rainMode on)
(setreading  Regenberechnung RegenStatus aktiv)
(setreading Erdgeschoss RegenStatus aktiv)
(setreading Obergeschoss RegenStatus aktiv)
DOELSEIF([WettersensorPro_Garten_H_1:1.RAINING] ==0 and [Regenberechnung:RegenStatus] eq "aktiv")
(set Erdgeschoss [FILTER=rainAutomatic=on:FILTER=rainMode=on] rainMode off)
(set Obergeschoss [FILTER=rainAutomatic=on:FILTER=rainMode=on] rainMode off)
(setreading Regenberechnung RegenStatus inaktiv)
(setreading Erdgeschoss RegenStatus inaktiv)
(setreading Obergeschoss RegenStatus inaktiv)



Zur Zeit habe ich auf den Strukturen mit den einzelnen Rolladenmotoren, die "rainAutomatic=0ff" heißt kein Rolladen bewegt sich.
Nun habe ich aber dann das Problem, dass im State der Struktur folgendes steht:

In Internals:

STATE [FILTER=rainAutomatic=on:FILTER=rainMode=off] rainMode on

In Readings:

state [FILTER=rainAutomatic=on:FILTER=rainMode=off] rainMode on
2018-06-12 12:04:31


In den Attributen:

Siehe Screenshot.

Ich wollte allerdings, das noch der alte Wert drinsteht, da sich kein Rolladen verändert hat. Der alte Wert war "Geöffnet".

Ist das möglich? Kann mir da jemand helfen?

Danke und Gruß,
Shrek

rudolfkoenig

ZitatIch wollte allerdings, das noch der alte Wert drinsteht, da sich kein Rolladen verändert hat.
Der Status wird bei structure zuerst auf dem set-Parameter gesetzt. Wenn die Mitglieder eine Statusaenderung melden, dann wird der Structure-Status neu berechnet und gesetzt. In deinem Fall aendert sich kein Geraet, deswegen bleibt der Status auf dem set-Parameter.

Ich habe ein neues Attribut eingefuehrt (setStateIndirectly), falls gesetzt (d.h. Wert ist 1), dann wird der Status nur aus der Statusaenderung der Mitglieder berechnet. Die Voreinstellung ist 0, sollte vermutlich irgendwann auf 1 geaendert werden.