Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. [gelöst] per falls deaktivierte Aktionen werden ausgeführt

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    223

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    219

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    893

[gelöst] per falls deaktivierte Aktionen werden ausgeführt

Scheduled Pinned Locked Moved Blockly
blockly
9 Posts 2 Posters 162 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • HomoranH Do not disturb
    HomoranH Do not disturb
    Homoran
    Global Moderator Administrators
    wrote on last edited by Homoran
    #1

    Hallo zusammen.
    ich habe ein Blockly mit dem ich den Ladestrom für mein e-Auto Abhängig vom Überschuss steuere.
    Das klappt soweit auch ganz gut.

    car_override.png
    (weil abgeschnitten: getriggert wird auf die Einspeisung alle 6 Sekunden, und auf die Aktivierung des Laders)

    Zusätzlich habe ich für den "Schlechtwetter-Notfall" einen Knopf zum deaktivieren dieser überschussabhängigen Steuerung eingebaut und im Skript abgefragt.

    Eigentlich dürfte nach meinem Verständnis bei aktivem Knopf, keine Anpassung des Ladestroms stattfinden.
    passiert aber:

    ladestrom_override01.png

    um 10:36 wurde der state "manual_override" auf true gesetzt, trotzdem wird um 11:01 geregelt.


    var Neustart, Ladestrom_min, Ladestrom_geplant, Ladung, Messdauer, Ueberschussliste, Mindesteinspeisung, Ueberschuss, Ueberschusssumme, Ueberschuss_avg, Intervall;

    Neustart = false;
    Ladestrom_min = 6;
    Ladestrom_geplant = 6;
    Ladung = false;
    Messdauer = 60;
    Ueberschussliste = [];
    Mindesteinspeisung = 1050;
    Ueberschuss = 0;
    // Überwachung der Einspeisung
    on({id: new RegExp('smartmeter\.0\.1-0:16_7_0__255\.value' + "$|" + 'go-e\.0\.allow_charging' + "$"), change: "ne"}, async function (obj) {
    if (getState('go-e.0.allow_charging').val == true) {
    // Überschussberechnung
    Ueberschuss = getState('smartmeter.0.1-0:16_7_0__255.value').val * -1 + getState('hm-rpc.0.REQ0777349.2.POWER').val;
    // Mittelwertberechnung
    Ueberschussliste.push(Ueberschuss);
    if (Ueberschussliste.length > Messdauer) {
    Ueberschussliste.splice(0, 1);
    }
    // Überschuss prüfen
    }
    if (getState('Systemvariablen.0.Autoladen.manual_override').val == false) {
    Ueberschusssumme = Ueberschussliste.reduce(function(x, y) {return x + y;});
    Ueberschuss_avg = Ueberschusssumme / Ueberschussliste.length;
    if (Ueberschuss_avg > Mindesteinspeisung && (Ladung == false || Neustart == true)) {
    // ausreichend Überschuss
    Ladung = true;
    Neustart = false;
    // Laden starten
    Intervall = setInterval(async function () {
    // Ladestrom berechnen (bei 1-phasig)
    if (getState('zoe2.0.xxx.charge_level').val >= 98) {
    Ladestrom_min = 8;
    } else {
    Ladestrom_min = 6;
    }
    Ladestrom_geplant = getState("Messwerte.0.Wetterdaten.Sonnenaenderungen2").val < 4 ? Math.min(Math.max(Math.round(Ueberschuss_avg / 215), 0), 16) : Math.min(Math.max((-0.044 * getState("Messwerte.0.Wetterdaten.Sonnenaenderungen2").val + 1.175) * Math.round(Ueberschuss_avg / 215), 0), 16);
    if (Ladestrom_geplant < Ladestrom_min) {
    Ladestrom_geplant = Ladestrom_min;
    } else if (Ladestrom_geplant >= Ladestrom_min) {
    Ladestrom_geplant = Ladestrom_geplant;
    }
    // Überschussmenge laden
    if (Ladestrom_geplant != getState('go-e.0.amperePV').val && getState('go-e.0.allow_charging').val == true) {
    setStateDelayed('go-e.0.amperePV', Ladestrom_geplant, false, parseInt(((0) || "").toString(), 10), false);
    }
    }, 180000);
    // nicht mehr ausreichend Überschuss
    } else if (Ueberschuss_avg < Mindesteinspeisung * 0.8 && Ladung == true) {
    // Laden beenden
    Ladung = false;
    Ladestrom_geplant = 8;
    setStateDelayed('go-e.0.amperePV', Ladestrom_geplant, false, parseInt(((0) || "").toString(), 10), false);
    if (getState('go-e.0.allow_charging').val != 0) {
    setStateDelayed('go-e.0.allow_charging', 0, false, parseInt(((0) || "").toString(), 10), false);
    }
    (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
    }
    }
    // Not-Aus - Laden beenden
    if (getState('smartmeter.0.1-0:16_7_0__255.value').val > 10000) {
    console.log('Not-Aus');
    Ladung = false;
    setStateDelayed('go-e.0.amperePV', 8, false, parseInt(((0) || "").toString(), 10), false);
    setStateDelayed('go-e.0.allow_charging', 0, false, parseInt(((0) || "").toString(), 10), false);
    Ladestrom_geplant = 0;
    (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
    }
    });

    on({id: 'go-e.0.allow_charging', change: "ne"}, async function (obj) {
    var value = obj.state.val;
    var oldValue = obj.oldState.val;
    setStateDelayed('Systemvariablen.0.Autoladen.FlashCounter', (getState('Systemvariablen.0.Autoladen.FlashCounter').val + 1), true, parseInt(((0) || "").toString(), 10), false);
    });

    on({id: 'go-e.0.car', change: "ne"}, async function (obj) {
    var value = obj.state.val;
    var oldValue = obj.oldState.val;
    if ((obj.state ? obj.state.val : "") == 4 && (obj.oldState ? obj.oldState.val : "") == 2) {
    setStateDelayed('Systemvariablen.0.Auto_Akku_voll', true, true, parseInt(((0) || "").toString(), 10), false);
    // Batterie voll - Laden beenden
    console.log('Batterie voll');
    Ladung = false;
    setStateDelayed('go-e.0.amperePV', 8, false, parseInt(((0) || "").toString(), 10), false);
    setStateDelayed('go-e.0.allow_charging', 0, false, parseInt(((0) || "").toString(), 10), false);
    Ladestrom_geplant = 0;
    (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
    }
    });

    Was übersehe ich?

    kein Support per PN! - Fragen im Forum stellen -
    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    1 Reply Last reply
    0
    • HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by Homoran
      #2

      Ich hab die Ursache gefunden!

      das Prüfintervall, das im Script irrtümlich ausgeblendet war:
      ladestrom_interval.png

      wird bereits vorher gestartet und läuft durch, was auch beabsichtigt war.
      Allerdings sollten die Werte nur gesetzt werden, wenn manual_override falsch ist.

      Da muss ich noch mal dran schrauben.

      EDIT:
      habe jetzt die letzten beiden falls aus dem Intervall einfach mal darunter gesetzt

      EDIT2:
      scheint wie gewünscht zu klappen.
      Der Ladestrom wat jetzt "eingefroren". kurz den Button "manuell" deaktiviert - beim nächsten triggern sprang der Wertt von 10A auf 6A um. nach erneutem aktivieren hängt es jetzt da fest.

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Reply Last reply
      1
      • HomoranH Do not disturb
        HomoranH Do not disturb
        Homoran
        Global Moderator Administrators
        wrote on last edited by Homoran
        #3

        Jetzt habe ich doch noch ein Problem :-(

        ich nutze den go-e Charger, bei dem vom Hersteller gewarnt wird "zu oft" in den Flashspeicher zu schreiben.
        Dieser würde nur etwa 100.000 Schreibzugriffe aushalten.
        Dafür hat er einen weiteren Datenpunkt hinzugefügt, damit bei Überschusssteuerung nicht jedesmal der Flashspeicher beschrieben wird.

        Dieses passiert z.B. beim Schalten des Datenpunktes alw allow_charging, also beim an und ausschalten eines Ladevorganges.

        Hochgerechnet müsste dann der Flashspeicher etwa 30 Jahre halten - gut!

        Jetzt habe ich trotzdem mal zur Überwachung die Änderungen des alw geloggt und mich eben erschrocken, als der bei minimale Nutzung nach 4 Monaten bereits auf 1200 stand.

        alw_go-e.png

        Dann habe ich noch etwas am Skript geändert und den Datenpunkt Flashcounter angefangen zu loggen.

        dabei fiel mir auf, dass dieser Wert beim Abschalten um mehr als 1 hochgezählt wird, und zwar anscheinend unterschiedlich
        flashcounter02.png

        Wenn es "nur" falsch hochgezählt wird ist es vertretbar, aber wenn tatsächlich so vile Schreibvorgänge stattfinden sind es einfach zu viele.

        Wie kann ich herausfinden, wo die Ursache ist?

        kein Support per PN! - Fragen im Forum stellen -
        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        paul53P 1 Reply Last reply
        0
        • HomoranH Homoran

          Jetzt habe ich doch noch ein Problem :-(

          ich nutze den go-e Charger, bei dem vom Hersteller gewarnt wird "zu oft" in den Flashspeicher zu schreiben.
          Dieser würde nur etwa 100.000 Schreibzugriffe aushalten.
          Dafür hat er einen weiteren Datenpunkt hinzugefügt, damit bei Überschusssteuerung nicht jedesmal der Flashspeicher beschrieben wird.

          Dieses passiert z.B. beim Schalten des Datenpunktes alw allow_charging, also beim an und ausschalten eines Ladevorganges.

          Hochgerechnet müsste dann der Flashspeicher etwa 30 Jahre halten - gut!

          Jetzt habe ich trotzdem mal zur Überwachung die Änderungen des alw geloggt und mich eben erschrocken, als der bei minimale Nutzung nach 4 Monaten bereits auf 1200 stand.

          alw_go-e.png

          Dann habe ich noch etwas am Skript geändert und den Datenpunkt Flashcounter angefangen zu loggen.

          dabei fiel mir auf, dass dieser Wert beim Abschalten um mehr als 1 hochgezählt wird, und zwar anscheinend unterschiedlich
          flashcounter02.png

          Wenn es "nur" falsch hochgezählt wird ist es vertretbar, aber wenn tatsächlich so vile Schreibvorgänge stattfinden sind es einfach zu viele.

          Wie kann ich herausfinden, wo die Ursache ist?

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @homoran sagte: um mehr als 1 hochgezählt wird

          Wenn nicht jedes Hochzählen in die History geschrieben wird, ist es vermutlich ein Laufzeitproblem (schnelles Prellen?). Schreibe den Zählerstand besser bei Skriptstart in eine Variable und zähle diese hoch.

          Bild_2021-07-07_155247.png

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          HomoranH 1 Reply Last reply
          0
          • paul53P paul53

            @homoran sagte: um mehr als 1 hochgezählt wird

            Wenn nicht jedes Hochzählen in die History geschrieben wird, ist es vermutlich ein Laufzeitproblem (schnelles Prellen?). Schreibe den Zählerstand besser bei Skriptstart in eine Variable und zähle diese hoch.

            Bild_2021-07-07_155247.png

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by Homoran
            #5

            Dankje
            @paul53 sagte in :

            Wenn nicht jedes Hochzählen in die History geschrieben wird, ist es vermutlich ein Laufzeitproblem (schnelles Prellen?). Schreibe den Zählerstand besser bei Skriptstart in eine Variable und zähle diese hoch.

            Daran hatte ich auch gedacht, es ist aber anders herum :-(

            Jedes Schalten wird gezählt, allerdings einiges mehrfach.
            Dadurch ergab sich für mich die Frage, ob ggf. auch mehrfach geschrieben wird.

            EDIT:
            Sorry, ich war unpräzise!
            es werden nicht mehrere Einträge erzeugt, sondern in einem Eintrag direkt um 2 oder 3 hochgezählt!

            kein Support per PN! - Fragen im Forum stellen -
            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            paul53P 1 Reply Last reply
            0
            • HomoranH Homoran

              Dankje
              @paul53 sagte in :

              Wenn nicht jedes Hochzählen in die History geschrieben wird, ist es vermutlich ein Laufzeitproblem (schnelles Prellen?). Schreibe den Zählerstand besser bei Skriptstart in eine Variable und zähle diese hoch.

              Daran hatte ich auch gedacht, es ist aber anders herum :-(

              Jedes Schalten wird gezählt, allerdings einiges mehrfach.
              Dadurch ergab sich für mich die Frage, ob ggf. auch mehrfach geschrieben wird.

              EDIT:
              Sorry, ich war unpräzise!
              es werden nicht mehrere Einträge erzeugt, sondern in einem Eintrag direkt um 2 oder 3 hochgezählt!

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              @homoran sagte: sondern in einem Eintrag direkt um 2 oder 3 hochgezählt!

              Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              HomoranH 2 Replies Last reply
              1
              • paul53P paul53

                @homoran sagte: sondern in einem Eintrag direkt um 2 oder 3 hochgezählt!

                Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.

                HomoranH Do not disturb
                HomoranH Do not disturb
                Homoran
                Global Moderator Administrators
                wrote on last edited by
                #7

                @paul53 sagte:

                Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.

                Danke, dann probiere ich es.

                kein Support per PN! - Fragen im Forum stellen -
                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                1 Reply Last reply
                0
                • paul53P paul53

                  @homoran sagte: sondern in einem Eintrag direkt um 2 oder 3 hochgezählt!

                  Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.

                  HomoranH Do not disturb
                  HomoranH Do not disturb
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #8

                  @paul53 sagte :

                  Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.

                  ich hatte ja auch an das Problem mit der asynchronen Verarbeitung gedacht, aber ich verstehe es nicht, dass/warum es dann zu zu hohen Werten kommt.
                  wenn bei schneller Abarabeitung nicht hochgezählt würde, wäre es für mich klar.

                  Aber langer Rede gar kein Sinn: zumindest jetzt hat es mit der Variablen geklappt und es wurde beim Abschalten nur um 1 hochgezählt.

                  Nochmals Danke!
                  ich werde es im Auge behalten.

                  kein Support per PN! - Fragen im Forum stellen -
                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  HomoranH 1 Reply Last reply
                  1
                  • HomoranH Homoran

                    @paul53 sagte :

                    Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.

                    ich hatte ja auch an das Problem mit der asynchronen Verarbeitung gedacht, aber ich verstehe es nicht, dass/warum es dann zu zu hohen Werten kommt.
                    wenn bei schneller Abarabeitung nicht hochgezählt würde, wäre es für mich klar.

                    Aber langer Rede gar kein Sinn: zumindest jetzt hat es mit der Variablen geklappt und es wurde beim Abschalten nur um 1 hochgezählt.

                    Nochmals Danke!
                    ich werde es im Auge behalten.

                    HomoranH Do not disturb
                    HomoranH Do not disturb
                    Homoran
                    Global Moderator Administrators
                    wrote on last edited by
                    #9

                    @homoran sagte:

                    ich werde es im Auge behalten.

                    @paul53
                    das manuelle Ausschalten über die vis hatte gestern immer nur um 1 hochgezählt.

                    heute hat sich der Ladevorgang per Skript beendet und leider wieder direkt um 3 hochgezählt.
                    flashcounter03.png

                    Ich befürchte daher, dass dann auch tatsächlich 3x geschrieben wird.
                    Da ich aber anscheinend noch einige Bugs drin hatte, hatte ich heute morgen noch einiges verändert und wollte (irgendwann) das Skript komplett anders aufbauen :-(

                    Der früher verlinkte Code passt also nicht mehr.

                    Bei der Suche nach dem Datenpunkt Allow Charging habe ich nur das eine Skript und dort 7 Referenzen gefunden, von denen nur 2 mit einem setState einen Schreibvorgang bewirken sollten.
                    allow_charging.png

                    Habe es jetzt sicherheitshalber mal eine Verzögerung eingebaut.

                    Die Änderung des Datenpunkts triggert auch das Skript, sollte aber IMHO bei false nichts mehr machen:
                    allow_charging02.png

                    kein Support per PN! - Fragen im Forum stellen -
                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                    Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    1 Reply Last reply
                    0

                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                    With your input, this post could be even better 💗

                    Register Login
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    442

                    Online

                    32.8k

                    Users

                    82.8k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe