Ich habe folgendes Problemchen: Die Werte für die Windgeschwindigkeit meiner Homematic-Wetterstation mittle ich über 15 Minuten, um bei reduziertem Datenaufkommen eine sinnvolle Darstellung zu bekommen. Das geschieht so:
attr Wettersensor event-min-interval windSpeed:3600
attr Wettersensor event-on-change-reading windSpeed.*
attr Wettersensor event-aggregator windSpeed:900:linear:mean
Die anderen Readings habe ich mal weggelassen. Abgesehen davon, dass das Mitteln viel zu viele Digits anzeigt und damit sinnlos das Log aufbläst, bekomme ich bei nahezu Windstille Einträge dieser Art:
2015-10-10_12:38:17 Wettersensor windSpeed: 1.17583824914025e-13
Das hat folgende Konsequenzen:
* In den Plots wird das nicht als Null dargestellt, sondern gar nicht.
* In den Labels zu den Plots muss ich runden (weil das Ergebnis von event-aggregator auch bei sinnvollen Werten 13 Stellen ausspuckt)
* Beim Runden wird nun eine Fehlermeldung angezeigt, wenn man einen Plot anschaut, während die Windgeschwindigkeit nahezu Null ist. Da ich ein Wanddisplay mitlaufen lasse, ist das oft der Fall.
Die Fehlermeldung sieht so aus
2015.10.05 16:29:13 3: eval: { sprintf("Wind: %.1f km/h, Min: %.1f km/h, Max: %.1f km/h, Richtung: %.1f , Bereich: %.1f ",$data{currval1},$data{min1},$data{max1},$data{currval2},$data{currval3}) }
2015.10.05 16:29:13 1: PERL WARNING: Argument "undef" isn't numeric in sprintf at (eval 22076) line 1.
und passiert beim Abschneiden der überflüssigen Stellen mit sprintf %.1. Ich würde gern wenigstens das Runden in den Plots so lösen:
{Math::Round::nearest('0.1',ReadingsVal("Wettersensor","windSpeed","0"))}
Der Code für sich funktioniert wunderbar ich bekomme ihn bloß nicht "in den plot".
Ich möchte vermeiden, nun die ganze Wetterstation umzudefinieren und ein zusätzliche userreadings und Dummies zu generieren, bloß um eine "richtige Null" darstellen zu können. Am besten wäre es, event-aggregator würde runden können, das gab führte hier aber schon mal zu einer Diskussion, wozu das gut sein solle...
Sieht jemand eine einfache Möglichkeit? Ich sehe nur noch Bäume..
Hallo,
hast du dazu eine Lösung gefunden?
Ich habe zwar nicht das gleiche Problem mit event-aggregator wie du, aber auch ich möchte die "power" einer Fritz!PowerLine Steckdose mittels und kann das nicht, weil AVM unbedingt immer ein "6.15 W" schreibt, anstatt einfach "6.15". Ein runden benötige ich nicht, aber das "W" im Wert unterbindet jedwede mathematische Operation von event-aggregator.
Bekomme folgenden Fehler:
2015.11.30 13:16:34 1: PERL WARNING: Argument "6.22 W" isn't numeric in addition (+) at FHEM/TimeSeries.pm line 324.
2015.11.30 13:16:34 1: PERL WARNING: Argument "6.22 W" isn't numeric in numeric lt (<) at FHEM/TimeSeries.pm line 345.
2015.11.30 13:16:34 1: PERL WARNING: Argument "6.22 W" isn't numeric in numeric gt (>) at FHEM/TimeSeries.pm line 346.
Wenn ich das Attribut "power" in den event-aggregator packe.
event-aggregator power:120:linear:mean
Einer dazu eine Idee?
Mit userreadings ein reading ohne Einheit erzeugen und dieses reading für event-aggregator verwenden.