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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    E3DC Hauskraftwerk steuern

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

      @ArnoD sagte in E3DC Hauskraftwerk steuern:

      @stevie77
      Der Fehler wurde in der Version 0.2.10 behoben.

      Okay, dann spricht doch vieles dafür die nächsten Tage quasi "nochmals von vorne anzufangen" und die neueste Version mit den ganzen Änderungen bei mir zu integrieren. Das beruhigt, dass der Bug schon gefunden wurde. Danke.

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


        Sehe ich auch so.
        Werde das ganze anwählbar machen ob nur Proplanta oder Forecast oder beides

        @ArnoD super Idee...

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

          Habe heute mal ein Script geschrieben, das die Modbus Register 40088 und 40085 (Datenword dezimal) in eine Bitausgabe für VIS umwandelt.
          Man kann somit in VIS noch einige Informationen anzeigen.
          Beim Modbus Register 40088 "Wallbox_x_CTRL" kann man auch drei Bits setzen und die E3DC Wallbox steuern.

          Wer es benötigt, hier das komplette Script:

          // Aufteilung der Datenpunkte mit doppelten Informationen
           
          // Aufteilung "Autarkie und Eigenverbrauch in Prozent"
          var id1 = 'modbus.0.holdingRegisters.40082_Autarkie_Eigenverbrauch';
          createState('e3dc.modbus.Autarkie');
          createState('e3dc.modbus.Eigenverbrauch');
          on(id1, function (obj) {
          setState('e3dc.modbus.Autarkie', (obj.state.val >> 8) & 0xFF, true);
          setState('e3dc.modbus.Eigenverbrauch', obj.state.val & 0xFF, true);
          });
           
          // Aufteilung "Modbus Firmware Version"
          var id2 = 'modbus.0.holdingRegisters.40002_Modbus_Firmware';
          createState('e3dc.modbus.MajorVersion');
          createState('e3dc.modbus.MinorVersion');
          on(id2, function (obj) {
              log(obj.state.val);
              setState('e3dc.modbus.MajorVersion', (obj.state.val >> 8) & 0xFF, true);
              setState('e3dc.modbus.MinorVersion', obj.state.val & 0xFF, true);
          });
          
          // Modbus Register 40088 "Wallbox_x_CTRL" Datenwort Dez. in BIT_Ausgabe für Vis umwandeln
          var id3 = 'modbus.0.holdingRegisters.40088_WallBox_0_CTRL';
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_0', {'def':0, 'name':'Wallbox vorhanden und verfügbar=1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_1', {'def':0, 'name':'Solarbetrieb aktiv=1 Mischbetrieb aktiv=0' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_2', {'def':0, 'name':'Laden abgebrochen=1 Laden freigegeben=0' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_3', {'def':0, 'name':'Auto lädt=1 Auto lädt nicht=0' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_4', {'def':0, 'name':'Typ-2-Stecker verriegelt=1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_5', {'def':0, 'name':'Typ-2-Stecker gesteckt=1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_6', {'def':0, 'name':'Schukosteckdose1 an = 1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_7', {'def':0, 'name':'Schukostecker1 gesteckt = 1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_8', {'def':0, 'name':'Schukostecker1 verriegelt = 1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_9', {'def':0, 'name':'Relais an, 16A, 1 Phase,Schukosteckdose = 1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_10', {'def':0, 'name':'Relais an, 16A, 3 Phasen, Typ 2 = 1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_11', {'def':0, 'name':'Relais an, 32A, 3 Phasen, Typ 2 = 1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.WallBox_0_CTRL_Bit_12', {'def':0, 'name':'Eine Phase aktiv=1 drei Phasen aktiv=0' , 'type':'number', 'role':'State'});
          
          on({id: 'javascript.0.e3dc.modbus.WallBox_0_CTRL_Bit_1', change: "ne"}, function (obj){if (CallingInstance(obj) == 3){WriteModbusDez(obj)}});
          on({id: 'javascript.0.e3dc.modbus.WallBox_0_CTRL_Bit_2', change: "ne"}, function (obj){if (CallingInstance(obj) == 3){WriteModbusDez(obj)}});
          on({id: 'javascript.0.e3dc.modbus.WallBox_0_CTRL_Bit_12', change: "ne"}, function (obj){if (CallingInstance(obj) == 3){WriteModbusDez(obj)}});
          
          on(id3, function (obj) {
              var myDez = obj.state.val;
              var myBin = myDez.toString(2); //Decimal in Bin 
              myBin = new Array(17 - myBin.length).join('0') + myBin;
              log('Wallbox_x_CTRL Dez ='+myDez+'/ BIN ='+myBin);
              if(myBin[15]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_0',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_0',0)};
              if(myBin[14]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_1',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_1',0)};
              if(myBin[13]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_2',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_2',0)};
              if(myBin[12]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_3',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_3',0)};
              if(myBin[11]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_4',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_4',0)};
              if(myBin[10]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_5',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_5',0)};
              if(myBin[9]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_6',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_6',0)};
              if(myBin[8]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_7',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_7',0)};
              if(myBin[7]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_8',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_8',0)};
              if(myBin[6]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_9',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_9',0)};
              if(myBin[5]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_10',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_10',0)};
              if(myBin[4]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_11',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_11',0)};
              if(myBin[3]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_12',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_12',0)};
           
          });
          
          // Modbus Register 40088 "Wallbox_x_CTRL" BIT_Eingabe VIS in Datenwort Dez. umwandeln
          function WriteModbusDez(obj)
          {
              var myBin='000';
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_12').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_11').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_10').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_9').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_8').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_7').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_6').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_5').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_4').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_3').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_2').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_1').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_0').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
              var myDez = parseInt(myBin, 2);
              setState(id3,myDez);
              //log('Neu Dez ='+myDez+'/ BIN ='+myBin);
          }; 
          
          // Modbus Register 40085 "EMS-Status" Datenwort Dez. in BIT_Ausgabe für Vis umwandeln
          var id4 = 'modbus.0.holdingRegisters.40085_EMS_Status';
          createState('e3dc.modbus.EMS_Status_Bit_0', {'def':0, 'name':'Laden der Batterien ist gesperrt=1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.EMS_Status_Bit_1', {'def':0, 'name':'Entladen der Batterien ist gesperrt=1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.EMS_Status_Bit_2', {'def':0, 'name':'Notstrommodus ist möglich=1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.EMS_Status_Bit_3', {'def':0, 'name':'Wetterbasiertes Es wird Ladekapazität zurückgehalten=1 Es wird keine Ladekapazität zurückgehalten=0' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.EMS_Status_Bit_4', {'def':0, 'name':'Abregelungs-Status es wird abgeregelt=1 es wird nicht abgeregelt=0' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.EMS_Status_Bit_5', {'def':0, 'name':'Ladesperrzeit aktiv = 1' , 'type':'number', 'role':'State'});
          createState('e3dc.modbus.EMS_Status_Bit_6', {'def':0, 'name':'Entladesperrzeit aktiv = 1' , 'type':'number', 'role':'State'});
          
          on({id: id4, change: "ne"}, function (obj) {
              var myDez = obj.state.val;
              var myBin = myDez.toString(2); //Decimal in Bin 
              myBin = new Array(17 - myBin.length).join('0') + myBin;
              log('EMS-Status Dez ='+myDez+'/ BIN ='+myBin);
              if(myBin[15]==1){setState('e3dc.modbus.EMS_Status_Bit_0',1)}else{setState('e3dc.modbus.EMS_Status_Bit_0',0)};
              if(myBin[14]==1){setState('e3dc.modbus.EMS_Status_Bit_1',1)}else{setState('e3dc.modbus.EMS_Status_Bit_1',0)};
              if(myBin[13]==1){setState('e3dc.modbus.EMS_Status_Bit_2',1)}else{setState('e3dc.modbus.EMS_Status_Bit_2',0)};
              if(myBin[12]==1){setState('e3dc.modbus.EMS_Status_Bit_3',1)}else{setState('e3dc.modbus.EMS_Status_Bit_3',0)};
              if(myBin[11]==1){setState('e3dc.modbus.EMS_Status_Bit_4',1)}else{setState('e3dc.modbus.EMS_Status_Bit_4',0)};
              if(myBin[10]==1){setState('e3dc.modbus.EMS_Status_Bit_5',1)}else{setState('e3dc.modbus.EMS_Status_Bit_5',0)};
              if(myBin[9]==1){setState('e3dc.modbus.EMS_Status_Bit_6',1)}else{setState('e3dc.modbus.EMS_Status_Bit_6',0)};
              
          });
          
          
          1 Reply Last reply Reply Quote 0
          • A
            ArnoD @smartboart last edited by

            @smartboart sagte in E3DC Hauskraftwerk steuern:

            @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
            Muss nicht am Script liegen.

            Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

            smartboart 2 Replies Last reply Reply Quote 0
            • A
              ArnoD last edited by ArnoD

              Neue Version 0.2.12 hochgeladen.

              Änderungen:
              Neuer State "PrognoseAnwahl" hinzugefügt. Es kann jetzt in VIS ausgewählt werden, welche Prognose für die Berechnung verwendet wird. 0 = Proplanta u. Forecast (Standard) 1 = Proplanta 2 = Forecast.

              Aktuelle View txt Datei 30.08.2020 habe ich auch hochgeladen.

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

                @ArnoD sagte in E3DC Hauskraftwerk steuern:

                Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                ja genau

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

                  @ArnoD sagte in E3DC Hauskraftwerk steuern:

                  Neue Version 0.2.12 hochgeladen.

                  Änderungen:
                  Neuer State "PrognoseAnwahl" hinzugefügt. Es kann jetzt in VIS ausgewählt werden, welche Prognose für die Berechnung verwendet wird. 0 = Proplanta u. Forecast (Standard) 1 = Proplanta 2 = Forecast.

                  Aktuelle View txt Datei 30.08.2020 habe ich auch hochgeladen.

                  Hallo Arno, function main wird bei Programmstart nicht mehr ausgeführt...
                  wenn PognoseAnwahl != 1

                  habe den Teil für mich so abgeändert...

                  createUserStates(instanz, false, statesToCreate, function(){
                      log('Jetzt sind alle States abgearbeitet');
                      AutomatikAnwahl = getState(sID_Automatik).val;
                      PrognoseAnwahl = getState(sID_PrognoseAnwahl).val;
                      setState(sID_Anwahl_MEZ_MESZ, dst());  
                      setState(sID_Einstellung,0);
                      ZeitAnwahl_MEZ_MESZ = getState(sID_Anwahl_MEZ_MESZ).val
                      EinstellungAnwahl = getState(sID_EinstellungAnwahl).val
                      Wh_Leistungsmesser0();
                      // Daten Proplanta einmal beim Programmstart aktualisieren
                      InterrogateProplanta(2);
                      // Regelmässige Aktualisierung Daten Proplanta beim Programmstart starten
                      ScheduleProplanta();
                      setTimeout(function(){main();},5000);//Zeit geben bevor main ausgeführt wird
                      // Daten Forecast einmal beim Programmstart aktualisieren
                      if(getState(sID_PrognoseAnwahl).val != 1) {
                      switch (nDachflaechen){
                          case 1:
                              InterrogateForecast (1,2);
                  
                              break;
                          case 2:
                              InterrogateForecast (1,2);
                              InterrogateForecast (2,2);
                  
                              break;
                          };
                      }    
                  
                      // Stündliche Aktualisierung Daten Forecast beim Programmstart starten
                      SheduleForecast();
                  
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • A
                    ArnoD last edited by

                    @smartboart
                    Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?
                    Egal ob PognoseAnwahl = 0, 1 oder 2 ist, wird die function main() immer in der function InterrogateProplanta() aufgerufen.
                    Mit deiner Änderung kann es sein, das die Rückmeldung der Wetterdaten von Proplanta noch nicht erfolgt ist und die Variablen noch den Wert 0 enthalten, was zu einer Fehlermeldung im LOG führen würde.

                    smartboart 2 Replies Last reply Reply Quote 0
                    • A
                      ArnoD last edited by

                      Es ist anscheinend noch ein Fehler in der Funktion Ueberschuss_Prozent() enthalten.

                      2020-09-01 15:30:07.418 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose Forecast in kWh = 53.230000000000004
                      2020-09-01 15:30:07.420 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose Proplanta in kWh = 42.982400000000005
                      2020-09-01 15:30:07.421 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose_kWh nach Abzug Korrekturfaktor = 42.982400000000005
                      2020-09-01 15:30:07.421 - info: javascript.1 (16601) script.js.common.E3DC_Control: Bereits produzierte PV-Leistung = 29.11779853024598
                      2020-09-01 15:30:07.422 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose_kWh_heute für Berechnung = 13.864601469754025
                      2020-09-01 15:30:07.422 - info: javascript.1 (16601) script.js.common.E3DC_Control: Berechneter Eigenverbrauch = 7
                      2020-09-01 15:30:07.422 - info: javascript.1 (16601) script.js.common.E3DC_Control: AktSpeicherSoC in % = 75
                      2020-09-01 15:30:07.423 - info: javascript.1 (16601) script.js.common.E3DC_Control: FreieKapBatterie_kWh = 9.75
                      2020-09-01 15:30:07.423 - info: javascript.1 (16601) script.js.common.E3DC_Control: Ueberschuss in kWh = 21.945266867762044
                      2020-09-01 15:30:07.424 - info: javascript.1 (16601) script.js.common.E3DC_Control: Ueberschuss in Prozent = 56.2699150455437
                      2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Bewölkungsgrad 12 Uhr Proplanta 87.5
                      2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Bewölkungsgrad 15 Uhr Proplanta 87.5
                      2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Berechneter Unload SoC ist = 19
                      2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Einstellung 3 aktiv
                      2020-09-01 15:30:07.438 - info: javascript.1 (16601) script.js.common.E3DC_Control: E3DC Config Datei gespeichert!
                      

                      Hier hätte bei Ueberschuss in kWh und Ueberschuss in Prozent eigentlich 0 rauskommen müssen.
                      Das Komische daran ist, dass es fünfmal hintereinander richtig berechnet wurde.
                      Stehe irgendwie auf dem Schlauch.

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

                        @ArnoD sagte in E3DC Hauskraftwerk steuern:

                        @smartboart
                        Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?
                        Egal ob PognoseAnwahl = 0, 1 oder 2 ist, wird die function main() immer in der function InterrogateProplanta() aufgerufen.
                        Mit deiner Änderung kann es sein, das die Rückmeldung der Wetterdaten von Proplanta noch nicht erfolgt ist und die Variablen noch den Wert 0 enthalten, was zu einer Fehlermeldung im LOG führen würde.

                        Ok, muss ich mir nochmal anschauen..Ich hatte das bemerkt nachdem ich das script neu gestartet habe und festgestellt habe, das meine vis Anzeige ( Einstellung 1, 2, 3, 4 oder 5 aktiv ) leer war.
                        was nur passiert wenn main nicht ausgeführt wurde...

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

                          @ArnoD sagte in E3DC Hauskraftwerk steuern:

                          @smartboart
                          Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?

                          Ok, hatte das beim letzten Update übersehen und nicht aktualisiert.
                          Ich benutze eine angepasste Version von deinem Script und muss immer Paketweise updaten... Der Eintrag hat bei mir gefehlt... Sorry...

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

                            @ArnoD sagte in E3DC Hauskraftwerk steuern:

                            @smartboart sagte in E3DC Hauskraftwerk steuern:

                            @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                            Muss nicht am Script liegen.

                            Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                            Hallo Arno, konnte den Fehler nachvollziehen und folgendermaßen unterbinden...

                            im Trigger ein Change 'ne' und wie in deinen Bedingungen eine Verzögerung für
                            e3dcConfigWrite.
                            ebenfalls kann man doch auch hier wieder zurücklesen e3dcConfigRead

                            // e3dc.config.txt mit den aktuellen Werten neu schreiben wenn State DatenSchreiben = true
                            on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenSchreiben', val: true, change:'ne'}, function (){
                            StateRead();
                                setTimeout(function() { e3dcConfigWrite(0);},500);
                            setTimeout(e3dcConfigRead, 1500);
                            });
                            
                            // Einlesen der Werte e3dc.config.txt wenn State DatenLesen = true
                            on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenLesen', val: true, change:'ne'}, function (){
                            	e3dcConfigRead();
                            });
                            

                            Ebenfalls hast du die Verzögerung bei Prognose 1 in der Funktion main weggeleassen...

                                // 1 Prognose PV-Leistung geringer als benötigter Eigenverbrauch, Überschuss zu 100% in Batterie speichern
                            	if ((Ueberschuss === 0 && AutomatikAnwahl) || (AutomatikAnwahl === false && EinstellungAnwahl ===1))
                            	{
                            		if(Einstellung_alt != 1){
                                        if (LogAusgabe){log('Einstellung 1 aktiv');}
                            		    setState(sID_Einstellung,1);
                                        StateRead();
                                        setTimeout(function() { e3dcConfigWrite(1);},500);
                                        setTimeout(e3dcConfigRead, 1500);
                                    }
                            	}
                            
                            A 1 Reply Last reply Reply Quote 1
                            • A
                              ArnoD @smartboart last edited by

                              @smartboart sagte in E3DC Hauskraftwerk steuern:

                              @ArnoD sagte in E3DC Hauskraftwerk steuern:

                              @smartboart sagte in E3DC Hauskraftwerk steuern:

                              @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                              Muss nicht am Script liegen.

                              Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                              Hallo Arno, konnte den Fehler nachvollziehen und folgendermaßen unterbinden...

                              im Trigger ein Change 'ne' und wie in deinen Bedingungen eine Verzögerung für
                              e3dcConfigWrite.
                              ebenfalls kann man doch auch hier wieder zurücklesen e3dcConfigRead

                              // e3dc.config.txt mit den aktuellen Werten neu schreiben wenn State DatenSchreiben = true
                              on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenSchreiben', val: true, change:'ne'}, function (){
                              StateRead();
                                  setTimeout(function() { e3dcConfigWrite(0);},500);
                              setTimeout(e3dcConfigRead, 1500);
                              });
                              
                              // Einlesen der Werte e3dc.config.txt wenn State DatenLesen = true
                              on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenLesen', val: true, change:'ne'}, function (){
                              	e3dcConfigRead();
                              });
                              

                              Konnte diesen Fehler bei mir nicht reproduzieren, habe es so übernommen, da es generell nicht schadet, etwas zu warten.
                              Danke.

                              Ebenfalls hast du die Verzögerung bei Prognose 1 in der Funktion main weggeleassen...

                              Habe es nicht weggelassen, da ich bis jetzt keine Verzögerung beim schreiben der e3dc-config.txt hatte 🙂
                              Habe jetzt mal bei allen Aufrufen der function e3dcConfigWrite() eine Verzögerung eingetragen, also auch bei Prognose 2-5.

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                stevie77 @ArnoD last edited by

                                @ArnoD Wann denkst du dass diese letzte Änderung online geht? Wollte jetzt eben anfangen, aber vielleicht warte ich dann noch ein bisschen um mir Arbeit zu ersparen?
                                Die aktuelle Vis-View finde ich nur, wenn ich ganz runterscrolle, oder? Oder gibt es irgendwo irgendwie einen Direktlink womit man in diesem Forum an die möglichen Downloads kommt?

                                A 2 Replies Last reply Reply Quote 0
                                • A
                                  ArnoD @stevie77 last edited by

                                  @stevie77

                                  Version 0.2.13 habe ich gerade hochgeladen.

                                  Änderungen:
                                  Version: 0.2.13 Neuer State EigenverbrauchTag um den Eigenverbrauch aus VIS oder anderem Script variabel anpassen zu können. Hinweis von smartboart, Verzögerung beim schreiben der e3dc-config.txt umgesetzt

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    stevie77 @ArnoD last edited by

                                    @ArnoD Okay, jetzt hab' ich Dummie auch den Link im Text gefunden. 🙂 War etwas irritiert, da ich meine, seither das Skript immer über eine Code-Passage herunterkopiert zu haben (anstatt Download). Danke für das schnelle Update!

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

                                      @stevie77 sagte in E3DC Hauskraftwerk steuern:

                                      Vis-View finde ich nur, wenn ich ganz runterscrolle, oder?

                                      Ja ist immer an der selben Stelle.

                                      Link Post 433439:

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        stevie77 @smartboart last edited by

                                        @smartboart sagte in E3DC Hauskraftwerk steuern:

                                        Nachdem gestern mein Ergebnis mit 1s pollzeit ne Punktlandung war habe ich heute mit 2s gepollt und das Ergebnis ist immer noch sehr gut..
                                        Portal 34,33kwh
                                        Script 34,51kwh
                                        Morgen gehe ich auf 3 s..

                                        @ArnoD Wo findet sich die Pollzeit im aktuellen Stand wieder? In den Benutzervariablen habe ich erstmal nichts gefunden. Wenn ich das richtig verstanden habe, ist 1 Sek sehr genau, 2 Sek genau und 3 Sekunden schon untauglich. Was verwendet das Skript aktuell?

                                        Ich komme jetzt von Version 0.2.01 - kann ich die ganzen vorhandenen States bestehen lassen oder alles löschen, damit es sauber anläuft? Ich vermute jetzt mal ersteres, weil in den Update-Erklärungen nichts dazu stand...

                                        A smartboart 2 Replies Last reply Reply Quote 0
                                        • S
                                          stevie77 @ArnoD last edited by

                                          @ArnoD Muss noch was fragen: Wie erkennt man in der Vis-View, welche Einstellung gerade aktiv ist (bei Automatik)? Laut Log sollte Einstellung 1 aktiv sein...

                                          a0c4e27a-edf8-41a2-9a4b-f62553fb4f98-image.png

                                          8.9.2020, 02:36:41.311	[info ]: javascript.0 (31473) Start javascript script.js.e3dc-control.handleE3DCControlV2
                                          8.9.2020, 02:36:41.673	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Jetzt sind alle States abgearbeitet
                                          8.9.2020, 02:36:41.699	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: registered 19 subscriptions and 7 schedules
                                          8.9.2020, 02:36:43.548	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Rueckmeldung :{"result":{"2020-09-08":9105,"2020-09-09":9170},"message":{"code":0,"type":"success","text":"","info":{"place":"21368 Dahlenburg, Landkreis L\u00fcneburg, Niedersachsen, DE","timezone":"Europe/Berlin","distance":0},"ratelimit":{"limit":12,"remaining":11}}}
                                          8.9.2020, 02:36:43.550	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Gespeichert wurde Dachfläche =2/2 : 9105 :9170
                                          8.9.2020, 02:36:46.695	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose Forecast in kWh = 79.694
                                          8.9.2020, 02:36:46.695	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose Proplanta in kWh = 15.570500000000001
                                          8.9.2020, 02:36:46.696	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose_kWh nach Abzug Korrekturfaktor  = 1.24564
                                          8.9.2020, 02:36:46.696	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Bereits produzierte PV-Leistung  = 0
                                          8.9.2020, 02:36:46.697	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose_kWh_heute für Berechnung = 3
                                          8.9.2020, 02:36:46.698	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Berechneter Eigenverbrauch = 12
                                          8.9.2020, 02:36:46.698	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: AktSpeicherSoC in % = 44
                                          8.9.2020, 02:36:46.698	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: FreieKapBatterie_kWh = 6.55
                                          8.9.2020, 02:36:46.699	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Ueberschuss in kWh = 0
                                          8.9.2020, 02:36:46.699	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Ueberschuss in Prozent = 0
                                          8.9.2020, 02:36:46.701	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Bewölkungsgrad 12 Uhr Proplanta 100
                                          8.9.2020, 02:36:46.702	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Bewölkungsgrad 15 Uhr Proplanta 100
                                          8.9.2020, 02:36:46.702	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Berechneter Unload SoC ist = 44
                                          8.9.2020, 02:36:46.702	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Einstellung 1 aktiv
                                          8.9.2020, 02:36:47.207	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: E3DC Config Datei gespeichert!
                                          8.9.2020, 02:36:47.955	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose Forecast in kWh = 79.694
                                          8.9.2020, 02:36:47.956	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose Proplanta in kWh = 15.570500000000001
                                          8.9.2020, 02:36:47.956	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose_kWh nach Abzug Korrekturfaktor  = 1.24564
                                          8.9.2020, 02:36:47.956	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Bereits produzierte PV-Leistung  = 0
                                          8.9.2020, 02:36:47.956	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose_kWh_heute für Berechnung = 3
                                          8.9.2020, 02:36:47.957	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Berechneter Eigenverbrauch = 12
                                          8.9.2020, 02:36:47.957	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: AktSpeicherSoC in % = 44
                                          8.9.2020, 02:36:47.957	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: FreieKapBatterie_kWh = 6.55
                                          8.9.2020, 02:36:47.958	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Ueberschuss in kWh = 0
                                          8.9.2020, 02:36:47.958	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Ueberschuss in Prozent = 0
                                          8.9.2020, 02:36:47.959	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Bewölkungsgrad 12 Uhr Proplanta 100
                                          8.9.2020, 02:36:47.960	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Bewölkungsgrad 15 Uhr Proplanta 100
                                          8.9.2020, 02:36:47.960	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Berechneter Unload SoC ist = 44
                                          8.9.2020, 02:36:48.207	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: E3DC Config Datei eingelesen!
                                          8.9.2020, 02:37:00.015	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: minütlicher Schedule gestoppt
                                          8.9.2020, 02:37:00.029	[info ]: javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: minütlicher Schedule gestoppt
                                          

                                          Und wieso wiederholt sich das mit noch nem Durchgang im Log nochmals obwohl Einstellung 1 schon gewählt wurde?

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

                                            @ArnoD Hat sich am Korrekturfaktor auch etwas geändert? Seither hatte ich mit const nKorrFaktor = 92 eine Reduzierung um 8%. Jetzt scheint die Prognose mit 92 extrem daneben zu liegen?!

                                            10:11:05.007	info	javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose Forecast in kWh = 79.256
                                            10:11:05.009	info	javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose Proplanta in kWh = 15.570500000000001
                                            10:11:05.010	info	javascript.0 (31473) script.js.e3dc-control.handleE3DCControlV2: Prognose_kWh nach Abzug Korrekturfaktor = 1.24564
                                            

                                            Bisher habe ich tatsächlich 19 kWh produziert, was schon etwas über der Proplanta-Schätzung liegt. Aber die Prognose mit Korrekturfaktor liegt mit 1 kWh doch sehr daneben. Daher vermute ich, dass die 92 nicht stimmt. Wie gebe ich eine Verringerung der Auto-Prognose um 8% richtig an?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            371
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            70
                                            3331
                                            1363397
                                            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