Navigation

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

    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

    B
    • Profile
    • Following 3
    • Followers 3
    • Topics 34
    • Posts 646
    • Best 43
    • Groups 2

    babl

    @babl

    Starter

    52
    Reputation
    80
    Profile views
    646
    Posts
    3
    Followers
    3
    Following
    Joined Last Online

    babl Follow
    Pro Starter

    Best posts made by babl

    • Hausspeicher laden, dynamisch, tibberlink, Scripte

      Überarbeitete Version, leichter zum Installieren, weniger Adapter nötig usw.
      findet ihr hier.

      https://forum.iobroker.net/topic/79071/neues-script-hausspeicher-energiemanager-sonnen

      Hallo zusammen, ich habe mich mal hingesetzt und hoffe ein vernünftiges Script entwickelt zu haben um den Hausspeicher über Tibber nach verschiedenen Gegebenheiten laden zu lassen in Abhängigkeit der Grundlast und der Beladedauer, dafür würde ich nun Tester suchen die sich an meiner Entwicklung beteiligen, ich würde mich freuen über einen gemeinsamen Austausch, Discussion und natürlich Verbesserungen.

      Es sind einiges an Blocklys zusammengekommen, ich versuche es hier so gut wie möglich alles zu beschreiben.

      Ich bitte euch, nach dem fertigeinrichten, erstmal den Datenpunkt der die Batterie steuert erst mal mit history zu loggen um zu sehen ob alles so paßt wie du dir das vorstellst, ich gehe mal davon aus, daß es zu dem ein oder anderen Fehler kommen wird.

      Bei mir läuft es aktuell seit dieser Woche und hatte die Batterie nun 2 mal geladen, das auch zu den günstigsten Preisen bei Tibber.

      Was ihr definitv braucht ist der Tibberlink Adapter (danke an @hombach) für die Erstellung des Adapters, da die anderen beiden leider nicht mehr weiterentwickelt werden.

      Ihr müßt die gleichen Datenpunkte verwenden wie ich, sonst funktioniert es nicht. Ich habe versucht die benötigten Datenpunkte erstellen zu lassen, aber leider bei 2 Datenpunkten muß man die dazugehörigen Aliase erstellen. Näheres erfolgt in der Beschreibung weiter unten.

      Ich sage es gleich, für die "Cracks" unter euch werden die Scripte wahrscheinlich nur laienhaft wirken, aber es hat mir Spaß gemacht und wenn es dann auch klappt dann bin ich zufrieden. Es hat doch auch massig viel Arbeit gemacht bis es so lief wie es jetzt läuft. Also vielleicht über den ein oder anderen Fehler einfach lächeln und nicht gleich "meckern". Jeder muss es lernen und das kann man nur mit "Learning bei Doing".

      Legen wir los.

      posted in Skripten / Logik
      B
      babl
    • RE: Hausspeicher laden, dynamisch, tibberlink, Scripte

      So ich habe mich mal hingesetzt und anhand des PV Forecast Adapters und dem "Das Wetter" Adapter ein Javascript geschrieben, daß anhand der Bewölkung die PV Forecast optimiert. Bei 100% Bewölkung habe ich einen Korrekturfaktor von 0.2 angenommen.

      Da ich bei mir viel mit Nebel zu kämpfen habe liegen die PV Vorhersage Adapter alle weit weit weg vom eigentlichen Ertrag, heute wurden 10 vorausgesagt aktuell sind wir bei 2.5, gestern waren es laut voraussage 15 das optimierte kam auf 10.4, reell waren es 10,2. Vielleicht kann es ja irgendjemand brauchen, es werden nur 2 Werte generiert, Summe today und summe tomorrow.

      const minOutputFactor = 0.2; // Mindestprozentsatz an Leistung bei 100% Wolkenbedeckung
      
      // Funktion zur Erstellung von Datenpunkten, falls sie noch nicht existieren
      function createStateIfNotExists(id, initialValue, callback) {
          if (!existsState(id)) {
              createState(id, initialValue, { type: 'number', unit: 'kWh', read: true, write: true }, callback);
          } else {
              callback();
          }
      }
      
      // Funktion zur Berechnung und Anpassung der PV-Forecasts basierend auf Wolkenbedeckungswerten
      function calculatePvForecast() {
          try {
              console.log('--- Sofortige Berechnung der PV Forecasts beim Skriptstart ---');
      
              let totalAdjustedPvToday = 0;
              let totalAdjustedPvTomorrow = 0;
      
              // Berechnung für heute (Stunden 5 bis 21)
              for (let hour = 5; hour <= 21; hour++) {
                  const hourString = hour.toString().padStart(2, '0');
                  const pvForecastToday = getState(`pvforecast.0.summary.energy.hoursToday.${hourString}:00:00`).val;
                  const cloudsToday = getState(`daswetter.0.NextHours.Location_1.Day_1.Hour_${hour}.clouds_value`).val;
      
                  const adjustedPvToday = (pvForecastToday * Math.max(minOutputFactor, (1 - cloudsToday / 100))).toFixed(2);
                  totalAdjustedPvToday += parseFloat(adjustedPvToday);
                  console.log(`Heute, Stunde ${hour}: Wolkenbedeckung = ${cloudsToday}%, Originaler PV-Wert = ${pvForecastToday} kWh, Angepasster PV-Wert = ${adjustedPvToday} kWh`);
              }
      
              // Speicherung des Gesamtwertes für heute
              createStateIfNotExists("0_userdata.0.PV-Forecast-optimiert.Heute_Gesamt", 0, () => {
                  setState(`0_userdata.0.PV-Forecast-optimiert.Heute_Gesamt`, parseFloat(totalAdjustedPvToday.toFixed(2)));
                  console.log(`Gesamter angepasster PV-Wert für heute: ${totalAdjustedPvToday.toFixed(2)} kWh`);
              });
      
              // Berechnung für morgen (Stunden 5 bis 21)
              for (let hour = 5; hour <= 21; hour++) {
                  const hourString = hour.toString().padStart(2, '0');
                  const pvForecastTomorrow = getState(`pvforecast.0.summary.energy.hoursTomorrow.${hourString}:00:00`).val;
                  const cloudsTomorrow = getState(`daswetter.0.NextHours.Location_1.Day_2.Hour_${hour}.clouds_value`).val;
      
                  const adjustedPvTomorrow = (pvForecastTomorrow * Math.max(minOutputFactor, (1 - cloudsTomorrow / 100))).toFixed(2);
                  totalAdjustedPvTomorrow += parseFloat(adjustedPvTomorrow);
                  console.log(`Morgen, Stunde ${hour}: Wolkenbedeckung = ${cloudsTomorrow}%, Originaler PV-Wert = ${pvForecastTomorrow} kWh, Angepasster PV-Wert = ${adjustedPvTomorrow} kWh`);
              }
      
              // Speicherung des Gesamtwertes für morgen
              createStateIfNotExists("0_userdata.0.PV-Forecast-optimiert.Morgen_Gesamt", 0, () => {
                  setState(`0_userdata.0.PV-Forecast-optimiert.Morgen_Gesamt`, parseFloat(totalAdjustedPvTomorrow.toFixed(2)));
                  console.log(`Gesamter angepasster PV-Wert für morgen: ${totalAdjustedPvTomorrow.toFixed(2)} kWh`);
              });
      
          } catch (error) {
              console.warn(`Fehler in der calculatePvForecast-Funktion: ${error.message}`);
              console.warn(error.stack);
          }
      }
      
      // Sofortige Ausführung der Berechnung beim Start des Skripts
      calculatePvForecast();
      
      // Geplante Ausführungen zur Aktualisierung der PV-Forecasts
      schedule("5 0 * * *", calculatePvForecast);   // Tägliche Ausführung um 0:05 Uhr
      schedule("5 5 * * *", calculatePvForecast);   // Tägliche Ausführung um 5:05 Uhr
      schedule("5 12 * * *", calculatePvForecast);  // Tägliche Ausführung um 12:05 Uhr
      
      
      posted in Skripten / Logik
      B
      babl
    • RE: [Major Update] SourceAnalytix v0.4.7-beta.0 released !

      @MichMein Ich hoffe für uns alle, daß der Adapter doch weiterentwickelt wird, wäre schade um die tollen Funktionen, und ich hab mich jetzt schon so drauf eingeschossen, wenn auch noch nicht alles hundertprozentig läuft, ich hoffe @Dutchman bleibt da dran.

      posted in Tester
      B
      babl
    • RE: Hausspeicher laden, dynamisch, tibberlink, Scripte

      Das 1. Script ist das Blockly zum Erstellen der Datenpunkte und das Eintragen der Variablen.

      Datenpunkte erzeugen - Screen.jpg

      Zuerst ein mal müssen 2 Datenpunkte als Alias erzeugt werden.
      A:

      1. alias.0.Sonnen.Status.userSoc dies sollte der Alias Datenpunkt sein von eurem AdapterDatenpunkt des Hausspeichers der die Kapazität eures Hausspeichers angibt in Prozent. Also der UserSoc
      2. alias.0.Sonnen.Control.Laden dies sollte der Alias Datenpunkt sein von eurem Hausspeicher Adapter der dir das Laden in Watt ermöglicht. Also Charging = 3000 Watt.

      Bei den Variablen habt ihr folgende Einstellmöglichkeiten:
      B:

      1. Batteriespeicherkapazität in Wh: Also wieviel Nennkwh hat deine Batterie an Kapazität (Sonnenbatterie SB 10 5,5kwh Brutto = 5kwh oder 5000wH Netto)
      2. Beladeleistung in Wh: Mit wieviel Watt möchtest du deine Batterie vom Netz beladen, Achte bitte auf die maximale Ladeleistung was dein Speicher abkann. (SB10 mit 5,5kwH = 3400 Watt)
      3. Wirkungsgrad Hausspeicher: Hier kommt dein Wirkungsgrad deines Hausspeichers rein (Wirkungsgrad = Beladung / Entladung) solltest du das bereits als Datenpunkt ausrechnen dann nimm den Datenpunkt, solltest du es nicht berechnen setze hier die % von denen du ausgehst daß das dein Wirkungsgrad ist. Dieser Wert wird zur Berechnung herangezogen ob es sich überhaupt rentiert den Hausspeicher zu laden, als Beispiel ist der Tibberpreis Max bei 0,3€ und der Mindestpreis bei 0,25€ und der Wirkungsgrad von 70% eingestellt ist dann würde sich es erst rechnen bei einem Mindestpreis von 0,21€ da sonst der Verlust deines Speichers das günstige auffressen würde.
      4. Beladeleistungsfaktor 0-5 und 5-95: Dies ist ein Faktor für die Beladung deines Hausspeichers in diesem Fall 2, was heißt das, du hast eine Beladeleistung von 3000 watt eingestellt und dnun der Faktor 2 ( es wird zwischen den Bereichen des User Socs von 0-5% und 90-95% nur mit 1500 Watt geladen um die Batteriezellen zu schonen. Faktor ist änderbar, genauso wie die Beladeleistung unter Punkt 2
      5. Beladeleistung 95-100 siehe Punkt 4 (750 Watt Ladeleistung ( 3000 durch 4)
      6. Ladeprozente Hausspeicher: hier habe ich die Möglichkeit gegeben den Hausspeicher zwischen 90% und 100% laden zu lassen, das heißt dies wird dann dynamisch ausgerechnet wie lange der Hausspeicher zum laden auf 90% oder auf 100% braucht in Abhängigkeit wie voll er jetzt ist.

      Ich hoffe es einigermaßen gut erklärt zu haben.

      Bitte zuerst den Punkt A erledigen und dann den Punkt B. Das Script dann 1mal starten, somit werden hier die benötigten Datenpunkte angelegt.
      Um das Logging müßt ihr euch selbst kümmern.

      Datenpunkte erstellen.txt

      Als nächsten Punkt solltet ihr den Adapter Tibberlink installieren.

      In den Einstellungen bei Automation müßt ihr folgendes einstellen.

      tibberlink-Channel-Einstellungen.jpg

      bei 1, den Datenpunkt auswählen der mit "beste Kosten" bezeichnet ist, er ist zu finden unter 0_userdata.0.Tibber.Beste_Kosten
      bei 2, das selbe wie unter punkt 1 nur das sind die besten einzelstunden
      das selbe spiel bei 3, das sind die besten stundenblöcke.

      Es sollte nun bei tibberlink unter Calcualtions die Ordner 0/1/2 zu finden sein, die dann diese 3 ausgewählten Datenpunkte steuern, die Datenpunkte von Tibberlink werden dann mit Daten gefüttert aus meinen Scripten.

      posted in Skripten / Logik
      B
      babl
    • RE: Test Adapter TibberConnect 0.0.x inkl. Tibber Pulse

      Tut sich jetzt mit dem Adapter noch irgendwas, sonst wäre es vielleicht ratsam hier die Community um die Weiterentwicklung zu bitten. Müsste ja aktuell eigentlich von vielen grosses Interesse dran bestehen.

      posted in Tester
      B
      babl
    • RE: [How-to] Node.js ioBroker richtig updaten-2021/22 Edition

      @apollon77

      perfekt geklappt, mußte nur beim zigbee einen manuellen rebuild machen, alles andere lief perfekt und bisher schaut alles gut aus, danke für die ausführliche Erklärung. 👍

      posted in ioBroker Allgemein
      B
      babl
    • RE: js-controller 6.0.x jetzt für alle User im STABLE!

      Update über SSH auf den 6.0.9 gemacht, anschliessend gleich noch das nodejs nachgezogen auf die version 20.16.0, dann neu gestartet, bisher keine aufälligkeiten.

      Danke

      posted in ioBroker Allgemein
      B
      babl
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @sborg danke 2.05 läuft

      posted in Praktische Anwendungen (Showcase)
      B
      babl
    • RE: [Major Update] SourceAnalytix v0.4.7-beta.0 released !

      @dos1973 das kommt auf deine datenpunkte drauf an, wenn du z.b. kwh datenpunkte hast solltest du auch kwh einstellen.

      posted in Tester
      B
      babl
    • RE: Tool für Beladung Elektroautos über PV Strom

      @lesiflo sagte in Tool für Beladung Elektroautos über PV Strom:

      @babl Ja geht auch mit dem go-e. Habe selbst zwei davon, aber leider noch kein E-Auto, kommt erst im Juni (hoffentlich). Beschreibung folgt demnächst.

      ok, danke habe auch noch keins, aber seit letzter woche den fertig installierten go - e bei mir kommt es erst nächstes jahr aber man muß vorbereitet sein und die förderung wollte ich mitnehmen 🙂

      posted in Entwicklung
      B
      babl

    Latest posts made by babl

    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @sborg 3.5.0 ist installiert, fehlerfrei bis jetzt

      statistikscript v2.07 ebenfalls installiert, bisher fehlerfrei, alles andere ob die Fehler nun nach Mitternacht weg sind, schreibe ich dir die nächsten Tage.

      Update: Fehler sind weg

      P.S.

      Danke für deine Arbeit.

      Gruß

      posted in Praktische Anwendungen (Showcase)
      B
      babl
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

      @babl sagte in [Linux Shell-Skript] WLAN-Wetterstation:

      Heute habe ich wieder komische Fehlermeldungen im Log.

      Heute 01:03 	error 	javascript.0 	at processTicksAndRejections (node:internal/process/task_queues:95:5)
      Heute 01:03 	error 	javascript.0 	at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1228:38
      Heute 01:03 	error 	javascript.0 	Statistik:639:27)
      Heute 01:03 	error 	javascript.0 	Error in callback: TypeError: Cannot read properties of null (reading '0')
      

      Das muß vom Statistik Script herkommen, vielleicht hast du mal zeit und schaust drüber. Danke

      An alle Statistik-Skript Nutzer:

      Auch hier erkennt er wohl wie er will. Der Datenpunkt-Inhalt [neue Version des Statistik-Skripts vorhanden?] ist ein String ("---" oder die GitHub-URL). Den Datenpunkt auf "gemischt" umstellen, dann ist Ruhe und die Fehlermeldung im Log ist weg:

      Bild 001.png

      Habe auch den Datenpunkt auf gemischt umgestellt,

      Fehlermeldung kommt trotzdem noch.

      Heute 01:03 	error 	javascript.0 	[2 Einträge] at processTicksAndRejections (node:internal/process/task_queues:95:5)
      Heute 01:03 	error 	javascript.0 	[2 Einträge] at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1228:38
      Heute 01:03 	error 	javascript.0 	[2 Einträge] Statistik:639:27)
      Heute 01:03 	error 	javascript.0 	[2 Einträge] Error in callback: TypeError: Cannot read properties of null (reading '0')
      

      Gruß

      posted in Praktische Anwendungen (Showcase)
      B
      babl
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      Heute habe ich wieder komische Fehlermeldungen im Log.

      Heute 01:03 	error 	javascript.0 	at processTicksAndRejections (node:internal/process/task_queues:95:5)
      Heute 01:03 	error 	javascript.0 	at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1228:38
      Heute 01:03 	error 	javascript.0 	Statistik:639:27)
      Heute 01:03 	error 	javascript.0 	Error in callback: TypeError: Cannot read properties of null (reading '0')
      

      Das muß vom Statistik Script herkommen, vielleicht hast du mal zeit und schaust drüber. Danke

      posted in Praktische Anwendungen (Showcase)
      B
      babl
    • RE: Neues Script: Hausspeicher Energiemanager Sonnen

      @raspmad Hausspeicher-laden und Hausspeicher Sperre

      posted in Blockly
      B
      babl
    • RE: Neues Script: Hausspeicher Energiemanager Sonnen

      @raspmad hi, lade dir mal die daten runter und schau einfach ob du das auf dein system umschreiben kannst, wenn es läuft dann könntest du es ja hier auch veröffentlichen für deine konfiguration, so haben alle was davon

      Hier sind nochmals alle Dateien aus dem Java Script exportiert.

      Energiemanager.zip

      posted in Blockly
      B
      babl
    • RE: Neues Script: Hausspeicher Energiemanager Sonnen

      Es gibt 2 Änderungen und einen neuen Datenpunkt, damit die Berechnung von EVCC auch funktioniert wird jetzt der Stand um 00:00:02 ausgelesen und in den Datenpunkt geschrieben und dann abends damit gerechnet.

      Deshalb 2 Änderungen.

      1 mal im Script Datenpunkte erzeugen, dies nach der Änderung dann bitte 1 mal ausführen, so wird der Datenpunkt angelegt.

      Datenpunkte_erzeugen.txt

      und dann in der Grundlast Berechnung, es wird dann mit dem neuen Datenpunkt gerechnet.

      Grundlast_Berechnung.txt

      posted in Blockly
      B
      babl
    • RE: Neues Script: Hausspeicher Energiemanager Sonnen

      Es gibt 2 Änderungen, da es mit dem evcc und der Grundlastberechnung so nicht klappte, jetzt sollte um Mitternacht die Differenz berechnet werden und somit auch die reelle Grundlast richtig berechnet werden.

      Grundlast_Berechnung.txt

      Auch im Script Pv Ertrag habe ich noch was geändert, da daß mit dem PV Module voll Schnee mir so nicht gefallen hat, hier die Änderung

      PV-Ertrag_Durchschnitt.txt

      Bitte die beiden alten Scripte durch diese beiden neuen ersetzen.

      posted in Blockly
      B
      babl
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @sborg jepp der null fehler ist weg

      posted in Praktische Anwendungen (Showcase)
      B
      babl
    • RE: VIS von Sigi234

      @uli977 doch das geht schon, du musst es nur richtig zerlegen und dann eine oder mehrere logiken einbauen als beispiel

      falls minuten anzahl größer als 20 dann funktioniert es ja so wie du es hast

      falls minuten kleiner als 20 z.B. 15Minuten dann ziehe von 60 15 minuten ab und verringere die stunde um 1 widerrum als beispiel 16 uhr 15 -20 minuten ist 15 uhr 55, also von den 15 minuten 20 abziehen das sind dann -5 diese ziehst du von 60 ab dann hast du den minutenwert hier also 55 minuten, die stunde verringerst du dann in der selben logik um 1 also 16 - 1 = 15 also komplett 15:55 Uhr.

      posted in Praktische Anwendungen (Showcase)
      B
      babl
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @sborg alles klar, danke, kein problem laß dir zeit

      posted in Praktische Anwendungen (Showcase)
      B
      babl
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo