NEWS
[gelöst] Datenpunkt mit Tausender-Trennzeichen formatieren ?
-
Hallo zusammen,
ich möchte einen selbst erzeugten Datenpunkt, der bereits im Format "number" ohne Dezimalpunkt vorliegt, mit einem Dezimalpunkt in iQontrol anzeigen.
Weder in iQontrol noch in ioBroker habe ich den Weg gefunden, das zu realisieren.
Was kann ich tun ?
Besten Dank für eure Hilfe
-
@schweiger2
Wo kommt denn der Wert für den DP her? Aus einem Script?
Dann könntest Du den DP auf "string" umstellen und im Script formatieren.
Solange der nur für die Anzeige verwendet wird, wäre das sogar halbwegs legitim.Ansonsten bist Du hier im falschen Unterforum, dann das hat ja nix mit "ioBroker Allgemein" sondern mit "iQontrol" - also "Visualisierung" zu tun.
-
@schweiger2 Einfach den Wert durch xx teilen. Also 2425/100=24.25?
-
@mickym
Ich vermute eher, er möchte "2425" als "2425,0" angezeigt bekommen.
Kann mich aber auch täuschen. -
nee, es geht um den Dezimalpunkt, also 2425 anzuzeigen als 2.425.
Der Datenpunkt kommt aus einem Blockly, was wiederum einen Wert aus Tasmota ausliest.
-
@schweiger2
Du meinst ein Tausender-Trennzeichen? -
@schweiger2 Na wie gesagt dann teil halt den Wert in Deinem Blockly durch 1000 bevor den Datenpunkt schreibst.
-
@schweiger2
Meine Glaskugel sagt, Du willst W in kW umrechnen ... dann so wie @mickym schreibt.
Das ist aber dann umrechnen und nicht formatieren. -
@codierknecht Man kann auch JSONATA nehmen.
-
@mickym
Man könnte auch direkt in einem Alias umrechnen statt da per Script ranzugehen -
Ich bin wirklich sparsam mit meinen Auskünften gewesen.
Der Verbrauch wird als 6123 bzw. 39523 angezeigt, sowohl im DP als auch in iQontrol, was aber üblicherweise übernimmt, was es bekommt. Deswegen war mein Grundgedanke, den DP passend zu formatieren.
Mir geht es nicht um die Umrechnung, sondern wirklich nur um die Darstellung als 6.123 bzw. 39.523 W.
-
@codierknecht sagte in Wie Datenpunkt mit Dezimalpunkt formatieren ?:
@mickym
Man könnte auch direkt in einem Alias umrechnen statt da per Script ranzugehenNun nachdem er aber eh schon den Datenpunkt mit Blockly schreibt, ist das dann aber auch kein Vorteil.
-
@schweiger2
Dann wie gesagt auf string umstellen und im Script formatieren.Oder im iQontrol formatieren, aber da kann ich Dir nicht helfen.
-
@mickym sagte in Wie Datenpunkt mit Dezimalpunkt formatieren ?:
Nun nachdem er aber eh schon den Datenpunkt mit Blockly schreibt, ist das dann aber auch kein Vorteil.
Doch - spart Script
Und wenn der Alias als string angelegt ist, kann er auch gleich formatierenval.toFixed(1)
-
@schweiger2 sagte in Wie Datenpunkt mit Dezimalpunkt formatieren ?:
Ich bin wirklich sparsam mit meinen Auskünften gewesen.
Der Verbrauch wird als 6123 bzw. 39523 angezeigt, sowohl im DP als auch in iQontrol, was aber üblicherweise übernimmt, was es bekommt. Deswegen war mein Grundgedanke, den DP passend zu formatieren.
Mir geht es nicht um die Umrechnung, sondern wirklich nur um die Darstellung als 6.123 bzw. 39.523 W.
Nur halt mal nutzen.
-
@codierknecht Na wenn ich obigen Befehl noch in den aktualisiere Block eingebe - machte den Kohl nicht fett.
Da ist ja dann der Alias nun wirklich keine Ersparnis. ;)- Zudem der originale Wert wahrscheinlich dann eh im sonoff - Adapter liegt und dieses Blockly vielleicht nur für die Ausgabe gemacht wurde.
Aber ich gebe Dir natürlich Recht, wenn er das Blockly nur wegen der Anzeige gemacht hat, dann kann er auch ein Alias mit Konvertierfunktion nutzen.
-
@mickym
Wenn das Script noch mehr berechnet und eh existiert, hast Du sicher Recht.Wenn es aber nur den Wert aus Tasmota nimmt und woanders hinschreibt, kann man es auch direkt im Alias machen.
Auch JSON auseinandernehmen (z.B. bei MQTT) ist mit den Konvertierungsfunktionen kein Problem.
Dann stehen die Ergebnispunkte hat inalias.0
und nicht in0_userdata.0
.Da haben sich mein POST und Dein EDIT gerade überholt
-
@codierknecht Ja habe ich gerade ergänzt. Das muss der Mensch selbst wissen, sonst ist Alias sicher eine elegante Lösung.
-
@codierknecht Ich hab gerade aber nochmal die Definition nachgeschaut. bei toFixed bekommst Du aber keine 1000der Trennzeichen hin, aber ich hab noch eine andere Funktion für den Alias gefunden:
also hiermit:
val.toLocaleString("de-DE")
wird eine Zahl in deutsches Format (String) konvertiert mit 1000der Punkt und Dezimalkomma.
Man kann sogar die Opitionen nutzen - also wenn man bei Ganzzahlen trotzdem eine Dezimalstelle haben will, dann schreibt man:
val.toLocaleString("de-DE",{"minimumFractionDigits":1})
Hier ein Verweis auf die Formatierungsmöglichkeiten: https://www.w3schools.com/jsref/jsref_tolocalestring_number.asp
-
Ich habe mit dem gezeigten JSONata-Ausdruck die gewünschte Formatierung weitgehend realisieren können.
Nur die Ausgabe ohne Nachkommastellen und ohne Einheit "W" habe ich bei der 5-stelligen Zahl nicht hinbekommen trotz einiger Modifikationen im "#.##0,0 W".
Dennoch kann ich mit dem Erreichten leben.
Danke sehr.