Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Probleme beim Addieren (aber erst seit kurzem - ging schon)

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    917

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 2 Kommentatoren 2.5k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H Offline
    H Offline
    HKF8770
    schrieb am zuletzt editiert von
    #1

    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

    Freddy

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      @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 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        HKF8770
        schrieb am zuletzt editiert von
        #3

        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
        

        Freddy

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

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

          Wie berechnest du das?

          1 Antwort Letzte Antwort
          0
          • H Offline
            H Offline
            HKF8770
            schrieb am zuletzt editiert von
            #5

            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();
            });
            
            

            Freddy

            1 Antwort Letzte Antwort
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              schrieb am zuletzt editiert von
              #6

              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 Antwort Letzte Antwort
              0
              • H Offline
                H Offline
                HKF8770
                schrieb am zuletzt editiert von
                #7

                hab nun iobroker neu aufgesetzt und es geht wieder.

                Freddy

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                577

                Online

                32.6k

                Benutzer

                82.2k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe