Hallo,
da bin ich mal wieder mit einem Problemchen das ich nicht wirklich lösen kann. In meinem Logfile tauchen immer wieder, folgende Zeilen auf:
2015.11.26 14:08:11 1: PERL WARNING: Argument "6.22 °C" isn't numeric in sprintf at ./FHEM/98_SVG.pm line 2027.
Mir ist klar das das °C weg soll und dann der Fehler zumindest theoretisch nicht mehr auftaucht. Dies habe ich mit folgender Zeile leider erfolglos versucht:
{no warnings 'numeric' ;; sprintf("%.0f",int(Value(,,garage_hinten_temp")))}
Aber auch folgendes half nicht:
{split(/ /, Value("garage_hinten_temp")}
Beides habe ich unter dem Attribut "userReadings" stehen gehabt. Irgendwie steh ich auf dem Schlauch, hat irgendwer einen Denkansatz für mich?
Danke!
In der Commandref unter Perl Besonderheiten findest Du die Funktion ReadingsNum damit kannst du einen Wert von seinem nicht numerischen Anteil befreien.
Danke für den Tipp. Leider funktioniert es auch damit nicht. Ich vermute ich mache irgendwas anderes falsch, da keine Änderung im Log ersichtlich ist. Bin ich den richtig bei dem Attribut userReadings? Das war mein Versuch:
{ReadingsNum("garage_hinten_temp","state",0)}
define mydi DOIF ([garage_hinten_temp]) ((setreading garage_hinten_temp statenum {ReadingsNum("garage_hinten_temp","state",0)}))
attr mydi do always
statenum loggen, statt state und davon ein SVG erzeugen.
So, jetzt hat es bei mir Klick gemacht. Also das Problem ist das das Teil nicht plotten konnte da der Wert kein reiner num Wert war, mit der DB und dem logging hat das also nichts zu tun. Habe jetzt einfach in der Funktion des Plots die nicht numerischen Zeichen mit
:chop($val)
entfernt. Schon läuft das Ding!
Vielen Dank