Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. nkleber

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 33
    • Best 8
    • Groups 1

    nkleber

    @nkleber

    8
    Reputation
    198
    Profile views
    33
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    nkleber Follow
    Starter

    Best posts made by nkleber

    • RE: Fronius Symo Gen24: minSOC einstellen

      @legro Anbei meine config (TSV) für den GEN24 mit dem BYD Speicher und Smartmeter. FroniusGen24BydSmartmeter.txt

      Für MINSOC ist es der Parameter MinRsvPct. Über "StorCtl_Mod" kannst du auch aktiv eine Ladung / Entladung steuern. Das ist aber etwas speziell. Hoffe das hilft dir bzw. auch anderen...

      Hier mein Javascript code für das erzwungene laden:
      setState('modbus.1.holdingRegisters.1.40358_StorCtl_Mod'/Activate hold/discharge/charge storage control mode Bitfield value bit 0: DISCHARGE bit 1: CHARGE/,2,false); /* Activate charging and discharging limits*/
      setState('modbus.1.holdingRegisters.1.40365_OutWRte'/Percent of max charge rate For force charging it must a negativ value/,-100,false); /* Charge with maximum possible power*/
      //setState('modbus.1.holdingRegisters.1.40365_InWRte',0,false); /* Prevent discharging in that period */

      posted in Hardware
      nkleber
      nkleber
    • RE: 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

      posted in Entwicklung
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @mcm57 Danke auch für deinen Support. Denn ohne das wissen für das Release geht es ja auch nicht...

      posted in Tester
      nkleber
      nkleber
    • RE: Fronius Symo Gen24: minSOC einstellen

      @bjoern77 Wie schon gesagt, das ist nicht derselbe Wert. Daher bekommst du niemals den Wert vom UI. Testen kannst du das somit nur mit setzen eines Wertes und dann prüfen ob die Batterie den neunen minSOC anwendet. Je nach einstellung der anderen Register wird nach dem hochsetzen des minSOC automatisch ein Nachladen des Speichers gestartet. Ich hoffe das hilft dir weiter.
      gruß Norbert

      posted in Hardware
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @c1olli Ich habe das bei mir auch noch verifiziert und angepasst. Hier die neue Liste fronius.xlsx

      posted in Tester
      nkleber
      nkleber
    • RE: Fronius Symo Gen24: minSOC einstellen

      @legro hier das ganze script. Musst halt schauen was für dich sinnvoll ist :). Denn hier wird auch der Speicher in gewissen situationen blockiert ausser die Wärmepunpe läuft (großer verbraucher)

      var maxChargeSetpoint = 100; // maximum charge state for charge from grid
      var maxDischargeSetpoint = 60; // maximum charge state for stop discharge
      var bChargeFromGrid = false; // allow to charge the battery from grid
      var minChargeSetpoint = 10;
      
      /*
      allow to discharge. This runs the whole year to ensure that once a day the state is correct set to 5%
      */
      var allowDischarge = schedule('0 6 * * *', function () {
          log("Allow discharge scheduler started!",'debug');
          setState('modbus.1.holdingRegisters.1.40360_MinRsvPct',minChargeSetpoint,false)
          setState('modbus.1.holdingRegisters.1.40358_StorCtl_Mod',0,false) /* Change to normal operation */
          log("Minimum charging state is set to " + minChargeSetpoint + "% and discharge allowed",'info')
      });
      
      function allowDischargeWP(isStart){
          var min_set = getState('modbus.1.holdingRegisters.1.40360_MinRsvPct').val;
          var curChargeState = getState('modbus.1.holdingRegisters.1.40361_ChaState').val;
          var storMode = getState('modbus.1.holdingRegisters.1.40358_StorCtl_Mod').val;
          log("min_set = " + min_set + ", curChargeState = " + curChargeState + ", storMode = " + storMode,'info')
          if(storMode > 0 || min_set == minChargeSetpoint || ((curChargeState < minChargeSetpoint+5) && isStart)){
              //log("min_set = " + min_set + ", curChargeState = " + curChargeState + ", storMode = " + storMode)
              log("Start / Stop des Speichers ist nicht erlaubt!",'info');
              return;
          }
          
          if(isStart){
              setState('modbus.1.holdingRegisters.1.40360_MinRsvPct',minChargeSetpoint+1,false); // make sure to set it to 6% and not 5% for above check
              log("Speicher ist freigegeben!",'info');
          }else if(min_set < curChargeState){
              setState('modbus.1.holdingRegisters.1.40360_MinRsvPct',curChargeState,false)
              log("Speicher ist blockiert!",'info');
          }else if(min_set == curChargeState){ // in this case the storage is empty. So change to normal operation
              setState('modbus.1.holdingRegisters.1.40360_MinRsvPct',minChargeSetpoint,false)
              log("Speicher ist leer, umstellung auf Normalbetrieb erfolgt!",'info');
          }
      }
      
      on({ id: 'javascript.0.Pool.bWaermepumpeBoilerbetrieb', change: 'gt'}, function(obj) {
          log("Wärmepumpe Boilerbetrieb hat gestartet",'info');
          allowDischargeWP(true);
      });
      on({ id: 'javascript.0.Pool.bWaermepumpeBoilerbetrieb', change: 'lt'}, function(obj) {
          log("Wärmepumpe Boilerbetrieb hat gestoppt",'info');
          allowDischargeWP(false);
      });
      on({ id: 'javascript.0.Pool.bWaermepumpeHeizbetrieb', change: 'gt'}, function(obj) {
          log("Wärmepumpe Heizbetrieb hat gestartet",'info');
          allowDischargeWP(true);
      });
      on({ id: 'javascript.0.Pool.bWaermepumpeHeizbetrieb', change: 'lt'}, function(obj) {
          log("Wärmepumpe Heizbetrieb hat gestoppt",'info');
          allowDischargeWP(false);
      });
      
      
      var chargeFromGrid = schedule('*/15 3-5 * 1,2,11,12 *', function () { /* Aktivieren des Speicher ladens mit Nachstrom */
          if (!bChargeFromGrid) { // do not execute later code if chargeFromGrid is disabled
              return;
          }
          var curChargeState = getState('modbus.1.holdingRegisters.1.40361_ChaState').val;
          
          // check if it is needed and time to start charging
          var curDate = new Date();
          var deltaTime = 5.5 - (curDate.getHours() + curDate.getMinutes()/60); // assuming we need to finish charging at 5:30
          var neededTime = (maxChargeSetpoint - curChargeState)/40; // Assuming we are charging 40% per hour
          if(curChargeState > (maxChargeSetpoint-10) ||  neededTime < deltaTime){ // do nothing because it is either not neeed to charge or too early
              log("Charging from grid not started because not needed or too early!",'debug');
              return
          }
          // really execute the charging
          setState('modbus.1.holdingRegisters.1.40358_StorCtl_Mod'/*Activate hold/discharge/charge storage control mode  Bitfield value bit 0: DISCHARGE bit 1: CHARGE*/,2,false); /* Activate charging and discharging limits*/
          setState('modbus.1.holdingRegisters.1.40365_OutWRte'/*Percent of max charge rate  For force charging it must a negativ value*/,-100,false); /* Charge with maximum possible power*/
          //setState('modbus.1.holdingRegisters.1.40365_InWRte',0,false); /* Prevent discharging in that period */
          log("Charging from grid is started!",'info')
      });
      
      var fullyCharged = schedule('*/5 3-5 * 1,2,11,12 *', function () { /* Stoppen des Speicher ladens mit Nachstrom */
          log("Check if battery is charged to requested state, if yes -> stop!",'debug');
          var curChargeState = getState('modbus.1.holdingRegisters.1.40361_ChaState').val;
          var curChargeCurrent = Number(getState('modbus.1.holdingRegisters.1.40322_3_DCA'/*DC Current*/).val);
          var curOperationState = getState('modbus.1.holdingRegisters.1.40358_StorCtl_Mod').val
          if(curOperationState > 0){
              log("Current charge current is " + curChargeCurrent + " A, charging state = " + curChargeState + " %",'info')
          }
          if(curOperationState > 0 && curChargeState >= maxChargeSetpoint){
              setState('modbus.1.holdingRegisters.1.40360_MinRsvPct',curChargeState,false)
              setState('modbus.1.holdingRegisters.1.40358_StorCtl_Mod',0,false) /* Change to normal operation */
              log("Charging is finished, minimum charging state is set to " + curChargeState + "%",'info')
          }
      });
      
      var stopDischarge = schedule('*/15 16-20 * 1,2,3,10,11,12 *', function () {
          log("Stop discharge scheduler started!",'debug');
          var curChargeState = getState('modbus.1.holdingRegisters.1.40361_ChaState').val;
          var curDischargePower = getState('modbus.0.holdingRegisters.16432_AverageDischargePower').val;
          if(curChargeState <= maxDischargeSetpoint && getState('modbus.1.holdingRegisters.1.40360_MinRsvPct').val <= 6 && curDischargePower < 600){
              setState('modbus.1.holdingRegisters.1.40360_MinRsvPct',Math.max(curChargeState-1,5),false)
              log("Minimum charging state is set to " + Math.max(curChargeState-1,5) + "%",'info')
          }
      });
      
      // clear scheduler if script stopped
      onStop(function () {
          log("Script stopped!",'info');
          // stop the scheduler
          clearSchedule(allowDischarge);
          clearSchedule(stopDischarge);
          clearSchedule(chargeFromGrid);
          clearSchedule(fullyCharged);
      }, 1000 /*ms*/);
      
      posted in Hardware
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @diwoma Die Frage ist definitiv nicht blöd… hier der Link https://github.com/nkleber78/ioBroker.fronius Der Adapter wird wie von dir Beschrieben installiert und ersetzt dann den bisherigen Adapter

      posted in Tester
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @alex4 Mit dem Fronius Adapter ist das nicht möglich da die API nur ein lesen der Daten zulässt. Du kannst das aber natürlich mit dem Modbus Adapter machen. Ob dort direkt die Zeitabhänige Batteriesteuerung angepasst werden kann oder ob das Script direkt auf die Batterie Ladung/Entladung eingreifen muss, kann ich dir so nicht sagen. Die direkte Batteriesteuerung für Laden/Entladen geht aber auf jeden fall mit den Modbus adapter und Scripts...

      Siehe https://forum.iobroker.net/topic/65047/fronius-symo-gen24-minsoc-einstellen wo ein ähnliches Thema diskutiert wurde

      posted in Tester
      nkleber
      nkleber

    Latest posts made by nkleber

    • RE: Fronius GEN24 Modbus-Register für DC Leistungen&Energien

      @legro Der Fronius Adapter verwendet die REST API von Fronius (SolarAPI) und funktioniert via http. Ich verwende ebenfalls beide Adapter da ich über Modbus tatsächlich auch die Ladung steuere (laden / entladen zu bestimmten Zeiten bzw. bestimmten Betriebszuständen). Rein die Energie für das Laden und entladen kannst du auch recht einfach über eine Integration rechnen. Das hab ich in der Vergangenheit auch für eine Batteriesimulation gemacht um festzustellen welche Batteriegröße für mich optimal wäre.
      gruß Norbert

      posted in ioBroker Allgemein
      nkleber
      nkleber
    • RE: Fronius GEN24 Modbus-Register für DC Leistungen&Energien

      @legro Warum kannst du nicht P_Akku für die Batterie verwenden? Dieser Wert ist positiv wenn du Leistung aus der Batterie beziehts und negativ wenn sie geladen wird. Falls du trotzdem auf Modbus willst stimmt deine Aussage dass "3" die Ladung und "4" die Entladung ist. Siehe meine config hier 35e60146-d736-408b-bc1d-f4f093f79b0d-image.png

      Btw. Welche Version des Fronius adapter verwendest du? Aktuell ist 2.1.1. Vom Screenshot würde ich vermuten es ist eine alte version. Denn powerflow gibt es jetzt nicht mehr, diese Daten sind unter "Site" und es gibt da auch "storage" 79ed8ce3-d55d-41cb-931f-a096f0379db0-image.png

      gruß Norbert

      posted in ioBroker Allgemein
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @alex4 Wo hast du die Info bzgl. dem config/timeofuse her. Das klingt grundsätzlich interessant, funktioniert bei mir aber so noch nicht... Eventuell gibt es da ja noch mehr "config" parameter die nutzbar wären

      posted in Tester
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @alex4 Mit dem Fronius Adapter ist das nicht möglich da die API nur ein lesen der Daten zulässt. Du kannst das aber natürlich mit dem Modbus Adapter machen. Ob dort direkt die Zeitabhänige Batteriesteuerung angepasst werden kann oder ob das Script direkt auf die Batterie Ladung/Entladung eingreifen muss, kann ich dir so nicht sagen. Die direkte Batteriesteuerung für Laden/Entladen geht aber auf jeden fall mit den Modbus adapter und Scripts...

      Siehe https://forum.iobroker.net/topic/65047/fronius-symo-gen24-minsoc-einstellen wo ein ähnliches Thema diskutiert wurde

      posted in Tester
      nkleber
      nkleber
    • RE: Fronius Symo Gen24: minSOC einstellen

      @bjoern77 Wie schon gesagt, das ist nicht derselbe Wert. Daher bekommst du niemals den Wert vom UI. Testen kannst du das somit nur mit setzen eines Wertes und dann prüfen ob die Batterie den neunen minSOC anwendet. Je nach einstellung der anderen Register wird nach dem hochsetzen des minSOC automatisch ein Nachladen des Speichers gestartet. Ich hoffe das hilft dir weiter.
      gruß Norbert

      posted in Hardware
      nkleber
      nkleber
    • RE: Fronius Symo Gen24: minSOC einstellen

      Hallo @bjoern77 Dazu gibt es schon irgendwo ein Post. Die Daten welche per Modbus geschrieben werden sind andere wie jene die im UI als Minimales Ladelimit angegeben werden. Daher siehst du die geänderten Daten nicht im UI. Wenn ich das noch richtig im Kopf habe kannst du per Modbus nicht unter den Wert im UI gehen, aber höher kannst du. Dass der Wert zum schreiben zunächst rot wird ist normal. Beim nächsten Schreibzyklus wird der Wert dann geschrieben und beim übernächsten Lesezyklus gelesen. Sobald er dann wieder gelesen wurde wird der Wert dann Grün bzw. Grau

      posted in Hardware
      nkleber
      nkleber
    • RE: Fronius Symo Gen24: minSOC einstellen

      @pedder007 In diesem Fall passt aber bei euch die Konfiguration nicht. Wenn die Konfiguration korrekt ist, dann wird beim Modbus entsprechend einfach der Prozentwert eingegeben...

      "common": {
      "name": "Setpoint for minimum reserve for storage as a percentage of the nominal maximum storage.",
      "role": "value",
      "type": "number",
      "read": true,
      "write": true,
      "def": 0,
      "unit": "% WChaMax"
      },
      "native": {
      "regType": "holdingRegs",
      "address": 40360,
      "deviceId": 1,
      "type": "uint16be",
      "len": 1,
      "offset": 0,
      "factor": 0.01,
      "poll": true
      },

      posted in Hardware
      nkleber
      nkleber
    • RE: Fronius Symo Gen24: minSOC einstellen

      @pedder007 Wie du in meinem Script sehen kannst, geht das ganz einfach und ohne Umwege. Wenn der Storage control mode 0 ist, ist laden und entladen erlaubt und die Grenzen werden immer übernommen. Ich vermute du setzt den state mit Acknowledged=true was bedeutet dass der Wert vom Adapter nicht an den WR geschickt wird. Das gilt generell für diese art von Adapter...

      setState('modbus.1.holdingRegisters.1.40360_MinRsvPct',minChargeSetpoint,false)
      setState('modbus.1.holdingRegisters.1.40358_StorCtl_Mod',0,false) /* Change to normal operation */
      

      Btw. ich glaub jetzt hab ich verstanden was den Problem ist. Du versuchts die Daten die beim GEN24 in der configuration eingestellt sind für minSOC mit den Daten auf Modbus zu mappen. Das wird nicht gehen da diese nicht auf Modbus übertragen werden. Egal was du da einstellst, du wirst den Wert nicht auf Modbus finden. D.h. du musst sicherstellen dass die Grenzen die dort eingestellt sind weiter sind wie jene die du dynamisch anpassen willst. In meinem fall habe ich minSOC auf 5% aber auf Modbus fahre ich mit 10%.

      posted in Hardware
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @basti-liciouz Das ist ein interessanter Punkt. Es gibt da tatsächlich ein Problem in die richtung P_Load. Falls man eine Anlage hat mit mehreren Datamanager (z.b. mehrere GEN24 oder GEN24 und SYMO gemischt stimmt P_Load nicht da jeder WR für sich das delta zwischen P_PV und Einspeisung bildet. Das funktioniert dann nur wenn ein separater Smartmeter für die anderen Erzeuger eingebaut wird 😞 Das hat Fronius da leider nicht so smart gelöst da die Daten nicht auf einen WR kombiniert werden können...

      posted in Tester
      nkleber
      nkleber
    • RE: Test Adapter Fronius 2.0.x

      @basti-liciouz Wurde dies bei dir automatisch gelöst oder nur durch einen Adapter Neustart?

      posted in Tester
      nkleber
      nkleber
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo