Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. E3DC Hauskraftwerk steuern

NEWS

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

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

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

E3DC Hauskraftwerk steuern

Geplant Angeheftet Gesperrt Verschoben JavaScript
3.5k Beiträge 70 Kommentatoren 1.6m Aufrufe 61 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • J jans_ios

    @arnod
    @Robbi12
    Die Modbus Register wurden ja mittlerweile gepostet - sorry, war offline im Urlaub ;)

    Ich habe mir mangels JavaScript-Skills ein Blockly gebaut, welches sich den Überschuss nimmt und damit den Heizstab per Modbus steuert. Ist noch nicht perfekt und kollidiert manchmal mit ChargeControl, aber es ist schon mal besser als nichts. Die Steuerung über das HKW hilft hier tatsächlich nicht, da hierbei erstmal der Akku voll (oder fast voll) sein muss, bevor überhaupt Wasser erwärmt wird - bei Nutzung von CC wird dadurch tagsüber dann schön eingespeist und kurz vor Sonnenuntergang minimal Warmwasser bereitet.

    A Offline
    A Offline
    ArnoD
    schrieb am zuletzt editiert von
    #2283

    @jans_ios sagte in E3DC Hauskraftwerk steuern:

    @arnod
    @Robbi12
    Die Modbus Register wurden ja mittlerweile gepostet - sorry, war offline im Urlaub ;)

    Ich habe mir mangels JavaScript-Skills ein Blockly gebaut, welches sich den Überschuss nimmt und damit den Heizstab per Modbus steuert. Ist noch nicht perfekt und kollidiert manchmal mit ChargeControl, aber es ist schon mal besser als nichts. Die Steuerung über das HKW hilft hier tatsächlich nicht, da hierbei erstmal der Akku voll (oder fast voll) sein muss, bevor überhaupt Wasser erwärmt wird - bei Nutzung von CC wird dadurch tagsüber dann schön eingespeist und kurz vor Sonnenuntergang minimal Warmwasser bereitet.

    Dachte mir schon, dass es über Modbus funktionieren müsste.
    Steuere meine Wärmepumpe auch so.
    Ich schicke einfach den Wert der aktuellen Einspeiseleistung an meine WP und die regelt dann automatisch die Leistung bis zu diesem Wert. Wenn E3DC-Control dann die Ladeleistung der Batterie begrenzt, steigt die Einspeiseleistung und meine WP schaltet sich ein.

    // 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) {
        await setStateAsync(sID_WP_Aktuelle_Leistung,obj.state.val);
    });
    
    J 1 Antwort Letzte Antwort
    0
    • J jans_ios

      @georg-hermann
      @ArnoD
      Seid Ihr hier weitergekommen? Die Ladeleistung der Wallbox kann mit E3DC-RSCP tatsächlich wie von Arno vermutet über den "PowerLimitation"-Wert gesetzt werden. Ich fänd's klasse, wenn das umgesetzt werden könnte ;)

      Georg HermannG Offline
      Georg HermannG Offline
      Georg Hermann
      schrieb am zuletzt editiert von
      #2284

      @jans_ios
      Hmm. Ich konnte bisher die Ladeleistung mit "e3dc-rscp.0.WB.WB_1.Control.PowerLimitation" nicht beeinflussen. deshalb gehe ich immer noch über den Tesla-Adapter und steuere das über den Wagen. Aber Vielleicht mache ich mit "e3dc-rscp.0.WB.WB_1.Control.PowerLimitation" irgendetwas falsch?

      Hast Du das schon erfolgreich ausprobiert?

      J 1 Antwort Letzte Antwort
      0
      • Georg HermannG Georg Hermann

        @jans_ios
        Hmm. Ich konnte bisher die Ladeleistung mit "e3dc-rscp.0.WB.WB_1.Control.PowerLimitation" nicht beeinflussen. deshalb gehe ich immer noch über den Tesla-Adapter und steuere das über den Wagen. Aber Vielleicht mache ich mit "e3dc-rscp.0.WB.WB_1.Control.PowerLimitation" irgendetwas falsch?

        Hast Du das schon erfolgreich ausprobiert?

        J Offline
        J Offline
        jans_ios
        schrieb am zuletzt editiert von
        #2285

        @georg-hermann
        Ja, also bei mir klappt das - ich kann das Laden starten, stoppen und die Power-Limitation setzen

        Georg HermannG 1 Antwort Letzte Antwort
        0
        • J jans_ios

          @georg-hermann
          Ja, also bei mir klappt das - ich kann das Laden starten, stoppen und die Power-Limitation setzen

          Georg HermannG Offline
          Georg HermannG Offline
          Georg Hermann
          schrieb am zuletzt editiert von
          #2286

          Ich habe wohl gestern ein Update von P10_2022_046 auf P10_2023_022 für den S10E Pro eingespielt bekommen.

          Jetzt fällt mir bei der Wallbox-Nutzung folgendes auf: Wenn die Ladeschwelle erreicht ist, und der Regelbeginn noch nicht (=Akku-LADEsperre), funktioniert das Entladen des Akkus über die Wallbox (easy connect) nicht mehr. Dann wird immer aus dem Netz bezogen, falls sich mal eine Wolke dazwischen schiebt.

          Ist das ein neues Verhalten in Verbindung mit der neuen HKW-Software-Version, oder ist mir das nur noch nie aufgefallen?

          Versionen:
          Charge-Control: 1.2.12
          e3dc-rscp: 1.2.2
          Javascript: 7.0.3

          A 1 Antwort Letzte Antwort
          0
          • Georg HermannG Georg Hermann

            Ich habe wohl gestern ein Update von P10_2022_046 auf P10_2023_022 für den S10E Pro eingespielt bekommen.

            Jetzt fällt mir bei der Wallbox-Nutzung folgendes auf: Wenn die Ladeschwelle erreicht ist, und der Regelbeginn noch nicht (=Akku-LADEsperre), funktioniert das Entladen des Akkus über die Wallbox (easy connect) nicht mehr. Dann wird immer aus dem Netz bezogen, falls sich mal eine Wolke dazwischen schiebt.

            Ist das ein neues Verhalten in Verbindung mit der neuen HKW-Software-Version, oder ist mir das nur noch nie aufgefallen?

            Versionen:
            Charge-Control: 1.2.12
            e3dc-rscp: 1.2.2
            Javascript: 7.0.3

            A Offline
            A Offline
            ArnoD
            schrieb am zuletzt editiert von
            #2287

            @georg-hermann
            Ich habe die neue Version noch nicht, aber ich denke nicht das es davon abhängig ist.
            Ich muss mir das mal ansehen, eigentlich sollte entladen werden, wenn der Eigenverbrauch ansteigt und die Wallbox ist ja nichts anderes.
            Außer, die Ladeleistung der Wallbox wird jetzt nicht mehr beim Eigenverbrauch mit angezeigt, sondern von diesem abgezogen.

            J Georg HermannG 2 Antworten Letzte Antwort
            0
            • A ArnoD

              @georg-hermann
              Ich habe die neue Version noch nicht, aber ich denke nicht das es davon abhängig ist.
              Ich muss mir das mal ansehen, eigentlich sollte entladen werden, wenn der Eigenverbrauch ansteigt und die Wallbox ist ja nichts anderes.
              Außer, die Ladeleistung der Wallbox wird jetzt nicht mehr beim Eigenverbrauch mit angezeigt, sondern von diesem abgezogen.

              J Offline
              J Offline
              jans_ios
              schrieb am zuletzt editiert von
              #2288

              @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 Antwort Letzte Antwort
              0
              • A ArnoD

                @jans_ios sagte in E3DC Hauskraftwerk steuern:

                @arnod
                @Robbi12
                Die Modbus Register wurden ja mittlerweile gepostet - sorry, war offline im Urlaub ;)

                Ich habe mir mangels JavaScript-Skills ein Blockly gebaut, welches sich den Überschuss nimmt und damit den Heizstab per Modbus steuert. Ist noch nicht perfekt und kollidiert manchmal mit ChargeControl, aber es ist schon mal besser als nichts. Die Steuerung über das HKW hilft hier tatsächlich nicht, da hierbei erstmal der Akku voll (oder fast voll) sein muss, bevor überhaupt Wasser erwärmt wird - bei Nutzung von CC wird dadurch tagsüber dann schön eingespeist und kurz vor Sonnenuntergang minimal Warmwasser bereitet.

                Dachte mir schon, dass es über Modbus funktionieren müsste.
                Steuere meine Wärmepumpe auch so.
                Ich schicke einfach den Wert der aktuellen Einspeiseleistung an meine WP und die regelt dann automatisch die Leistung bis zu diesem Wert. Wenn E3DC-Control dann die Ladeleistung der Batterie begrenzt, steigt die Einspeiseleistung und meine WP schaltet sich ein.

                // 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) {
                    await setStateAsync(sID_WP_Aktuelle_Leistung,obj.state.val);
                });
                
                J Offline
                J Offline
                jans_ios
                schrieb am zuletzt editiert von
                #2289

                @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 Antwort Letzte Antwort
                0
                • J jans_ios

                  @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 Offline
                  A Offline
                  ArnoD
                  schrieb am zuletzt editiert von
                  #2290

                  @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 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    ArnoD
                    schrieb am zuletzt editiert von
                    #2291

                    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 Antwort Letzte Antwort
                    0
                    • J jans_ios

                      @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 Offline
                      A Offline
                      ArnoD
                      schrieb am zuletzt editiert von
                      #2292

                      @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 Antwort Letzte Antwort
                      0
                      • A ArnoD

                        @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 Offline
                        J Offline
                        jans_ios
                        schrieb am zuletzt editiert von
                        #2293

                        @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 Antwort Letzte Antwort
                        0
                        • J jans_ios

                          @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 Offline
                          A Offline
                          ArnoD
                          schrieb am zuletzt editiert von
                          #2294

                          @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 Antwort Letzte Antwort
                          0
                          • J Offline
                            J Offline
                            jans_ios
                            schrieb am zuletzt editiert von
                            #2295

                            @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 Antwort Letzte Antwort
                            0
                            • A ArnoD

                              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 Offline
                              J Offline
                              jans_ios
                              schrieb am zuletzt editiert von
                              #2296

                              @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 Antwort Letzte Antwort
                              0
                              • J jans_ios

                                @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 Offline
                                A Offline
                                ArnoD
                                schrieb am zuletzt editiert von
                                #2297

                                @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 Antwort Letzte Antwort
                                0
                                • J jans_ios

                                  @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 Offline
                                  A Offline
                                  ArnoD
                                  schrieb am zuletzt editiert von
                                  #2298

                                  @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 Antwort Letzte Antwort
                                  0
                                  • A ArnoD

                                    @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 Offline
                                    J Offline
                                    jans_ios
                                    schrieb am zuletzt editiert von
                                    #2299

                                    @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 Antwort Letzte Antwort
                                    0
                                    • J jans_ios

                                      @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 Offline
                                      A Offline
                                      ArnoD
                                      schrieb am zuletzt editiert von
                                      #2300

                                      @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 Antwort Letzte Antwort
                                      0
                                      • A ArnoD

                                        @georg-hermann
                                        Ich habe die neue Version noch nicht, aber ich denke nicht das es davon abhängig ist.
                                        Ich muss mir das mal ansehen, eigentlich sollte entladen werden, wenn der Eigenverbrauch ansteigt und die Wallbox ist ja nichts anderes.
                                        Außer, die Ladeleistung der Wallbox wird jetzt nicht mehr beim Eigenverbrauch mit angezeigt, sondern von diesem abgezogen.

                                        Georg HermannG Offline
                                        Georg HermannG Offline
                                        Georg Hermann
                                        schrieb am zuletzt editiert von
                                        #2301

                                        @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 Antwort Letzte Antwort
                                        0
                                        • Georg HermannG Georg Hermann

                                          @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 Offline
                                          A Offline
                                          ArnoD
                                          schrieb am zuletzt editiert von
                                          #2302

                                          @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 HermannG 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          886

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe