FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jogi am 02 Dezember 2022, 11:49:57

Titel: Ergebnis einer Berechnung auf 2 Nachkommastellen reduzieren//Mit sprintf "%.2f ?
Beitrag von: Jogi am 02 Dezember 2022, 11:49:57
Hallo ich habe folgende Berechnung:
MQTT2_DVES_D75E9F.* {fhem (("set Stromverbrauch_aktuell "). (((ReadingsNum("A_plus","state","0","1")-OldReadingsNum("A_plus","state","0","1"))*1000*12))) }
Leider bekomme ich damit teilweise ein Ergebnis mit etlichen Nachkommastellen. Ich möchte aber maximal 2 Nachkommastellen haben.
Ich habe durch die 4.Variable "1" versucht das Problem zu lösen, was aber nicht funktioniert hat.
Als Ansatz habe ich sprintf "%.2f recherchiert, aber ich weiß nicht, wie ich das einbauen soll.
Für einen Tipp wäre ich sehr dankbar.
Titel: Antw:Ergebnis einer Berechnung auf 2 Nachkommastellen reduzieren//Mit sprintf "%.2f ?
Beitrag von: Otto123 am 02 Dezember 2022, 12:24:25
Ich denke so:
MQTT2_DVES_D75E9F.* {fhem ("set Stromverbrauch_aktuell ". sprintf "%.2f", (ReadingsNum("A_plus","state",0,1) - OldReadingsNum("A_plus","state",0,1)) * 1000 * 12 }
oder so, falls es keinen weiteren Perlcode gibt:
MQTT2_DVES_D75E9F.* set Stromverbrauch_aktuell {( sprintf "%.2f", (ReadingsNum("A_plus","state",0,1) - OldReadingsNum("A_plus","state",0,1)) * 1000 * 12 )}
Wobei das dann doppelt gerundet ist, ich würde dann die Rundung in ReadingsNum weglassen!
Titel: Antw:Ergebnis einer Berechnung auf 2 Nachkommastellen reduzieren//Mit sprintf "%.2f ?
Beitrag von: Jogi am 02 Dezember 2022, 12:38:38
Zitat von: Otto123 am 02 Dezember 2022, 12:24:25
Ich denke so:
MQTT2_DVES_D75E9F.* {fhem ("set Stromverbrauch_aktuell ". sprintf "%.2f", (ReadingsNum("A_plus","state",0,1) - OldReadingsNum("A_plus","state",0,1)) * 1000 * 12 }
oder so, falls es keinen weiteren Perlcode gibt:
MQTT2_DVES_D75E9F.* set Stromverbrauch_aktuell {( sprintf "%.2f", (ReadingsNum("A_plus","state",0,1) - OldReadingsNum("A_plus","state",0,1)) * 1000 * 12 )}
Wobei das dann doppelt gerundet ist, ich würde dann die Rundung in ReadingsNum weglassen!
Vielen Dank,
ich habe es jetzt so eingebaut und es funktioniert.
MQTT2_DVES_D75E9F.* {fhem (("set Stromverbrauch_aktuell "). sprintf "%.2f",(((ReadingsNum("A_plus","state","0","1")-OldReadingsNum("A_plus","state","0","1"))*1000*12))) }
Wahrscheinlich sind da ein paar Klammern zu viel, aber es funktioniert.
Titel: Antw:Ergebnis einer Berechnung auf 2 Nachkommastellen reduzieren//Mit sprintf "%.2f ?
Beitrag von: Otto123 am 02 Dezember 2022, 13:31:55
 :o
Wenn das ein notify ist: schlechtes Suchmuster / Trigger
zuviele Klammern
zuviele Hochkommas 
Titel: Antw:Ergebnis einer Berechnung auf 2 Nachkommastellen reduzieren//Mit sprintf "%.2f ?
Beitrag von: Jogi am 02 Dezember 2022, 14:25:43
Zitat von: Otto123 am 02 Dezember 2022, 13:31:55
:o
Wenn das ein notify ist: schlechtes Suchmuster / Trigger
zuviele Klammern
zuviele Hochkommas
Ja, das ist ein notify.
Dann taste ich mich mal ran und gucke, was ich alles löschen kann, ohne dass es eine Fehlermeldung gibt.
Danke für Deine Tipps!
Titel: Antw:Ergebnis einer Berechnung auf 2 Nachkommastellen reduzieren//Mit sprintf "%.2f ?
Beitrag von: Otto123 am 02 Dezember 2022, 17:34:25
nimm doch einfach so wie ich geschrieben habe? Oder lief das nicht?
Tipp fürs Suchmuster: Eventmonitor auf und den Event markieren der exakt trifft, dann notify modifizieren hier stehts: https://wiki.fhem.de/wiki/Event_monitor

Sieht dann am Ende mind. so aus:
MQTT2_DVES_D75E9F:.*
Wobei ich nicht ganz verstehe: Du triggerst auf Device A und liest Werte von Device B aus. Warum machst Du das Ganze nicht bloß wenn sich A_plus ändert?