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

                                          418
                                          Online

                                          31.9k
                                          Users

                                          80.1k
                                          Topics

                                          1.3m
                                          Posts

                                          3
                                          20
                                          341
                                          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