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. Entwicklung
  4. FRONIUS Adapter Entwicklung eingestellt?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

FRONIUS Adapter Entwicklung eingestellt?

Geplant Angeheftet Gesperrt Verschoben Entwicklung
fronius
440 Beiträge 44 Kommentatoren 119.8k Aufrufe 45 Watching
  • Ä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.
  • J JJPhoenix79

    @mcm57
    So, unsere Anlage ist nun auch wieder am öffentlichen Netz und ich kann ich weiter mit dem Thema beschäftigen.

    Nach langem hin und her, auch mit dem Fronius Support, sehe ich die Geräte im Solar web wieder.

    434f8dcd-24b8-4464-b8d9-049705be8516-grafik.png

    Leider finde ich im IOB des Fronius Smartmeters nicht alle Werte, die ich gerne auslesen/monitoren möchte.
    dfced526-1aad-4efe-9786-a168ec3d4c18-grafik.png

    zum Beispiel, was gerade verbraucht wird oder was produziert wird. Schön wäre es wirklich aus einer Datenquelle alles zu bekommen.

    nkleberN Offline
    nkleberN Offline
    nkleber
    schrieb am zuletzt editiert von
    #431

    @jjphoenix79 Die Daten kannst du nur aus der differenz zwischen WR und Smartmeter rechnen. Diese werden nicht über die API zur verfügung gestellt. Das Solarweb portal berechnet diese Daten auch selbst

    gruß Norbert

    1 Antwort Letzte Antwort
    1
    • J JJPhoenix79

      @mcm57
      So, unsere Anlage ist nun auch wieder am öffentlichen Netz und ich kann ich weiter mit dem Thema beschäftigen.

      Nach langem hin und her, auch mit dem Fronius Support, sehe ich die Geräte im Solar web wieder.

      434f8dcd-24b8-4464-b8d9-049705be8516-grafik.png

      Leider finde ich im IOB des Fronius Smartmeters nicht alle Werte, die ich gerne auslesen/monitoren möchte.
      dfced526-1aad-4efe-9786-a168ec3d4c18-grafik.png

      zum Beispiel, was gerade verbraucht wird oder was produziert wird. Schön wäre es wirklich aus einer Datenquelle alles zu bekommen.

      da_WoodyD Online
      da_WoodyD Online
      da_Woody
      schrieb am zuletzt editiert von
      #432

      @jjphoenix79
      1e80bb4a-7868-4fba-95f5-1e470cf9084b-grafik.png

      gruß vom Woody
      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

      1 Antwort Letzte Antwort
      0
      • J Offline
        J Offline
        JJPhoenix79
        schrieb am zuletzt editiert von
        #433

        @nkleber said in FRONIUS Adapter Entwicklung eingestellt?:

        @jjphoenix79 Die Daten kannst du nur aus der differenz zwischen WR und Smartmeter rechnen. Diese werden nicht über die API zur verfügung gestellt. Das Solarweb portal berechnet diese Daten auch selbst

        gruß Norbert

        @da_woody said in FRONIUS Adapter Entwicklung eingestellt?:

        @jjphoenix79
        1e80bb4a-7868-4fba-95f5-1e470cf9084b-grafik.png

        Ok, danke euch beider erstmal. Da ich mich auch parallel noch mit dem Modbus beschäftige, warte ich hiermit noch etwas.

        Möchte gern ohne Cloud, die entsprechenden Daten meiner beider WR ink des SM haben, wenn das denn damit geht.

        jmeister79J 1 Antwort Letzte Antwort
        0
        • J JJPhoenix79

          @nkleber said in FRONIUS Adapter Entwicklung eingestellt?:

          @jjphoenix79 Die Daten kannst du nur aus der differenz zwischen WR und Smartmeter rechnen. Diese werden nicht über die API zur verfügung gestellt. Das Solarweb portal berechnet diese Daten auch selbst

          gruß Norbert

          @da_woody said in FRONIUS Adapter Entwicklung eingestellt?:

          @jjphoenix79
          1e80bb4a-7868-4fba-95f5-1e470cf9084b-grafik.png

          Ok, danke euch beider erstmal. Da ich mich auch parallel noch mit dem Modbus beschäftige, warte ich hiermit noch etwas.

          Möchte gern ohne Cloud, die entsprechenden Daten meiner beider WR ink des SM haben, wenn das denn damit geht.

          jmeister79J Offline
          jmeister79J Offline
          jmeister79
          schrieb am zuletzt editiert von
          #434

          @jjphoenix79 Die Berechnungen machste dann einfach im iobroker selber, ist kinderleicht.

          1 Antwort Letzte Antwort
          0
          • AlenA Offline
            AlenA Offline
            Alen
            schrieb am zuletzt editiert von
            #435

            Gibt es in der neuen 2er API eigentlich einen Datenpunkt mit dem aktuellen Tagesverbrauch (Energie) ? Ich konnte nichts finden. Falls nicht, wie könnte man diesem am besten selbst berechnen?

            Gruss
            Alen

            jmeister79J 1 Antwort Letzte Antwort
            0
            • AlenA Alen

              Gibt es in der neuen 2er API eigentlich einen Datenpunkt mit dem aktuellen Tagesverbrauch (Energie) ? Ich konnte nichts finden. Falls nicht, wie könnte man diesem am besten selbst berechnen?

              Gruss
              Alen

              jmeister79J Offline
              jmeister79J Offline
              jmeister79
              schrieb am zuletzt editiert von
              #436

              @alen hab nix gesehen aber ich erfasse alles selber.

              ich mach das so:

              Ich machd as mit nem Array aus Sensoren,. ist aber analog zu einzelwerten:

              hier:
              "Fronius","WH","javascript.0.Zaehler.PVZaehlerFronius_abs","TDWMY"

              TWDMY heißt täglich wöchentlich usw... wenn Interesse am ganzen script besteht melde dich

              on({id: "fronius.0.inverter.1.TOTAL_ENERGY", change: 'ne'}, function (obj) {
              //schedule("* * * * *", function () {
                  setState("javascript.0.Verbrauch.Fronius_daily_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_daily_last").val)*1000)/1000, true);
                  setState("javascript.0.Verbrauch.Fronius_weekly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_weekly_last").val)*1000)/1000, true);
                  setState("javascript.0.Verbrauch.Fronius_monthly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_monthly_last").val)*1000)/1000, true);
                  setState("javascript.0.Verbrauch.Fronius_yearly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_yearly_last").val)*1000)/1000, true);
              });
              
              schedule("57 23 * * *", function () {
                  for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third    
                      if (ArrayOfSensors[n+3].includes('D') ){   
                          var actvalue = getState(ArrayOfSensors[n+2]).val;
                          var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last').val;
                          var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                          setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily',verbrauch, true);    //Summe des Tages
                          setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last', letzter, true); //letzter Zählerstand
                          setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_actual', 0, true); //
                      }
                  }
              
              function intervallVerbrauch(totalAct, totalLast){
                  var consumption = Math.round ((totalAct - totalLast)*100)/100;
                  totalLast = Math.round (totalAct*100)/100;
                  return [consumption, totalLast]; 
              }
              
              NegaleinN 1 Antwort Letzte Antwort
              0
              • jmeister79J jmeister79

                @alen hab nix gesehen aber ich erfasse alles selber.

                ich mach das so:

                Ich machd as mit nem Array aus Sensoren,. ist aber analog zu einzelwerten:

                hier:
                "Fronius","WH","javascript.0.Zaehler.PVZaehlerFronius_abs","TDWMY"

                TWDMY heißt täglich wöchentlich usw... wenn Interesse am ganzen script besteht melde dich

                on({id: "fronius.0.inverter.1.TOTAL_ENERGY", change: 'ne'}, function (obj) {
                //schedule("* * * * *", function () {
                    setState("javascript.0.Verbrauch.Fronius_daily_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_daily_last").val)*1000)/1000, true);
                    setState("javascript.0.Verbrauch.Fronius_weekly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_weekly_last").val)*1000)/1000, true);
                    setState("javascript.0.Verbrauch.Fronius_monthly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_monthly_last").val)*1000)/1000, true);
                    setState("javascript.0.Verbrauch.Fronius_yearly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_yearly_last").val)*1000)/1000, true);
                });
                
                schedule("57 23 * * *", function () {
                    for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third    
                        if (ArrayOfSensors[n+3].includes('D') ){   
                            var actvalue = getState(ArrayOfSensors[n+2]).val;
                            var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last').val;
                            var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                            setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily',verbrauch, true);    //Summe des Tages
                            setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last', letzter, true); //letzter Zählerstand
                            setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_actual', 0, true); //
                        }
                    }
                
                function intervallVerbrauch(totalAct, totalLast){
                    var consumption = Math.round ((totalAct - totalLast)*100)/100;
                    totalLast = Math.round (totalAct*100)/100;
                    return [consumption, totalLast]; 
                }
                
                NegaleinN Offline
                NegaleinN Offline
                Negalein
                Global Moderator
                schrieb am zuletzt editiert von
                #437

                @jmeister79 sagte in FRONIUS Adapter Entwicklung eingestellt?:

                TWDMY heißt täglich wöchentlich usw... wenn Interesse am ganzen script besteht melde dich

                hätte Interesse :)

                ° Node.js: 20.17.0 NPM: 10.8.2
                ° Proxmox, Ubuntu 22.04.3 LTS
                ° Fixer ---> iob fix

                jmeister79J 1 Antwort Letzte Antwort
                0
                • NegaleinN Negalein

                  @jmeister79 sagte in FRONIUS Adapter Entwicklung eingestellt?:

                  TWDMY heißt täglich wöchentlich usw... wenn Interesse am ganzen script besteht melde dich

                  hätte Interesse :)

                  jmeister79J Offline
                  jmeister79J Offline
                  jmeister79
                  schrieb am zuletzt editiert von jmeister79
                  #438

                  @negalein

                  Bitte.
                  Ist auf meine Bedürfnisse angepasst sollte aber grundsätzlich so funktionieren.

                  Es werden am Anfang für jeden Sensor die benötigten Punkte angelegt und in History aktiviert.

                  ps.: Kommentieren war noch nie mein Ding

                  var hist = {
                       "history.0": {
                          "enabled": true,
                          "changesOnly": true,
                          "debounce": 10000,
                          "maxLength": 360,
                          "retention": 31536000
                       }
                  };
                  
                  
                  
                  //Sensor Array aller erfassten Geräte (Diese sind ebreits vorhanden)
                  // "Name","Einheit","Quelle","MDW"
                  //T:today
                  //m: minutelly
                  //D: Daily
                  //W: Weekly
                  //M: Monthly
                  //Y: Yearly
                  var ArrayOfSensors = [
                      "Stromzaehler","kWh","javascript.0.Zaehler.StromZaehler_abs","TmDWMY",         // "javascript.0.Zaehler.StromZaehler_abs"
                      "TauchpumpeSicker","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                      "TauchpumpeRegen","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                      "TauchpumpeLager","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                      "TauchpumpeHeiz","kWh","fritzdect.0.DECT_xxxxxxxx","mDW",
                      "TauchpumpeWerkstatt","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                      "Entfeuchter","kWh","zigbee.0.xxxxxxxx.consumption","TmDW",  
                      "Gaszaehler","m³","javascript.0.Zaehler.GasZaehler_abs","TmDWMY",                      // "javascript.0.Zaehler.GasZaehler_abs"
                      "Heizung","kWh","ems-esp.0.heatSources.energyMonitoring.consumption","DW",
                      "Brennerstarts","","ems-esp.0.heatSources.numberOfStarts","TDW",
                      "Photovoltaik","kWH","javascript.0.Zaehler.PVZaehler_abs","TmDWMY",
                      "Fronius","WH","javascript.0.Zaehler.PVZaehlerFronius_abs","TDWMY"
                      ];
                  
                      
                  var historyObjArray = [];
                  //Alle Datenpunkte kreieren
                  for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every second
                      if (ArrayOfSensors[n+3].includes('T') ){
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_actual', 0.0, {name: "diff today"+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});    
                      }
                      if (ArrayOfSensors[n+3].includes('m') ){
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s', 0.0, {name: "diff last 10min "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s_last', 0.0, {name: "abs last 10 min "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s'); //Ins History Array
                      }
                      if (ArrayOfSensors[n+3].includes('D') ){
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily', 0.0, {name: "diff last day "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last', 0.0, {name: "abs last day "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily');//Ins History Array
                      }
                      if (ArrayOfSensors[n+3].includes('W') ){    
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly', 0.0, {name: "diff last week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_last', 0.0, {name: "abs last Week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_actual', 0.0, {name: "abs last Week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly');//Ins History Array
                      }
                      if (ArrayOfSensors[n+3].includes('M') ){
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly', 0.0, {name: "diff last month "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_last', 0.0, {name: "abs last month "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_actual', 0.0, {name: "abs last Week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly');//Ins History Array
                      }
                      if (ArrayOfSensors[n+3].includes('Y') ){    
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly', 0.0, {name: "diff last year "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_last', 0.0, {name: "abs last year "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_actual', 0.0, {name: "diff actual yeat "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                          historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly');//Ins History Array
                      }
                  }
                  
                  //History aktivieren für daily, weekly, monthly, yearly
                  for (var n = 0; n < historyObjArray.length; n++) { // for every second
                     // log (historyObjArray[n]);
                  
                      sendTo('history.0', 'enableHistory', {
                          id: historyObjArray[n],
                          options: {
                              changesOnly:  true,
                              debounce:     0,
                              retention:    0,
                              maxLength:    960,
                              changesMinDelta: 0,
                              aliasId: ''
                          }
                      }, function (result) {
                          if (result.error) {
                              console.log(result.error);
                          }
                          if (result.success) {
                  
                              // successfully enabled
                  
                          }
                      });
                  }
                  
                  
                  
                  //erfassen der Sensorwerte auf today und actual year
                  //diese sensoren sollen immer live werte zeigen, dafür war das "T" gedacht
                  //Diese Kolelgen müssen manuell programmeirt werden, da ich noch nicht weiß wie ich aus einem array triggern kann. evtl mit concat im on?
                  //Hier evtl auf alle 10s umsteigen?
                  on({id: "javascript.0.Zaehler.StromZaehler_abs", change: 'ne'}, function (obj) {
                      setState("javascript.0.Verbrauch.Stromzaehler_daily_actual", Math.round ((getState("javascript.0.Zaehler.StromZaehler_abs").val - getState("javascript.0.Verbrauch.Stromzaehler_daily_last").val)*100)/100, true);
                      setState("javascript.0.Verbrauch.Stromzaehler_weekly_actual", Math.round ((getState("javascript.0.Zaehler.StromZaehler_abs").val - getState("javascript.0.Verbrauch.Stromzaehler_weekly_last").val)*100)/100, true);
                      setState("javascript.0.Verbrauch.Stromzaehler_yearly_actual", Math.round ((getState("javascript.0.Zaehler.StromZaehler_abs").val - getState("javascript.0.Verbrauch.Stromzaehler_yearly_last").val)*100)/100, true);
                  });
                  on({id: "javascript.0.Zaehler.GasZaehler_abs", change: 'ne'}, function (obj) {
                      setState("javascript.0.Verbrauch.Gaszaehler_daily_actual", Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Verbrauch.Gaszaehler_daily_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Gaszaehler_weekly_actual", Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Verbrauch.Gaszaehler_weekly_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Gaszaehler_yearly_actual", Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Verbrauch.Gaszaehler_yearly_last").val)*1000)/1000, true);
                  });
                  on({id: "javascript.0.Zaehler.PVZaehler_abs", change: 'ne'}, function (obj) {
                      setState("javascript.0.Verbrauch.Photovoltaik_daily_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_daily_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Photovoltaik_weekly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_weekly_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Photovoltaik_monthly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_monthly_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Photovoltaik_yearly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_yearly_last").val)*1000)/1000, true);
                  });
                  on({id: "fronius.0.inverter.1.TOTAL_ENERGY", change: 'ne'}, function (obj) {
                  //schedule("* * * * *", function () {
                      setState("javascript.0.Verbrauch.Fronius_daily_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_daily_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Fronius_weekly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_weekly_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Fronius_monthly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_monthly_last").val)*1000)/1000, true);
                      setState("javascript.0.Verbrauch.Fronius_yearly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_yearly_last").val)*1000)/1000, true);
                  });
                  
                  
                  //600s Erfassung
                  schedule("*/10 * * * *", function () {
                      for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                          if (ArrayOfSensors[n+3].includes('m') ){       
                              var actvalue = getState(ArrayOfSensors[n+2]).val;
                              var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s_last').val;
                              var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s',verbrauch, true);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s_last', letzter, true);
                          }
                      }
                  });
                  
                  //24h erfassung
                  schedule("57 23 * * *", function () {
                      for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third    
                          if (ArrayOfSensors[n+3].includes('D') ){   
                              var actvalue = getState(ArrayOfSensors[n+2]).val;
                              var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last').val;
                              var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily',verbrauch, true);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last', letzter, true);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_actual', 0, true);
                          }
                      }
                      var WirkGrad = 0;
                      var Zustandszahl = getState("javascript.0.Parameter.ZustandszahlGas").val;
                      var HeizLeistung = getState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday").val;
                      var GasVerbrauch = Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Gaszaehler_Daily_last").val)*1000)/1000
                  
                      WirkGrad = HeizLeistung / (GasVerbrauch * Zustandszahl); 
                      setState("javascript.0.Gas.errWirkungsgrad", WirkGrad);
                  });
                  
                  //Wöchentlich Montags 00:00
                  schedule("0 0 * * 1", function () {
                      for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                          if (ArrayOfSensors[n+3].includes('W') ){   //nur wenn wöchentlich aktiviert ist
                              var actvalue = getState(ArrayOfSensors[n+2]).val;
                              var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_last').val;
                              var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly',verbrauch, true);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_last', letzter, true);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_actual', 0, true);
                          }
                      }
                  });
                  
                  
                  //Monatlich 01. 00:00
                  schedule("1 0 1 * *", function () {
                      for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                          if (ArrayOfSensors[n+3].includes('M') ){   //nur wenn Monatlich aktiviert ist
                              var actvalue = getState(ArrayOfSensors[n+2]).val;
                              var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_last').val;
                              var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly',verbrauch, true);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_last', letzter, true);
                          }
                      }
                  });
                  
                  
                  //Jährlich an neujahr  00:01
                  schedule("1 0 1 1 *", function () {
                      log('los gehts');
                      for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                          if (ArrayOfSensors[n+3].includes('Y') ){   //nur wenn wöchentlich aktiviert ist
                              var actvalue = getState(ArrayOfSensors[n+2]).val;
                              var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_last').val;
                              var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly',verbrauch, true);
                              setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_last', letzter, true);
                              log(ArrayOfSensors[n])
                          }
                      }
                  });
                  
                  function intervallVerbrauch(totalAct, totalLast){
                      var consumption = Math.round ((totalAct - totalLast)*100)/100;
                      totalLast = Math.round (totalAct*100)/100;
                      return [consumption, totalLast]; 
                  }
                  
                  
                  
                  
                  
                  
                  
                  
                  AlenA 1 Antwort Letzte Antwort
                  0
                  • jmeister79J jmeister79

                    @negalein

                    Bitte.
                    Ist auf meine Bedürfnisse angepasst sollte aber grundsätzlich so funktionieren.

                    Es werden am Anfang für jeden Sensor die benötigten Punkte angelegt und in History aktiviert.

                    ps.: Kommentieren war noch nie mein Ding

                    var hist = {
                         "history.0": {
                            "enabled": true,
                            "changesOnly": true,
                            "debounce": 10000,
                            "maxLength": 360,
                            "retention": 31536000
                         }
                    };
                    
                    
                    
                    //Sensor Array aller erfassten Geräte (Diese sind ebreits vorhanden)
                    // "Name","Einheit","Quelle","MDW"
                    //T:today
                    //m: minutelly
                    //D: Daily
                    //W: Weekly
                    //M: Monthly
                    //Y: Yearly
                    var ArrayOfSensors = [
                        "Stromzaehler","kWh","javascript.0.Zaehler.StromZaehler_abs","TmDWMY",         // "javascript.0.Zaehler.StromZaehler_abs"
                        "TauchpumpeSicker","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                        "TauchpumpeRegen","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                        "TauchpumpeLager","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                        "TauchpumpeHeiz","kWh","fritzdect.0.DECT_xxxxxxxx","mDW",
                        "TauchpumpeWerkstatt","kWh","fritzdect.0.DECT_xxxxxxxx.energy","mDW",
                        "Entfeuchter","kWh","zigbee.0.xxxxxxxx.consumption","TmDW",  
                        "Gaszaehler","m³","javascript.0.Zaehler.GasZaehler_abs","TmDWMY",                      // "javascript.0.Zaehler.GasZaehler_abs"
                        "Heizung","kWh","ems-esp.0.heatSources.energyMonitoring.consumption","DW",
                        "Brennerstarts","","ems-esp.0.heatSources.numberOfStarts","TDW",
                        "Photovoltaik","kWH","javascript.0.Zaehler.PVZaehler_abs","TmDWMY",
                        "Fronius","WH","javascript.0.Zaehler.PVZaehlerFronius_abs","TDWMY"
                        ];
                    
                        
                    var historyObjArray = [];
                    //Alle Datenpunkte kreieren
                    for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every second
                        if (ArrayOfSensors[n+3].includes('T') ){
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_actual', 0.0, {name: "diff today"+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});    
                        }
                        if (ArrayOfSensors[n+3].includes('m') ){
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s', 0.0, {name: "diff last 10min "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s_last', 0.0, {name: "abs last 10 min "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s'); //Ins History Array
                        }
                        if (ArrayOfSensors[n+3].includes('D') ){
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily', 0.0, {name: "diff last day "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last', 0.0, {name: "abs last day "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily');//Ins History Array
                        }
                        if (ArrayOfSensors[n+3].includes('W') ){    
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly', 0.0, {name: "diff last week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_last', 0.0, {name: "abs last Week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_actual', 0.0, {name: "abs last Week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly');//Ins History Array
                        }
                        if (ArrayOfSensors[n+3].includes('M') ){
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly', 0.0, {name: "diff last month "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_last', 0.0, {name: "abs last month "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_actual', 0.0, {name: "abs last Week "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly');//Ins History Array
                        }
                        if (ArrayOfSensors[n+3].includes('Y') ){    
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly', 0.0, {name: "diff last year "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_last', 0.0, {name: "abs last year "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            createState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_actual', 0.0, {name: "diff actual yeat "+ArrayOfSensors[n], type: 'number', unit: ArrayOfSensors[n+1]});
                            historyObjArray.push('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly');//Ins History Array
                        }
                    }
                    
                    //History aktivieren für daily, weekly, monthly, yearly
                    for (var n = 0; n < historyObjArray.length; n++) { // for every second
                       // log (historyObjArray[n]);
                    
                        sendTo('history.0', 'enableHistory', {
                            id: historyObjArray[n],
                            options: {
                                changesOnly:  true,
                                debounce:     0,
                                retention:    0,
                                maxLength:    960,
                                changesMinDelta: 0,
                                aliasId: ''
                            }
                        }, function (result) {
                            if (result.error) {
                                console.log(result.error);
                            }
                            if (result.success) {
                    
                                // successfully enabled
                    
                            }
                        });
                    }
                    
                    
                    
                    //erfassen der Sensorwerte auf today und actual year
                    //diese sensoren sollen immer live werte zeigen, dafür war das "T" gedacht
                    //Diese Kolelgen müssen manuell programmeirt werden, da ich noch nicht weiß wie ich aus einem array triggern kann. evtl mit concat im on?
                    //Hier evtl auf alle 10s umsteigen?
                    on({id: "javascript.0.Zaehler.StromZaehler_abs", change: 'ne'}, function (obj) {
                        setState("javascript.0.Verbrauch.Stromzaehler_daily_actual", Math.round ((getState("javascript.0.Zaehler.StromZaehler_abs").val - getState("javascript.0.Verbrauch.Stromzaehler_daily_last").val)*100)/100, true);
                        setState("javascript.0.Verbrauch.Stromzaehler_weekly_actual", Math.round ((getState("javascript.0.Zaehler.StromZaehler_abs").val - getState("javascript.0.Verbrauch.Stromzaehler_weekly_last").val)*100)/100, true);
                        setState("javascript.0.Verbrauch.Stromzaehler_yearly_actual", Math.round ((getState("javascript.0.Zaehler.StromZaehler_abs").val - getState("javascript.0.Verbrauch.Stromzaehler_yearly_last").val)*100)/100, true);
                    });
                    on({id: "javascript.0.Zaehler.GasZaehler_abs", change: 'ne'}, function (obj) {
                        setState("javascript.0.Verbrauch.Gaszaehler_daily_actual", Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Verbrauch.Gaszaehler_daily_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Gaszaehler_weekly_actual", Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Verbrauch.Gaszaehler_weekly_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Gaszaehler_yearly_actual", Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Verbrauch.Gaszaehler_yearly_last").val)*1000)/1000, true);
                    });
                    on({id: "javascript.0.Zaehler.PVZaehler_abs", change: 'ne'}, function (obj) {
                        setState("javascript.0.Verbrauch.Photovoltaik_daily_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_daily_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Photovoltaik_weekly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_weekly_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Photovoltaik_monthly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_monthly_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Photovoltaik_yearly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehler_abs").val - getState("javascript.0.Verbrauch.Photovoltaik_yearly_last").val)*1000)/1000, true);
                    });
                    on({id: "fronius.0.inverter.1.TOTAL_ENERGY", change: 'ne'}, function (obj) {
                    //schedule("* * * * *", function () {
                        setState("javascript.0.Verbrauch.Fronius_daily_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_daily_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Fronius_weekly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_weekly_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Fronius_monthly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_monthly_last").val)*1000)/1000, true);
                        setState("javascript.0.Verbrauch.Fronius_yearly_actual", Math.round ((getState("javascript.0.Zaehler.PVZaehlerFronius_abs").val - getState("javascript.0.Verbrauch.Fronius_yearly_last").val)*1000)/1000, true);
                    });
                    
                    
                    //600s Erfassung
                    schedule("*/10 * * * *", function () {
                        for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                            if (ArrayOfSensors[n+3].includes('m') ){       
                                var actvalue = getState(ArrayOfSensors[n+2]).val;
                                var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s_last').val;
                                var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s',verbrauch, true);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_600s_last', letzter, true);
                            }
                        }
                    });
                    
                    //24h erfassung
                    schedule("57 23 * * *", function () {
                        for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third    
                            if (ArrayOfSensors[n+3].includes('D') ){   
                                var actvalue = getState(ArrayOfSensors[n+2]).val;
                                var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last').val;
                                var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily',verbrauch, true);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_last', letzter, true);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_daily_actual', 0, true);
                            }
                        }
                        var WirkGrad = 0;
                        var Zustandszahl = getState("javascript.0.Parameter.ZustandszahlGas").val;
                        var HeizLeistung = getState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday").val;
                        var GasVerbrauch = Math.round ((getState("javascript.0.Zaehler.GasZaehler_abs").val - getState("javascript.0.Gaszaehler_Daily_last").val)*1000)/1000
                    
                        WirkGrad = HeizLeistung / (GasVerbrauch * Zustandszahl); 
                        setState("javascript.0.Gas.errWirkungsgrad", WirkGrad);
                    });
                    
                    //Wöchentlich Montags 00:00
                    schedule("0 0 * * 1", function () {
                        for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                            if (ArrayOfSensors[n+3].includes('W') ){   //nur wenn wöchentlich aktiviert ist
                                var actvalue = getState(ArrayOfSensors[n+2]).val;
                                var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_last').val;
                                var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly',verbrauch, true);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_last', letzter, true);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_weekly_actual', 0, true);
                            }
                        }
                    });
                    
                    
                    //Monatlich 01. 00:00
                    schedule("1 0 1 * *", function () {
                        for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                            if (ArrayOfSensors[n+3].includes('M') ){   //nur wenn Monatlich aktiviert ist
                                var actvalue = getState(ArrayOfSensors[n+2]).val;
                                var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_last').val;
                                var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly',verbrauch, true);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_monthly_last', letzter, true);
                            }
                        }
                    });
                    
                    
                    //Jährlich an neujahr  00:01
                    schedule("1 0 1 1 *", function () {
                        log('los gehts');
                        for (var n = 0; n < ArrayOfSensors.length; n+=4) { // for every third
                            if (ArrayOfSensors[n+3].includes('Y') ){   //nur wenn wöchentlich aktiviert ist
                                var actvalue = getState(ArrayOfSensors[n+2]).val;
                                var lastvalue = getState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_last').val;
                                var [verbrauch, letzter] = intervallVerbrauch(actvalue, lastvalue);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly',verbrauch, true);
                                setState('javascript.0.Verbrauch.'+ArrayOfSensors[n]+'_yearly_last', letzter, true);
                                log(ArrayOfSensors[n])
                            }
                        }
                    });
                    
                    function intervallVerbrauch(totalAct, totalLast){
                        var consumption = Math.round ((totalAct - totalLast)*100)/100;
                        totalLast = Math.round (totalAct*100)/100;
                        return [consumption, totalLast]; 
                    }
                    
                    
                    
                    
                    
                    
                    
                    
                    AlenA Offline
                    AlenA Offline
                    Alen
                    schrieb am zuletzt editiert von
                    #439

                    @jmeister79 Vielen Dank für dein Script.

                    Ich habe jedoch Schwierigkeiten genau zu vestehen, wie der Verbrauch nun berechnet wird?

                    Woher kommt bei dir der Datenpunkt

                    javascript.0.Zaehler.StromZaehler_abs
                    

                    ?

                    Liefert das dein (Fronius) Wechselrichter bzw. die Solarweb API ?

                    Du berechnest dann den Stromverbrauch anhand der Veränderung dieses Wertes - korrekt?

                    Gruss
                    Alen

                    jmeister79J 1 Antwort Letzte Antwort
                    0
                    • AlenA Alen

                      @jmeister79 Vielen Dank für dein Script.

                      Ich habe jedoch Schwierigkeiten genau zu vestehen, wie der Verbrauch nun berechnet wird?

                      Woher kommt bei dir der Datenpunkt

                      javascript.0.Zaehler.StromZaehler_abs
                      

                      ?

                      Liefert das dein (Fronius) Wechselrichter bzw. die Solarweb API ?

                      Du berechnest dann den Stromverbrauch anhand der Veränderung dieses Wertes - korrekt?

                      Gruss
                      Alen

                      jmeister79J Offline
                      jmeister79J Offline
                      jmeister79
                      schrieb am zuletzt editiert von jmeister79
                      #440

                      @alen ich benutze Aliasse. Ich hab n Javascript das bei onChange die werte aus dem Fronius in diesen Datenpunkt schreibt, falls sichd ann die sChnittstelle ändert muss ich nur diese stelle ändern statt alle. Stromverbrauch wird inkrementell berechnet:

                      Hatte da neulich noch n Fehler korrigiert:

                      
                      createState("javascript.0.Zaehler.StromZaehler_abs", 0.0, {name: "Zaehlerstand Stromzähler", type: 'number', unit: 'kWh'});
                      
                      //Initialwerte für neustart des Scriptes
                      var total_oldPlus = getState("fronius.0.meter.0.EnergyReal_WAC_Plus_Absolute").val;
                      var total_oldMinus = getState("fronius.0.meter.0.EnergyReal_WAC_Minus_Absolute").val;
                      
                      
                      
                      
                      on({id: 'fronius.0.meter.0.EnergyReal_WAC_Plus_Absolute', change: "any"}, function (obj) {
                          var total_new = getState("fronius.0.meter.0.EnergyReal_WAC_Plus_Absolute").val; //New Value speichern   
                          var diff = (total_new - total_oldPlus);   
                          var zaehlerstand_alt = getState("javascript.0.Zaehler.StromZaehler_abs").val;	//alten zählerstand abfragen
                          setState("javascript.0.Zaehler.StromZaehler_abs", Math.round (1000*zaehlerstand_alt+diff)/1000);	//Auf drei nachkommastellen runden
                          total_oldPlus = total_new; //Old Value speichern 
                      });
                      
                      on({id: 'fronius.0.meter.0.EnergyReal_WAC_Minus_Absolute', change: "any"}, function (obj) {
                          var total_new = getState("fronius.0.meter.0.EnergyReal_WAC_Minus_Absolute").val; //New Value speichern   
                          var diff = (total_new - total_oldMinus);     
                          var zaehlerstand_alt = getState("javascript.0.Zaehler.StromZaehler_abs").val;	//alten zählerstand abfragen
                          setState("javascript.0.Zaehler.StromZaehler_abs", Math.round (1000*zaehlerstand_alt-diff)/1000);	//Auf drei nachkommastellen runden
                          total_oldMinus = total_new; //Old Value speichern 
                      });
                      
                      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

                      356

                      Online

                      32.5k

                      Benutzer

                      81.6k

                      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