Navigation

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

    NEWS

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    D
    • Profile
    • Following 0
    • Followers 0
    • Topics 6
    • Posts 50
    • Best 2
    • Groups 1

    Doppellhelix

    @Doppellhelix

    Starter

    2
    Reputation
    5
    Profile views
    50
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Doppellhelix Follow
    Starter

    Best posts made by Doppellhelix

    • RE: Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

      Hab da mal was gemacht.

      https://forum.iobroker.net/topic/82454/zwangsladung-mit-sungrow-sh10rt

      posted in ioBroker Allgemein
      D
      Doppellhelix
    • RE: Erste Schritte beim Scripten - Einsteigerfrage

      Jetzt ist es mir klarer.

      Wie ich den Thread angefangen habe, war mir der Unterschied ja überhaupt nicht bewusst.
      Deswegen stand ich wohl auch gewaltig auf dem Schlauch und hab mich mehrmals gefragt, was ihr da überhaupt redet 😁
      Jetzt macht das alles einen Sinn.

      posted in JavaScript
      D
      Doppellhelix

    Latest posts made by Doppellhelix

    • RE: Zwangsladung mit Sungrow SH10RT

      Hier noch der Vollständigkeitshalber das 3. Script.

      Bildschirmfoto vom 2025-10-14 18-15-40.png

      posted in Skripten / Logik
      D
      Doppellhelix
    • RE: Zwangsladung mit Sungrow SH10RT

      @paul53

      Vielen lieben Dank. Ich werde es testen.
      Also zwei vermeidbare Fehler, die mir hätten auch auffallen können 🙄

      posted in Skripten / Logik
      D
      Doppellhelix
    • RE: Zwangsladung mit Sungrow SH10RT

      @paul53

      Ich hoffe ich habe dich richtig verstanden:

      var datum, uhrzeit, schedule1, timeout;
      
      // Beschreibe diese Funktion …
      async function setStart() {
        datum = getState('0_userdata.0.Strompreis.Datum_Strom').val.split(',');
        uhrzeit = getState('0_userdata.0.Strompreis.Zeitpunkt_Strom').val.split(':');
        schedule1 = schedule((datum[1]).toString().trim() + ' ' + (datum[0]).toString().trim() + ' ' + (datum[0]).toString().trim() + ' ' + (datum[1]).toString().trim() + ' ' + '*'.toString().trim(), async () => {
          if (getState('0_userdata.0.Netzladung.Ausloesebit_Netzladung_auto').val) {
            if ((formatDate(new Date(), 'hh:mm:ss') == getState('0_userdata.0.Strompreis.Zeitpunkt_Strom').val) && (formatDate(new Date(), 'DD.MM.YYYY') == getState('0_userdata.0.Strompreis.Datum_Strom').val)) {
              sendTo('telegram', 'send', {
                text: 'Test automatisch Netzladen zum billigsten Zeitpunkt',
              });
            }
            timeout = setTimeout(async () => {
              timeout = null;
              if (getState('0_userdata.0.Netzladung.Ausloesebit_Netzladung_auto').val == true) {
                setState('0_userdata.0.Netzladung.Ausloesebit_Netzladung_auto' /* Ausloesebit_Netzladung_auto */, false);
                sendTo('telegram', 'send', {
                  text: 'Test automatisches Netzladungsbit beendet',
                });
              }
            }, 300000);
          }
        });
      }
      
      
      on({ id: [].concat(['0_userdata.0.Strompreis.Datum_Strom']).concat(['0_userdata.0.Strompreis.Zeitpunkt_Strom']), change: 'ne' }, async (obj) => {
        (() => { if (schedule1) { clearSchedule(schedule1); schedule1 = null; }})();
        await setStart();
      });
      await setStart();
      
      

      Vllt. noch zur Info:
      die Variable 0_userdata.0.Strompreis.Datum_Strom hat das Format TT.MM.JJJJ
      die Variable 0_userdata.0.Strompreis.Zeitpunkt_Strom hat das Format HH:MM:SS

      posted in Skripten / Logik
      D
      Doppellhelix
    • RE: Zwangsladung mit Sungrow SH10RT

      @paul53
      Ok, habe ich gemacht.

      Bildschirmfoto vom 2025-10-12 15-52-27.png

      Bildschirmfoto vom 2025-10-12 15-52-42.png

      Leider bekomme ich dann diese Fehlermeldung:

      javascript.0	15:53:55.645	error	
      
      TypeError: Cannot read properties of undefined (reading 'toString')
      
      javascript.0	15:53:55.645	error	
      
          at setStart (script.js.PV.Zwangsladung_Auto:8:35)
      
      javascript.0	15:53:55.645	error	
      
          at script.js.PV.Zwangsladung_Auto:33:7
      
      javascript.0	15:53:55.645	error	
      
          at script.js.PV.Zwangsladung_Auto:40:3
      

      Hast du eine Idee, was noch schief läuft?

      posted in Skripten / Logik
      D
      Doppellhelix
    • RE: Zwangsladung mit Sungrow SH10RT

      @paul53
      Hallo,

      erstmal vielen Dank für deine Arbeit.
      Beeindruckend wie man auf sowas kommt.

      Ich habe gerade versucht das nachzubauen.
      Kannst du mir den letzte Block einmal erklären?

      falls Wert von Objekt ID Automatik
      mache Kommentar

      Welche Objekt ID Automatik meinst du genau?
      Ist das der Zeitpunkt, wenn ein neues Datum "reinkommt"?
      und warum dann ein Kommentar?

      Gruß Helix

      posted in Skripten / Logik
      D
      Doppellhelix
    • RE: Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

      Hab da mal was gemacht.

      https://forum.iobroker.net/topic/82454/zwangsladung-mit-sungrow-sh10rt

      posted in ioBroker Allgemein
      D
      Doppellhelix
    • Zwangsladung mit Sungrow SH10RT

      Hallo zusammen,

      ich möchte euch gerne meine Scripte zeigen und mir natürlich Tips abholen, was man verbessern kann. In einem Script steckt noch ein kleinrr Fehler, wobei ich noch Hilfe brauche.
      Grundsätzlich sind es drei Scripte die zusammenarbeiten.

      Beschreibung:
      Im Grunde gehts um darum den Batteriespeicher meiner PV Anlage zu bestimmten Zeiten voll zu laden.
      Ich nutze einen dynamischen Stromtarif. Da macht es Sinn, wenn keine Sonne zu erwarten ist, den Speicher zu billligen Stromzeiten zu füllen und ihn dann in teuren Zeiten zu nutzen.

      Ich will keine vollautomatische Lösung. Zumindest noch nicht.
      Wenn ich sehe das der Speicher recht leer ist und auf Grund der Witterung keine Speicherladung zu erwarten ist, will ich mit Hilfe von Telegram eine automatische Aufladung vormerken.
      iobroker schaut dann, wann der billigste Strompreis ist und startet dann die Zwangsladung.

      1. Script (Strompreise sortieren)
        Über den Adapter Awattar kommen um 15 Uhr immer die Strompreise vom nächsten Tag rein.
        Das Script schaut sich die Strompreise an und beschreibt anschließend drei Benutzervariablen:
        0_userdata.0.Strompreis.billigster_Preis -> hier wird der billigste Preis rein kopiert
        0_userdata.0.Strompreis.Zeitpunkt_Strom > hier der Zeitpunkt ab wann der billigste Preis gilt
        0_userdata.0.Strompreis.Datum_Strom -> und hier an welchem Datum (zur Sicherheit)

      Das Script ist komplett mit KI erstellt worden. Da habe ich keine Aktien drin.
      Funktioniert aber:

      // Array für alle Preisdatenpunkte und Startzeit-Datenpunkte der Stunden 24 bis 47
      const preisDatenpunkte = [];
      const startZeitDatenpunkte = [];
      const startDatumDatenpunkte = [];
      
      for (let i = 24; i < 48; i++) {
        preisDatenpunkte.push(`awattar.0.prices.${i}.nettoPriceKwh`);
        startZeitDatenpunkte.push(`awattar.0.prices.${i}.start`);
        startDatumDatenpunkte.push(`awattar.0.prices.${i}.startDate`);
      }
      
      // Funktion zum Finden des minimalen Preises und zugehöriger Startzeit und Datum
      function findeKleinstenPreis() {
        let minPreis = Number.MAX_VALUE;
        let zeitpunkt = null;
        let datum = null;
      
        preisDatenpunkte.forEach((preisDP, index) => {
          const preis = getState(preisDP).val;
          if (preis < minPreis) {
            minPreis = preis;
            zeitpunkt = getState(startZeitDatenpunkte[index]).val;
            datum = getState(startDatumDatenpunkte[index]).val;
          }
        });
      
        setState('0_userdata.0.Strompreis.billigster_Preis', minPreis, true);
        setState('0_userdata.0.Strompreis.Zeitpunkt_Strom', zeitpunkt, true);
        setState('0_userdata.0.Strompreis.Datum_Strom', datum, true); // NEU: Datum speichern
      }
      
      // Überwache alle Preis-Datenpunkte auf Änderung
      preisDatenpunkte.forEach(dp => {
        on({ id: dp, change: 'ne' }, () => {
          findeKleinstenPreis();
        });
      });
      
      // Initialer Aufruf beim Start des Skripts
      findeKleinstenPreis();
      
      
      1. Script (generelle Auslösung der Zwangsladung)
        Dieses Script löst eine Zwangsladung aus, wenn die Variable 0_userdata.0.Netzladung.Ausloesebit_Netzladung wahr ist.
        (In Telegram kann ich somit die Zwangsladung manuell aktivieren oder deaktivieren)

      Wenn das o.g. Bit wahr ist, startet die Zwangsladung sofort.
      Bei false stopt die Zwangsladung sofort und alles setzt sich zurück auf Standartwerte.
      Außerdem wird das Bit zurückgesetzt, nachdem 30 Minuten geladen wurde oder der Speicher voll ist (100%)

      Bildschirmfoto vom 2025-10-09 16-38-13.png

      1. Script die automatische Aufladung.
        Dieses Script ist nur im Grundgerüst fertig, weil ich es noch am testen bin.
        Aktuell sendet es nur Telegramnachrichten. Später soll anstatt eine Nachricht abzusenden, einfach nur das Netzladebit, welches im Script 2 den Auslöser definiert, auf wahr stellen.

      Über Telegram wird ein Bit auf wahr gesetzt: 0_userdata.0.Netzladung.Ausloesebit_Netzladung_auto

      Wenn das Bit wahr ist, wird das Netzladebit auf wahr gesteuert. Und zwar nur dann, wenn das Datum aus 0_userdata.0.Strompreis.Datum_Strom und der Zeitpunkt 0_userdata.0.Strompreis.Zeitpunkt_Strom passt.

      Leider bekomme ich das mit dem Zeitpunkt nicht hin. Aktuell soll ja nur eine Nachricht auf Telegram gesendet werden. Das passiert noch nicht.
      Aktuell habe ich noch einen Timeout drin. Auch zum testen.
      Hier soll später das 0_userdata.0.Netzladung.Ausloesebit_Netzladung_auto Bit wieder zurückgesetzt werden.
      Wann oder zu welchen Bedingungen muss ich mir noch überlegen.

      Bildschirmfoto vom 2025-10-09 16-50-59.png

      So, das wars erstmal.

      Mich würde jetzt interessieren:

      1. Wo sind die Fehler, die ich gemacht habe oder was ließe sich verbessern?
      2. Wie bekomme ich in Script 3 die Auslösung mit dem Zeitpunkt hin?
      3. ne Idee, wann das Auto Bit sich wieder zurücksetzt? (Beim beenden der Zwangsladung? um Mitternancht?)

      Gruß Helix

      posted in Skripten / Logik
      D
      Doppellhelix
    • RE: Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

      @gombersiob
      hi, ja du hast recht. Das könnte man alles machen.
      Ich denke meine Idee ist erstmal die Ausbaustufe 1.
      Damit man mal Erfahrung sammeln und relativ schnell eingreifen kann.
      Eine automatische Lösung die nicht 100%ig funktioniert ist gerade beim Thema Zwangsladung ja eine teure Angelegenheit.

      Bestes Beispeil gestern und heute.
      Gefühlt haben wir bei uns das selbe Wetter.
      Gestern hatte ich aber überhaupt keinen Ertrag. So bin ich überhaupt zum Thema Zwangsladung gekommen.
      Heute wenigstens etwas, so dass ich den Speicher aufgeladen bekomme. Wenn auch nicht vollständig.

      Stelle es mir schwer vor, da eine passable automatische Lösung zu finden.
      Ideen kann ich gut gebrauchen 🙂

      posted in ioBroker Allgemein
      D
      Doppellhelix
    • RE: Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

      Die Möglichkeit eine Zwnagsladung wird wohl immer mehr in Mode kommen, je mehr dynamische Tarife auf den Markt kommen.

      Ich experimentiere nun auch schon eine Zeit damit rum, habe aber noch keine befriedigende Lösung gefunden.

      Ich kann:

      • über die iSolar App eine Zeit programmieren in der der Speicher Zwangsgeladen wird.
        Finde ich aber nicht schön umgesetzt. Die Parametrierung ist hakelig, funktioniert aber.
      • Ich stoße die Zwangsladung über iobroker/Telegram mit dem Text2Command Adapter an.
        Dafür habe ich ein Zwnagsladungsscript ersellt.
        Damit kann ich die Zwangsladung sofort starten und stoppen. Ist nur ein wenig doof, wenn der billigste Tarif Nachts ist. Ich steh da bestimmt nicht für auf 😂
        Die Zwangsladung löuft eine 60 Minuten, danach werden wieder alle Parameter auf "deaktivierte Zwangsladung" gesetzt.

      Brainstorming!
      Mögliche Lösungen (für mich) wären:

      • Ich lade über den Awattar Adapter den billigsten Strompreis und den zugehörigen Zeitraum in iobroker. Der Zeitbereich des billigsten Strompreisbereicht wird in das Holding Register vom Sungrow geladen.
        Über Text2Command schalte ich dann die Zwangsladung "scharf"
        Das o.g. Zwangsladungsscript wird dann nicht per Telegram gestartet, sonderns zur vorher gesetzten Uhrzeit.
        Das wäre für mich die beste Lösung.
        Zeiten werden immer gesetzt, Aktivert wird es über Telegram nur wenn ich es will.

      • Eine Möglichkeit wäre noch, indem ich in Telegram die iSolarApp kopiere.
        Startzeit usw werden über ein Menü in Telegram vorgegeben und dann direkt in die passenden Register geschrieben.
        Einziger Vorteil, es dürfte weniger hakelig laufen, als in der iSolarApp
        Aber ich weiß nicht, ob der Text2Command sowas überhaupt hergibt und ich habe noch nicht herausgefunden, in welche Register die Startzeit gesscvhrieben wird. ich sehe da bei mir nämlich nichts, wenn ich das mit der iSolarApp testen will.

      Was haltet ihr von den Ideen?

      posted in ioBroker Allgemein
      D
      Doppellhelix
    • RE: [geloest] Meldung per Telegram, ob Lampen an sind

      @aupex

      Es gibt sehr viele Scripte die behandeln das Thema: Fenster auf Erkennung als Liste senden.

      Z.b. hier:
      https://www.machs-smart.de/offene-und-geschlossene-fenster-mit-blockly-als-liste-ausgeben/

      Vllt hilft dir das weiter. Ist ja so ähnlich.

      posted in Blockly
      D
      Doppellhelix
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo