Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. JS mit Kommastellen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    JS mit Kommastellen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Curtis777
      Curtis777 last edited by

      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));
      
      Codierknecht paul53 2 Replies Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @Curtis777 last edited by

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

        Curtis777 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Curtis777 last edited by 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

          Codierknecht Curtis777 2 Replies Last reply Reply Quote 0
          • Curtis777
            Curtis777 @Codierknecht last edited by

            @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));
              
               
            });
            
            
            
            Codierknecht 1 Reply Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @Curtis777 last edited by Codierknecht

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

              1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @paul53 last edited by

                @paul53 sagte in JS mit Kommastellen:

                Einfacher, da ohne Skript: Alias

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

                paul53 1 Reply Last reply Reply Quote 0
                • Curtis777
                  Curtis777 @paul53 last edited by

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

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

                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @Curtis777 last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Codierknecht last edited by

                      @codierknecht sagte: kann er auch gleich rechnen

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

                      JSON.parse(val).VPV / 1000
                      
                      Codierknecht 1 Reply Last reply Reply Quote 3
                      • Codierknecht
                        Codierknecht Developer Most Active @paul53 last edited by

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

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Codierknecht last edited by

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

                          Wozu?

                          Codierknecht 1 Reply Last reply Reply Quote 1
                          • Codierknecht
                            Codierknecht Developer Most Active @paul53 last edited by

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

                            Curtis777 1 Reply Last reply Reply Quote 0
                            • Curtis777
                              Curtis777 @Codierknecht last edited by

                              @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 Reply Quote 0
                              • Curtis777
                                Curtis777 last edited by 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

                                paul53 2 Replies Last reply Reply Quote 0
                                • paul53
                                  paul53 @Curtis777 last edited by

                                  @curtis777 sagte: der erste Teil klappt bereits

                                  Mit Alias oder Skript?

                                  Curtis777 1 Reply Last reply Reply Quote 0
                                  • Curtis777
                                    Curtis777 @paul53 last edited by

                                    @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 Reply Quote 0
                                    • paul53
                                      paul53 @Curtis777 last edited by

                                      @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);
                                      
                                      Curtis777 1 Reply Last reply Reply Quote 0
                                      • Curtis777
                                        Curtis777 @paul53 last edited by

                                        @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

                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @Curtis777 last edited by

                                          @curtis777 sagte: Warnung

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

                                          Curtis777 1 Reply Last reply Reply Quote 1
                                          • Curtis777
                                            Curtis777 @paul53 last edited by

                                            @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 Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            386
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            20
                                            339
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo