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. W in Kw umrechnen

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    249

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    9
    1
    240

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

W in Kw umrechnen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
21 Beiträge 6 Kommentatoren 2.1k Aufrufe 5 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.
  • OliverIOO OliverIO

    @romestylez

    Nur VIS Lösung mittels Binding

    parseInt = wandelt möglichen String in Number um
    toFixed(1) = rundet Fließkommastelle auf eine Nachkommastelle
    xx ? true : false = ternäre operator, also sowas wie if xx=wahr then true else false

    {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" w " : (parseInt(val)/1000).toFixed(1)+" kW"}
    
    R Offline
    R Offline
    romestylez
    schrieb am zuletzt editiert von
    #12

    @oliverio hat perfekt funktioniert vielen vielen Dank ! Daraus kann ich noch Wege für andere Werte ableiten mega hilfreich :)

    1 Antwort Letzte Antwort
    0
    • OliverIOO OliverIO

      @romestylez

      Nur VIS Lösung mittels Binding

      parseInt = wandelt möglichen String in Number um
      toFixed(1) = rundet Fließkommastelle auf eine Nachkommastelle
      xx ? true : false = ternäre operator, also sowas wie if xx=wahr then true else false

      {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" w " : (parseInt(val)/1000).toFixed(1)+" kW"}
      
      MartinPM Offline
      MartinPM Offline
      MartinP
      schrieb am zuletzt editiert von MartinP
      #13

      Ich finde ja das Rundungs-Verhalten von toFixed() etwas merkwürdig ...

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

      Ist aber wahrscheinlich ein Fehler in der Dokumentation (in Zeile 10 müsste meiner Meinung nach auf 2.6 aufgerundet werden):

      const numObj = 12345.6789;
      
      numObj.toFixed(); // '12346'; rounding, no fractional part
      numObj.toFixed(1); // '12345.7'; it rounds up
      numObj.toFixed(6); // '12345.678900'; additional zeros
      (1.23e20).toFixed(2); // '123000000000000000000.00'
      (1.23e-10).toFixed(2); // '0.00'
      (2.34).toFixed(1); // '2.3'
      (2.35).toFixed(1); // '2.4'; it rounds up
      (2.55).toFixed(1); // '2.5'
      // it rounds down as it can't be represented exactly by a float and the
      // closest representable float is lower
      (2.449999999999999999).toFixed(1); // '2.5'
      // it rounds up as it's less than Number.EPSILON away from 2.45.
      // This literal actually encodes the same number value as 2.45
      
      (6.02 * 10 ** 23).toFixed(50); // 6.019999999999999e+23; large numbers still use exponential notation
      
      

      EDIT: Hab es getestet, funktioniert wie dokumentiert:

      javascript.0
      	2024-07-05 11:36:40.375	info	script.js.Fritzbox.Tester: Rundung 2.55 auf 1 Nachkommastelle:2.5
      javascript.0
      	2024-07-05 11:36:40.375	info	script.js.Fritzbox.Tester: Rundung 2.551 auf 1 Nachkommastelle:2.6
      javascript.0
      	2024-07-05 11:36:40.375	info	script.js.Fritzbox.Tester: Rundung 2.65 auf 1 Nachkommastelle:2.6
      
      

      Hier noch der Code:

      log('Rundung 2.55 auf 1 Nachkommastelle:' + (2.55).toFixed(1));
      log('Rundung 2.551 auf 1 Nachkommastelle:' + (2.551).toFixed(1));
      log('Rundung 2.65 auf 1 Nachkommastelle:' + (2.65).toFixed(1));
      

      Hier wird wohl symmetrisch und nicht kaufmännisch gerundet:
      https://de.wikipedia.org/wiki/Rundung#Symmetrisches_Runden

      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
      Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
      Linux pve 6.17.9-1-pve
      6 GByte RAM für den Container
      Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
      Remote-Access über Wireguard der Fritzbox

      OliverIOO 1 Antwort Letzte Antwort
      0
      • MartinPM MartinP

        Ich finde ja das Rundungs-Verhalten von toFixed() etwas merkwürdig ...

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

        Ist aber wahrscheinlich ein Fehler in der Dokumentation (in Zeile 10 müsste meiner Meinung nach auf 2.6 aufgerundet werden):

        const numObj = 12345.6789;
        
        numObj.toFixed(); // '12346'; rounding, no fractional part
        numObj.toFixed(1); // '12345.7'; it rounds up
        numObj.toFixed(6); // '12345.678900'; additional zeros
        (1.23e20).toFixed(2); // '123000000000000000000.00'
        (1.23e-10).toFixed(2); // '0.00'
        (2.34).toFixed(1); // '2.3'
        (2.35).toFixed(1); // '2.4'; it rounds up
        (2.55).toFixed(1); // '2.5'
        // it rounds down as it can't be represented exactly by a float and the
        // closest representable float is lower
        (2.449999999999999999).toFixed(1); // '2.5'
        // it rounds up as it's less than Number.EPSILON away from 2.45.
        // This literal actually encodes the same number value as 2.45
        
        (6.02 * 10 ** 23).toFixed(50); // 6.019999999999999e+23; large numbers still use exponential notation
        
        

        EDIT: Hab es getestet, funktioniert wie dokumentiert:

        javascript.0
        	2024-07-05 11:36:40.375	info	script.js.Fritzbox.Tester: Rundung 2.55 auf 1 Nachkommastelle:2.5
        javascript.0
        	2024-07-05 11:36:40.375	info	script.js.Fritzbox.Tester: Rundung 2.551 auf 1 Nachkommastelle:2.6
        javascript.0
        	2024-07-05 11:36:40.375	info	script.js.Fritzbox.Tester: Rundung 2.65 auf 1 Nachkommastelle:2.6
        
        

        Hier noch der Code:

        log('Rundung 2.55 auf 1 Nachkommastelle:' + (2.55).toFixed(1));
        log('Rundung 2.551 auf 1 Nachkommastelle:' + (2.551).toFixed(1));
        log('Rundung 2.65 auf 1 Nachkommastelle:' + (2.65).toFixed(1));
        

        Hier wird wohl symmetrisch und nicht kaufmännisch gerundet:
        https://de.wikipedia.org/wiki/Rundung#Symmetrisches_Runden

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von
        #14

        @martinp

        dann so

        {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" w " : Math.round(parseInt(val)/100)/10+" kW"}
        

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        MartinPM 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @martinp

          dann so

          {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" w " : Math.round(parseInt(val)/100)/10+" kW"}
          
          MartinPM Offline
          MartinPM Offline
          MartinP
          schrieb am zuletzt editiert von MartinP
          #15

          @oliverio oder so (bei der Einheit Watt gab es auch noch einen Tippfehler)

          {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" W" : (parseInt(val+10)/1000).toFixed(1)+" kW"} 
          

          Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
          Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
          Linux pve 6.17.9-1-pve
          6 GByte RAM für den Container
          Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
          Remote-Access über Wireguard der Fritzbox

          R OliverIOO 2 Antworten Letzte Antwort
          0
          • MartinPM MartinP

            @oliverio oder so (bei der Einheit Watt gab es auch noch einen Tippfehler)

            {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" W" : (parseInt(val+10)/1000).toFixed(1)+" kW"} 
            
            R Offline
            R Offline
            romestylez
            schrieb am zuletzt editiert von romestylez
            #16

            @martinp damit zeigt er aber nicht 1.X kW an sondern 100.6 etc.

            3a0d1bbf-de1c-4328-b5b9-892b27e3f22d-image.png

            L 1 Antwort Letzte Antwort
            0
            • R romestylez

              @martinp damit zeigt er aber nicht 1.X kW an sondern 100.6 etc.

              3a0d1bbf-de1c-4328-b5b9-892b27e3f22d-image.png

              L Offline
              L Offline
              legro
              schrieb am zuletzt editiert von legro
              #17

              @romestylez

              Losgelöst von deinem konkreten Beispiel eine eine weitere Lösung, die rein im Browser läuft, wenn die View angezeigt wird. Sie mag dir weitere Ideen liefern, wie du derartige Vorhaben in die Tat umsetzen kannst.

              cecc4de1-5c49-4964-bb73-3dbc8a91eb39-image.png

              {a:e3oncan.0.Vitocal.tree.0565_EnergyConsumptionDomesticHotWater.CurrentYear;b:e3oncan.0.Vitocal.tree.0548_EnergyConsumptionCentralHeating.CurrentYear;parseFloat((a*1+b*1)/1000).toFixed(1).replace(".", ",")} KWh
              

              Erläuterungen ..

              Es wird die Summe für den Energieverbrauch für Warmwasser und Heizen gebildet und angzeigt.

              • Zunächst werden diese beiden Werte, welche die verbrauchten Wh enthalten, in den Variablen a und b abgelegt
              • Anschließend erfolgt die Addition a * 1 + b * 1 und die Division durch 1000 dividiert, um Wh in KWh umzurechnen; hierbei ist die Multiplikation mit 1 erforderlich, weil die Wert in a und b als Strings - warum auch immer - abgelegt wurden. (Alternativ wäre auch eine sog. Typumwandlung mittels eines sog. Cast möglich.)
              • Mittels der Methoden von parseFloat (bzw. String) werden die Nachkommastellen definiert (toFixed) und der in JavaScript üblicherweise vorhandene Dezimalpunkt durch ein Komma ersetzt (replace).

              Wie du siehst, kann man ein an sich einfaches Problem beliebig (kompliziert) lösen, wobei es so manchen Stolperstein aus dem Weg zu räumen gilt.😃

              Viele Spaß beim Basteln.

              Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

              1 Antwort Letzte Antwort
              1
              • MartinPM MartinP

                @oliverio oder so (bei der Einheit Watt gab es auch noch einen Tippfehler)

                {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" W" : (parseInt(val+10)/1000).toFixed(1)+" kW"} 
                
                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #18

                @martinp sagte in W in Kw umrechnen:

                {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" W" : (parseInt(val+10)/1000).toFixed(1)+" kW"}

                sehr gut du hast meinen testfehler gefunden
                warum +10?
                das ist nicht das gleiche wie ich gepostet habe.
                da ist noch toFixed drin.
                Im 2. Beispiel habe ich toFixed nicht mehr verwendet.

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                MartinPM 1 Antwort Letzte Antwort
                1
                • OliverIOO OliverIO

                  @martinp sagte in W in Kw umrechnen:

                  {val:0_userdata.0.watt;parseInt(val)<1000 ? parseInt(val)+" W" : (parseInt(val+10)/1000).toFixed(1)+" kW"}

                  sehr gut du hast meinen testfehler gefunden
                  warum +10?
                  das ist nicht das gleiche wie ich gepostet habe.
                  da ist noch toFixed drin.
                  Im 2. Beispiel habe ich toFixed nicht mehr verwendet.

                  MartinPM Offline
                  MartinPM Offline
                  MartinP
                  schrieb am zuletzt editiert von MartinP
                  #19

                  @oliverio said in W in Kw umrechnen:

                  sehr gut du hast meinen testfehler gefunden
                  warum +10?
                  das ist nicht das gleiche wie ich gepostet habe.
                  da ist noch toFixed drin.
                  Im 2. Beispiel habe ich toFixed nicht mehr verwendet.

                  Das war etwas aus dem Ärmel geschüttelt

                  Das ist der Rechenweg

                  (parseInt(val+10)/1000).toFixed(1)
                  

                  Knackpunkt ist das Verhalten auf der "Hälfte" zwischen zwei Zahlenwerten

                  1550 Watt wird beim "mathematischen Runden" abgerundet, beim "Kaufmännischen Runden" aufgerundet.

                  Wenn man auf den Wert 10 Watt draufschlägt (die zweite Nachkommastelle soll bei der Umrechnung auf kWh gerundet werden) sollte das für ein Ergebnis entsprechend "kaufmännischem Runden" sorgen...

                  Interessant wird das Verhalten sicherlich bei negativen Werten ... Habe das nicht getestet ...

                  Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                  Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                  Linux pve 6.17.9-1-pve
                  6 GByte RAM für den Container
                  Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                  Remote-Access über Wireguard der Fritzbox

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • MartinPM MartinP

                    @oliverio said in W in Kw umrechnen:

                    sehr gut du hast meinen testfehler gefunden
                    warum +10?
                    das ist nicht das gleiche wie ich gepostet habe.
                    da ist noch toFixed drin.
                    Im 2. Beispiel habe ich toFixed nicht mehr verwendet.

                    Das war etwas aus dem Ärmel geschüttelt

                    Das ist der Rechenweg

                    (parseInt(val+10)/1000).toFixed(1)
                    

                    Knackpunkt ist das Verhalten auf der "Hälfte" zwischen zwei Zahlenwerten

                    1550 Watt wird beim "mathematischen Runden" abgerundet, beim "Kaufmännischen Runden" aufgerundet.

                    Wenn man auf den Wert 10 Watt draufschlägt (die zweite Nachkommastelle soll bei der Umrechnung auf kWh gerundet werden) sollte das für ein Ergebnis entsprechend "kaufmännischem Runden" sorgen...

                    Interessant wird das Verhalten sicherlich bei negativen Werten ... Habe das nicht getestet ...

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #20

                    @martinp

                    warum hälst du dich noch mit toFixed auf?
                    Nach dem prüfen in der Dokumentation ist mir die Existenzberechtigung von toFixed nicht mehr so ganz klar, da nach ECMA-Spezifikation immer in Richtung der nächstgelegenen Dezimalstelle gerundet wird. Also 1.0-1.5 auf 1 und 1.6-1.9 auf 2.
                    Math.round (was ich in der 2. Lösung verwendet habe, rundet richtig kaufmännisch.
                    Nachteil ist, dass man die Anzahl der gewünschten Nachkommastellen nicht angeben kann.
                    Das kann man dann aber über 2-stufige teilen wieder ausgleichen, also

                    1240 / 100 = 12,40, nach runden mit Math.round = 12
                    1250 / 100 = 12,50 nach runden mit Math.round = 13

                    12/10 = 1,2
                    13/10 = 1,3

                    kleiner edge case, wenn als gerundetes ergebnis ein ?.0 rauskommt, also 1.0, 2.0 etc,
                    dann wird dir das .0 nicht angezeigt. wenn du auch da eine konsistente anzeige haben willst, dann kannst du dort wieder das toFixed einsetzen. Da die Zahl ja schon gerundet ist, verursacht das kein Problem mehr.

                    {val:0_userdata.0.testFolder.test;parseInt(val)<1000 ? parseInt(val)+" w " : (Math.round(parseInt(val)/100)/10).toFixed(1)+" kW"}

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    MartinPM 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @martinp

                      warum hälst du dich noch mit toFixed auf?
                      Nach dem prüfen in der Dokumentation ist mir die Existenzberechtigung von toFixed nicht mehr so ganz klar, da nach ECMA-Spezifikation immer in Richtung der nächstgelegenen Dezimalstelle gerundet wird. Also 1.0-1.5 auf 1 und 1.6-1.9 auf 2.
                      Math.round (was ich in der 2. Lösung verwendet habe, rundet richtig kaufmännisch.
                      Nachteil ist, dass man die Anzahl der gewünschten Nachkommastellen nicht angeben kann.
                      Das kann man dann aber über 2-stufige teilen wieder ausgleichen, also

                      1240 / 100 = 12,40, nach runden mit Math.round = 12
                      1250 / 100 = 12,50 nach runden mit Math.round = 13

                      12/10 = 1,2
                      13/10 = 1,3

                      kleiner edge case, wenn als gerundetes ergebnis ein ?.0 rauskommt, also 1.0, 2.0 etc,
                      dann wird dir das .0 nicht angezeigt. wenn du auch da eine konsistente anzeige haben willst, dann kannst du dort wieder das toFixed einsetzen. Da die Zahl ja schon gerundet ist, verursacht das kein Problem mehr.

                      {val:0_userdata.0.testFolder.test;parseInt(val)<1000 ? parseInt(val)+" w " : (Math.round(parseInt(val)/100)/10).toFixed(1)+" kW"}

                      MartinPM Offline
                      MartinPM Offline
                      MartinP
                      schrieb am zuletzt editiert von
                      #21

                      @oliverio said in W in Kw umrechnen:

                      @martinp
                      warum hälst du dich noch mit toFixed auf?

                      Ist vielleicht eine Berufskrankheit: Meine Programmiertätigkeit begann im Embedded Bereich, und mit Assembler und C/C++.

                      Da hat man sich angewöhnt, für jede Zeile Code zu bewertet, was sie für Ressourcen verbrauchen wird ...

                      Bei Deiner Lösung, sind es zwei Divisionen, bei mir eine Addition und eine Division.
                      Ist aber zugegeben ziemlich albern, da man gar nicht weiß, was da in den Aufrufen von toFixed() bzw. Round() so passiert .

                      Bei Javascript im Browser gäbe es da eher zu beachten, dass man nicht zu viele Bibliotheken nachlädt, damit das Laden der Webseite nicht zu lange dauert.

                      Das ist hier aber sicherlich kein Aspekt, der bei node.JS Code ernsthaft berücksichtigt werden muss.

                      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                      Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                      Linux pve 6.17.9-1-pve
                      6 GByte RAM für den Container
                      Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                      Remote-Access über Wireguard der Fritzbox

                      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

                      412

                      Online

                      32.8k

                      Benutzer

                      82.8k

                      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