Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Probleme beim Addieren (aber erst seit kurzem - ging schon)

    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

    Probleme beim Addieren (aber erst seit kurzem - ging schon)

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

      Anbei ein simples Rechenskript welches ich schon einige Zeit im Einsatz habe.

      createState('Strom.Summe_Nachzahlung_Erstattung');
      
      function Differenz(obj) {                                // 
           var Strom = getState("hm-rega.0.2169").val;
           if (Strom > 0) {
              log("---> Ersattung Strom: " + Strom + " EURO", "info");
          } else { 
              log("---> Nachzahlung Strom: " + Strom + " EURO", "info");
          }    
          var Wasser = getState("javascript.0.Wasser.Differenz"/*Wasser.Differenz*/).val;
            if (Wasser > 0) {
              log("---> Ersattung Wasser: " + Wasser + " EURO", "info");
          } else { 
              log("---> Nachzahlung Wasser: " + Wasser + " EURO", "info");
          }
          var Solar = getState("hm-rega.0.7362"/*Strom_1.8.2_Über-Unterdeckung Verkauf*/).val;
            if (Solar > 0) {
              log("---> Ersattung Solar: " + Solar + " EURO", "info");
          } else { 
              log("---> Nachzahlung Solar: " + Solar + " EURO", "info");
          }    
          var Summe = Strom.val + Solar.val; 
          setState('Strom.Summe_Nachzahlung_Erstattung', Summe);
           if (Summe > 0) {
              log("---> Ersattung: " + Summe + " EURO", "info");
          } else { 
              log("---> Nachzahlung: " + Summe + " EURO", "info");
      
          }    
      }
      on("javascript.0.Wasser.Differenz"/*Wasser.Differenz*/, function() {             
         log("===>Ausgelöst durch Änderung Wasser!");
         Differenz();
      });
      on("hm-rega.0.7362"/*Strom_1.8.2_Über-Unterdeckung Verkauf*/, function() {             
         log("===>Ausgelöst durch Änderung Strom!");
         Differenz();
      });
      schedule("*/10 * * * *", function () {                                                    //oder!! soll entweder ausgelöst werden alle 10 Minuten
         log("===>Will be triggered every 10 minutes!"); 
         Differenz();
      });
      
      

      Hat auch wochenlang gut funktioniert, doch jetzt bekomme ich folgenden Fehler

      javascript-0	2015-06-14 20:20:01	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Nachzahlung: NaN EURO
      javascript-0	2015-06-14 20:20:00	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Ersattung Solar: 127.88 EURO
      javascript-0	2015-06-14 20:20:00	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Nachzahlung Wasser: NaN EURO
      javascript-0	2015-06-14 20:20:00	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Nachzahlung Strom: -279.05 EURO
      

      Summe wird grad ohne Wasser gemacht, also aus -279.05 + 127.88. Bekomme aber NaN EURO.

      Hat einer ne Idee? Oder kann sich es mal jemand ansehen ob da doch ein Fehler drin ist? Weis auch nicht ob sich was am System geändert hat. Fehkt hier ein Update? Habe heute Javaskript auf 0.4.5 aber gleicher Fehler

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

        @HKF8770:

        Anbei ein simples Rechenskript welches ich schon einige Zeit im Einsatz habe.

        Hat auch wochenlang gut funktioniert, doch jetzt bekomme ich folgenden Fehler

        javascript-0	2015-06-14 20:20:01	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Nachzahlung: NaN EURO
        javascript-0	2015-06-14 20:20:00	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Ersattung Solar: 127.88 EURO
        javascript-0	2015-06-14 20:20:00	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Nachzahlung Wasser: NaN EURO
        javascript-0	2015-06-14 20:20:00	info	script.js.Summe_Solar_-_Wasser_-_PV: ---> Nachzahlung Strom: -279.05 EURO
        

        Summe wird grad ohne Wasser gemacht, also aus -279.05 + 127.88. Bekomme aber NaN EURO.

        Hat einer ne Idee? Oder kann sich es mal jemand ansehen ob da doch ein Fehler drin ist? Weis auch nicht ob sich was am System geändert hat. Fehkt hier ein Update? Habe heute Javaskript auf 0.4.5 aber gleicher Fehler `

        Momentan Wasser hat kein Wert und bei der Berechnung der Summe ".val" ist überflüssig.

        Was gibt bei dir "log(JSON.stringify(getState("javascript.0.Wasser.Differenz"/Wasser.Differenz/)));" aus?

        createState('Strom.Summe_Nachzahlung_Erstattung');
        
        function Differenz(obj) {                                // 
             var Strom = getState("hm-rega.0.2169").val;
             if (Strom > 0) {
                log("---> Ersattung Strom: " + Strom + " EURO", "info");
            } else { 
                log("---> Nachzahlung Strom: " + Strom + " EURO", "info");
            }    
            var Wasser = getState("javascript.0.Wasser.Differenz"/*Wasser.Differenz*/).val;
        	log(JSON.stringify(getState("javascript.0.Wasser.Differenz"/*Wasser.Differenz*/)));
              if (Wasser > 0) {
                log("---> Ersattung Wasser: " + Wasser + " EURO", "info");
            } else { 
                log("---> Nachzahlung Wasser: " + Wasser + " EURO", "info");
            }
            var Solar = getState("hm-rega.0.7362"/*Strom_1.8.2_Über-Unterdeckung Verkauf*/).val;
              if (Solar > 0) {
                log("---> Ersattung Solar: " + Solar + " EURO", "info");
            } else { 
                log("---> Nachzahlung Solar: " + Solar + " EURO", "info");
            }    
            var Summe = Strom + Solar; 
            setState('Strom.Summe_Nachzahlung_Erstattung', Summe);
             if (Summe > 0) {
                log("---> Ersattung: " + Summe + " EURO", "info");
            } else { 
                log("---> Nachzahlung: " + Summe + " EURO", "info");
        
            }    
        }
        on("javascript.0.Wasser.Differenz"/*Wasser.Differenz*/, function() {             
           log("===>Ausgelöst durch Änderung Wasser!");
           Differenz();
        });
        on("hm-rega.0.7362"/*Strom_1.8.2_Über-Unterdeckung Verkauf*/, function() {             
           log("===>Ausgelöst durch Änderung Strom!");
           Differenz();
        });
        schedule("*/10 * * * *", function () {                                                    //oder!! soll entweder ausgelöst werden alle 10 Minuten
           log("===>Will be triggered every 10 minutes!"); 
           Differenz();
        });
        
        1 Reply Last reply Reply Quote 0
        • H
          HKF8770 last edited by

          Im Log stehen folgende Meldungen.

          javascript-0	2015-06-15 18:04:00	info	script.js.Script1: ---> Nachzahlung: -148.76 EURO
          javascript-0	2015-06-15 18:04:00	info	script.js.Script1: ---> Ersattung Solar: 126.88 EURO
          javascript-0	2015-06-15 18:04:00	info	script.js.Script1: ---> Nachzahlung Wasser: NaN EURO
          javascript-0	2015-06-15 18:04:00	info	script.js.Script1: {"val":"NaN","ack":false,"ts":1434312489,"from":"system.adapter.javascript.0","lc":1434312483}
          javascript-0	2015-06-15 18:04:00	info	script.js.Script1: ---> Nachzahlung Strom: -275.64 EURO
          javascript-0	2015-06-15 18:04:00	info	script.js.Script1: ===>Will be triggered every 1 minutes!
          javascript-0	2015-06-15 18:03:45	info	script.js.Script1: registered 2 subscriptions and 1 schedule
          
          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            Wie ich vermutet habe, dein "javascript.0.Wasser.Differenz" ist NaN (Not a number).

            Wie berechnest du das?

            1 Reply Last reply Reply Quote 0
            • H
              HKF8770 last edited by

              Unter das was in Objecte unter javaskript.o steht. Auch hier habe ich bei Differenz eine NaN

              Abwasser	state	Wasser.Abwasser	state	javascript		211.56	
              Differenz	state	Wasser.Differenz	state	javascript		NaN	
              Frischwasser	state	Wasser.Frischwasser	state	javascript		206.19	
              Grundgebühr	state	Wasser.Grundgebühr	state	javascript		2.08	
              Niederschlagswasser	state	Wasser.Niederschlagswasser	state	javascript		46.24	
              Total	state	Wasser.Total	state	javascript		466.07	
              Vorrauszahlung	state	Wasser.Vorrauszahlung	state	javascript		541.18
              

              Unten das Skript wo Diff Wasser berechnet wird

              createState('Wasser.Frischwasser', 0);
              createState('Wasser.Abwasser', 0);
              createState('Wasser.Differenz', 0);
              createState('Wasser.Niederschlagswasser', 0);
              createState('Wasser.Vorrauszahlung', 0);
              createState('Wasser.Grundgebühr', 0);
              createState('Wasser.Total', 0);
              
              function Wasser(obj) {
              log("===> Berechnung Kosten Wasser","info");
              var Verbrauch = getState("hm-rega.0.5360"/*Wasser_Wasseruhr_aktuelle*/).val - 799;
              var Frischwasser = Verbrauch * 2.35 *1.07;
              var Frischwasserg = Frischwasser.toFixed(2);
              var Tage = getState("hm-rega.0.5361"/*Tage_Wasser*/).val;
              log("===> Frischwasser " + Frischwasserg,"info");
              var Total = Frischwasserg.val;
              log("===> Zwischensummer " + Frischwasserg,"info");
              
              var Grundgebuehr = (Tage / 30 * 0.33 * 1.07);
              var Grundgebuehrg = Grundgebuehr.toFixed(2);
              log("===> Grundgebühr " + Grundgebuehrg,"info");
              
              var Niederschlag = (209 * 0.45 / 360 * Tage);
              var Niederschlagg = Niederschlag.toFixed(2);
              log("===> Niederschlaggebühr " + Niederschlagg,"info");
              
              var Abwasser = (Verbrauch * 2.58);
              var Abwasserg = Abwasser.toFixed(2);
              log("===> Abwasser " + Abwasserg,"info");
              
              var Summe = (Verbrauch * 2.35 *1.07) + (Tage / 30 * 0.33 * 1.07) + (209 * 0.45 / 360 * Tage) + (Verbrauch * 2.58);
              var Totalg = Summe.toFixed(2);
              log("===> Kosten total " + Totalg,"info");
              
              var Vorrausz = (279 * 4 / 365 * Tage);
              var Vorrauszg = Vorrausz.toFixed(2);
              log("===> Vorrauszahlung " + Vorrauszg,"info");
              
              var Diff = (279 * 4 / 365 * Tage).val - ((Verbrauch * 2.35 *1.07).val + (Tage / 30 * 0.33 * 1.07).val + (209 * 0.45 / 360 * Tage).val + (Verbrauch * 2.58)).val ;
              var Diffg = Diff.toFixed(2);
              log("===> Differenz " + Diffg,"info");
              
              setState("javascript.0.Wasser.Frischwasser"/*Wasser.Frischwasser*/, Frischwasserg);
              setState("javascript.0.Wasser.Grundgebühr"/*Wasser.Grundgebühr*/, Grundgebuehrg);
              setState("javascript.0.Wasser.Niederschlagswasser"/*Wasser.Niederschlagswasser*/, Niederschlagg);
              setState("javascript.0.Wasser.Abwasser"/*Wasser.Abwasser*/, Abwasserg);
              setState("javascript.0.Wasser.Vorrauszahlung"/*Wasser.Vorrauszahlung*/,Vorrauszg) ;
              setState("javascript.0.Wasser.Total"/*Wasser.Total*/,Totalg);
              setState("javascript.0.Wasser.Differenz"/*Wasser.Differenz*/,Diffg);
              }
              on("hm-rega.0.5360"/*Wasser_Wasseruhr_aktuelle*/, function(obj) {                         //oder!! soll entweder ausgelöst werden beihm-rpc.0.KEQ0040908.1.TEMPERATURE
              log("===>Ausgelöst durch Eingabe neuer Wert Wasseruhr!");
              Wasser(obj);
              });
              schedule("*/1* * * *", function () {                                                    //oder!! soll entweder ausgelöst werden alle 10 Minuten
              log("===>Will be triggered every 60 minutes - Wasser!"); 
              Wasser();
              });
              
              
              1 Reply Last reply Reply Quote 0
              • Bluefox
                Bluefox last edited by

                Mindestens ein Problem ist hier:

                var Diff = (279 * 4 / 365 * Tage).val - ((Verbrauch * 2.35 *1.07).val + (Tage / 30 * 0.33 * 1.07).val + (209 * 0.45 / 360 * Tage).val + (Verbrauch * 2.58)).val ;
                
                

                Ändere bitte auf:

                var Diff = (279 * 4 / 365 * Tage) - ((Verbrauch * 2.35 *1.07) + (Tage / 30 * 0.33 * 1.07) + (209 * 0.45 / 360 * Tage) + (Verbrauch * 2.58));
                
                

                ".val" brauchst du um Wert aus dem ioBroker-Zustands-Objekt raus lesen. (279 * 4 / 365 * Tage) ist kein Objekt sondern nur "number" und man kann nichts aus dem "number" lesen. Nur "number" selbst.

                1 Reply Last reply Reply Quote 0
                • H
                  HKF8770 last edited by

                  hab nun iobroker neu aufgesetzt und es geht wieder.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  755
                  Online

                  31.9k
                  Users

                  80.1k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  2324
                  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