[gelöst] MQTT openWB json mit Runden der Werte

Begonnen von ch.eick, 15 November 2024, 13:17:42

Vorheriges Thema - Nächstes Thema

ch.eick

Hallo zusammen,
ich bin gerade an den MQTT Messages der openWB Version >2 und da kommen einige Werte mit sinnlos vielen Nachkommastellen.
Viele, die einzeln kommen habe ich bereits gerundet.
Wie könnte ich denn die Werte innerhalb eines JSONs for dem schreiben ins reading runden?

Das ist okay
$DEVICETOPIC/chargepoint/6/get/power:.* { return {cp_6_get_power => round($EVTPART0,0)} }

Und hier würde ich auch gerne runden
$DEVICETOPIC/chargepoint/6/get/powers:.* { json2nameValue($EVENT,'cp_6_get_P') }

Daraus entsteht dann das hier, was bei 0.0 gut ist, aber bei anderen Werten nicht so dolle, da kommt dann z.B. 3023.3599755859377
cp_6_get_P1 0.0
cp_6_get_P2 0.0
cp_6_get_P3 0.0

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

rudolfkoenig

json2nameValue leifert ein Hash (aka Objekt) zurueck.
Zum Runden iteriert man ueber alle Werte, und rundet sie, falls sie nach Zahl ausschauen.
In der Art
{ my $h=json2nameValue($EVENT,'cp_6_get_P');; map { $h->{$_}=round($h->{$_}) if(looks_like_number($h->{$_})) } keys %{$h};; $h }
(ungetestet).

ch.eick

#2
Zitat von: rudolfkoenig am 15 November 2024, 13:36:34json2nameValue leifert ein Hash (aka Objekt) zurueck.
Zum Runden iteriert man ueber alle Werte, und rundet sie, falls sie nach Zahl ausschauen.
In der Art
{ my $h=json2nameValue($EVENT,'cp_6_get_P');; map { $h->{$_}=round($h->{$_}) if(looks_like_number($h->{$_})) } keys %{$h};; $h }
(ungetestet).
Ups, das übersteigt meine Kenntnisse, aber Augen zu und durch, ich nehm mal das ungetestete :-)
Danke erstmal

EDIT: Ich habe es gerade eingebaut und es läuft. Beim round() habe ich noch mit ,0 alle Nachkommastellen eliminiert.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick