Hallo!
Ich habe ein DOIF das meine beide Außentemperatrusensoren zusammenfasst und den Durchschnitt errechnet. Diese Berechnung findet allerdings alls gefühlt 3 Sekunden statt... Kann man das irgendwie verlangsamen das er den "state" Wert alle ca 5Minuten aktualisiert?
Spart man sich doch bestimmt Reccourcen usw...
Vielen DANK!
Hier ein List vom DOIF:
nternals:
DEF ##
FUUID 5dbc7bc3-f33f-84b4-0d60-d122a76b25983825
MODEL FHEM
NAME DOIFTempDurschnitt
NOTIFYDEV TempAussenCarport,global,TempAussenEingang
NR 212
NTFY_ORDER 50-DOIFTempDurschnitt
STATE 4.05
TYPE DOIF
VERSION 22398 2020-07-14 09:32:05
READINGS:
2019-11-01 19:38:59 cmd 0
2019-11-01 19:38:59 mode enabled
2020-11-10 08:28:57 state 4.05
Regex:
STATE:
TempAussenCarport:
STATE:
temperature ^TempAussenCarport$:^temperature:
TempAussenEingang:
STATE:
temperature ^TempAussenEingang$:^temperature:
accu:
condition:
do:
0:
helper:
DEVFILTER ^global$|^TempAussenCarport$|^TempAussenEingang$
NOTIFYDEV global|TempAussenCarport|TempAussenEingang
event battery: ok,temperature: 4.1,humidity: 89,T: 4.1 H: 89
globalinit 1
last_timer 0
sleeptimer -1
triggerDev TempAussenEingang
DOIF_eventa:
4.05
DOIF_eventas:
state: 4.05
triggerEvents:
battery: ok
temperature: 4.1
humidity: 89
T: 4.1 H: 89
triggerEventsState:
battery: ok
temperature: 4.1
humidity: 89
state: T: 4.1 H: 89
perlblock:
uiState:
uiTable:
Attributes:
event-min-interval 300
room DOIF,Wetter
state {([TempAussenCarport:temperature]+[TempAussenEingang:temperature])/2}
Zitat von: misux am 10 November 2020, 08:33:14
Hallo!
Ich habe ein DOIF das meine beide Außentemperatrusensoren zusammenfasst und den Durchschnitt errechnet. Diese Berechnung findet allerdings alls gefühlt 3 Sekunden statt... Kann man das irgendwie verlangsamen das er den "state" Wert alle ca 5Minuten aktualisiert?
Spart man sich doch bestimmt Reccourcen usw...
Vielen DANK!
Hier ein List vom DOIF:
nternals:
DEF ##
FUUID 5dbc7bc3-f33f-84b4-0d60-d122a76b25983825
MODEL FHEM
NAME DOIFTempDurschnitt
NOTIFYDEV TempAussenCarport,global,TempAussenEingang
NR 212
NTFY_ORDER 50-DOIFTempDurschnitt
STATE 4.05
TYPE DOIF
VERSION 22398 2020-07-14 09:32:05
READINGS:
2019-11-01 19:38:59 cmd 0
2019-11-01 19:38:59 mode enabled
2020-11-10 08:28:57 state 4.05
Regex:
STATE:
TempAussenCarport:
STATE:
temperature ^TempAussenCarport$:^temperature:
TempAussenEingang:
STATE:
temperature ^TempAussenEingang$:^temperature:
accu:
condition:
do:
0:
helper:
DEVFILTER ^global$|^TempAussenCarport$|^TempAussenEingang$
NOTIFYDEV global|TempAussenCarport|TempAussenEingang
event battery: ok,temperature: 4.1,humidity: 89,T: 4.1 H: 89
globalinit 1
last_timer 0
sleeptimer -1
triggerDev TempAussenEingang
DOIF_eventa:
4.05
DOIF_eventas:
state: 4.05
triggerEvents:
battery: ok
temperature: 4.1
humidity: 89
T: 4.1 H: 89
triggerEventsState:
battery: ok
temperature: 4.1
humidity: 89
state: T: 4.1 H: 89
perlblock:
uiState:
uiTable:
Attributes:
event-min-interval 300
room DOIF,Wetter
state {([TempAussenCarport:temperature]+[TempAussenEingang:temperature])/2}
Die Einschränkung sollte auf der Senderseite sein, also bei den Sensoren.
Meine Vorgehensweise ist solchen Fällen: beim Sender das Attribut
event-on-change-reading .* und
event_min_interval 300 zu setzen
Damit erreicht man, dass nur wichtige Änderungen durchkommen, ansonsten spätestens nach 300 Sekunden ein Trigger kommt, wenn Temperatur sich nicht ändern sollte.
Zitat von: Damian am 10 November 2020, 09:49:51
Die Einschränkung sollte auf der Senderseite sein, also bei den Sensoren.
Wundert mich, dass du nichts zum Thema Aggregatsfunktion geschrieben hast.
Zitatstate {([TempAussenCarport:temperature]+[TempAussenEingang:temperature])/2}
https://commandref.fhem.de/commandref_DE.html#DOIF_aggregation → #avg
Zitat von: Christoph Morrison am 10 November 2020, 09:53:32
Wundert mich, dass du nichts zum Thema Aggregatsfunktion geschrieben hast.
https://commandref.fhem.de/commandref_DE.html#DOIF_aggregation → #avg
naja, Aggregationsfunktionen können das Übel an dieser Stelle nicht verhindern, sie können nur auf der DOIF-Seite etwas bewirken und das ist in diesem Fall zu spät.
Es ist schon schlimm genug, wenn ein Temperatursensor per Funk alle drei Sekunden sendet, zusätzlich kommt die unnötige Eventlast im System hinzu.
Das Schreiben eines Readings mit Event produziert zig-mal mehr Last im System also ohne Event.
Alles klar! Sind beide in allen Sensoren gesetzt! Vielen Dank!
Zitat von: Damian am 10 November 2020, 10:02:27
naja, Aggregationsfunktionen können das Übel an dieser Stelle nicht verhindern, sie können nur auf der DOIF-Seite etwas bewirken und das ist in diesem Fall zu spät.
Nee, darum ging es mir nicht, eher darum, dass misux den Durchschnitt selbst berechnet, anstatt die eingebauten Aggregatsfunktionen zu verwenden - und spätestens beim nächsten hinzugefügten Temperatursensor vergisst, die Werte durch 3 zu teilen, anstatt durch 2. Manuelle Arbeit < Automatische Arbeit.
Bitte ein (aktuelles) list deines DOIF und der Sensoren.