Warnungs im log .... isn't numeric in sprintf at....

Begonnen von rasti, 21 Dezember 2022, 11:11:46

Vorheriges Thema - Nächstes Thema

rasti

Hallo,

ich verwende zum Auslesen meiner Modbuszähler diesen Code:

define Haus_Strom_Meter1 ModbusSDM72DMV2 1 10 192.168.178.20:502 TCP
attr Haus_Strom_Meter1 userattr event-on-change-reading stateFormat
attr Haus_Strom_Meter1 alias 1 - Eigene Wohnung
attr Haus_Strom_Meter1 event-on-change-reading Energy_import__kWh:.1,Power_L1__W:5,Power_L2__W:5,Power_L3__W:5,Power_Sum__W:5
attr Haus_Strom_Meter1 room Photovoltaik
attr Haus_Strom_Meter1 stateFormat {sprintf("Energy: %.0f kWh", (ReadingsVal($name,"Energy_import__kWh",0) ) )." / Power:". sprintf("%.0f W", ReadingsVal($name,"Power_Sum__W",0)). " / L1:" . sprintf("%.0f W", ReadingsVal($name,"Power_L1__W",0)). " / L2:" . sprintf("%.0f W", ReadingsVal($name,"Power_L2__W",0)). " / L3:" . sprintf("%.0f W", ReadingsVal($name,"Power_L3__W",0))}


Das funktioniert auch, Werte werden ordentlich angezeigt und in einem anderen Device auch geloggt.

Im Log verursacht das aber eine Menge Warning:
2022.12.21 11:00:48.901 1: PERL WARNING: Argument "19 W" isn't numeric in sprintf at (eval 673861) line 1.
2022.12.21 11:00:48.902 1: PERL WARNING: Argument "455 W" isn't numeric in sprintf at (eval 673861) line 1.
2022.12.21 11:00:48.904 1: PERL WARNING: Argument "143 W" isn't numeric in sprintf at (eval 673861) line 1.
2022.12.21 11:00:48.972 1: PERL WARNING: Argument "0.000 kWh" isn't numeric in sprintf at (eval 673862) line 1.
2022.12.21 11:00:48.974 1: PERL WARNING: Argument "0.0 W" isn't numeric in sprintf at (eval 673862) line 1.
2022.12.21 11:00:48.976 1: PERL WARNING: Argument "0 W" isn't numeric in sprintf at (eval 673862) line 1.
2022.12.21 11:00:49.131 1: PERL WARNING: Argument "1353.715 kWh" isn't numeric in sprintf at (eval 673863) line 1.
2022.12.21 11:00:49.133 1: PERL WARNING: Argument "100.3 W" isn't numeric in sprintf at (eval 673863) line 1.
2022.12.21 11:00:49.135 1: PERL WARNING: Argument "76 W" isn't numeric in sprintf at (eval 673863) line 1.
2022.12.21 11:00:49.148 1: PERL WARNING: Argument "19 W" isn't numeric in sprintf at (eval 673863) line 1.
2022.12.21 11:00:49.150 1: PERL WARNING: Argument "6 W" isn't numeric in sprintf at (eval 673863) line 1.


Wie krieg ich das abgestellt ?

Viele Grüße
Ralf

CoolTux

Besser ein list vom Device als eine def oder raw.

Ich tippe daraus das ein ReadingsNum statt eines ReadingsVal hier helfen könnte. Ist aber nur geraten.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rasti

Zitat von: CoolTux am 21 Dezember 2022, 11:18:01
Besser ein list vom Device als eine def oder raw.

Ich tippe daraus das ein ReadingsNum statt eines ReadingsVal hier helfen könnte. Ist aber nur geraten.

Das war aber gut geraten....die Warnings sind weg und das Device macht noch immer was es soll.
Dankeschön !