Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Werte auslesen und addieren / wie dann anzeigen

    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

    Werte auslesen und addieren / wie dann anzeigen

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

      @GTV Vorschlag als Javascript:

      const idAudio = 'sonoff.0.AUDIO.ENERGY_Total';
      const idEdv   = 'sonoff.0.EDV.ENERGY_Total';
      const idSumme = 'ENERGY_Total.Summe';
      
      // Variablen für zu addierende Werte deklarieren und für Skriptstart initialisieren
      var audio = getState(idAudio).val;
      var edv   = getState(idEdv).val;
      
      // Datenpunkt für Summe erzeugen
      createState(idSumme, 0, {type: 'number', unit: 'kWh'});
      
      function summe() {
         setState(idSumme, audio + edv, true); // Summe in Datenpunkt schreiben
      }
      
      setTimeout(summe, 200); // Skriptstart
      
      // Reaktion bei Wertänderung
      on(idAudio, function(dp) {
         audio = dp.state.val;
         summe();
      });
      on(idEdv, function(dp) {
         edv = dp.state.val;
         summe();
      });
      
      1 Reply Last reply Reply Quote 0
      • G
        GTV last edited by

        Ja sowas verstehe ich schon ehr : ) Blöde Frage den code als Common oder Global anlegen ? Und wie stelle ich das Ergebniss dann im VIS da ?

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

          @GTV sagte:

          code als Common oder Global

          Das Skript unter der Gruppe common oder unter einer selbst erstellten Gruppe erstellen. Auf keinen Fall unter der Gruppe global !!

          1 Reply Last reply Reply Quote 0
          • G
            GTV last edited by

            const idAudio = 'sonoff.0.AUDIO.ENERGY_Total';
            
            const idEdv  = 'sonoff.0.EDV.ENERGY_Total';
            
            const idHZ  = 'sonoff.0.HZ.ENERGY_Total';
            
            const idSumme = 'ENERGY_Total.Summe';
            
            
            // Variablen für zu addierende Werte deklarieren und für Skriptstart initialisieren
            
            var audio = getState(idAudio).val;
            
            var edv    = getState(idEdv).val;
            
            var hz    = getState(idHZ).val;
            
            
            // Datenpunkt für Summe erzeugen
            
            createState(idSumme, 0, {type: 'number', unit: 'kWh'});
            
            function summe() {
            
               setState(idSumme, audio + edv + hz, true); // Summe in Datenpunkt schreiben
            
            }
            
             
            
            summe(); // Skriptstart
            
             
            
            // Reaktion bei Wertänderung
            
            on(idAudio, function(dp) {
            
               audio = dp.state.val;
            
               summe();
            
            });
            
            on(idEdv, function(dp) {
            
               edv = dp.state.val;
            
               summe();
            
            });
            

            Soweit habe ich das jetzt ... In Zeile 25 habe ich nach True eine ) gesetzt. beim starten bekomme ich noch

            18:36:25.109	error	javascript.0 script.js.common.KWH1 compile failed: at script.js.common.KWH1:25
            

            Kannst du da bitte noch mal rauf schauen...

            1 Reply Last reply Reply Quote 0
            • G
              GTV last edited by

              Sorry zeile 25 ) an falscher Stelle gesetzt.

              Jetzt kommt noch eine Meldung

              18:44:17.263	error	javascript.0 script.js.common.KWH1 compile failed: at script.js.common.KWH1:22
              

              Da steht ja aber gar nichts drin..

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

                Mit Zeile 22 kann ich auch nichts anfangen. Da Du setTimeout() beim Skriptstart weggelassen hast, bringt setState() beim allerersten Skriptstart einen Fehler, da der zugehörige Datenpunkt noch nicht existiert (dauert etwas).

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

                  @GTV Habe Dein Skript getestet: Compiler-Fehler kommen bei mir nicht. Lösche mal die überflüssigen Leerzeilen.

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

                    @paul53 Habe jetzt mal alles rausgeworfen.. es kommen zwar immer noch Error Meldungen aber der Code läuft..

                    const idAudio = 'sonoff.0.AUDIO.ENERGY_Total';
                    const idEdv   = 'sonoff.0.EDV.ENERGY_Total';
                    const idHz    = 'sonoff.0.HZ.ENERGY_Total';
                    const idKh    = 'sonoff.0.Kuehlschrank.ENERGY_Total';
                    const idSumme = 'ENERGY_Total.Summe';
                    var audio = getState(idAudio).val;
                    var edv   = getState(idEdv).val;
                    var hz    = getState(idHz).val;
                    var kh    = getState(idKh).val;
                    createState(idSumme, 0, {type: 'number', unit: 'kWh'});
                    var sum = audio + edv + hz + kh
                    function summe() {setState(idSumme, sum,true);}
                    setTimeout(summe, 200);
                    on(idAudio, function(dp) {
                       audio = dp.state.val;
                       summe();
                    });
                    on(idEdv, function(dp) {
                       edv = dp.state.val;
                       summe();
                    });
                    on(idHz, function(dp) {
                       hz = dp.state.val;
                       summe();
                    });
                    on(idKh, function(dp) {
                       kh = dp.state.val;
                       summe();
                    });
                    

                    Vielen Dank für deine Hilfe !!!

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

                      @GTV Die Summenbildung funktioniert so nur einmal bei Skriptstart. Richtig:

                      function summe() {
                         var sum = audio + edv + hz + kh;
                         setState(idSumme, sum, true);
                      }
                      
                      G 1 Reply Last reply Reply Quote 0
                      • G
                        GTV @paul53 last edited by

                        @paul53 Danke ! Schon geändert. Muss noch viel lernen bei JS.... 😉

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        809
                        Online

                        31.8k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        blockly javascript node-red
                        3
                        13
                        5873
                        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