Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. E3DC Hauskraftwerk steuern

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    E3DC Hauskraftwerk steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jans_ios @ArnoD last edited by

      @arnod
      Funktioniert das so einfach? Was, wenn der Parameter "e3dc-rscp.0.EMS.POWER_GRID" negativ ist, also Netzbezug vorliegt? Muss man das nicht irgendwie abfangen?
      Außerdem: Kann man dem Wert einen Max-Wert mitgeben? Mein Heizstab kann bspw. max. 3000W ab. Ich habe noch nicht getestet, was er mit einem höheren Wert macht, aber in meinem Blockly-Skript fange ich das ab.
      Mein Blockly sieht aber sehr sehr viel komplizierter aus 😉 Daher würde ich gerne auf diesen sehr übersichtlichen Ansatz wechseln...
      4956f0ce-1bcc-4d8e-99b9-48b7695448da-image.png

      A 1 Reply Last reply Reply Quote 0
      • A
        ArnoD @jans_ios last edited by

        @jans_ios

        Funktioniert das so einfach? Was, wenn der Parameter "e3dc-rscp.0.EMS.POWER_GRID" negativ ist, also Netzbezug vorliegt? Muss man das nicht irgendwie abfangen?

        Bei meiner WB kann ich einstellen, ob bei positiven oder negativen Werten in das Netz eingespeist wird. Wenn der Wert dann negativ ist, weiß die WP somit das ich in das Netz einspeise und schaltet sich ein. Die Leistung der WP wird dann so geregelt, dass die Einspeiseleistung nicht überstiegen wird. Der Wert wird somit nur als max. Leistung für die WP verwendet und die WP regelt den Rest.
        Wenn du das beim Heizstab nicht einstellen kannst, musst du das natürlich im Script berücksichtigen.
        Das könnte dann so aussehen (e3dc-rscp.0.EMS.POWER_GRID = negativ, wenn eingespeist wird) :

        // Adapter e3dc-rscp
        const sID_Netzleistung_W = 'e3dc-rscp.0.EMS.POWER_GRID'
        
        // Modbus Eingang der Wärmepumpe
        const sID_WP_Aktuelle_Leistung = `modbus.2.holdingRegisters.40103_Aktuelle_Leistung`
        
        // Netzleistung an Modbus Schnittstelle LW-Pumpe Schreiben um über PV-Leistung zu regeln.
        on({id: sID_Netzleistung_W, change: "ne"}, async function (obj) {
            let n_Einspeiseleistung=0;
            // obj.state.val in einen positiven Wert ändern, wenn dieser negativ ist ansonsten ist n_Einspeiseleistung=0
            if (obj.state.val < 0) {n_Einspeiseleistung =Math.abs(obj.state.val)}; 
            // Prüfen ob n_Einspeiseleistung > 3000W ist
            if (n_Einspeiseleistung > 3000){n_Einspeiseleistung = 3000}
           await setStateAsync(sID_WP_Aktuelle_Leistung,n_Einspeiseleistung);
        });
        
        J 1 Reply Last reply Reply Quote 0
        • A
          ArnoD last edited by

          Ich habe heute versucht, die Wallbox über den e3dc-rscp Adapter zu steuern.
          Das Ergebnis ist, dass es nicht funktioniert und wahrscheinlich auch nie möglich sein wird, außer E3DC ändert noch mal die Schnittstelle.

          Mit e3dc-rscp.0.WB.WB_0.Control.PowerLimitation kann man zwar die Ladeleistung begrenzen, aber ich befürchte das jede Änderung auf die SSD geschrieben wird, um die Einstellung zu sichern.
          Damit hätte man das gleiche Problem wie mit e3dc-rscp.0.EMS.MAX_CHARGE_POWER wo E3DC davon abgeraten hat diesen Wert ständig zu ändern, da es die Lebensdauer der SSD verkürzt.

          Zweites Problem ist, dass man das Laden nicht stoppen kann, wenn es mal gestartet wurde. Wenn man e3dc-rscp.0.WB.WB_0.Control.PowerLimitation auf 0 setzt, wird das ignoriert und eine andere Möglichkeit habe ich nicht gefunden.

          Ich werde somit erstmal beim Modbus Adapter bleiben, was die Wallbox betrifft.

          J 1 Reply Last reply Reply Quote 0
          • A
            ArnoD @jans_ios last edited by

            @jans_ios sagte in E3DC Hauskraftwerk steuern:

            @arnod
            Wenn die Wallbox nicht am HKW angemeldet ist und wie bei Dir per Modbus gesteuert wird, dann landet der Wallbox-Verbrauch im Hausverbrauch. Wird die Wallbox vom HKW gesteuert, taucht der Verbrauch nicht im Hausverbrauch auf, sondern wird separat erfasst.

            Ja, da war was 🙂

            @Georg-Hermann
            Da das Script Charge_Control der Master ist, berücksichtige ich die Ladeleistung der Wallbox nicht.
            Das Script E3DC_Wallbox passt die Ladeleistung Wallbox der Einspeiseleistung an, deswegen muss ich das bei Charge_Control nicht berücksichtigen.

            1 Reply Last reply Reply Quote 0
            • J
              jans_ios @ArnoD last edited by

              @arnod
              Hallo Arno!

              Cool, das geht in die richtige Richtung 😉 Der Heizstab selbst regelt gar nichts, der würde jetzt stumpf die übermittelte Wattzahl einsetzen und Warmwasser bereiten - das wiederum erhöht jedoch dann den Hausverbrauch und verringert logischerweise die Einspeisung. Das wiederum kommt zu einem geringeren Wert, der jetzt an den Heizstab übermittelt wird und den Hausverbrauch sinken und die Einspeisung erhöhen würde - dann ginge es wieder hoch mit dem Wert für den Heizstab.

              Irgendwie müsste man also den aktuell bereits am Heizstab anliegenden Wert berücksichtigen, also quasi einen um die Heizleistung des Heizstabs korrigierten Überschuss berechnen, verstehst Du?

              Danke!

              Viele Grüße, Jan

              A 1 Reply Last reply Reply Quote 0
              • A
                ArnoD @jans_ios last edited by

                @jans_ios sagte in E3DC Hauskraftwerk steuern:

                Irgendwie müsste man also den aktuell bereits am Heizstab anliegenden Wert berücksichtigen, also quasi einen um die Heizleistung des Heizstabs korrigierten Überschuss berechnen, verstehst Du?

                Müsste so funktionieren, aber nicht getestet:

                const sID_LeistungHeizstab_W = ``                                   // Aktueller Verbrauch Heizstab in W
                const sID_PV_Leistung = 'e3dc-rscp.0.EMS.POWER_PV';                 // PV_Leistung
                const sID_Eigenverbrauch = 'e3dc-rscp.0.EMS.POWER_HOME';            // Hausverbrauch_Leistung
                const sID_Netz_Leistung = 'e3dc-rscp.0.EMS.POWER_GRID';             // Einspeiseleistung            
                const sID_Batterie_Leistung = 'e3dc-rscp.0.EMS.POWER_BAT';	    // Batterie_Leistung
                const sID_Soll_LeistungHeizstab_W = ``                              // Soll Leistung Heizstab an Schnittstelle
                
                on({id: sID_PV_Leistung, change: "ne"}, async function (obj) {
                    let BatterieLeistung_W = (await getStateAsync(sID_Batterie_Leistung)).val; 
                    let PV_Leistung_W = (await getStateAsync(sID_PV_Leistung)).val;
                    let LeistungHeizstab_W = (await getStateAsync(sID_LeistungHeizstab_W)).val;
                    let Hausverbrauch_W = (await getStateAsync(sID_Eigenverbrauch)).val 
                    let HeizstabLadeleistung_W= 0;
                    let NetzLeistung_W = (await getStateAsync(sID_Netz_Leistung)).val;
                    Hausverbrauch_W =Hausverbrauch_W - LeistungHeizstab_W; //Hausverbrauch ohne Leistung Heizstab
                        
                    // Prüfen ob Werte Netz oder Batterie negativ sind
                    if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){
                        HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W);
                    }else if (NetzLeistung_W > -500 && BatterieLeistung_W <= 0) {
                        HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W);                 
                    }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) {
                        HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W);                                    
                    }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){
                        HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W);
                    }                  
                    // Prüfen ob HeizstabLadeleistung_W > 3000W ist
                    if (HeizstabLadeleistung_W > 3000){HeizstabLadeleistung_W = 3000}    
                    // Vorgabe Heizleistung an Schnittstelle übermitteln
                    await setStateAsync(sID_Soll_LeistungHeizstab_W,HeizstabLadeleistung_W);
                });
                
                1 Reply Last reply Reply Quote 0
                • J
                  jans_ios last edited by

                  @ArnoD
                  Erstmal: Danke Dir mal wieder für den Einsatz. Eine Kiste Bier ging per Paypal an Dich 😉 Dein Ansatz hilft mir sehr weiter, mich auch mal in Richtung JS weiter zu entwickeln!

                  Ich habe das Skript minimal um die Höchsttemperatur ergänzt, die am Heizstab über einen Drehregler einzustellen ist und natürlich die Parameter für die Wattzahl ergänzt:

                  const sID_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power'       // Aktueller Verbrauch Heizstab in W
                  const sID_PV_Leistung = 'e3dc-rscp.0.EMS.POWER_PV';                         // PV_Leistung
                  const sID_Eigenverbrauch = 'e3dc-rscp.0.EMS.POWER_HOME';                    // Hausverbrauch_Leistung
                  const sID_Netz_Leistung = 'e3dc-rscp.0.EMS.POWER_GRID';                     // Einspeiseleistung            
                  const sID_Batterie_Leistung = 'e3dc-rscp.0.EMS.POWER_BAT';	                // Batterie_Leistung
                  const sID_Soll_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power'  // Soll Leistung Heizstab an Schnittstelle
                  const sID_IstTempHeizstab = 'modbus.2.holdingRegisters.1001_Temp1'          // Aktuelle Temperatur am Heizstab
                  const sID_MaxTempHeizstab = 'modbus.2.holdingRegisters.1002_WW1_Temp_max'   // Maximal-Temperatur lt. Drehregler am Heizstab, Skript peil 5 Grad weniger an, da Heizstab sonst selbst abregelt und sich Skript und Heizstab streiten
                   
                  on({id: sID_PV_Leistung, change: "ne"}, async function (obj) {
                      let BatterieLeistung_W = (await getStateAsync(sID_Batterie_Leistung)).val; 
                      let PV_Leistung_W = (await getStateAsync(sID_PV_Leistung)).val;
                      let LeistungHeizstab_W = (await getStateAsync(sID_LeistungHeizstab_W)).val;
                      let Hausverbrauch_W = (await getStateAsync(sID_Eigenverbrauch)).val 
                      let HeizstabLadeleistung_W= 0;
                      let NetzLeistung_W = (await getStateAsync(sID_Netz_Leistung)).val;
                      let MaxTempHeizstab = (await getStateAsync(sID_MaxTempHeizstab)).val;
                      let IstTempHeizstab = (await getStateAsync(sID_IstTempHeizstab)).val;
                      Hausverbrauch_W =Hausverbrauch_W - LeistungHeizstab_W; //Hausverbrauch ohne Leistung Heizstab
                          
                      // Prüfen ob Werte Netz oder Batterie negativ sind
                      if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){
                          HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W);
                      }else if (NetzLeistung_W > -500 && BatterieLeistung_W <= 0) {
                          HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W);                 
                      }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) {
                          HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W);                                    
                      }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){
                          HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W);
                      }                  
                      // Prüfen ob HeizstabLadeleistung_W > 3000W ist
                      if (HeizstabLadeleistung_W > 3000){HeizstabLadeleistung_W = 3000}    
                      // Prüfen ob MaxTempHeizstab - 5 Grad Reserve erreicht sind
                      if (IstTempHeizstab >= MaxTempHeizstab-5){HeizstabLadeleistung_W = 0}
                      // Vorgabe Heizleistung an Schnittstelle übermitteln
                      await setStateAsync(sID_Soll_LeistungHeizstab_W,HeizstabLadeleistung_W);
                  });
                  
                  

                  Jedoch führt das jetzt dazu, dass ChargeControl quasi "die Macht" verliert. Den Effekt habe ich auch mit meiner Blockly-Lösung. Der Heizstab bekommt dann ordentlich Strom und die Ladesteuerung von CC wird unterbrochen, sobald der dann noch verfügbare Überschuss unter der geplanten Ladeleistung für das HKW liegt. Sobald das Temp-Limit des Heizstabs erreicht wird und er auf 0 geht, lädt CC den Akku wieder geplant weiter. Der Akku wird nicht priorisiert geladen, anbei das Log dazu:

                  28.6.2023, 16:00:45.008	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960845001)) ====- "}##
                  28.6.2023, 16:00:45.052	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                  28.6.2023, 16:00:48.007	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960848000)) ====- "}##
                  28.6.2023, 16:00:48.052	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                  28.6.2023, 16:00:51.006	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960851001)) ====- "}##
                  28.6.2023, 16:00:51.051	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                  28.6.2023, 16:00:54.008	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960854001)) ====- "}##
                  28.6.2023, 16:00:54.054	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Laderegelung wird gestoppt ====- "}##
                  28.6.2023, 16:00:57.007	[info ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":" -==== 3 M_Power:677 = Math.round(((Ladeende2_Proz:95 - Batterie_SOC_Proz:81)* Speichergroesse_kWh:18 * 10 * 3600)/(tSommerladeende_milisek:1687974255963 - Zeit_aktuell_milisek:1687960857000)) ====- "}##
                  28.6.2023, 16:00:57.062	[warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}##
                  28.6.2023, 16:01:03.111	[warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}##
                  28.6.2023, 16:01:09.160	[warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}##
                  28.6.2023, 16:01:15.190	[warn ]: javascript.0 (243) script.js.Eigene_Skripte.Energie.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie laden. Schritt = 3 LadenStoppen = false Set_Power_Mode = 3 laden Set_Power_Value_W = 677 M_Power = 677 ====-"}##
                  

                  Hast Du da eine Idee, wie man die Prio klar auf den Akku legen kann? Ich möchte ja wirklich ausschließlich das, was ich sonst einspeisen würde, in den Heizstab jagen...

                  Danke!

                  Gruß, Jan

                  A 1 Reply Last reply Reply Quote 0
                  • J
                    jans_ios @ArnoD last edited by

                    @arnod

                    @arnod sagte in E3DC Hauskraftwerk steuern:

                    Ich habe heute versucht, die Wallbox über den e3dc-rscp Adapter zu steuern.
                    Das Ergebnis ist, dass es nicht funktioniert und wahrscheinlich auch nie möglich sein wird, außer E3DC ändert noch mal die Schnittstelle.

                    Mit e3dc-rscp.0.WB.WB_0.Control.PowerLimitation kann man zwar die Ladeleistung begrenzen, aber ich befürchte das jede Änderung auf die SSD geschrieben wird, um die Einstellung zu sichern.
                    Damit hätte man das gleiche Problem wie mit e3dc-rscp.0.EMS.MAX_CHARGE_POWER wo E3DC davon abgeraten hat diesen Wert ständig zu ändern, da es die Lebensdauer der SSD verkürzt.

                    Zweites Problem ist, dass man das Laden nicht stoppen kann, wenn es mal gestartet wurde. Wenn man e3dc-rscp.0.WB.WB_0.Control.PowerLimitation auf 0 setzt, wird das ignoriert und eine andere Möglichkeit habe ich nicht gefunden.

                    Ich werde somit erstmal beim Modbus Adapter bleiben, was die Wallbox betrifft.

                    Über den Datenpunkt "e3dc-rscp.0.WB.WB_0.Control.ToggleChargingType2" kann man umschalten zwischen Laden und nicht-Laden. Einmal auf YES umstellen ändert den Zustand von Laden auf Entladen oder andersherum, das geht.

                    Das mit dem Schreiben auf die SSD kann ich nicht beurteilen - wo könnte man die Info herbekommen?

                    Danke!

                    Gruß, Jan

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      ArnoD @jans_ios last edited by

                      @jans_ios

                      Danke für die Feierabend-Halbe oder bayrisch Feierabend-Hoibe 😉
                      Die einfachste Möglichkeit ist, immer wenn die Batterie entladen wird, also BatterieLeistung_W <= 0, die berechnete LeistungHeizstab_W um 3000W zu reduzieren.
                      Dann wird im Grenzbereich, wo die PV-Leistung gerade noch für den Heizstab reichen würde, die Leistung für die Batterie reserviert.

                      Das würde dann so aussehen:

                      const sID_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power'       // Aktueller Verbrauch Heizstab in W
                      const sID_PV_Leistung = 'e3dc-rscp.0.EMS.POWER_PV';                         // PV_Leistung
                      const sID_Eigenverbrauch = 'e3dc-rscp.0.EMS.POWER_HOME';                    // Hausverbrauch_Leistung
                      const sID_Netz_Leistung = 'e3dc-rscp.0.EMS.POWER_GRID';                     // Einspeiseleistung            
                      const sID_Batterie_Leistung = 'e3dc-rscp.0.EMS.POWER_BAT';	                // Batterie_Leistung
                      const sID_Soll_LeistungHeizstab_W = 'modbus.2.holdingRegisters.1000_Power'  // Soll Leistung Heizstab an Schnittstelle
                      const sID_IstTempHeizstab = 'modbus.2.holdingRegisters.1001_Temp1'          // Aktuelle Temperatur am Heizstab
                      const sID_MaxTempHeizstab = 'modbus.2.holdingRegisters.1002_WW1_Temp_max'   // Maximal-Temperatur lt. Drehregler am Heizstab, Skript peil 5 Grad weniger an, da Heizstab sonst selbst abregelt und sich Skript und Heizstab streiten
                      
                      on({id: sID_PV_Leistung, change: "ne"}, async function (obj) {
                          let BatterieLeistung_W = (await getStateAsync(sID_Batterie_Leistung)).val; 
                          let PV_Leistung_W = (await getStateAsync(sID_PV_Leistung)).val;
                          let LeistungHeizstab_W = (await getStateAsync(sID_LeistungHeizstab_W)).val;
                          let Hausverbrauch_W = (await getStateAsync(sID_Eigenverbrauch)).val 
                          let HeizstabLadeleistung_W= 0;
                          let NetzLeistung_W = (await getStateAsync(sID_Netz_Leistung)).val;
                          let MaxTempHeizstab = (await getStateAsync(sID_MaxTempHeizstab)).val;
                          let IstTempHeizstab = (await getStateAsync(sID_IstTempHeizstab)).val;
                          Hausverbrauch_W =Hausverbrauch_W - LeistungHeizstab_W; //Hausverbrauch ohne Leistung Heizstab
                      
                          // Prüfen ob Werte Netz oder Batterie negativ sind
                          if (NetzLeistung_W <= -500 && BatterieLeistung_W <= 0){
                              HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W-NetzLeistung_W) - 3000;
                          }else if (NetzLeistung_W > -500 && BatterieLeistung_W <= 0) {
                              HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W+BatterieLeistung_W) - 3000;                 
                          }else if (NetzLeistung_W > -500 && BatterieLeistung_W > 0) {
                              HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W);                                    
                          }else if (NetzLeistung_W <= -500 && BatterieLeistung_W > 0){
                              HeizstabLadeleistung_W = (PV_Leistung_W-Hausverbrauch_W-BatterieLeistung_W-NetzLeistung_W);
                          }                  
                          // Prüfen ob HeizstabLadeleistung_W > 3000W ist
                          if (HeizstabLadeleistung_W > 3000){HeizstabLadeleistung_W = 3000}    
                          // Prüfen ob MaxTempHeizstab - 5 Grad Reserve erreicht sind
                          if (IstTempHeizstab >= MaxTempHeizstab-5){HeizstabLadeleistung_W = 0}
                          // Vorgabe Heizleistung an Schnittstelle übermitteln
                          await setStateAsync(sID_Soll_LeistungHeizstab_W,HeizstabLadeleistung_W);
                      });
                      
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • A
                        ArnoD @jans_ios last edited by

                        @jans_ios sagte in E3DC Hauskraftwerk steuern:

                        Das mit dem Schreiben auf die SSD kann ich nicht beurteilen - wo könnte man die Info herbekommen?

                        Mit Sicherheit von E3DC.
                        Bin mir aber ziemlich sicher, dass es so ist, denn sonst würde beim Ausschalten der eingestellte Wert verloren gehen.

                        J 1 Reply Last reply Reply Quote 0
                        • J
                          jans_ios @ArnoD last edited by

                          @arnod
                          Tatsächlich wird sich das Schalten auf YES nicht gemerkt - der Wert ist sofort wieder NO. Das ist wie das Drücken eines Tasters, nicht wie das Schalten eines klassischen Schalters.

                          Danke für die Skripterei, das sehe ich mir morgen näher an!

                          Gruß, Jan

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            ArnoD @jans_ios last edited by

                            @jans_ios sagte in E3DC Hauskraftwerk steuern:

                            @arnod
                            Tatsächlich wird sich das Schalten auf YES nicht gemerkt - der Wert ist sofort wieder NO. Das ist wie das Drücken eines Tasters, nicht wie das Schalten eines klassischen Schalters.

                            Meinte auch 'e3dc-rscp.0.WB.WB_0.Control.PowerLimitation' der Wert wird bei E3DC auf SSD gespeichert.
                            Da er eigentlich dafür gedacht ist, die Ladeleistung zu begrenzen und nicht ständig zu regeln.

                            1 Reply Last reply Reply Quote 0
                            • Georg Hermann
                              Georg Hermann @ArnoD last edited by

                              @arnod @jans_ios
                              Hm, das verhalten ist hier nach dem Update des HKWs anders. Mit laufendem CC wird in der Zeit zwischen erreichen der Ladeschwelle und Regelbeginn der Akku nicht zur Unterstützung (z.B. Haltezeit) dazu geschaltet/freigegeben.
                              Die WB ist wg. RFID/Abrechnung natürlich am HKW angemeldet und wird nicht per Modbus gesteuert.

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                ArnoD @Georg Hermann last edited by

                                @georg-hermann
                                Kannst du mal bitte prüfen, ob deine Ladeleistung der WB unter e3dc-rscp.0.EMS.POWER_WB_ALLnoch richtig angezeigt wird.
                                Habe das Update immer noch nicht, um das zu testen.

                                Georg Hermann 1 Reply Last reply Reply Quote 0
                                • Timmerx
                                  Timmerx last edited by Timmerx

                                  Hi,

                                  an meiner E3DC S10 (3000W Lade/-Entladeleistung) war der Ladewechselrichter defekt.
                                  Da dieser wohl nicht mehr hergestellt wird hat mir der freundliche Servicemitarbeiter einen Ladewechselrichter von einem Pro Gerät mit einer Leistung von 4500W (hat er mir so gesagt, was das Foto auch bestätigt) eingebaut.

                                  Ich hab natürlich sofort versucht mithilfe von den Werten MAX_CHARGE_POWER und MAX_DISCHARGE_POWER die 4500W einzustellen leider erfolglos.

                                  Bei Return Code hieß es dann "Value out of Range -1".

                                  f6443a0a-e2a3-441d-93ec-7d5693dd7730-image.png

                                  e893294d-c769-4711-b4cf-35c15a130d81-image.png

                                  5808bd09-3dae-4dce-b4e2-c7054bea776f-image.png

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    ArnoD @Timmerx last edited by

                                    @timmerx
                                    Warum soll deine Batterie auf einmal mehr Lade/Entladeleistung schaffen?
                                    Da wurde doch nichts geändert.
                                    Der Wechselrichter mag mehr können, aber deine Batterie nicht.

                                    1 Reply Last reply Reply Quote 0
                                    • Georg Hermann
                                      Georg Hermann @ArnoD last edited by

                                      @arnod
                                      Klar, mache ich, wenn ich aus dem Urlaub zurück bin…

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

                                        Hallo, leider heute morgen starkes Takten der Regelung: Habe dann den E3DC-Adapter neu gestartet und dann lief es wieder-habe leider nur den kleinen Log-Auszug, aber man sieht da eine sonst nicht zu sehende Meldung:

                                        javascript.0
                                        2023-07-05 08:36:12.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538972001- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        

                                        72201497-a8aa-4a18-9674-8a7269a61f15-image.png

                                        444e662e-ec10-4850-bbc0-170d9e75142c-image.png

                                        javascript.0
                                        	2023-07-05 08:37:06.013	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:37:00.030	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:54.013	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:48.015	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:42.014	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:36.013	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:30.014	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:24.013	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:18.055	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 1 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:18.045	info	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":" -==== Vor Regelbeginn ====- "}##
                                        javascript.0
                                        	2023-07-05 08:36:18.003	warn	script.js.common.Charge_Control: Ladesteuerung: Notstrom_SOC_erreicht= false NotstromVerwenden= false Batterie_SOC_Proz= 69 Notstrom_SOC_Proz= 5
                                        javascript.0
                                        	2023-07-05 08:36:15.007	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538975001- ZeitE3DC_SetPowerAlt_ms = 1688538972001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:36:12.009	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:12.006	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538972001- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:36:09.005	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538969000- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:36:06.007	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:06.004	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538966001- ZeitE3DC_SetPowerAlt_ms = 1688538960000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:36:03.007	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538963001- ZeitE3DC_SetPowerAlt_ms = 1688538960000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:36:00.058	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:36:00.055	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538960000- ZeitE3DC_SetPowerAlt_ms = 1688538954001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:57.007	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538957001- ZeitE3DC_SetPowerAlt_ms = 1688538954001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:54.032	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:35:54.006	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538954001- ZeitE3DC_SetPowerAlt_ms = 1688538948000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:51.006	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538951001- ZeitE3DC_SetPowerAlt_ms = 1688538948000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:48.005	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:35:48.002	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538948000- ZeitE3DC_SetPowerAlt_ms = 1688538942000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:45.007	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538945001- ZeitE3DC_SetPowerAlt_ms = 1688538942000 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:42.005	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:35:42.002	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538942000- ZeitE3DC_SetPowerAlt_ms = 1688538936001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:39.007	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538939001- ZeitE3DC_SetPowerAlt_ms = 1688538936001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:36.009	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:35:36.005	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538936001- ZeitE3DC_SetPowerAlt_ms = 1688538930001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:33.009	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538933002- ZeitE3DC_SetPowerAlt_ms = 1688538930001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:30.011	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:35:30.006	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538930001- ZeitE3DC_SetPowerAlt_ms = 1688538924002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:27.006	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538927000- ZeitE3DC_SetPowerAlt_ms = 1688538924002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:24.013	warn	script.js.common.Charge_Control: ##{"from":"Charge-Control", "message":"-==== Batterie entladen stoppen (0 W). Schritt = 0 LadenStoppen = true SET_POWER_MODE = 1 idle ====-"}##
                                        javascript.0
                                        	2023-07-05 08:35:24.008	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538924002- ZeitE3DC_SetPowerAlt_ms = 1688538918002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        javascript.0
                                        	2023-07-05 08:35:21.007	warn	script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538921000- ZeitE3DC_SetPowerAlt_ms = 1688538918002 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true
                                        
                                        A 1 Reply Last reply Reply Quote 0
                                        • jh537
                                          jh537 last edited by

                                          Wenn ich das richtig beobachte: Unterer Ladekorridor bspw. 500W, Wenn erreicht lädt die Regelung. Wenn die Kapa schneller steigt als berechnet bricht das Laden ab, da die Ladeleistung wieder unter den Korridor fällt. Kann man das nicht besser machen? Habe aber auch grad keine Idee... Festgestellt zb. heute beim Profil 4

                                          c61e6068-5e17-45f1-9382-14d7733f5aac-image.png
                                          7930aa6d-c1d5-42d3-bf96-0738f73bb124-image.png

                                          log 5.7.23

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            ArnoD @jh537 last edited by

                                            @jh537 sagte in E3DC Hauskraftwerk steuern:

                                                                                                                                                                        javascript.0                                                                                                                                                                            2023-07-05 08:36:12.006 warn script.js.common.Charge_Control: Ladesteuerung:-=== Entladen der Batterie stoppen ===-dAkt.getTime() =1688538972001- ZeitE3DC_SetPowerAlt_ms = 1688538966001 M_Power_alt= 0 NotstromVerwenden= false Notstrom_SOC_erreicht= true                                            
                                            

                                            Diese Meldung kommt wenn der Notstrom SOC erreicht wurde und dann das entladen der Batterie verhindert wird.
                                            Das pulsen sollte eigentlich nicht mehr vorkommen.
                                            Kannst du mal testen wie weit dein Batterie SOC schwankt wenn das entladen gestoppt wird. Hatte bei mir das Problem, das dann der Batterie SOC um 1 % wieder ansteigt und dann vom Script das entladen wieder freigegeben wurde.
                                            Daraufhin habe ich das im Script geändert so das der Batterie SOC um min. 2% ansteigen muss, bevor das entladen freigegeben wird.

                                            jh537 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            982
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            70
                                            3276
                                            1133544
                                            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