FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: SHOFHEM am 10 Juli 2024, 07:04:16

Titel: Formatierung eines Terms mit sprintf (gelöst)
Beitrag von: SHOFHEM am 10 Juli 2024, 07:04:16
Hallo Fhem Gemeinde,

ich habe ein Problem mit der Formatierung / Darstellung einer Subtraktion von 2 readings.

Verbrauch heute {([MQTT2_DVES_363AC0:SGM_E_in]-[Tagesverbrauch:Zaehlerstand_0Uhr])} KWh
Ich möchte dass Ergebnis der Subtraktion auf 2 Stellen per sprintf formatieren. Das Ergebnis sollte so ausehen 2.34 KWh. Ich erhalte momentan 2.340000000000000001 KWh.

Mir ist auch nach Studium der Funktion sprintf die Syntax völlig unklar und ich komme nicht weiter. Einzelne Readings kann ich per sprintf formatieren, aber den Term der Subtraktion bekomme ich nicht hin!

Kann mir bitte jemand auf die Sprünge helfen?

Danke euch schon jetzt

Titel: Aw: Formatierung eines Terms mit sprintf
Beitrag von: mumpitzstuff am 10 Juli 2024, 07:35:51
"%.2f"
Titel: Aw: Formatierung eines Terms mit sprintf
Beitrag von: SHOFHEM am 10 Juli 2024, 10:34:32
Hallo und danke für die Antwort,

kannst du mir bitte etwas genauer sagen wo ich das / was einfügen muss. Wie schon gesagt mir ist die Syntax absolut nicht klar.


)} Verbrauch heute {sprintf("%.2f"[MQTT2_DVES_363AC0:SGM_E_in]-[Tagesverbrauch:Zaehlerstand_0Uhr])}
liefert Verbrauch heute {sprintf("%.2f"53.083-51.086)} KWh


Verbrauch heute {sprintf("%.2f"([MQTT2_DVES_363AC0:SGM_E_in]-[Tagesverbrauch:Zaehlerstand_0Uhr]))}
liefert Verbrauch heute {sprintf("%.2f"(53.083-51.086))} KWh

Die Werte der Devices werden richtig ermittelt, aber die Subtraktion nicht ausgeführt. Ich tippe auf Klammersetzung, aber wie und welche?



Danke schon jetzt
Titel: Aw: Formatierung eines Terms mit sprintf
Beitrag von: carlos am 10 Juli 2024, 10:50:11
Bitte nach dem "%.2f" ein Komma, also: "%.2f",
Titel: Aw: Formatierung eines Terms mit sprintf
Beitrag von: betateilchen am 10 Juli 2024, 10:51:53
Man könnte auch einfach die FHEM-eigene Funktion round() verwenden, wenn man sich schon nicht die Mühe macht, zumindest die Syntaxbeschreibung der perl Funktion sprintf() zu lesen.

round(ReadingsNum('MQTT2_DVES_363AC0','SGM_E_in',0)-ReadingsNum('Tagesverbrauch','Zaehlerstand_0Uhr',0),2)
Titel: Aw: Formatierung eines Terms mit sprintf
Beitrag von: SHOFHEM am 10 Juli 2024, 11:01:51
danke euch allen
Titel: Aw: Formatierung eines Terms mit sprintf (gelöst)
Beitrag von: SHOFHEM am 10 Juli 2024, 11:14:50
habs so gelöst

{(sprintf ("%.3f",ReadingsNum("MQTT2_DVES_363AC0","SGM_E_in",0)-ReadingsNum("Tagesverbrauch","Zaehlerstand_0Uhr",0)))} KWh
Titel: Aw: Formatierung eines Terms mit sprintf (gelöst)
Beitrag von: betateilchen am 10 Juli 2024, 11:16:43
und warum steckst Du das "kWh" nicht direkt mit in das sprintf()?

"%.3f kWh"
Außerdem hast m.E. zu viele Klammern verwendet...
Titel: Aw: Formatierung eines Terms mit sprintf (gelöst)
Beitrag von: SHOFHEM am 10 Juli 2024, 11:47:44
hab das KWh jetzt in den sprintf gepackt

Verbrauch heute {(sprintf ("%.3f KWh",ReadingsNum("MQTT2_DVES_363AC0","SGM_E_in",0)-ReadingsNum("Tagesverbrauch","Zaehlerstand_0Uhr",0)))}
Das mit den Klammern muss ich noch kontrollieren, auf Anhieb kann ich nicht sagen welche überflüssig sind.

Die Lösung mit round probier ich auch noch. Will ja was lernen!


Danke
Titel: Aw: Formatierung eines Terms mit sprintf (gelöst)
Beitrag von: betateilchen am 10 Juli 2024, 11:59:34
Zitat von: SHOFHEM am 10 Juli 2024, 11:47:44hab das KWh jetzt in den sprintf gepackt

Das große K ist und bleibt falsch 8)
Titel: Aw: Formatierung eines Terms mit sprintf
Beitrag von: Nobbynews am 11 Juli 2024, 06:36:41
Zitat von: SHOFHEM am 11 Juli 2024, 06:13:39Ich würde gerne einen Term in der Form x=a/1000-(b-c) berechnen. Ohne die Klammern rechnet fhem korekt einfach von links nach rechts.
Zitatsetzen, dass der Term (b-c) als solches berechnet wird und dann von Wert a/1000 abgezogen wird

x=a/1000-(b-c) = a/1000-b+c
ZitatEigenverbrauch heute {(sprintf ("%.3f kWh",ReadingsNum("PV_Anlage","heute",0)/1000-ReadingsNum("MQTT2_DVES_363AC0","SGM_E_out",0)+ReadingsNum("Tagesverbrauch","Einspeisung_PV_0Uhr",0)))}
Titel: Aw: Formatierung eines Terms mit sprintf
Beitrag von: SHOFHEM am 11 Juli 2024, 06:43:37
danke,

habe den Wald vor lauter Bäumen nicht gesehen  :'(  :'(  :'(