Dass das FBDECT Modul Werte zusammen mit der Einheit liefert (also 19.2 °C) und nicht nur eine Zahl, finde ich als Physiker eigentlich sehr schön, denn sonst kann man schon mal °C mit Fahrenheit verwechseln. Nun habe ich aber zwei DECT-Steckdosen im Raum und möchte den Temperaturmittelwert ermitteln und in einem dummy "Temperatur_Wohnzimmer" ablegen:
define di_Temperatur_Wohnzimmer DOIF ([FBDECT_16] or [FBDECT_17]) (setreading Temperatur_Wohnzimmer temperature {([FBDECT_16:temperature]+[FBDECT_17:temperature])/2})
attr di_Temperatur_Wohnzimmer do always
Das Rechnen geht aber wg. der Einheit natürlich nicht. Wie komme ich am elegantesten an den Zahlenwert? In https://forum.fhem.de/index.php/topic,48612.0.html gab es mal ein ähnliches Thema, aber wie ich $EVTPART1 hier verwenden soll, ist mir nicht klar.
Ist ein DOIF Problem, das Thema muss also evtl. verschoben werden, damit die Experten das auch finden.
Wenn man das Problem mit "herkoemmlichen" notify loest, dann verwendet man ReadingsNum() statt ReadingsVal().
Guter Tipp! Vielen Dank! Mit einem notify ging es:
(FBDECT_16|FBDECT_17|na_M03_00_00_xx_xx_xx) {
my $r1 = ReadingsNum("FBDECT_16","temperature",0);;
my $r2 = ReadingsNum("FBDECT_17","temperature",0);;
my $r3 = ReadingsNum("na_M03_00_00_xx_xx_xx","temperature",0);;
my $avg = sprintf(" %.1f °C",($r1*0.1+$r2*0.1+$r3*0.8));;
fhem "setreading Temperatur_Wohnzimmer temperature $avg";;
}
Hast Du im Ausführungsteil des DOIF 'mal
{([FBDECT_16:temperature:d]+[FBDECT_17:temperature:d])/2}
ausprobiert?
s. DOIF-Doku: "Filtern nach Ausdrücken mit Ausgabeformatierung (http://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen)"
Andreas
@scooty: Danke fuer die Idee, habe das :d fuer ReplaceSetMagic uebernommen.
Damit ist (ab den morgigen update) der Ausdruck auch in notify etwas kuerzer schreibbar:
(FBDECT_16|FBDECT_17|na_M03_00_00_xx_xx_xx) setreading Temperatur_Wohnzimmer temperature \
{(([FBDECT_16:temperature:d]*0.1+\
[FBDECT_17:temperature:d]*0.1+\
[na_M03_00_00_xx_xx_xx:temperature:d]*0.8))}
@scooty super! funktioniert! Danke!
@rudolfkoenig sieht sehr kompakt und gut aus, aber klappt noch nicht. Muss ich außer einem fhem "update" noch etwas anderes machen, damit diese neue Funktion verfügbar ist?
hast Du auch fhem reloaded (restartet)
ja, shutdown restart habe ich gemacht. Im Reading sthet statt dem Mittelwert folgender Text
syntax error at (eval 1325084) line 1, near "FBDECT_16:"
Die Fehlermeldung kommt, wenn FBDECT_16 kein temperature Reading hat.
Sonst finde ich etwas merkwuerdig, dass direkt nach einem Neustart schon 1.3 Mio evals ausgefuehrt wurden. Auf meinem "Produktions"-FHEM sind es nach einem Monat ca 300k.
ERLEDIGT
... ich habe nun den Raspi komplett neu gestartet und siehe da, das Problem ist weg und das notify mit :d (für den Zahlenwert ohne Einheit) funktioniert bestens.