FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MaJu am 30 November 2023, 13:32:19

Titel: [Gelöst] bei Zahl: Komma statt Punkt
Beitrag von: MaJu am 30 November 2023, 13:32:19
Ein DOIF berechnet alle paar Sekunden die Summe aus mehreren Mess-Steckdosen und schreibt sie in einen dummy, den ich mir dann in einer ReadingsGroup anzeigen lasse.

Allerdings steht da ein Punkt statt Komma. Statt "1,347 kW" steht da "1.347 kW", womit es wie ein tausender-Trennpunkt aussieht.
Die Anzeige soll in kW erfolgen, ein Wechsel auf Watt ist an dieser Stelle nicht sinnvoll.

Wie kann ich aus dem Punkt ein Komma machen? Entweder im DOIF (direkt in der DEF oder als Attribut), im dummy oder in der ReadingsGroup?

Mein DOIF:
([+00:00:10])
(set Stromverbrauch {(([Shelly1:power]+[Shelly2:power]+[Shelly4:power]+[Shelly5:power]+[Shelly6:power])/1000)})

Attribut "valueFormat" in der Readingsgroup (um es auf 3 Nachkommastellen zu kürzen und "kW" anzufügen:
{state => "aktuell: %.3f kW"}
Ich stehe auf dem Schlauch und komme auch mit der Suche nicht weiter. Vielen Dank bereits vorab.
Titel: Aw: bei Zahl: Komma statt Punkt
Beitrag von: Otto123 am 30 November 2023, 14:06:59
Hi,

eine Möglichkeit: in dem Ursprungsdevice ein userReadings in der Art (geht sicher besser, der Code ist bei mir uralt ;) ).
userReadings tempText {my $val = ReadingsVal($name,"temperature","Fehler"); $val =~ s/\./,/; $val;},Dann dieses modifizierte Reading nehmen.

Gruß Otto
Titel: Aw: bei Zahl: Komma statt Punkt
Beitrag von: MaJu am 30 November 2023, 14:41:04
Vielen Dank. Das geht sogar direkt in dem dummy.

Allerdings klappt es nicht, diesen Wert in der readingsGroup auf 3 Nachkommastellen zu kürzen, da FHEM das Komma nicht als solches interpretiert.

Hier muss ich nun vermutlich schon vorher ran und es bei der Berechnung im DOIF anpassen, dass da nur 3 Nachkommastellen rauskommen.
Titel: Aw: bei Zahl: Komma statt Punkt
Beitrag von: Otto123 am 30 November 2023, 15:24:20
userReadings tempText {my $val = sprintf("%.3f",ReadingsVal($name,"temperature","Fehler")); $val =~ s/\./,/; "aktuell $val kW"}Und in der Readingsgroup einfach den formatierten Wert nehmen.
Titel: Aw: [Gelöst] bei Zahl: Komma statt Punkt
Beitrag von: MaJu am 01 Dezember 2023, 08:47:47
Ganz herzlichen Dank Otto, so funktioniert es hervorragend!

Grüße nach "fast um die Ecke" (bei mir: Leipzig-Zentrum).