Tausender-Trennzeichen mit valueFormat?

Begonnen von grappa24, 14 Oktober 2022, 11:29:46

Vorheriges Thema - Nächstes Thema

grappa24

(Wie) kann man denn ein Tausender-Trennzeichen setzen?valueFormat "%'d" geht leider nicht (bei mir).
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

JoWiemann

Zitat von: grappa24 am 14 Oktober 2022, 11:29:46
(Wie) kann man denn ein Tausender-Trennzeichen setzen?valueFormat "%'d" geht leider nicht (bei mir).

Laut commandref werden die Formatierungszeichen der Sprintf-Stilformat-Zeichen verwendet. M. W. gibt es kein Zeichen für eine Tausender Formatierung in Perl. %d mit Apostroph gibt es in C/C++.

Grüße Jörg

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

yersinia

Würde dir eine Funktion in der myUtils helfen? Weiss nicht, ob dies mit readingsGroup funktioniert.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

grappa24

@yersinia: Prima, das hilft mir, muss ich halt nur vorschalten
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Franz Tenbrock

#4
würde mich auch interessieren,
würde gerne in meiner Readingsgroup die Watt Werte in KW umgerechnet anzeigen, leider nur dummy

hatte so was wie das hier probiert:

valueFormat {(my $NewValue = $VALUE / 1000)}
damit kann ich im Reading umrechnen, aber nun habe ich teilweise 4 Nachkommastellen, das dann formatieren habe ich noch nicht geschafft
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

grappa24

#5
Mit der sub von yersinia hab ich es z.B. wie folgt umgesetzt:


brightness 3455.77
userReadings Brightness { tausender((split(/\./, ReadingsVal("HM_6ABA70","brightness", 5000.0)))[0]) }
Brightness 3.455


sub tausender {
  my $zahl = shift;
  my $text = reverse $zahl;
  $text =~ s/\./\,/g;  #replace decimal point by decimal comma
  $text =~ s/(\d\d\d)(?=\d)(?!\d*\,)/$1./g;
  return scalar reverse $text;
}


P.S. Das split() entfernt die Nachkommastellen:
split(/\./, ... [0])
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...