Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    W
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 6
    • Best 0
    • Groups 1

    whiley85

    @whiley85

    Starter

    0
    Reputation
    4
    Profile views
    6
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    whiley85 Follow
    Starter

    Latest posts made by whiley85

    • RE: Test Adapter e3dc-rscp v0.0.x GitHub

      @stevie77
      ich habe gerade das gleiche Thema.
      Ich habe mir daher in iobroker ein eigenes kleines script gebaut, welches per rscp den S10E steuert:

      schedule("2 * * 1,12 *", async function () {
      var CurrentPrizeCent=getState("alias.0.Tibber.CurrentPrizeCent").val;
      var next24hAvgCent=getState("0_userdata.0.Tibber.next24hAvgCent").val;
      var SoC=getState("modbus.0.holdingRegisters.40083_Batterie_SOC").val;
      if (SoC<80) {
      if (CurrentPrizeCent<0.75*next24hAvgCent) {
      setState("e3dc-rscp.0.EMS.SET_POWER_MODE",3); //Charge
      setState("e3dc-rscp.0.EMS.SET_POWER_VALUE",3000); //3000 Watt
      } else
      if (CurrentPrizeCent<0.85*next24hAvgCent) {
      setState("e3dc-rscp.0.EMS.SET_POWER_MODE",3); //Charge
      setState("e3dc-rscp.0.EMS.SET_POWER_VALUE",2000); //2000 Watt
      } else
      if (CurrentPrizeCent>1.1*next24hAvgCent) {
      setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
      setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",3000);
      } else {
      setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
      setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",0); //Entladesperre
      }}
      else
      if (CurrentPrizeCent>1.05*next24hAvgCent) {
      setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
      setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",3000);
      } else {
      setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
      setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",0); //Entladesperre
      }
      });
      

      Mir ist aufgefallen, sobald ich per rscp SET_POWER_MODE oder SET_POWER_VALUE schreibe, habe ich für wenige Sekunden Netzbezug statt Batteriebezug. Im Display steht kurz EMS Control active. Ich habe beispielsweise SET_POWER_MODE auf Normal, sprich EMS Control ist nicht aktiv. Lass ich das Skript drüber laufen und schreibe für die nächste Stunde wieder ein Normal, dann setzt für ein paar Sekunden das Ausspeichern aus der Batterie aus.

      Ist das nicht anders möglich oder lässt sich das vermeiden mit Einstellungen im Adapter wie Abfrage- oder Sendeintervalle?
      Bis auf diese Kleinigkeit funktioniert meine reine Wintersteuerung von Dezember-Januar sehr gut!
      Ich habe zu dieser Zeit kein E3DC/Control aktiv.

      posted in Tester
      W
      whiley85
    • RE: e3dc rscp / E3DC S10 Pro

      @loni78 Ist die Ladeleistung über irgendeinen anderen Parameter begrenzt, z.B. Max Charge Power?

      posted in ioBroker Allgemein
      W
      whiley85
    • RE: Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

      @mikerow weil die Preisinformation von morgen wertvoller ist. Wenn der Durchschnittspreis von morgen höher ist als von heute, mach ich schnell den Akku voll. Ist er niedriger, mach ich den Akku leer. Ich kann so viel effizienter steuern, auch über mehrere Stunden.

      posted in Tester
      W
      whiley85
    • RE: Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

      @thomkast zu spät... ist zwar nicht schön, aber selten und scheint zu funktionieren:

      schedule("1 13 * * *", async function () {
      function ArrayAvg(myArray) {
          var i = 0, summ = 0, ArrayLen = myArray.length;
          while (i < ArrayLen) {
              summ = summ + myArray[i++];
      }
          return summ / ArrayLen;
      }
      var myArray = [
          parseFloat(getState("tibberconnect.0.Homes.ffXXX.PricesTomorrow.0.total").val),
          parseFloat(getState("tibberconnect.0.Homes.ffXXX.PricesTomorrow.1.total").val),
          parseFloat(getState("tibberconnect.0.Homes.ffXXX.PricesTomorrow.2.total").val),
          //...
          parseFloat(getState("tibberconnect.0.Homes.ffXXX.PricesTomorrow.21.total").val),
          parseFloat(getState("tibberconnect.0.Homes.ffXXX.PricesTomorrow.22.total").val),
          parseFloat(getState("tibberconnect.0.Homes.ffXXX.PricesTomorrow.23.total").val),    
          ];
      var avg = ArrayAvg(myArray);
      setState('0_userdata.0.Tibber.next24hAvg', avg);
      setState('0_userdata.0.Tibber.next24hAvgCent', Math.round(avg*10000)/100);
      });
      

      Mit dem Datenpunkt kann ich nun mein E3DC Ladeverhalten regeln.
      Preis 10% niedriger als morgiger Durchschnittspreis => Akku laden
      Preis 10% höher als morgiger Durchschnittspreis => Akku freigeben
      Alles dazwischen => Entladesperre

      schedule("1 * * 1,12 *", async function () {
      var CurrentPrizeCent=getState("alias.0.Tibber.CurrentPrizeCent").val;
      var next24hAvgCent=getState("0_userdata.0.Tibber.next24hAvgCent").val;
      var SoC=getState("modbus.0.holdingRegisters.40083_Batterie_SOC").val;
      if (SoC<80) {
          if (CurrentPrizeCent<0.8*next24hAvgCent) {
          setState("e3dc-rscp.0.EMS.SET_POWER_MODE",3); //Charge
          setState("e3dc-rscp.0.EMS.SET_POWER_VALUE",3000); //3000 Watt  
          } else
          if (CurrentPrizeCent<0.9*next24hAvgCent) {
          setState("e3dc-rscp.0.EMS.SET_POWER_MODE",3); //Charge   
          setState("e3dc-rscp.0.EMS.SET_POWER_VALUE",2000); //2000 Watt
          } else
          if (CurrentPrizeCent>1.1*next24hAvgCent) {
          setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
          setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",3000);
          } else {
          setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
          setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",0); //Entladesperre
          }}
      else
          if (CurrentPrizeCent>1.1*next24hAvgCent) {
          setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
          setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",3000);   
          } else {
          setState("e3dc-rscp.0.EMS.SET_POWER_MODE",0); //Normal
          setState("e3dc-rscp.0.EMS.MAX_DISCHARGE_POWER",0); //Entladesperre
          }   
      });
      
      posted in Tester
      W
      whiley85
    • RE: Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

      @mikerow Vielen Dank, kann mir sicher helfen, besser in die Sache reinzukommen. Auf den ersten Blick ist dieser Ansatz leicht anders als meiner, denn hier wird eine Bandbreite des günstigsten Preises ermittelt.
      Ich stelle mir vor, dass ich um 14:00 Uhr den average der 24 Werte PricesTomorrow bilde und meinen Speicher per RSCP wie folgt steuere:

      if currentPrice < 0.9 x average, lade Speicher
      else if currentPrice > 1.1 x average, nutze Speicher
      else setze Entladesperre

      Hoffe man versteht meine Überlegungen.

      posted in Tester
      W
      whiley85
    • RE: Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

      @codibris danke für diesen genialen Adapter! Ich versuche gerade anhand der Preisvorhersagen meinen Speicher optimal zu nutzen, heißt bei Hochpreisen ausspeichern und bei Niedrigpreisen eine Entladesperre zu setzen. Was genau Hochpreis und was Tiefpreis ist, soll sich natürlich dynamisch anpassen. Ich wollte zunächst mit dem Pricelevel arbeiten, jedoch bezeiht der sich meiner Meinung nach auf zurückliegende Preise und ist nicht geeignet für mein Vorhaben.

      Gibt es eine Möglichkeit, über die PricesTomorrow einen Durchschnitt zu bilden und in einen neuen Datenpunkt zu schreiben?
      Bin leider absoluter Anfänger in javascript...

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