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

                                        954
                                        Online

                                        31.9k
                                        Users

                                        80.1k
                                        Topics

                                        1.3m
                                        Posts

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