FHEM Forum

FHEM - Hardware => FRITZ!Box => Thema gestartet von: hartenthaler am 12 April 2016, 13:24:41

Titel: Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: hartenthaler am 12 April 2016, 13:24:41
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.
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: rudolfkoenig am 12 April 2016, 13:40:03
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().
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: hartenthaler am 12 April 2016, 22:45:53
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";;
}
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: scooty am 13 April 2016, 08:21:29
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
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: rudolfkoenig am 13 April 2016, 10:24:57
@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))}
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: hartenthaler am 27 April 2016, 22:50:23
@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?
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: Wernieman am 28 April 2016, 10:25:13
hast Du auch fhem reloaded (restartet)
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: hartenthaler am 28 April 2016, 23:33:10
ja, shutdown restart habe ich gemacht. Im Reading sthet statt dem Mittelwert folgender Text
syntax error at (eval 1325084) line 1, near "FBDECT_16:"
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: rudolfkoenig am 29 April 2016, 09:21:17
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.
Titel: Antw:Readings der FBDECT mit Einheit macht mir Probleme
Beitrag von: hartenthaler am 29 April 2016, 20:07:30
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.