Hauptmenü

Kommastellen reduzieren

Begonnen von ChrisA4, 13 Dezember 2021, 22:22:16

Vorheriges Thema - Nächstes Thema

ChrisA4

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??

Otto123

Beispiel:
{sprintf "%.2f",123.456789}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ChrisA4


TomLee

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.

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ChrisA4

Danke Euch mit ReadingsNum hats funktioniert

mcferryn

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

betateilchen

Wenn Du mit dem Ergbenis rechnen möchtest, solltest Du besser ReadingsNum() verwenden anstatt ReadingsVal().

ReadingsNum($name,"BMP280_SeaPressure",0)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

ist mcferryn ein Bot und erzählt uns KI Quark?
Zumindest ist seine Aussage für mich nicht nachvollziehbar. ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

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...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!