Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. JS mit Kommastellen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

JS mit Kommastellen

Scheduled Pinned Locked Moved JavaScript
20 Posts 3 Posters 633 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Curtis777C Offline
    Curtis777C Offline
    Curtis777
    wrote on last edited by
    #1

    Liebe Profis,

    Ich habe ein Skript welches mir die Solarwerte permanent abholt und in Datenpunkte setzt.
    jetzt kommt leider statt 20,490V ein Wert von 20490 raus.

    wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?

     setState('eigene.0.SolaranlageVictron.VPV', (Spannung));
    
    CodierknechtC paul53P 2 Replies Last reply
    0
    • Curtis777C Curtis777

      Liebe Profis,

      Ich habe ein Skript welches mir die Solarwerte permanent abholt und in Datenpunkte setzt.
      jetzt kommt leider statt 20,490V ein Wert von 20490 raus.

      wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?

       setState('eigene.0.SolaranlageVictron.VPV', (Spannung));
      
      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      wrote on last edited by
      #2

      @curtis777
      Bisschen wenig Info, oder?

      Wo holt das Script die Datenpunkte her?
      Wie ist der DP eigene.0.SolaranlageVictron.VPV definiert?
      Was ist eigentlich eigene?
      Wo kommt (Spannung) her?

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

      Proxmox 8.2.4 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi + dies & das
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      Curtis777C 1 Reply Last reply
      0
      • Curtis777C Curtis777

        Liebe Profis,

        Ich habe ein Skript welches mir die Solarwerte permanent abholt und in Datenpunkte setzt.
        jetzt kommt leider statt 20,490V ein Wert von 20490 raus.

        wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?

         setState('eigene.0.SolaranlageVictron.VPV', (Spannung));
        
        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #3

        @curtis777 sagte: wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?

        setState('0_userdata.0.SolaranlageVictron.VPV', Spannung / 1000, true);
        

        Einfacher, da ohne Skript: Alias

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        CodierknechtC Curtis777C 2 Replies Last reply
        0
        • CodierknechtC Codierknecht

          @curtis777
          Bisschen wenig Info, oder?

          Wo holt das Script die Datenpunkte her?
          Wie ist der DP eigene.0.SolaranlageVictron.VPV definiert?
          Was ist eigentlich eigene?
          Wo kommt (Spannung) her?

          Curtis777C Offline
          Curtis777C Offline
          Curtis777
          wrote on last edited by
          #4

          @codierknecht Verzeihung,
          Dachte das ich hier nur ein / 1000 dazu mache.

          Das Skript holt die Daten aus einem String welcher per MQTT kommt und soll die einzelnen Werte aufteilen in Datenpunkte.

          on({id: 'mqtt.0.Solar.Victron.act.data', change: "any"}, function (obj) {
                  var Spannung
                  var Strom
                  var Yesterday
                  var Today
                  var Power 
             try {obj = JSON.parse(getState('mqtt.0.Solar.Victron.act.data').val);
             } catch (e) {
                     console.error('Cannot parse: ' + getState('mqtt.0.Solar.Victron.act.data').val);
                     return;
              }
             
             Spannung = obj.VPV;
             Strom = obj.CUR;
             
            
            setState('eigene.0.SolaranlageVictron.VPV', (Spannung));
            setState('eigene.0.SolaranlageVictron.Ladestrom', (Strom));
            
             
          });
          
          
          
          CodierknechtC 1 Reply Last reply
          0
          • Curtis777C Curtis777

            @codierknecht Verzeihung,
            Dachte das ich hier nur ein / 1000 dazu mache.

            Das Skript holt die Daten aus einem String welcher per MQTT kommt und soll die einzelnen Werte aufteilen in Datenpunkte.

            on({id: 'mqtt.0.Solar.Victron.act.data', change: "any"}, function (obj) {
                    var Spannung
                    var Strom
                    var Yesterday
                    var Today
                    var Power 
               try {obj = JSON.parse(getState('mqtt.0.Solar.Victron.act.data').val);
               } catch (e) {
                       console.error('Cannot parse: ' + getState('mqtt.0.Solar.Victron.act.data').val);
                       return;
                }
               
               Spannung = obj.VPV;
               Strom = obj.CUR;
               
              
              setState('eigene.0.SolaranlageVictron.VPV', (Spannung));
              setState('eigene.0.SolaranlageVictron.Ladestrom', (Strom));
              
               
            });
            
            
            
            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            wrote on last edited by Codierknecht
            #5

            @curtis777
            1.) Vor "Spannung" und "Strom" fehlt ein var
            2.) Die beiden Variablen brauchst Du nicht zu klammern

               var Spannung = parseFloat(obj.VPV);
               var Strom = parseFloat(obj.CUR);
            
              setState('eigene.0.SolaranlageVictron.VPV', Spannung / 1000);
              setState('eigene.0.SolaranlageVictron.Ladestrom', Strom);
            

            Du hast meine Frage damit aber noch nicht beantwortet: Was ist eigene?
            Eigentlich landen eigene DP unter 0_userdata.0

            Edit: Die Werte sollten zur Sicherheit noch in Fließkommazahlen gewandelt werden.

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

            Proxmox 8.2.4 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi + dies & das
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            1 Reply Last reply
            0
            • paul53P paul53

              @curtis777 sagte: wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?

              setState('0_userdata.0.SolaranlageVictron.VPV', Spannung / 1000, true);
              

              Einfacher, da ohne Skript: Alias

              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              wrote on last edited by
              #6

              @paul53 sagte in JS mit Kommastellen:

              Einfacher, da ohne Skript: Alias

              Wenn er das sowieso per Script auseinanderfummeln muss, kann er auch gleich rechnen 😉

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

              Proxmox 8.2.4 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi + dies & das
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              paul53P 1 Reply Last reply
              0
              • paul53P paul53

                @curtis777 sagte: wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?

                setState('0_userdata.0.SolaranlageVictron.VPV', Spannung / 1000, true);
                

                Einfacher, da ohne Skript: Alias

                Curtis777C Offline
                Curtis777C Offline
                Curtis777
                wrote on last edited by
                #7

                @paul53 genial,
                Hat funktioniert.
                Danke wie meinst du Alias?

                Kann der das von sich aus selbst aufteilen auf einzelne Datenpunkte ?

                CodierknechtC 1 Reply Last reply
                0
                • Curtis777C Curtis777

                  @paul53 genial,
                  Hat funktioniert.
                  Danke wie meinst du Alias?

                  Kann der das von sich aus selbst aufteilen auf einzelne Datenpunkte ?

                  CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  wrote on last edited by
                  #8

                  @curtis777 sagte in JS mit Kommastellen:

                  Kann der das von sich aus selbst aufteilen auf einzelne Datenpunkte ?

                  Aufteilen nicht - aber rechnen.
                  Aber da Du eh mit 'nem Script da ran musst, wäre das sinnbefreit.

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

                  Proxmox 8.2.4 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi + dies & das
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  1 Reply Last reply
                  0
                  • CodierknechtC Codierknecht

                    @paul53 sagte in JS mit Kommastellen:

                    Einfacher, da ohne Skript: Alias

                    Wenn er das sowieso per Script auseinanderfummeln muss, kann er auch gleich rechnen 😉

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #9

                    @codierknecht sagte: kann er auch gleich rechnen

                    Das kann er auch im Alias per "alias.read".

                    JSON.parse(val).VPV / 1000
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    CodierknechtC 1 Reply Last reply
                    3
                    • paul53P paul53

                      @codierknecht sagte: kann er auch gleich rechnen

                      Das kann er auch im Alias per "alias.read".

                      JSON.parse(val).VPV / 1000
                      
                      CodierknechtC Offline
                      CodierknechtC Offline
                      Codierknecht
                      Developer Most Active
                      wrote on last edited by
                      #10

                      @paul53
                      Das ist klar. Aber er braucht ja eh ein Script. Wozu dann noch einen Alias?

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

                      Proxmox 8.2.4 LXC|8 GB|Core i7-6700
                      HmIP|ZigBee|Tasmota|Unifi + dies & das
                      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                      paul53P 1 Reply Last reply
                      0
                      • CodierknechtC Codierknecht

                        @paul53
                        Das ist klar. Aber er braucht ja eh ein Script. Wozu dann noch einen Alias?

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #11

                        @codierknecht sagte: Aber er braucht ja eh ein Script.

                        Wozu?

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        CodierknechtC 1 Reply Last reply
                        1
                        • paul53P paul53

                          @codierknecht sagte: Aber er braucht ja eh ein Script.

                          Wozu?

                          CodierknechtC Offline
                          CodierknechtC Offline
                          Codierknecht
                          Developer Most Active
                          wrote on last edited by
                          #12

                          @paul53 sagte in JS mit Kommastellen:

                          @codierknecht sagte: Aber er braucht ja eh ein Script.

                          Wozu?

                          Stimmt! Ist mir gerade auch aufgefallen.

                          @Curtis777
                          Paul hat natürlich Recht. Du bräuchtest statt des Scriptes lediglich 2 Alias-Datenpunkte.
                          Die kannst Du sinnvoll benennen und über die Konvertierungsfunktion die Werte aus dem JSON lesen.

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

                          Proxmox 8.2.4 LXC|8 GB|Core i7-6700
                          HmIP|ZigBee|Tasmota|Unifi + dies & das
                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                          Curtis777C 1 Reply Last reply
                          0
                          • CodierknechtC Codierknecht

                            @paul53 sagte in JS mit Kommastellen:

                            @codierknecht sagte: Aber er braucht ja eh ein Script.

                            Wozu?

                            Stimmt! Ist mir gerade auch aufgefallen.

                            @Curtis777
                            Paul hat natürlich Recht. Du bräuchtest statt des Scriptes lediglich 2 Alias-Datenpunkte.
                            Die kannst Du sinnvoll benennen und über die Konvertierungsfunktion die Werte aus dem JSON lesen.

                            Curtis777C Offline
                            Curtis777C Offline
                            Curtis777
                            wrote on last edited by
                            #13

                            @codierknecht
                            es kommen hier natürlich noch mehr Werte dazu deshalb das Skript.
                            Ich kann euch leider nicht folgen.
                            Könnt ihr es für Dummies schreiben Bitte...

                            1 Reply Last reply
                            0
                            • Curtis777C Offline
                              Curtis777C Offline
                              Curtis777
                              wrote on last edited by Curtis777
                              #14

                              Ich bin gerade erst am Anfang.

                              Ich muss z.b. einen Wert umkonvertieren.
                              es kommt eine Ziffer von 1-5 raus und die ist natürlich nicht aussagekräftig für mich

                              1 = laden
                              2 = entladen
                              3 = float
                              ....

                              aber der erste Teil klappt bereits danke
                              cfb40859-1b18-4936-96c3-d506e0b2ce23-image.png

                              paul53P 2 Replies Last reply
                              0
                              • Curtis777C Curtis777

                                Ich bin gerade erst am Anfang.

                                Ich muss z.b. einen Wert umkonvertieren.
                                es kommt eine Ziffer von 1-5 raus und die ist natürlich nicht aussagekräftig für mich

                                1 = laden
                                2 = entladen
                                3 = float
                                ....

                                aber der erste Teil klappt bereits danke
                                cfb40859-1b18-4936-96c3-d506e0b2ce23-image.png

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #15

                                @curtis777 sagte: der erste Teil klappt bereits

                                Mit Alias oder Skript?

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                Curtis777C 1 Reply Last reply
                                0
                                • paul53P paul53

                                  @curtis777 sagte: der erste Teil klappt bereits

                                  Mit Alias oder Skript?

                                  Curtis777C Offline
                                  Curtis777C Offline
                                  Curtis777
                                  wrote on last edited by
                                  #16

                                  @paul53 mit deinem Skript.
                                  Wie gesagt bin nicht so fit in dem Thema wie ihr schau mir das mit den Alias gerade nebenbei an

                                  1 Reply Last reply
                                  0
                                  • Curtis777C Curtis777

                                    Ich bin gerade erst am Anfang.

                                    Ich muss z.b. einen Wert umkonvertieren.
                                    es kommt eine Ziffer von 1-5 raus und die ist natürlich nicht aussagekräftig für mich

                                    1 = laden
                                    2 = entladen
                                    3 = float
                                    ....

                                    aber der erste Teil klappt bereits danke
                                    cfb40859-1b18-4936-96c3-d506e0b2ce23-image.png

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by
                                    #17

                                    @curtis777 sagte:

                                    1 = laden
                                    2 = entladen
                                    3 = float

                                        let status = 'ungültig';
                                        switch(obj.STATE) {
                                            case 1: status = 'laden'; break;
                                            case 2: status = 'entladen'; break;
                                            // usw.
                                        }
                                        setState('0_userdata.0.SolaranlageVictron.Status', status, true);
                                    

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                    Curtis777C 1 Reply Last reply
                                    0
                                    • paul53P paul53

                                      @curtis777 sagte:

                                      1 = laden
                                      2 = entladen
                                      3 = float

                                          let status = 'ungültig';
                                          switch(obj.STATE) {
                                              case 1: status = 'laden'; break;
                                              case 2: status = 'entladen'; break;
                                              // usw.
                                          }
                                          setState('0_userdata.0.SolaranlageVictron.Status', status, true);
                                      
                                      Curtis777C Offline
                                      Curtis777C Offline
                                      Curtis777
                                      wrote on last edited by
                                      #18

                                      @paul53 said in JS mit Kommastellen:

                                      setState('0_userdata.0.SolaranlageVictron.Status', status, true);

                                      genial welches Wissen ihr in dem Punkt habt...
                                      er überträgt die Werte soweit allerdings wirft er einen Fehler / Warnung

                                      3036debe-1e47-49b0-bed0-db5b59fd535b-image.png

                                      paul53P 1 Reply Last reply
                                      0
                                      • Curtis777C Curtis777

                                        @paul53 said in JS mit Kommastellen:

                                        setState('0_userdata.0.SolaranlageVictron.Status', status, true);

                                        genial welches Wissen ihr in dem Punkt habt...
                                        er überträgt die Werte soweit allerdings wirft er einen Fehler / Warnung

                                        3036debe-1e47-49b0-bed0-db5b59fd535b-image.png

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        wrote on last edited by
                                        #19

                                        @curtis777 sagte: Warnung

                                        Ändere den Typ des DP "Status" von Zahl("number") in Zeichenkette("string").

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                        Curtis777C 1 Reply Last reply
                                        1
                                        • paul53P paul53

                                          @curtis777 sagte: Warnung

                                          Ändere den Typ des DP "Status" von Zahl("number") in Zeichenkette("string").

                                          Curtis777C Offline
                                          Curtis777C Offline
                                          Curtis777
                                          wrote on last edited by
                                          #20

                                          @paul53

                                          Danke dir,
                                          Es läuft....

                                          Wie du von der minimalen Fehlermeldung auf die Ursache kommst ist mir noch schleierhaft.
                                          Aber ich danke dir Vielmals für deine Rasche und vorallem tolle Hilfe!

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          251

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe