Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Steckdose bei PV Einspeisung mit Durchschnittswert > X

    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

    Steckdose bei PV Einspeisung mit Durchschnittswert > X

    This topic has been deleted. Only users with topic management privileges can see it.
    • Asgothian
      Asgothian Developer @Chronos81 last edited by Asgothian

      @chronos81 Warum so kompliziert ?

      Wenn du immer 4 Werte im Array für den Durchschnitt haben willst, dann machst du wenn ein neuer wert an kommt:
      Hast du mehr als 4 Werte im Array, letzten Wert wegwerfen (dieser Baustein, umstellen von 'nehme' (get) auf 'entferne' (remove)
      Screenshot 2025-04-30 at 09.22.12.png
      Immer: setz den neuen Wert als ersten (dieser Baustein:)
      Screenshot 2025-04-30 at 09.21.48.png
      Danach: kannst du per Schleife alle Werte Aufaddieren und durch die Anzahl der vorhandenen Werte teilen.

      Dann hast du immer den Durchschnitt der letzten 4 Werte - sprich eine Glättung deiner Messwerte.

      Das ist insbesondere interessant wenn du feststellst das Dir 4 Werte nicht reichen - dann willst du mehr 🙂

      A.

      Nachtrag - du brauchst natürlich eine Variable, die du als 'leere Liste' initialisieren musst, sonst geht das nicht.

      C 1 Reply Last reply Reply Quote 1
      • C
        Chronos81 @Asgothian last edited by

        @asgothian Danke für deine schnelle Antwort und den Ansatz. Ich bin gerade dabei mir das Blockly in seiner Gesamtheit vorzustellen. Ist momentan nicht so einfach da ich wirklich noch nicht lange Blockly verwende. Kann es sein, dass da nach dem ersten Doppelpunkt ein Screenshot fehlt?

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

          @chronos81 sagte: sind 4 Werte im Array, prüfe ob der Durchschnittswert >300 ist.

          Wie oft wird der Wert aktualisiert? 4 Werte dürften etwas wenig sein, wenn kleine Wolken / Wolkenlücken überbrückt werden sollen.

          @chronos81 sagte in Steckdose bei PV Einspeisung mit Durchschnittswert > X:

          Ist der Durchschnittswert <300 dann soll der Switch auf "false" gestellt werden.

          Es ist eine Hysterese erforderlich, die etwas größer ist als die Leistungsaufnahme des zu schaltenden Gerätes, denn die Leistungsaufnahme wirkt auf die Einspeisung zurück.
          Prinzip:

          Blockly_temp.JPG

          C 1 Reply Last reply Reply Quote 1
          • C
            Chronos81 @paul53 last edited by Chronos81

            @paul53
            Danke für deinen Hinweis. Meine Eingangswerte auf die ich mich beziehe, sind bereits geglättet und geben mir durch ein von ChatGPT erstelltes Javascript einen Wert zurück welcher bereits gemittelt ist. So ändern sich diese Werte circa alle 40 Sekunden.
            Da ich aber nun gerne verstehen würde wie ich das in Blockly "selber" hinbekomme wollte ich mich hier mal der Sache annähern.
            Der Eigenverbrauch des Verbrauchers beträgt um die 160W. Von daher habe ich hier schon etwas Spiel mit eingerechnet. Könnte aber, wenn ich es richtig bedenke, auch noch auf 500W Schwellenwert gehen.

            paul53 Asgothian 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @Chronos81 last edited by paul53

              @chronos81 sagte: Der Eigenverbrauch des Verbrauchers beträgt um die 160W. Von daher habe ich hier schon etwas Spiel mit eingerechnet. Könnte aber, wenn ich es richtig bedenke, auch noch auf 500W Schwellenwert gehen.

              Bei 160 W Leistungsaufnahme ist ein Einschaltgrenzwert von 300 W völlig in Ordnung. Wichtig ist die Hysterese (Einschalt-Ausschaltgrenzwert), die mind. 200 W betragen sollte.

              Ich habe das Blockly oben auf 160 W angepasst.

              C 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @Chronos81 last edited by Asgothian

                @chronos81 sagte in Steckdose bei PV Einspeisung mit Durchschnittswert > X:

                Kann es sein, dass da nach dem ersten Doppelpunkt ein Screenshot fehlt?

                Och, da fehlen so einige Screenshots, wenn du damit alles nachbauen willst:

                So wie du beschrieben hast
                Screenshot 2025-04-30 at 11.10.42.png

                so wie ich beschrieben hab:

                Screenshot 2025-04-30 at 11.13.35.png

                A.

                Nachtrag: Das was @paul53 geschrieben hat gilt trotzdem - die Abarbeitung samt Hysterese sollte da passieren wo die gelben Blöcke sind.

                1 Reply Last reply Reply Quote 0
                • Asgothian
                  Asgothian Developer @Chronos81 last edited by

                  @chronos81 sagte in Steckdose bei PV Einspeisung mit Durchschnittswert > X:

                  Danke für deinen Hinweis. Meine Eingangswerte auf die ich mich beziehe, sind bereits geglättet und geben mir durch ein von ChatGPT erstelltes Javascript einen Wert zurück welcher bereits gemittelt ist. So ändern sich diese Werte circa alle 40 Sekunden.

                  Aus Neugier - zeig mal das Skript von ChatGPT

                  A.

                  C 2 Replies Last reply Reply Quote 0
                  • C
                    Chronos81 @Asgothian last edited by

                    @asgothian Muss ich heute abend machen, habe gerade keinen Zugriff auf meinen IOBROKER. Daher kann ich auch eure Blockly's erst frühestens heute Abend wenn nicht die nächsten Tage machen.

                    @Asgothian @paul53 Eure Ansätze helfen mir schon mal sehr weiter und ich versuche mich damit ran zu tasten. Ich melde mich wieder im Thread, wenn ich herausgefunden habe wie ich alles nachbaue 🙂 und wenn ich entweder eine Lösung habe oder ein Problem. Kann aber noch bisschen dauern 🙂

                    1 Reply Last reply Reply Quote 0
                    • C
                      Chronos81 @Asgothian last edited by Chronos81

                      @asgothian Hier wie gewünscht nachgereicht noch das ChatGPT generierte Skript. Im Unterschied zu deinem Blockly macht er die Berechnung des MIttelwertes nicht fließend sondern beginnt immer neu nach 4 Werten. Dies ist mir aber auch erst aufgefallen, als ich die beiden Werte verglichen habe 🙂 Somit ist für diesen Anwendungsfall die "HI" immer noch im Vorteil. 🙂

                      // Array für die Speicherung der letzten 4 Einspeisewerte
                      let einspeisungValues = [];
                      
                      // Funktion zum Berechnen des Mittelwerts
                      function calculateAverage(values) {
                        const sum = values.reduce((acc, value) => acc + value, 0);
                        return sum / values.length;
                      }
                      
                      on({ id: 'solax.0.data.feedinpower', change: 'any' }, async (obj) => {
                        let feedinPower = parseFloat(getState('solax.0.data.feedinpower').val);
                      
                        if (isNaN(feedinPower)) return; // Fehlervermeidung, falls Wert ungültig ist
                      
                        // Wert ins Array speichern (maximal 4 Werte)
                        einspeisungValues.push(feedinPower);
                      
                        if (einspeisungValues.length > 4) {
                          einspeisungValues.shift(); // Ältesten Wert entfernen
                        }
                      
                        // Berechne den Mittelwert der letzten 4 Werte
                        if (einspeisungValues.length === 4) {
                          let averageEinspeisung = calculateAverage(einspeisungValues);
                          averageEinspeisung = Math.floor(averageEinspeisung); // Auf ganze Zahl abrunden
                      
                          // Speichere den Mittelwert im benutzerdefinierten Zustand 'Einspeiseleistung'
                          setState('0_userdata.0.Solar.Einspeiseleistung_MW', averageEinspeisung, true);
                      
                          // Leere das Array für die nächsten 4 Werte
                          einspeisungValues = [];
                        }
                      });
                      
                      1 Reply Last reply Reply Quote 0
                      • C
                        Chronos81 @paul53 last edited by Chronos81

                        @paul53 Danke für deine Hilfe es hat nun alles geklappt. Da die Ausgangswerte bei mir immer Positiv sind, habe ich die Negierung weggelassen. Es funktioniert prächtig und ich bin meinem Verständnis von Blockly näher gekommen. Vielen Dank für eure Hilfe.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        702
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        3
                        11
                        237
                        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