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. Skripten / Logik
  4. JavaScript
  5. JS mit Kommastellen

NEWS

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

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

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

JS mit Kommastellen

Geplant Angeheftet Gesperrt Verschoben JavaScript
20 Beiträge 3 Kommentatoren 665 Aufrufe 2 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.
  • 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
    schrieb am zuletzt editiert von
    #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 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

    Curtis777C 1 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von 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 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
          • 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
            schrieb am zuletzt editiert von
            #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 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

            paul53P 1 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #7

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

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

              CodierknechtC 1 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 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
                • 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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 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

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • CodierknechtC Codierknecht

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

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      1
                      • paul53P paul53

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

                        Wozu?

                        CodierknechtC Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von
                        #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 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

                        Curtis777C 1 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • Curtis777C Offline
                            Curtis777C Offline
                            Curtis777
                            schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @curtis777 sagte: der erste Teil klappt bereits

                                Mit Alias oder Skript?

                                Curtis777C Offline
                                Curtis777C Offline
                                Curtis777
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      1
                                      • paul53P paul53

                                        @curtis777 sagte: Warnung

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

                                        Curtis777C Offline
                                        Curtis777C Offline
                                        Curtis777
                                        schrieb am zuletzt editiert von
                                        #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 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

                                        475

                                        Online

                                        32.4k

                                        Benutzer

                                        81.5k

                                        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