isn't numeric in numeric gt

Begonnen von Chris_Worms, 04 April 2016, 19:14:59

Vorheriges Thema - Nächstes Thema

Chris_Worms

Hi,

ich habe meine Schaltsteckdose vom Homematic nach Fibaro Wall Plug umgestellt. Homematic lieferte für energy und power Zahlenwerte, der Fibaro Wall Plug liefer bei dem energy-Wert kWh im String und bei power liefert er W im String. Damit hat Perl nun Probleme und müllt mir das fhem-log voll:

2016.04.04 19:11:11 1: PERL WARNING: Argument "44.6 W" isn't numeric in numeric gt (>) at (eval 7441) line 1.
2016.04.04 19:11:11 3: eval: my $EVTPART0='44.6';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAn';my $EVTPART1='W';my $EVENT='44.6 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb on") if (ReadingsVal("AzPCSteckdoseWatt","state","") > 20 && Value("AzPCSteckdoseBetrieb") ne "on")}
2016.04.04 19:11:11 1: PERL WARNING: Argument "44.6 W" isn't numeric in numeric lt (<) at (eval 7442) line 1.
2016.04.04 19:11:11 3: eval: my $EVTPART0='44.6';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAus';my $EVTPART1='W';my $EVENT='44.6 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb standby") if (ReadingsVal("AzPCSteckdoseWatt","state","") < 20 && Value("AzPCSteckdoseBetrieb") eq "on")}
2016.04.04 19:11:24 1: PERL WARNING: Argument "59.5 W" isn't numeric in numeric gt (>) at (eval 7476) line 1.
2016.04.04 19:11:24 3: eval: my $EVTPART0='59.5';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAn';my $EVTPART1='W';my $EVENT='59.5 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb on") if (ReadingsVal("AzPCSteckdoseWatt","state","") > 20 && Value("AzPCSteckdoseBetrieb") ne "on")}
2016.04.04 19:11:24 1: PERL WARNING: Argument "59.5 W" isn't numeric in numeric lt (<) at (eval 7477) line 1.
2016.04.04 19:11:24 3: eval: my $EVTPART0='59.5';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAus';my $EVTPART1='W';my $EVENT='59.5 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb standby") if (ReadingsVal("AzPCSteckdoseWatt","state","") < 20 && Value("AzPCSteckdoseBetrieb") eq "on")}
2016.04.04 19:11:25 1: PERL WARNING: Argument "49.9 W" isn't numeric in numeric gt (>) at (eval 7480) line 1.
2016.04.04 19:11:25 3: eval: my $EVTPART0='49.9';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAn';my $EVTPART1='W';my $EVENT='49.9 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb on") if (ReadingsVal("AzPCSteckdoseWatt","state","") > 20 && Value("AzPCSteckdoseBetrieb") ne "on")}
2016.04.04 19:11:25 1: PERL WARNING: Argument "49.9 W" isn't numeric in numeric lt (<) at (eval 7481) line 1.
2016.04.04 19:11:25 3: eval: my $EVTPART0='49.9';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAus';my $EVTPART1='W';my $EVENT='49.9 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb standby") if (ReadingsVal("AzPCSteckdoseWatt","state","") < 20 && Value("AzPCSteckdoseBetrieb") eq "on")}
2016.04.04 19:11:26 1: PERL WARNING: Argument "49.9 W" isn't numeric in numeric gt (>) at (eval 7484) line 1.
2016.04.04 19:11:26 3: eval: my $EVTPART0='49.9';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAn';my $EVTPART1='W';my $EVENT='49.9 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb on") if (ReadingsVal("AzPCSteckdoseWatt","state","") > 20 && Value("AzPCSteckdoseBetrieb") ne "on")}
2016.04.04 19:11:26 1: PERL WARNING: Argument "49.9 W" isn't numeric in numeric lt (<) at (eval 7485) line 1.
2016.04.04 19:11:26 3: eval: my $EVTPART0='49.9';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAus';my $EVTPART1='W';my $EVENT='49.9 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb standby") if (ReadingsVal("AzPCSteckdoseWatt","state","") < 20 && Value("AzPCSteckdoseBetrieb") eq "on")}
2016.04.04 19:11:45 1: PERL WARNING: Argument "58.9 W" isn't numeric in numeric gt (>) at (eval 7563) line 1.
2016.04.04 19:11:45 3: eval: my $EVTPART0='58.9';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAn';my $EVTPART1='W';my $EVENT='58.9 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb on") if (ReadingsVal("AzPCSteckdoseWatt","state","") > 20 && Value("AzPCSteckdoseBetrieb") ne "on")}
2016.04.04 19:11:45 1: PERL WARNING: Argument "58.9 W" isn't numeric in numeric lt (<) at (eval 7564) line 1.
2016.04.04 19:11:45 3: eval: my $EVTPART0='58.9';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAus';my $EVTPART1='W';my $EVENT='58.9 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb standby") if (ReadingsVal("AzPCSteckdoseWatt","state","") < 20 && Value("AzPCSteckdoseBetrieb") eq "on")}
2016.04.04 19:11:46 1: PERL WARNING: Argument "48.3 W" isn't numeric in numeric gt (>) at (eval 7567) line 1.
2016.04.04 19:11:46 3: eval: my $EVTPART0='48.3';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAn';my $EVTPART1='W';my $EVENT='48.3 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb on") if (ReadingsVal("AzPCSteckdoseWatt","state","") > 20 && Value("AzPCSteckdoseBetrieb") ne "on")}
2016.04.04 19:11:46 1: PERL WARNING: Argument "48.3 W" isn't numeric in numeric lt (<) at (eval 7568) line 1.
2016.04.04 19:11:46 3: eval: my $EVTPART0='48.3';my $TYPE='dummy';my $SELF='AzPCSteckdoseBetriebAus';my $EVTPART1='W';my $EVENT='48.3 W';my $NAME='AzPCSteckdoseWatt';{fhem ("set AzPCSteckdoseBetrieb standby") if (ReadingsVal("AzPCSteckdoseWatt","state","") < 20 && Value("AzPCSteckdoseBetrieb") eq "on")}


Der Code hinter für die Schaltsteckdose sieht folgendermaßen aus:

# Arbeitszimmer PC Steckdose mit Leistungsmessung
define Az.PC_Steckdose_Schalter ZWave e5d46b07 4
attr Az.PC_Steckdose_Schalter IODev ZWAVE1
attr Az.PC_Steckdose_Schalter alias 01. Schreibtisch Technik Schalter
attr Az.PC_Steckdose_Schalter classes MANUFACTURER_SPECIFIC VERSION CONFIGURATION ASSOCIATION MULTI_CHANNEL_ASSOCIATION SWITCH_BINARY POWERLEVEL METER SENSOR_MULTILEVEL FIRMWARE_UPDATE_MD MARK SWITCH_BINARY METER SENSOR_MULTILEVEL
attr Az.PC_Steckdose_Schalter group 01. Arbeitszimmer Schreibtisch
attr Az.PC_Steckdose_Schalter room Arbeitszimmer

#Dummy AzPCSteckdoseWatt für die Anzeige des aktuellen Watt-Verbrauchs definieren
define AzPCSteckdoseWatt dummy
attr AzPCSteckdoseWatt alias 04. Schreibtisch Steckdose Momentanverbrauch (W)
attr AzPCSteckdoseWatt fm_type state
attr AzPCSteckdoseWatt group 01. Arbeitszimmer Schreibtisch
attr AzPCSteckdoseWatt room Arbeitszimmer

#Dummy AzPCSteckdoseWatt mit Werten versorgen
define AzPCSteckdoseWattSet notify Az.PC_Steckdose_Schalter {my $power =ReadingsVal("Az.PC_Steckdose_Schalter","power","");; fhem ("set AzPCSteckdoseWatt $power")}

#Dummy AzPCSteckdoseBetrieb definieren
define AzPCSteckdoseBetrieb dummy
attr AzPCSteckdoseBetrieb alias 02. Schreibtisch Steckdose Betrieb
attr AzPCSteckdoseBetrieb event-on-change-reading state
attr AzPCSteckdoseBetrieb group 01. Arbeitszimmer Schreibtisch
attr AzPCSteckdoseBetrieb room Arbeitszimmer

#Dummy AzPCSteckdoseBetrieb einschalten bei Verbrauch größer 20 Watt
define AzPCSteckdoseBetriebAn notify AzPCSteckdoseWatt {fhem ("set AzPCSteckdoseBetrieb on") if (ReadingsVal("AzPCSteckdoseWatt","state","") > 20 && Value("AzPCSteckdoseBetrieb") ne "on")}

#Dummy AzPCSteckdoseBetrieb ausschalten bei Verbrauch kleiner 20 Watt
define AzPCSteckdoseBetriebAus notify AzPCSteckdoseWatt {fhem ("set AzPCSteckdoseBetrieb standby") if (ReadingsVal("AzPCSteckdoseWatt","state","") < 20 && Value("AzPCSteckdoseBetrieb") eq "on")}

#AzPCSteckdose 30 Minuten Leerlauf vom Strom trennen
define AzPCSteckdoseAutoOff watchdog AzPCSteckdoseBetrieb:standby 00:30 AzPCSteckdoseBetrieb:on {fhem ("set Az.PC_Steckdose_Schalter off");; fhem ("set AzPCSteckdoseBetrieb off");; fhem ("setstate AzPCSteckdoseAutoOff defined")}
attr AzPCSteckdoseAutoOff alias 03. Schreibtisch Steckdose AutoOff
attr AzPCSteckdoseAutoOff group 01. Arbeitszimmer Schreibtisch
attr AzPCSteckdoseAutoOff room Arbeitszimmer

# AzPCSteckdose Schreibtisch Steckdose Gesamtverbrauch
define AzPCSteckdoseWh dummy
attr AzPCSteckdoseWh alias 05. Schreibtisch Steckdose Gesamtverbrauch (kWh)
attr AzPCSteckdoseWh group 01. Arbeitszimmer Schreibtisch
attr AzPCSteckdoseWh room Arbeitszimmer
define AzPCSteckdoseWatth at +*00:00:30 {my $power_gesamtPC =ReadingsVal("Az.PC_Steckdose_Schalter","energy",0);; fhem ("set AzPCSteckdoseWh $power_gesamtPC")}


Was kann ich nun machen damit Perl mir aus den Strings mit kWh und W wieder Zahlen ohne Anhängsel macht und somit das Log nichtmehr vollgemalt wird?

Vielen Dank!
Gruß
Chris
Raspberry Pi 2/HM-CFG-LAN/HM-ES-PMSw1-PI/HM-LC-Sw1-PL/HM-Sec-MDIR-2/JeeLink V3/LaCrosse Temp/Humidity/Bluetooh USB Dongle/PebbleBee Bluetooth Tags

FHEM/MySQL/Apache/SmarVisu

scooty

Nimm statt ReadingsVal() die Funktion ReadingsNum(), die filtert die Einheit 'raus.

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

Chris_Worms

Zitat von: scooty am 04 April 2016, 19:32:34
Nimm statt ReadingsVal() die Funktion ReadingsNum(), die filtert die Einheit 'raus.

Andreas

Super, das funktioniert! Vielen Dank!
Raspberry Pi 2/HM-CFG-LAN/HM-ES-PMSw1-PI/HM-LC-Sw1-PL/HM-Sec-MDIR-2/JeeLink V3/LaCrosse Temp/Humidity/Bluetooh USB Dongle/PebbleBee Bluetooth Tags

FHEM/MySQL/Apache/SmarVisu