Jetzt bekomme ich natürlich diese Fehlermeldung:
2016.04.26 17:40:37 1: PERL WARNING: Argument "233.32 V" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
ich habe ein aehnliches Problem - und kann es nicht loesen:
ich habe mehrere Verbrauchsmesser und will als letzte Zeile die Summe anzeigen:
defmod rg_StromVerbrauch readingsGroup < Device: >,<%measure_power>,<%measure_power_meter>\
ALWAYS_ON:power,energy \
DIMMER_OFFICE:power,energy\
STECKER_1:power,energy\
<hr>\
rg_StromVerbrauch:<Summe:>,$sum(:1)@power_total,$sum(:2)@energy_total
attr rg_StromVerbrauch group grp_Stromverbrauch
attr rg_StromVerbrauch mapping {"ALWAYS_ON"=>"IT+NASBOX","STECKER_1"=>"LG-MONITOR","DIMMER_OFFICE"=>"Beleuchtung"}
attr rg_StromVerbrauch room OFFICE
attr rg_StromVerbrauch valueFormat { my $val=$NUM;; my $formatted_val;; $formatted_val = sprintf("%4.2f", $val);; return $formatted_val;; }
attr rg_StromVerbrauch valueStyle style="text-align:right;; font-weight:bold;;"
attr rg_StromVerbrauch valueSuffix {"voltage"=>" V","current"=>" A","power"=>" W","energy"=>" kWh","power_total"=>" W","energy_total"=>" kWh"}
Es funktioniert ALLEs wie gewuenscht, nur kommen im log immer diese Zeilen:
2019.10.16 12:34:34 1: PERL WARNING: Argument "83.268 W" isn't numeric in subroutine entry at (eval 1821225) line 1.
2019.10.16 12:34:34 1: PERL WARNING: Argument "0 W" isn't numeric in subroutine entry at (eval 1821225) line 1.
2019.10.16 12:34:34 1: PERL WARNING: Argument "56.606 W" isn't numeric in subroutine entry at (eval 1821225) line 1.
2019.10.16 12:34:34 1: PERL WARNING: Argument "1854.035 kWh previous: 1854.028 delta_time: 300 s" isn't numeric in subroutine entry at (eval 1821229) line 1.
2019.10.16 12:34:34 1: PERL WARNING: Argument "98.4 kWh previous: 98.4 delta_time: 1800 s" isn't numeric in subroutine entry at (eval 1821229) line 1.
2019.10.16 12:34:34 1: PERL WARNING: Argument "153.87 kWh previous: 153.865 delta_time: 300 s" isn't numeric in subroutine entry at (eval 1821229) line 1.
ich habe das 'valueFormat' rel. einfach gemacht - mit debug getestet - kommen nur Zahlen zurueck:
{ my $val=$NUM; my $formatted_val; $formatted_val = sprintf("%4.2f", $val); return $formatted_val; }
valueSuffix - pinselt dann wieder die Einheiten dran:
{"voltage"=>" V","current"=>" A","power"=>" W","energy"=>" kWh","power_total"=>" W","energy_total"=>" kWh"}
ABER:
Die PERL-Meldungen sagen mir, dass die Summen-Funktion NICHT auf die mit ValueStyle-formattierten Readings zugreift,
sondern auf die 'rohen' Readings vom Gerät:
Argument "1854.035 kWh previous: 1854.028 delta_time: 300 s" isn't numeric in subroutine entry at (eval 1821323) line 1.
...so melden die Aeotec-Teile ihren Verbrauchszähler im Reading - raw.
D.h. die sum-Funktion von 'readingsGroup' - muesste auf $NUM statt $VALUE zum Summieren zugreifen.
oder ich muss fuer alle Sensoren userReadings bauen, die die Einheiten+Text vorab schon abschneiden.
(will ich eigentlich vermeiden)
...AH - EDIT: --- mit userReadings an allen beteiligten Devices geht natürlich der Fehler weg.
einfach jedem Strommess-Device so ein Satz Readings einbauen - hier nur beispielhaft an einem Device:
attr STECKER_1 userReadings energyNum {return ReadingsNum("$name","energy",0);;},powerNum {return ReadingsNum("$name","power",0);;}
...und dann in der ReadingsGroup statt 'energy' -> 'energyNum' und statt 'power' -> 'powerNum' lesen/summieren ...