[Gelöst] StateFormat sprintf Werte und Status

Begonnen von Schlafsack, 12 August 2023, 13:37:09

Vorheriges Thema - Nächstes Thema

Schlafsack

Hallo Miteinander,

ich möchte von meinem Wechselrichter verschiedene Werte und den Status anzeigen lassen mit StateFormat.
Das mit den Werten klappt, aber wie geht das gleichzeitig mit dem Status (state)?

define Fronius_Wechselrichter fronius 192.168.1.51
attr Fronius_Wechselrichter IntervalRealtimeData 60
attr Fronius_Wechselrichter event-on-change-reading state,Inverter_Common_DAY_ENERGY_Value,Inverter_Common_TOTAL_ENERGY_Value,Inverter_Common_DeviceStatus_ErrorCode,Inverter_Common_PAC_Value
attr Fronius_Wechselrichter group Strommessung
attr Fronius_Wechselrichter icon measure_photovoltaic_inst
attr Fronius_Wechselrichter stateFormat {sprintf("Gesamterzeugung: %.0f Wh <br> Tageserzeugung: %.0f Wh <br> aktuelle Erzeugung: %.0f W <br> Fehlercode: %.0f <br> Status: %.0f", ReadingsVal($name,"Inverter_Common_TOTAL_ENERGY_Value","-88"), ReadingsVal($name,"Inverter_Common_DAY_ENERGY_Value","-88"), ReadingsVal($name,"Inverter_Common_PAC_Value","-88"), ReadingsVal($name,"Inverter_Common_DeviceStatus_ErrorCode","-88"), ReadingsVal($name,"state","-88"))}
#   DEF        192.168.1.51
#   FUUID      63e2c502-f33f-380f-77ab-b3017adf4d63ec0d
#   NAME       Fronius_Wechselrichter
#   NR         61
#   STATE      Gesamterzeugung: 8529550 Wh <br> Tageserzeugung: 10371 Wh <br> aktuelle Erzeugung: 1299 W <br> Fehlercode: 0 <br> Status: 0
#   TYPE       fronius
#   eventCount 6001
#   OLDREADINGS:
#   READINGS:
#     2023-08-12 13:28:13   Inverter_Common_DAY_ENERGY_Value 10371
#     2023-08-12 13:28:13   Inverter_Common_DeviceStatus_ErrorCode 0
#     2023-08-12 13:28:13   Inverter_Common_PAC_Value 1299
#     2023-08-12 13:28:13   Inverter_Common_TOTAL_ENERGY_Value 8529550
#     2023-08-12 09:54:18   state           connected

Mir ist klar das es mit ReadingsValue, beim state nicht klappen kann, da es ja Text ist, aber wie muss es richtig heißen?
Vielen Dank für eure Unterstützung

TomLee

ZitatMir ist klar das es mit ReadingsValue, beim state nicht klappen kann, da es ja Text ist, aber wie muss es richtig heißen?

%s konvertiert Strings.

https://perldoc.perl.org/functions/sprintf

Schlafsack

Danke hat mit %s super geklappt

define Fronius_Wechselrichter fronius 192.168.1.51
attr Fronius_Wechselrichter IntervalRealtimeData 60
attr Fronius_Wechselrichter event-on-change-reading state,Inverter_Common_DAY_ENERGY_Value,Inverter_Common_TOTAL_ENERGY_Value,Inverter_Common_DeviceStatus_ErrorCode,Inverter_Common_PAC_Value
attr Fronius_Wechselrichter group Strommessung
attr Fronius_Wechselrichter icon measure_photovoltaic_inst
attr Fronius_Wechselrichter stateFormat {sprintf("Gesamterzeugung: %.0f Wh <br> Tageserzeugung: %.0f Wh <br> aktuelle Erzeugung: %.0f W <br> Fehlercode: %.0f <br> Status: %s", ReadingsVal($name,"Inverter_Common_TOTAL_ENERGY_Value","-88"), ReadingsVal($name,"Inverter_Common_DAY_ENERGY_Value","-88"), ReadingsVal($name,"Inverter_Common_PAC_Value","-88"), ReadingsVal($name,"Inverter_Common_DeviceStatus_ErrorCode","-88"), ReadingsVal($name,"state","-88"))}
#   DEF        192.168.1.51
#   FUUID      63e2c502-f33f-380f-77ab-b3017adf4d63ec0d
#   NAME       Fronius_Wechselrichter
#   NR         61
#   STATE      Gesamterzeugung: 8529550 Wh <br> Tageserzeugung: 10371 Wh <br> aktuelle Erzeugung: 1299 W <br> Fehlercode: 0 <br> Status: 0
#   TYPE       fronius
#   eventCount 6001
#   OLDREADINGS:
#   READINGS:
#     2023-08-12 13:28:13   Inverter_Common_DAY_ENERGY_Value 10371
#     2023-08-12 13:28:13   Inverter_Common_DeviceStatus_ErrorCode 0
#     2023-08-12 13:28:13   Inverter_Common_PAC_Value 1299
#     2023-08-12 13:28:13   Inverter_Common_TOTAL_ENERGY_Value 8529550
#     2023-08-12 09:54:18   state           connected