Hauptmenü

Aggregieren von Werten

Begonnen von Ralli, 16 August 2018, 10:16:00

Vorheriges Thema - Nächstes Thema

Ralli

Guten Morgen,

ich teste zur Zeit folgende Anweisung:


([#max:".*BW_aussen.*:brightness",0] > 250) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness",0] > 200) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness",0] > 100) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#average:".*BW_aussen.*:brightness",255] <= 50) (setreading $SELF $DEVICE $EVENT)


DOIF bringt folgende Warnung:


condition c04: Argument "" isn't numeric in addition (+) at ./FHEM/98_DOIF.pm line 817


Und der Max- oder Durchschnittswert wird nicht berechnet.

Nutze ich


([#max:".*BW_aussen.*:brightness":d,0] > 250) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness":d,0] > 200) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness":d,0] > 100) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#average:".*BW_aussen.*:brightness":d,255] <= 50) (setreading $SELF $DEVICE $EVENT)


triddert das DOIF nie.

Wo ist mein Denkfehler?
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

Damian

laut Syntaxvorgabe:

[<function>:<format>:"<regex device>:<regex event>":<reading>|"<regex reading>":<condition>,<default>]

eher:

[#max:d:"BW_aussen:brightness":brightness,0] > 250)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Die Aggregatsfunktionen sind recht heftig, mach lieber, zumindest aus der #max, die 3x verwendet wird, ein DOIFreading.

Ralli

#3
Jetzt hab ich es auch verstanden. Danke!  :)

Edit:

Übrigens wird der Ausführungsteil nur ausgeführt, wenn ich den Default-Wert weglasse.


([#max:".*BW_aussen.*:brightness":brightness,0] > 250) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness":brightness,0] > 200) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness":brightness,0] > 100) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#average:".*BW_aussen.*:brightness":brightness,255] <= 50) (setreading $SELF $DEVICE $EVENT)
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

Per

Dann mach doch mal nen DOIFreading, da siehst du die Werte direkt, nicht erst, wenn eine Grenze überschritten ist. Dann könntest du (wenn es dann funktioniert wie du willst) auch (zumindest in deinem Fall) durch 50 teilen und runden, dann wird nicht durch jeden "Fliegenschiss" ein Event erzeugt. Letzteres wäre auch  für den Durchschnitt sinnvoll, dort eigentlich noch mehr, weil da jede (!) Änderung eines Wertes eine Änderung des Durchschnitts bewirkt.

Damian


([#max:".*BW_aussen.*:brightness":brightness,0] > 250) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness":brightness,0] > 200) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#max:".*BW_aussen.*:brightness":brightness,0] > 100) (setreading $SELF $DEVICE $EVENT)
DOELSEIF ([#average:".*BW_aussen.*:brightness":brightness,255] <= 50) (setreading $SELF $DEVICE $EVENT)



Soll das die funktionierende Lösung sein? Hier hast du das Format "d" weggelassen, nicht den Defaultwert.

Die Definition über DOIF_Readings, wie von Per vorgeschlagen, würde ich dir ebenfalls empfehlen - das ist nicht nur übersichtlicher, sondern spart Performance.

attr deindoif DOIF_Readings max:[#max:".*BW_aussen.*:brightness":brightness,0]

Und dann

([$SELF:max] > 250) (setreading $SELF $DEVICE $EVENT)...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ralli

Vielen Dank, Per und Damian, damit werde ich weiter probieren. DOIF hat sich doch erheblich weiterentwickelt, seitdem ich mich etwas mehr damit auseinander gesetzt habe  ???
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa