Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. FRONIUS Adapter Entwicklung eingestellt?

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    FRONIUS Adapter Entwicklung eingestellt?

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      diwoma @io2023 last edited by diwoma

      @io2023
      Das hängt jetzt davon ab, ob die die Version 1.x oder die Version 2.01 installiert hast.
      Aber suche nach folgenden Namen:
      P_AKKU ...... Lade/Entlade-Leistung (Ladung ist negativ)
      P_GRID ....... Bezug/Lieferung ins GRID (Bezug ist positiv)
      P_LOAD ..... Verbrauch (im Haus)
      P_PV ........... Leistung von der PV
      SOC ............ Ladestand der Batterie

      in Version 1.x unter Fronius.0.powerflow
      ab Version 2.x unter Fronius.0.site

      Der SOC liegt unter dem Inverter-Folder
      Version 1.x .... fronius.0.powerflow.inverter1.SOC
      Version 2.x ..... fronius.0.inverter.1.SOC

      Hängt aber wahrscheinlich auch davon ab, ob Du den Fronius-Smartmeter hast (wie ich)
      Bei anderer Konfiguration könnte es anders sein, aber die kenne ich nicht.

      Negalein I 2 Replies Last reply Reply Quote 0
      • Negalein
        Negalein Global Moderator @diwoma last edited by

        @diwoma sagte in FRONIUS Adapter Entwicklung eingestellt?:

        SOC

        was ist der SOC?

        C 1 Reply Last reply Reply Quote 0
        • C
          c1olli @Negalein last edited by

          SoC = state of charge

          1 Reply Last reply Reply Quote 1
          • I
            io2023 @diwoma last edited by

            @diwoma

            Danke für die schnelle Antwort.
            Ich habe gerade mal auf die Version 2.01 aktualisiert. Mit P_LOAD habe ich eine größere Abweichung zur Anzeige im Solarweb.

            p_load.jpg

            An was kann das liegen?

            Das Smartmeter ist von Fronius.

            Kann ich den Ordner Powerflow dann löschen?

            JB_Sullivan 1 Reply Last reply Reply Quote 0
            • JB_Sullivan
              JB_Sullivan @io2023 last edited by

              @io2023 Das Solarweb hängt gewöhnlich um einige Minuten hinterher. Also wenn du die DP`s vergleichen willst, dann mit dem WR eigenen Webinterface - da sollte es Deckungsgleich sein. Das Solarweb ist keine gute Referenz - schon gar nicht, wenn du auch noch ein Auge auf die Erträge haben willst.

              63032f6d-6c58-485c-ba3c-4aa2cceccd20-image.png

              I 1 Reply Last reply Reply Quote 0
              • J
                JJPhoenix79 last edited by

                Hallo zusammen,

                ich bin nun schon echt lange am Lesen, was das Thema Solaarweb/Fronius usw angeht. Im IOB habe ich die beiden adapter auch schon am laufen. und teilweise monitore ich die Werte auch schon per DB und Grafana.

                Bei mir läuft eine 15KW-Anlage, mit folgenden Komponenten:
                Fronius Symo GEN24 10.0
                Fronius Symo 5.0-3-M
                Batterie: BYD Premium HVS/M 13,8kwh
                Fronius Smart Meter (RTU)

                Für mich ein paar Verständnisfragen:
                Wie bekomme ich die Gesamtwerte beider WR ohne Solarweb-Adapter ausgelesen, da es ja zwei unterschiedliche IPs sind?
                Geht das nur über MODBUS?
                Wenn ja, was benötige ich da für Hardware?

                Grüße und Danke schon einmal im Vorraus.

                Jörg

                C mcm1957 2 Replies Last reply Reply Quote 0
                • C
                  c1olli @JJPhoenix79 last edited by

                  @jjphoenix79
                  Mach einfach zwei Instanzen auf, jeweils mit den IPs der WR.

                  1 Reply Last reply Reply Quote 0
                  • mcm1957
                    mcm1957 @JJPhoenix79 last edited by

                    @jjphoenix79

                    Dazu gab es mal einen Feature request (https://github.com/iobroker-community-adapters/ioBroker.fronius/issues/63)

                    @nkleber hat dazu geantwortet:

                    One instance shall always relate to 1 IP address. Multiple inverters with 1 datamanager are working properly.
                    

                    Ergo wenn du einen DataManager hast sollte diese beide WR erkennen.
                    Wenn du 2 DataManager hast, dann brauchst du 2 Instanzen.

                    Falls weitere Fragen existieren oder Diskussionbedraf, bitte ping @nkleber direkt an. Ich kann hier leider nicht mehr beigtragen da ich zur Zeot mnicht mal einen Fronius besitzt bzw. drauf ZUgriff habe.

                    McM1957

                    oscherer created this issue in iobroker-community-adapters/ioBroker.fronius

                    closed Add more devices #63

                    J 1 Reply Last reply Reply Quote 0
                    • I
                      io2023 @JB_Sullivan last edited by

                      @jb_sullivan
                      Danke für den Hinweis. Jetzt passen die Werte auch.

                      1 Reply Last reply Reply Quote 0
                      • F
                        friedi100 @Strobelix last edited by

                        @strobelix
                        Vielen Dank für deine Hilfe.
                        Jetzt funktioniert alles perfekt.

                        1 Reply Last reply Reply Quote 0
                        • J
                          JJPhoenix79 @mcm1957 last edited by

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

                          nkleber da_Woody 2 Replies Last reply Reply Quote 0
                          • nkleber
                            nkleber @JJPhoenix79 last edited by

                            @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 Reply Last reply Reply Quote 1
                            • da_Woody
                              da_Woody @JJPhoenix79 last edited by

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

                              1 Reply Last reply Reply Quote 0
                              • J
                                JJPhoenix79 last edited by

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

                                jmeister79 1 Reply Last reply Reply Quote 0
                                • jmeister79
                                  jmeister79 @JJPhoenix79 last edited by

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

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

                                    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

                                    jmeister79 1 Reply Last reply Reply Quote 0
                                    • jmeister79
                                      jmeister79 @Alen last edited by

                                      @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]; 
                                      }
                                      
                                      Negalein 1 Reply Last reply Reply Quote 0
                                      • Negalein
                                        Negalein Global Moderator @jmeister79 last edited by

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

                                        jmeister79 1 Reply Last reply Reply Quote 0
                                        • jmeister79
                                          jmeister79 @Negalein last edited by 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]; 
                                          }
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          Alen 1 Reply Last reply Reply Quote 0
                                          • Alen
                                            Alen @jmeister79 last edited by

                                            @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

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            659
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            fronius
                                            44
                                            440
                                            79428
                                            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