Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Visualisierung
  4. [gelöst]ObjectBinding-2 Werte subtrahieren&runden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst]ObjectBinding-2 Werte subtrahieren&runden

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vis
9 Beiträge 4 Kommentatoren 2.7k Aufrufe 4 Watching
  • Ä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.
  • DolomitiD Offline
    DolomitiD Offline
    Dolomiti
    schrieb am zuletzt editiert von Dolomiti
    #1

    Hallo,

    ich habe zwei Temperaturen, die ich direkt in Vis voneinander subtrahieren möchte. Das funktioniert auch mit einem HTML-Widget mit folgendem EIntrag

    {t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2}
    

    Jetzt möchte ich das ganze auf 1 Nachkommastelle runden, da mir als Ergebnis manchmal 1.6000000000 o.ä. angezeigt wird. Das funktioniert aber so

    {t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2;round(1)}
    

    nicht. Dann bekomme ich 0 angezeigt.
    Bei meiner Windgeschwindigkeit funktioniert es mittels

    {openweathermap.0.forecast.current.windSpeed;*(3.6);round(1)}km/h
    

    Wo ist mein Denkfehler

    Gruß
    Dolomiti

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

    BBTownB PeoplesP 2 Antworten Letzte Antwort
    0
    • DolomitiD Dolomiti

      Hallo,

      ich habe zwei Temperaturen, die ich direkt in Vis voneinander subtrahieren möchte. Das funktioniert auch mit einem HTML-Widget mit folgendem EIntrag

      {t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2}
      

      Jetzt möchte ich das ganze auf 1 Nachkommastelle runden, da mir als Ergebnis manchmal 1.6000000000 o.ä. angezeigt wird. Das funktioniert aber so

      {t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2;round(1)}
      

      nicht. Dann bekomme ich 0 angezeigt.
      Bei meiner Windgeschwindigkeit funktioniert es mittels

      {openweathermap.0.forecast.current.windSpeed;*(3.6);round(1)}km/h
      

      Wo ist mein Denkfehler

      Gruß
      Dolomiti

      BBTownB Offline
      BBTownB Offline
      BBTown
      schrieb am zuletzt editiert von
      #2

      @Dolomiti
      wenn ich es richtig verstehe, dann gibt "round" immer nur ein ganzzahliges (also ohne Nachkommastellen) Ergebnis aus.

      Du könntest versuchen den errechneten Wert vor der Rundung mit 10 zu multiplizieren und nach der Rundung durch 10 zu dividieren um auf eine Nachkommastelle zu kommen.

      ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.1.0 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

      1 Antwort Letzte Antwort
      1
      • DolomitiD Offline
        DolomitiD Offline
        Dolomiti
        schrieb am zuletzt editiert von
        #3

        @BBTown
        In der Doku steht:

        round(N) - round the value with N places after point, e.g. 34.678;round(1) => 34.7

        Bei der Windgeschwindigkeit geht das ja auch.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

        BBTownB 1 Antwort Letzte Antwort
        0
        • DolomitiD Dolomiti

          @BBTown
          In der Doku steht:

          round(N) - round the value with N places after point, e.g. 34.678;round(1) => 34.7

          Bei der Windgeschwindigkeit geht das ja auch.

          BBTownB Offline
          BBTownB Offline
          BBTown
          schrieb am zuletzt editiert von BBTown
          #4

          @Dolomiti ich habe nicht in der Doku nachgeschaut, sondern per google nach "round" in Verbindung mit JavaScript gesucht .... wenn es sich in ioBroker spezifisch/atypisch verhält, dann passt meine Antwort natürlich nicht :sunglasses:

          hast Du meinen Vorschlag denn mal ausprobiert?

          Allgemein gäbe es unter JavaScript sonst noch "num.toFixed()"
          Ich weiss aber nicht ob dies auch in ioBroker Anwendung findet?!

          ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.1.0 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

          1 Antwort Letzte Antwort
          1
          • DolomitiD Dolomiti

            Hallo,

            ich habe zwei Temperaturen, die ich direkt in Vis voneinander subtrahieren möchte. Das funktioniert auch mit einem HTML-Widget mit folgendem EIntrag

            {t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2}
            

            Jetzt möchte ich das ganze auf 1 Nachkommastelle runden, da mir als Ergebnis manchmal 1.6000000000 o.ä. angezeigt wird. Das funktioniert aber so

            {t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2;round(1)}
            

            nicht. Dann bekomme ich 0 angezeigt.
            Bei meiner Windgeschwindigkeit funktioniert es mittels

            {openweathermap.0.forecast.current.windSpeed;*(3.6);round(1)}km/h
            

            Wo ist mein Denkfehler

            Gruß
            Dolomiti

            PeoplesP Offline
            PeoplesP Offline
            Peoples
            schrieb am zuletzt editiert von Peoples
            #5

            @Dolomiti

            versuch mal:

            {t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;(t1-t2).toFixed(1)}
            

            Sollte funktionieren. (Habs bei mir mit zwei Werten getestet da gehts)

            Ich beantworte keine Fragen zu Themen via PN

            1 Antwort Letzte Antwort
            2
            • DolomitiD Offline
              DolomitiD Offline
              Dolomiti
              schrieb am zuletzt editiert von Dolomiti
              #6

              @BBTown
              Das multiplizieren fuktioniert nicht bzw. ich scheitere schon an der richtigen Syntax.

              @Peoples
              Das funktioniert so. Danke

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

              BBTownB 1 Antwort Letzte Antwort
              0
              • DolomitiD Dolomiti

                @BBTown
                Das multiplizieren fuktioniert nicht bzw. ich scheitere schon an der richtigen Syntax.

                @Peoples
                Das funktioniert so. Danke

                BBTownB Offline
                BBTownB Offline
                BBTown
                schrieb am zuletzt editiert von
                #7

                @Dolomiti
                Wenn ich es richtig verstanden habe, dann ist das Ergebnis von toFixed ein String; falls Du im Anschluss weiter mit solchen Werten rechnen wollen würdest

                ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.1.0 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                1 Antwort Letzte Antwort
                0
                • DolomitiD Offline
                  DolomitiD Offline
                  Dolomiti
                  schrieb am zuletzt editiert von Dolomiti
                  #8

                  @BBTown
                  Hab ich auch grad gelesen. Alternativ geht evtl. toPrecision. Allerdings muss man hier die Vorkommastellen mit einbeziehen. Für mich is toFixed i.O., da ich die Differenz nur im Vis anzeigen möchte.

                  Danke für die Unterstützung

                  Edit: Hab grad noch mal nachgelesen und festegestellt, dass Round auf einen Integer rundet. W3schools. Falls also das Round aus der Vis-Doku und das oben beschriebene Round gleich funktionieren, stimmt die Vis-Doku nicht ganz und das kann nicht funktionieren.

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                  R 1 Antwort Letzte Antwort
                  0
                  • DolomitiD Dolomiti

                    @BBTown
                    Hab ich auch grad gelesen. Alternativ geht evtl. toPrecision. Allerdings muss man hier die Vorkommastellen mit einbeziehen. Für mich is toFixed i.O., da ich die Differenz nur im Vis anzeigen möchte.

                    Danke für die Unterstützung

                    Edit: Hab grad noch mal nachgelesen und festegestellt, dass Round auf einen Integer rundet. W3schools. Falls also das Round aus der Vis-Doku und das oben beschriebene Round gleich funktionieren, stimmt die Vis-Doku nicht ganz und das kann nicht funktionieren.

                    R Offline
                    R Offline
                    Ralf 8
                    schrieb am zuletzt editiert von
                    #9

                    Ich benutzte die Bindings in einem Html-Widget in Vis-2 und habe darin genau dasselbe Problem.
                    Leider funktioniert round im Binding anscheinend nur bei einfachen Ausdrücken,
                    obwohl die Doku https://github.com/ioBroker/ioBroker.vis#bindings-of-objects round als Möglichkeit nennt.

                    Hier funktioniert es, sogar mit Auswertung eines JSON im Binding:

                    {mqtt.0.Shelly-Pro-3EM.events.rpc; json(params.em:0.total_act_power); round(0)} Watt
                    

                    Diese beiden Versionen funktionieren NICHT, es kommt 0 heraus.
                    (die Zahl 166464.8 ist bei mir nur eine Korrektur, damit die Werte mit meinem Stromzähler übereinstimmen):

                    {wert: alias.0.ShellyPro3Em_Emdata_total_sum; (166464.8 + parseInt(wert)/1000); round(2)}
                    {wert: alias.0.ShellyPro3Em_Emdata_total_sum; parseInt(166464.8 + wert/1000); round(2)}
                    

                    Erste Lösung: toFixed sieht zunächst mal ganz gut aus:

                    {wert: alias.0.ShellyPro3Em_Emdata_total_sum; (166464.8 + parseInt(wert)/1000).toFixed(2)}
                    

                    ABER: toFixed ist unzuverlässig. Mal wird kaufmännisch gerundet, mal wird aber auch nur nach unten gerundet
                    Mit toFixed funktioniert das also mal und mal nicht …

                    Lösung, die bisher bei mir zuverlässig funktioniert:

                    {wert: alias.0.ShellyPro3Em_Emdata_total_sum; Math.round((166464.8 + wert/1000)*100)/100}
                    

                    Ich habe übrigens lange gesucht, bis ich herausgefunden habe, dass Binding im vis-2 im html-Widget funktioniert.
                    Damit habe ich viele Formatierungsprobleme in vis-2 durch Tabellen gelöst.

                    Für alle die das auch noch nicht wissen, hier eine Beispiel-Tabelle:

                    <table style="width:100%">
                      <tr>
                        <td style="color:#000000;width:60%; color: white"><b>Shelly Pro 3EM</b></td>
                        <td align="left">&nbsp;</td>
                      </tr> 
                    
                      <tr>
                        <td style="color:#000000">Gesamtleistung aktuell</td>
                        <td color="#ff0000">{mqtt.0.Shelly-Pro-3EM.events.rpc;json(params.em:0.total_act_power);round(0)} Watt</td>
                      </tr>
                      
                      <tr>
                        <td style="color:#000000">Zählerstand &emsp;<font color="grey">{0_userdata.0.Zaehlerstand_bei_Sonnenaufgang}</font></td>
                        <td color="#ff0000">{wert: alias.0.ShellyPro3Em_Emdata_total_sum; (166464.8 + parseInt(wert)/1000).toFixed(2)}</td>
                      </tr>
                    </table>
                    
                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    348

                    Online

                    32.7k

                    Benutzer

                    82.4k

                    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