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

                                      760
                                      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