FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisA4 am 13 Dezember 2021, 22:22:16

Titel: Kommastellen reduzieren
Beitrag von: ChrisA4 am 13 Dezember 2021, 22:22:16
Habe eine Smartmeter über MQTT in fhem eingebunden Läuft soweit alles Gut.
Manchmal bekomme ich aber Werte mit 14 Kommastellen und ich finde keinen Weg diese auf zwei zu reduzieren
Hier die State ausgabe:

MQTT2_SmartMeter
   
Momentanleistung: 756 W
SpannungL1: 234.20000000000002 V
SpannungL2: 232.5 V
SpannungL3: 229.8 V
StromL1: 1.32 A
StromL2: 0.99 A
StromL3: 1.77 A
Gesamt Verbrauch: 930253 W

Hier StateFormat:

{"Momentanleistung: ".ReadingsVal($name,"Momentanleistung",0)." W <br> SpannungL1: ".ReadingsVal($name,"SpannungL1",0)." V <br> SpannungL2: ".ReadingsVal($name,"SpannungL2",0)." V <br> SpannungL3: ".ReadingsVal($name,"SpannungL3",0)." V <br> StromL1: ".ReadingsVal($name,"StromL1",0)." A <br> StromL2: ".ReadingsVal($name,"StromL2",0)." A <br> StromL3: ".ReadingsVal($name,"StromL3",0)." A<br> Gesamt Verbrauch: ".ReadingsVal($name,"WirkenergieP",0)." W"}

und Hier die readingList:

SmartMeter:Smartmeter/WirkenergieP:.* WirkenergieP
SmartMeter:Smartmeter/WirkenergieN:.* WirkenergieN
SmartMeter:Smartmeter/MomentanleistungP:.* MomentanleistungP
SmartMeter:Smartmeter/MomentanleistungN:.* MomentanleistungN
SmartMeter:Smartmeter/Momentanleistung:.* Momentanleistung
SmartMeter:Smartmeter/SpannungL1:.* SpannungL1
SmartMeter:Smartmeter/SpannungL2:.* SpannungL2
SmartMeter:Smartmeter/SpannungL3:.* SpannungL3
SmartMeter:Smartmeter/StromL1:.* StromL1
SmartMeter:Smartmeter/StromL2:.* StromL2
SmartMeter:Smartmeter/StromL3:.* StromL3
SmartMeter:Smartmeter/Leistungsfaktor:.* Leistungsfaktor


Hab schon einiges mit round usw probiert ohne erfolg

Kann mir da jemend weiterhelfen??
Titel: Antw:Kommastellen reduzieren
Beitrag von: Otto123 am 13 Dezember 2021, 23:01:28
Beispiel:
{sprintf "%.2f",123.456789}
Titel: Antw:Kommastellen reduzieren
Beitrag von: ChrisA4 am 13 Dezember 2021, 23:08:34
Zitat von: Otto123 am 13 Dezember 2021, 23:01:28
Beispiel:
{sprintf "%.2f",123.456789}

Wo sollte ich das einfügen?
Titel: Antw:Kommastellen reduzieren
Beitrag von: TomLee am 13 Dezember 2021, 23:18:12
Zitats/ReadingsVal($name,"SpannungL1",0)/ReadingsNum($name,"SpannungL1",0,2)/g

Ich würde vorschlagen in stateFomat ReadingsNum (wie oben gezeigt) statt ReadingsVal zu verwenden, einfach nur weil die Angabe des vierten Parameter das gewünschte Verhalten ermöglicht.

ZitatReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem Readingswert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet und ggf. mit 0 aufgefüllt, wenn <round> größer ist als die Anzahl der Dezimalstellen.
Titel: Antw:Kommastellen reduzieren
Beitrag von: Otto123 am 14 Dezember 2021, 11:25:05
Um die Frage zu beantworten:
Zitat von: ChrisA4 am 13 Dezember 2021, 23:08:34
Wo sollte ich das einfügen?
Der Code war als Beispiel für die FHEM Kommandozeile gedacht, dort eingeworfen erschließt sich das Ergebnis ;)
Aber speziell ansttatt dem: ReadingsVal($name,"SpannungL1",0)
dies hier sprintf "%.2f",ReadingsVal($name,"SpannungL1",0)
Vielleicht braucht man es ja mal an anderer Stelle

Thomas sein Vorschlag ist viel besser und kürzer  :D
Titel: Antw:Kommastellen reduzieren
Beitrag von: ChrisA4 am 16 Dezember 2021, 16:59:46
Danke Euch mit ReadingsNum hats funktioniert
Titel: Aw: Kommastellen reduzieren
Beitrag von: mcferryn am 27 April 2025, 20:08:27
Ich habe lange gesucht nach einer einfachen Möglichkeit das Ergebnis einer Rechnung so auszugeben das immer nur eine Zahl hintern Komma ist. Wenn eine Null rauskommt hinterm Komma verschwand immer die Zahl und die Formatierung wirkte so unordentlich.
Die Lösung ist jetzt:
(sprintf "%.1f",(ReadingsVal($name,"BMP280_SeaPressure","X")-0.8))

Einfach Danke
Titel: Aw: Kommastellen reduzieren
Beitrag von: betateilchen am 27 April 2025, 20:38:59
Wenn Du mit dem Ergbenis rechnen möchtest, solltest Du besser ReadingsNum() verwenden anstatt ReadingsVal().

ReadingsNum($name,"BMP280_SeaPressure",0)
Titel: Aw: Kommastellen reduzieren
Beitrag von: Otto123 am 27 April 2025, 21:06:55
ist mcferryn ein Bot und erzählt uns KI Quark?
Zumindest ist seine Aussage für mich nicht nachvollziehbar. ;)
Titel: Aw: Kommastellen reduzieren
Beitrag von: betateilchen am 28 April 2025, 08:23:09
Wenn man bei jeder hier im Forum auftauchenden, nicht nachvollziehbaren Aussage einen Bot vermuten und entsprechend reagieren würde, wäre das Forum in kürzester Zeit mindestens 50% kleiner...