Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [gelöst] Datenpunkt mit Tausender-Trennzeichen formatieren ?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    770

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

[gelöst] Datenpunkt mit Tausender-Trennzeichen formatieren ?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
26 Beiträge 3 Kommentatoren 2.4k Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S schweiger2

    @codierknecht

    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.

    mickymM Online
    mickymM Online
    mickym
    Most Active
    schrieb am zuletzt editiert von mickym
    #7

    @schweiger2 Na wie gesagt dann teil halt den Wert in Deinem Blockly durch 1000 bevor den Datenpunkt schreibst.

    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

    1 Antwort Letzte Antwort
    0
    • S schweiger2

      @codierknecht

      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.

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #8

      @schweiger2
      Meine Glaskugel sagt, Du willst W in kW umrechnen ... dann so wie @mickym schreibt.
      Das ist aber dann umrechnen und nicht formatieren.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      mickymM S 2 Antworten Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @schweiger2
        Meine Glaskugel sagt, Du willst W in kW umrechnen ... dann so wie @mickym schreibt.
        Das ist aber dann umrechnen und nicht formatieren.

        mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von
        #9

        @codierknecht Man kann auch JSONATA nehmen. ;)

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          @codierknecht Man kann auch JSONATA nehmen. ;)

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #10

          @mickym
          Man könnte auch direkt in einem Alias umrechnen statt da per Script ranzugehen ;-)

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          mickymM 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

            @schweiger2
            Meine Glaskugel sagt, Du willst W in kW umrechnen ... dann so wie @mickym schreibt.
            Das ist aber dann umrechnen und nicht formatieren.

            S Offline
            S Offline
            schweiger2
            schrieb am zuletzt editiert von
            #11

            @codierknecht

            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.

            CodierknechtC mickymM 2 Antworten Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @mickym
              Man könnte auch direkt in einem Alias umrechnen statt da per Script ranzugehen ;-)

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von
              #12

              @codierknecht sagte in Wie Datenpunkt mit Dezimalpunkt formatieren ?:

              @mickym
              Man könnte auch direkt in einem Alias umrechnen statt da per Script ranzugehen ;-)

              Nun nachdem er aber eh schon den Datenpunkt mit Blockly schreibt, ist das dann aber auch kein Vorteil. ;)

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              CodierknechtC 1 Antwort Letzte Antwort
              0
              • S schweiger2

                @codierknecht

                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.

                CodierknechtC Offline
                CodierknechtC Offline
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #13

                @schweiger2
                Dann wie gesagt auf string umstellen und im Script formatieren.

                Oder im iQontrol formatieren, aber da kann ich Dir nicht helfen.

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @codierknecht sagte in Wie Datenpunkt mit Dezimalpunkt formatieren ?:

                  @mickym
                  Man könnte auch direkt in einem Alias umrechnen statt da per Script ranzugehen ;-)

                  Nun nachdem er aber eh schon den Datenpunkt mit Blockly schreibt, ist das dann aber auch kein Vorteil. ;)

                  CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #14

                  @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 formatieren

                  val.toFixed(1)
                  

                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi
                  Zabbix Certified Specialist
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  mickymM 2 Antworten Letzte Antwort
                  0
                  • S schweiger2

                    @codierknecht

                    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.

                    mickymM Online
                    mickymM Online
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #15

                    @schweiger2 sagte in Wie Datenpunkt mit Dezimalpunkt formatieren ?:

                    @codierknecht

                    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.

                    241c56d3-0948-42f7-ab55-c00efc436c92-image.png

                    Nur halt mal nutzen. ;)

                    <xml xmlns="https://developers.google.com/blockly/xml">
                     <variables>
                       <variable id=")l%w+)z4+^TvOp_d?X%g">Zahl</variable>
                     </variables>
                     <block type="variables_set" id="tD3m%PaFkC6u|UUqu;U1" x="163" y="63">
                       <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                       <value name="VALUE">
                         <block type="math_number" id="ovF7jy6SjAU~khSJ2jW/">
                           <field name="NUM">39525</field>
                         </block>
                       </value>
                       <next>
                         <block type="debug" id="1s5b63Yw]qIMh7%)FwrS">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text" id="[9W-GqN}m%}*/p#M0a(/">
                               <field name="TEXT">test</field>
                             </shadow>
                             <block type="convert_jsonata" id="AZbPn];oE6()eSI3X|Vh">
                               <value name="EXPRESSION">
                                 <shadow type="text" id="$k$Ip|^E9yr=k7tyLKv$">
                                   <field name="TEXT">$formatNumber($, "#.##0,0 W",{'decimal-separator':',', 'grouping-separator':'.'})</field>
                                 </shadow>
                               </value>
                               <value name="TARGET">
                                 <block type="variables_get" id="~%0^J2_Xu8s!F$jm6i[}">
                                   <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </next>
                     </block>
                    </xml>
                    

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    1 Antwort Letzte Antwort
                    0
                    • CodierknechtC Codierknecht

                      @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 formatieren

                      val.toFixed(1)
                      
                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #16

                      @codierknecht Na wenn ich obigen Befehl noch in den aktualisiere Block eingebe - machte den Kohl nicht fett.

                      ce6220d8-541b-45bf-adee-1277e0a3b9bd-image.png

                      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. ;)

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      CodierknechtC S 2 Antworten Letzte Antwort
                      0
                      • mickymM mickym

                        @codierknecht Na wenn ich obigen Befehl noch in den aktualisiere Block eingebe - machte den Kohl nicht fett.

                        ce6220d8-541b-45bf-adee-1277e0a3b9bd-image.png

                        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. ;)

                        CodierknechtC Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von Codierknecht
                        #17

                        @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 in alias.0 und nicht in 0_userdata.0.

                        d36b687f-8483-47ab-aeb2-2ef340d024c3-image.png

                        Da haben sich mein POST und Dein EDIT gerade überholt 😁

                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                        HmIP|ZigBee|Tasmota|Unifi
                        Zabbix Certified Specialist
                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                        mickymM 1 Antwort Letzte Antwort
                        0
                        • CodierknechtC Codierknecht

                          @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 in alias.0 und nicht in 0_userdata.0.

                          d36b687f-8483-47ab-aeb2-2ef340d024c3-image.png

                          Da haben sich mein POST und Dein EDIT gerade überholt 😁

                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von
                          #18

                          @codierknecht Ja habe ich gerade ergänzt. Das muss der Mensch selbst wissen, sonst ist Alias sicher eine elegante Lösung.

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          1 Antwort Letzte Antwort
                          1
                          • CodierknechtC Codierknecht

                            @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 formatieren

                            val.toFixed(1)
                            
                            mickymM Online
                            mickymM Online
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von mickym
                            #19

                            @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: ;)

                            dbc18abc-a26a-49f4-9eff-1f1a785fb085-image.png

                            also hiermit:

                            val.toLocaleString("de-DE") 
                            

                            wird eine Zahl in deutsches Format (String) konvertiert mit 1000der Punkt und Dezimalkomma.

                            4dafe598-6f26-4023-a10b-1602d0b99fe6-image.png

                            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}) 
                            

                            f4132168-99c6-46da-bd66-9994e094908d-image.png

                            Hier ein Verweis auf die Formatierungsmöglichkeiten: https://www.w3schools.com/jsref/jsref_tolocalestring_number.asp

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            1 Antwort Letzte Antwort
                            1
                            • mickymM mickym

                              @codierknecht Na wenn ich obigen Befehl noch in den aktualisiere Block eingebe - machte den Kohl nicht fett.

                              ce6220d8-541b-45bf-adee-1277e0a3b9bd-image.png

                              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. ;)

                              S Offline
                              S Offline
                              schweiger2
                              schrieb am zuletzt editiert von
                              #20

                              @mickym

                              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.

                              mickymM 1 Antwort Letzte Antwort
                              0
                              • S schweiger2

                                @mickym

                                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.

                                mickymM Online
                                mickymM Online
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von
                                #21

                                @schweiger2 Verstehe ich nicht: Nutze mal diesen Ausdruck:

                                $formatNumber($, "#.##0",{'decimal-separator':',', 'grouping-separator':'.'})
                                

                                4c600c0f-806a-4f4f-88c7-3c4e5141a341-image.png

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                 <variables>
                                   <variable id=")l%w+)z4+^TvOp_d?X%g">Zahl</variable>
                                 </variables>
                                 <block type="variables_set" id="tD3m%PaFkC6u|UUqu;U1" x="163" y="63">
                                   <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                   <value name="VALUE">
                                     <block type="math_number" id="ovF7jy6SjAU~khSJ2jW/">
                                       <field name="NUM">2339525</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="debug" id="1s5b63Yw]qIMh7%)FwrS">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text" id="[9W-GqN}m%}*/p#M0a(/">
                                           <field name="TEXT">test</field>
                                         </shadow>
                                         <block type="convert_jsonata" id="AZbPn];oE6()eSI3X|Vh">
                                           <value name="EXPRESSION">
                                             <shadow type="text" id="$k$Ip|^E9yr=k7tyLKv$">
                                               <field name="TEXT">$formatNumber($, "#.##0",{'decimal-separator':',', 'grouping-separator':'.'})</field>
                                             </shadow>
                                           </value>
                                           <value name="TARGET">
                                             <block type="variables_get" id="~%0^J2_Xu8s!F$jm6i[}">
                                               <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                                </xml>
                                

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                S 1 Antwort Letzte Antwort
                                0
                                • mickymM mickym

                                  @schweiger2 Verstehe ich nicht: Nutze mal diesen Ausdruck:

                                  $formatNumber($, "#.##0",{'decimal-separator':',', 'grouping-separator':'.'})
                                  

                                  4c600c0f-806a-4f4f-88c7-3c4e5141a341-image.png

                                  <xml xmlns="https://developers.google.com/blockly/xml">
                                   <variables>
                                     <variable id=")l%w+)z4+^TvOp_d?X%g">Zahl</variable>
                                   </variables>
                                   <block type="variables_set" id="tD3m%PaFkC6u|UUqu;U1" x="163" y="63">
                                     <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                     <value name="VALUE">
                                       <block type="math_number" id="ovF7jy6SjAU~khSJ2jW/">
                                         <field name="NUM">2339525</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="debug" id="1s5b63Yw]qIMh7%)FwrS">
                                         <field name="Severity">log</field>
                                         <value name="TEXT">
                                           <shadow type="text" id="[9W-GqN}m%}*/p#M0a(/">
                                             <field name="TEXT">test</field>
                                           </shadow>
                                           <block type="convert_jsonata" id="AZbPn];oE6()eSI3X|Vh">
                                             <value name="EXPRESSION">
                                               <shadow type="text" id="$k$Ip|^E9yr=k7tyLKv$">
                                                 <field name="TEXT">$formatNumber($, "#.##0",{'decimal-separator':',', 'grouping-separator':'.'})</field>
                                               </shadow>
                                             </value>
                                             <value name="TARGET">
                                               <block type="variables_get" id="~%0^J2_Xu8s!F$jm6i[}">
                                                 <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                  </xml>
                                  

                                  S Offline
                                  S Offline
                                  schweiger2
                                  schrieb am zuletzt editiert von
                                  #22

                                  @mickym

                                  Wenn ich das so einsetze, wird aus einer 39.540,5 bei
                                  $formatNumber($, "#.##0,0",{'decimal-separator':',', 'grouping-separator':'.'})

                                  eine 39.5 (mit Punkt) bei
                                  $formatNumber($, "#.##0",{'decimal-separator':',', 'grouping-separator':'.'})

                                  Hm.

                                  mickymM 2 Antworten Letzte Antwort
                                  0
                                  • S schweiger2

                                    @mickym

                                    Wenn ich das so einsetze, wird aus einer 39.540,5 bei
                                    $formatNumber($, "#.##0,0",{'decimal-separator':',', 'grouping-separator':'.'})

                                    eine 39.5 (mit Punkt) bei
                                    $formatNumber($, "#.##0",{'decimal-separator':',', 'grouping-separator':'.'})

                                    Hm.

                                    mickymM Online
                                    mickymM Online
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von mickym
                                    #23

                                    @schweiger2 Nochmal - die Zahlen müssen Nummern/Zahlen sein und keine Strings. Eine Zahl hat in Javascript nun mal einen Punkt als Dezimalzeichen. Deswegen wird die 39.54 als 39,5 interpretiert. Also es werden imm reine Zahlen in Strings konvertiert. Es gibt auch keine Gruppierungstrennzeichen bei der Eingabe. Also darauf achten, dass nur Zahlen eingegeben werden.

                                    3d4c750a-84d2-4024-bd7a-3fcea4257962-image.png

                                    Für jede Ziffer - die verpflichtend ist muss eine 0 eingegeben werden, für jede optionale Ziffer ein #.

                                    Also 0,0 gibt immer eine Dezimalziffer aus.
                                    ein 0,# optional eine Dezimalziffer usw.

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    1 Antwort Letzte Antwort
                                    0
                                    • S schweiger2

                                      @mickym

                                      Wenn ich das so einsetze, wird aus einer 39.540,5 bei
                                      $formatNumber($, "#.##0,0",{'decimal-separator':',', 'grouping-separator':'.'})

                                      eine 39.5 (mit Punkt) bei
                                      $formatNumber($, "#.##0",{'decimal-separator':',', 'grouping-separator':'.'})

                                      Hm.

                                      mickymM Online
                                      mickymM Online
                                      mickym
                                      Most Active
                                      schrieb am zuletzt editiert von mickym
                                      #24

                                      @schweiger2 sagte in [gelöst] Datenpunkt mit Tausender-Trennzeichen formatieren ?:

                                      39.540,5

                                      Sowas ist also Unsinn - da es keine Zahl ist. Es wird versucht in eine Zahl zu wandeln, und deshalb entsteht daraus 39,540 (deutsche Schreibweise). Einfach auf Datentyp Zahl achten!!!

                                      Wenn Du solche Strings hast musst halt Komma durch Punkt ersetzen.

                                      Wenn Du also "deutsch formatierte Zahlen" (also Strings) in Zahlen übersetzen willst, dann musst das halt tun.

                                      f655dcf3-af86-4493-9927-75c9a7ce0422-image.png

                                      Wenn beides möglich ist, dann machst halt ein Typ Prüfung.

                                      Ich hasse zwar dieses Puzzeln, hier aber mal eine Version, die prüft ob Zahl oder String und dann agiert dann entsprechend:

                                      0c3e4cc5-4242-40d3-a52d-b650443b89e2-image.png

                                      Der Datenpunkt ist vom Typ Mixed. Du siehst Deine Zahl wird als String erkannt. Hier dann mal eine Funktion, die dann beides akzeptiert.

                                      9640fe2d-be7a-4800-9da1-b4b3d7e963c5-image.png

                                      <xml xmlns="https://developers.google.com/blockly/xml">
                                       <variables>
                                         <variable id=")l%w+)z4+^TvOp_d?X%g">Zahl</variable>
                                       </variables>
                                       <block type="on_ext" id="BeI|;D5~7lY:yW([N4`N" x="-12" y="138">
                                         <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                         <field name="CONDITION">any</field>
                                         <field name="ACK_CONDITION"></field>
                                         <value name="OID0">
                                           <shadow type="field_oid" id="4xK772kkms`2g3jjN=3^">
                                             <field name="oid">0_userdata.0.Test.Mixed</field>
                                           </shadow>
                                         </value>
                                         <statement name="STATEMENT">
                                           <block type="variables_set" id="tD3m%PaFkC6u|UUqu;U1">
                                             <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                             <value name="VALUE">
                                               <block type="logic_ternary" id="zd1j8i^g~aqHM!d^a5[T">
                                                 <value name="IF">
                                                   <block type="logic_compare" id="WCR]**V{+T5dXtu3.U6v">
                                                     <field name="OP">EQ</field>
                                                     <value name="A">
                                                       <block type="convert_type" id="OHg1kCRfbbVZXrF-AeDf">
                                                         <value name="ITEM">
                                                           <block type="on_source" id="]Qr#ZET?M={mJV{Zq^XP">
                                                             <field name="ATTR">state.val</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </value>
                                                     <value name="B">
                                                       <block type="text" id="/7XWYQ=IBF;R:Bj$)h?j">
                                                         <field name="TEXT">string</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <value name="THEN">
                                                   <block type="convert_jsonata" id="C%CHj#fYejB|.8-dnop~">
                                                     <value name="EXPRESSION">
                                                       <shadow type="text" id="d]N/d.BPCMUB#O:j]_#V">
                                                         <field name="TEXT">$number($replace($replace($, ".",""),",","."))</field>
                                                       </shadow>
                                                     </value>
                                                     <value name="TARGET">
                                                       <block type="on_source" id="XD.Wzw#fRK~A01)`39?y">
                                                         <field name="ATTR">state.val</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <value name="ELSE">
                                                   <block type="on_source" id="Jf]?S4t[A-ri^;6v@^X_">
                                                     <field name="ATTR">state.val</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="debug" id="1s5b63Yw]qIMh7%)FwrS">
                                                 <field name="Severity">log</field>
                                                 <value name="TEXT">
                                                   <shadow type="text" id="[9W-GqN}m%}*/p#M0a(/">
                                                     <field name="TEXT">test</field>
                                                   </shadow>
                                                   <block type="convert_jsonata" id="AZbPn];oE6()eSI3X|Vh">
                                                     <value name="EXPRESSION">
                                                       <shadow type="text" id="$k$Ip|^E9yr=k7tyLKv$">
                                                         <field name="TEXT">$formatNumber($, "#.##0,#",{'decimal-separator':',', 'grouping-separator':'.'})</field>
                                                       </shadow>
                                                     </value>
                                                     <value name="TARGET">
                                                       <block type="variables_get" id="~%0^J2_Xu8s!F$jm6i[}">
                                                         <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                               </block>
                                             </next>
                                           </block>
                                         </statement>
                                       </block>
                                      </xml>
                                      

                                      Do nun wieder genug - Teilchen aneinander gesucht. Ich habe keine Funktion gefunden, mit der man Zeichen ersetzt. Wahrscheinlich muss man hier wieder eine JS Funktion nutzen. Aber ich vielleicht bin ich nur zu blöd zum Suchen. Deswegen hasse ich dieses Puzzeln.

                                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                      S 2 Antworten Letzte Antwort
                                      0
                                      • mickymM mickym

                                        @schweiger2 sagte in [gelöst] Datenpunkt mit Tausender-Trennzeichen formatieren ?:

                                        39.540,5

                                        Sowas ist also Unsinn - da es keine Zahl ist. Es wird versucht in eine Zahl zu wandeln, und deshalb entsteht daraus 39,540 (deutsche Schreibweise). Einfach auf Datentyp Zahl achten!!!

                                        Wenn Du solche Strings hast musst halt Komma durch Punkt ersetzen.

                                        Wenn Du also "deutsch formatierte Zahlen" (also Strings) in Zahlen übersetzen willst, dann musst das halt tun.

                                        f655dcf3-af86-4493-9927-75c9a7ce0422-image.png

                                        Wenn beides möglich ist, dann machst halt ein Typ Prüfung.

                                        Ich hasse zwar dieses Puzzeln, hier aber mal eine Version, die prüft ob Zahl oder String und dann agiert dann entsprechend:

                                        0c3e4cc5-4242-40d3-a52d-b650443b89e2-image.png

                                        Der Datenpunkt ist vom Typ Mixed. Du siehst Deine Zahl wird als String erkannt. Hier dann mal eine Funktion, die dann beides akzeptiert.

                                        9640fe2d-be7a-4800-9da1-b4b3d7e963c5-image.png

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                         <variables>
                                           <variable id=")l%w+)z4+^TvOp_d?X%g">Zahl</variable>
                                         </variables>
                                         <block type="on_ext" id="BeI|;D5~7lY:yW([N4`N" x="-12" y="138">
                                           <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                           <field name="CONDITION">any</field>
                                           <field name="ACK_CONDITION"></field>
                                           <value name="OID0">
                                             <shadow type="field_oid" id="4xK772kkms`2g3jjN=3^">
                                               <field name="oid">0_userdata.0.Test.Mixed</field>
                                             </shadow>
                                           </value>
                                           <statement name="STATEMENT">
                                             <block type="variables_set" id="tD3m%PaFkC6u|UUqu;U1">
                                               <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                               <value name="VALUE">
                                                 <block type="logic_ternary" id="zd1j8i^g~aqHM!d^a5[T">
                                                   <value name="IF">
                                                     <block type="logic_compare" id="WCR]**V{+T5dXtu3.U6v">
                                                       <field name="OP">EQ</field>
                                                       <value name="A">
                                                         <block type="convert_type" id="OHg1kCRfbbVZXrF-AeDf">
                                                           <value name="ITEM">
                                                             <block type="on_source" id="]Qr#ZET?M={mJV{Zq^XP">
                                                               <field name="ATTR">state.val</field>
                                                             </block>
                                                           </value>
                                                         </block>
                                                       </value>
                                                       <value name="B">
                                                         <block type="text" id="/7XWYQ=IBF;R:Bj$)h?j">
                                                           <field name="TEXT">string</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                   <value name="THEN">
                                                     <block type="convert_jsonata" id="C%CHj#fYejB|.8-dnop~">
                                                       <value name="EXPRESSION">
                                                         <shadow type="text" id="d]N/d.BPCMUB#O:j]_#V">
                                                           <field name="TEXT">$number($replace($replace($, ".",""),",","."))</field>
                                                         </shadow>
                                                       </value>
                                                       <value name="TARGET">
                                                         <block type="on_source" id="XD.Wzw#fRK~A01)`39?y">
                                                           <field name="ATTR">state.val</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                   <value name="ELSE">
                                                     <block type="on_source" id="Jf]?S4t[A-ri^;6v@^X_">
                                                       <field name="ATTR">state.val</field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                               <next>
                                                 <block type="debug" id="1s5b63Yw]qIMh7%)FwrS">
                                                   <field name="Severity">log</field>
                                                   <value name="TEXT">
                                                     <shadow type="text" id="[9W-GqN}m%}*/p#M0a(/">
                                                       <field name="TEXT">test</field>
                                                     </shadow>
                                                     <block type="convert_jsonata" id="AZbPn];oE6()eSI3X|Vh">
                                                       <value name="EXPRESSION">
                                                         <shadow type="text" id="$k$Ip|^E9yr=k7tyLKv$">
                                                           <field name="TEXT">$formatNumber($, "#.##0,#",{'decimal-separator':',', 'grouping-separator':'.'})</field>
                                                         </shadow>
                                                       </value>
                                                       <value name="TARGET">
                                                         <block type="variables_get" id="~%0^J2_Xu8s!F$jm6i[}">
                                                           <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </next>
                                             </block>
                                           </statement>
                                         </block>
                                        </xml>
                                        

                                        Do nun wieder genug - Teilchen aneinander gesucht. Ich habe keine Funktion gefunden, mit der man Zeichen ersetzt. Wahrscheinlich muss man hier wieder eine JS Funktion nutzen. Aber ich vielleicht bin ich nur zu blöd zum Suchen. Deswegen hasse ich dieses Puzzeln.

                                        S Offline
                                        S Offline
                                        schweiger2
                                        schrieb am zuletzt editiert von
                                        #25

                                        @mickym

                                        Ich bin sehr froh, dass Du so hilfsbereit bist, Danke. Ich habe hier mein aktuelles Blockly beigefügt.

                                        1c4de855-2594-40a1-a04d-25e1c9b6954d-image.png
                                        Die beiden Datenpunkte in den Objekten aus Tasmota im MQTT-Adapter, aus dem das Attribut ausgelesen wird, haben den Typ "JSON" und werden in die Variablen geschrieben.

                                        Die Datenpunkte Verbrauch_aktuell und Verbrauch_gesamt sind natürlich vom Typ "string". Wenn ich sie auf "number" in common und native umstelle, erhalte ich Warnmeldungen im Protokoll, was zu erwarten ist. Es wird also ein String in den Datenpunkt geschrieben.

                                        Wenn ich die Konvertierungsfunktion "nach Zahl" wie im Blockly unten benutze und die Datenpunkte auf "number" ändere, erhalte ich die Fehlermeldungen im Protokoll wie unten gezeigt. Es wird also nach wie vor der Typ "string" geschrieben.

                                        3c81e439-72a3-4b15-b014-cfa9e6958221-image.png

                                        dc9d0fb7-bf10-4fa8-9368-718546d2f1e2-image.png

                                        1 Antwort Letzte Antwort
                                        0
                                        • mickymM mickym

                                          @schweiger2 sagte in [gelöst] Datenpunkt mit Tausender-Trennzeichen formatieren ?:

                                          39.540,5

                                          Sowas ist also Unsinn - da es keine Zahl ist. Es wird versucht in eine Zahl zu wandeln, und deshalb entsteht daraus 39,540 (deutsche Schreibweise). Einfach auf Datentyp Zahl achten!!!

                                          Wenn Du solche Strings hast musst halt Komma durch Punkt ersetzen.

                                          Wenn Du also "deutsch formatierte Zahlen" (also Strings) in Zahlen übersetzen willst, dann musst das halt tun.

                                          f655dcf3-af86-4493-9927-75c9a7ce0422-image.png

                                          Wenn beides möglich ist, dann machst halt ein Typ Prüfung.

                                          Ich hasse zwar dieses Puzzeln, hier aber mal eine Version, die prüft ob Zahl oder String und dann agiert dann entsprechend:

                                          0c3e4cc5-4242-40d3-a52d-b650443b89e2-image.png

                                          Der Datenpunkt ist vom Typ Mixed. Du siehst Deine Zahl wird als String erkannt. Hier dann mal eine Funktion, die dann beides akzeptiert.

                                          9640fe2d-be7a-4800-9da1-b4b3d7e963c5-image.png

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                           <variables>
                                             <variable id=")l%w+)z4+^TvOp_d?X%g">Zahl</variable>
                                           </variables>
                                           <block type="on_ext" id="BeI|;D5~7lY:yW([N4`N" x="-12" y="138">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                             <field name="CONDITION">any</field>
                                             <field name="ACK_CONDITION"></field>
                                             <value name="OID0">
                                               <shadow type="field_oid" id="4xK772kkms`2g3jjN=3^">
                                                 <field name="oid">0_userdata.0.Test.Mixed</field>
                                               </shadow>
                                             </value>
                                             <statement name="STATEMENT">
                                               <block type="variables_set" id="tD3m%PaFkC6u|UUqu;U1">
                                                 <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                                 <value name="VALUE">
                                                   <block type="logic_ternary" id="zd1j8i^g~aqHM!d^a5[T">
                                                     <value name="IF">
                                                       <block type="logic_compare" id="WCR]**V{+T5dXtu3.U6v">
                                                         <field name="OP">EQ</field>
                                                         <value name="A">
                                                           <block type="convert_type" id="OHg1kCRfbbVZXrF-AeDf">
                                                             <value name="ITEM">
                                                               <block type="on_source" id="]Qr#ZET?M={mJV{Zq^XP">
                                                                 <field name="ATTR">state.val</field>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </value>
                                                         <value name="B">
                                                           <block type="text" id="/7XWYQ=IBF;R:Bj$)h?j">
                                                             <field name="TEXT">string</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </value>
                                                     <value name="THEN">
                                                       <block type="convert_jsonata" id="C%CHj#fYejB|.8-dnop~">
                                                         <value name="EXPRESSION">
                                                           <shadow type="text" id="d]N/d.BPCMUB#O:j]_#V">
                                                             <field name="TEXT">$number($replace($replace($, ".",""),",","."))</field>
                                                           </shadow>
                                                         </value>
                                                         <value name="TARGET">
                                                           <block type="on_source" id="XD.Wzw#fRK~A01)`39?y">
                                                             <field name="ATTR">state.val</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </value>
                                                     <value name="ELSE">
                                                       <block type="on_source" id="Jf]?S4t[A-ri^;6v@^X_">
                                                         <field name="ATTR">state.val</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <next>
                                                   <block type="debug" id="1s5b63Yw]qIMh7%)FwrS">
                                                     <field name="Severity">log</field>
                                                     <value name="TEXT">
                                                       <shadow type="text" id="[9W-GqN}m%}*/p#M0a(/">
                                                         <field name="TEXT">test</field>
                                                       </shadow>
                                                       <block type="convert_jsonata" id="AZbPn];oE6()eSI3X|Vh">
                                                         <value name="EXPRESSION">
                                                           <shadow type="text" id="$k$Ip|^E9yr=k7tyLKv$">
                                                             <field name="TEXT">$formatNumber($, "#.##0,#",{'decimal-separator':',', 'grouping-separator':'.'})</field>
                                                           </shadow>
                                                         </value>
                                                         <value name="TARGET">
                                                           <block type="variables_get" id="~%0^J2_Xu8s!F$jm6i[}">
                                                             <field name="VAR" id=")l%w+)z4+^TvOp_d?X%g">Zahl</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </next>
                                               </block>
                                             </statement>
                                           </block>
                                          </xml>
                                          

                                          Do nun wieder genug - Teilchen aneinander gesucht. Ich habe keine Funktion gefunden, mit der man Zeichen ersetzt. Wahrscheinlich muss man hier wieder eine JS Funktion nutzen. Aber ich vielleicht bin ich nur zu blöd zum Suchen. Deswegen hasse ich dieses Puzzeln.

                                          S Offline
                                          S Offline
                                          schweiger2
                                          schrieb am zuletzt editiert von
                                          #26

                                          @mickym

                                          Ich habe jetzt die debug-Zeile eingefügt und das Protokoll wirft "true" aus. Offensichtlich kommt doch der Typ number aus dem Attribut.
                                          3935c7d7-7387-4fc8-8556-3e3b1bcb68b6-image.png
                                          Dann müsste ich doch nachfolgenden Schritt mit JSONata gar nicht gehen und könnte direkt in den Datenpunkt schreiben. Habe ich gemacht und ergibt sich aus dem debug, dass

                                          • Typ des Attributes = "number" ist true
                                          • Typ des Datenpunktes Verbrauch_aktuell = "number" ist false
                                            fc18299b-20d9-461c-a16a-b88306d4a2be-image.png
                                          1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          392

                                          Online

                                          32.8k

                                          Benutzer

                                          82.7k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe