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
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.
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 !