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

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

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

      A 1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            999
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            70
                                            3270
                                            1102625
                                            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