Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zwangsladung mit Sungrow SH10RT

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

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

    Zwangsladung mit Sungrow SH10RT

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      Doppellhelix last edited by

      Hallo zusammen,

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

      Beschreibung:
      Ich will keine vollautomatische Lösung. Zumindest noch nicht.
      Wenn ich sehe das der Speicher recht leer ist und auf Grund der Witrerung 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 Standartbetrieb.
      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, aus wahr stellen.

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

      Wenn das Bit wahr ist, wird das Netzldabit aus 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

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Doppellhelix last edited by

        @doppellhelix sagte: Wie bekomme ich in Script 3 die Auslösung mit dem Zeitpunkt hin?

        Blockly_temp.JPG

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

        Support us

        ioBroker
        Community Adapters
        Donate

        847
        Online

        32.2k
        Users

        80.9k
        Topics

        1.3m
        Posts

        2
        2
        51
        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