FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ojb am 27 November 2014, 09:49:39

Titel: [Gelöst] Logfile: PERL WARNING: Argument isn't numeric ...
Beitrag von: ojb am 27 November 2014, 09:49:39
Hallo Leute,

ich rechne meine Windgeschwindigkeit um von m/s in km/h über userReading und bekomme jetzt jedesmal im Logfile folgende Warnung:

2014.11.27 09:47:06 2: EIB wetterstation.windgeschwindigkeit 2.08 m/s
2014.11.27 09:47:06 1: PERL WARNING: Argument "2.08 m/s" isn't numeric in multiplication (*) at (eval 537827) line 1.


Was mache ich falsch und wie kriege ich die weg?

Danke und lieben Gruß
Oli
Titel: Antw:Logfile: PERL WARNING: Argument isn't numeric ...
Beitrag von: Bennemannc am 27 November 2014, 10:12:12
Hallo,

anscheinend wird der Wert mit Einheit gesendet. Damit kann man natürlich nicht rechen. Suche mal im Forum nach "Einheiten entfernen". Mit "split" müsste das gehen.

Gruß Christoph

PS: schreib doch mal wie Du das umrechnest (Code)
Titel: Antw:Logfile: PERL WARNING: Argument isn't numeric ...
Beitrag von: ojb am 27 November 2014, 15:09:05
Folgendes rechne ich um:

{ sprintf("%.2f km/h", ReadingsVal("wetterstation.windgeschwindigkeit","state",99)*3.6) }


wetterstation.windgeschwindigkeit liefert z.B. '2 m/s'.

Titel: Antw:Logfile: PERL WARNING: Argument isn't numeric ...
Beitrag von: Bennemannc am 27 November 2014, 19:40:07
Hallo,

was sind denn "m/s" mal 3,6 ? Also musst Du die Einheit erst abschneiden. Ich würde das beim Device als UserReading machen.
Schau mal hier: http://forum.fhem.de/index.php/topic,27776.msg206974.html#msg206974

Gruß Christoph
Titel: Antw:Logfile: PERL WARNING: Argument isn't numeric ...
Beitrag von: ojb am 09 Dezember 2014, 13:01:39
Hallo Christoph,

Danke für Deinen Hinweis.

Gelöst :)

attr wetterstation.windgeschwindigkeit.kmh stateFormat { sprintf("%.2f km/h", [split(" ", ReadingsVal("wetterstation.windgeschwindigkeit","state",99))]->[0] * 3.6);; }
attr wetterstation.windgeschwindigkeit.kmh userReadings kmh { sprintf("%.2f km/h", [split(" ", ReadingsVal("wetterstation.windgeschwindigkeit","state",99))]->[0] * 3.6);; }