Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly Script wird nach ca. 3 Tagen beendet

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly Script wird nach ca. 3 Tagen beendet

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mhdau last edited by Homoran

      Moin,

      ich möchte mit IOBroker erfassen, wie hoch der Gasverbrauch in meinem Hause ist und wann der Gasbrenner heizt. Dazu habe ich mit einem TRTC5000 einen SONOFF Basic als Counter konfiguriert. Das funktioniert ganz ordentlich, so dass ich die Gasverbrauchswerte stdl., tgl., mtl. gut im Blick habe. Um den AN / AUS - Zustand des BUDERUS Gasbrenners zu erfassen könnte ich in die Elektronik des Gasbrenners eingreifen und ein entsprechendes Signal auswerten, oder eine nach aussen geführte "Brenner An LED" verwenden. Beides möchte ich nicht. Statt dessen war meine Idee, ganz einfach den bereits funktionierenden Zähler auszuwerten. Den frage ich zur Zeit einmal pro Minute ab. Wenn sich der Zählerstand geändert hat, kann nur der Brenner angewesen sein. Mittels Blockly habe ich mir dazu ein Script erstellt, welches auch funktioniert. Nur leider wird das Script nahezu regelmäßig "disabled". Im protokoll deutet es auf zu viele Statusabfragen pro Minute hin, mit dem Hinweis "Please, check your Script". Wenn ich dass Script wieder "enable" habe ich wieder ca 3 Tage Ruhe.
      Ich bin völlig unerfahren im programmieren. Erkennt jemand meinen Fehler?

      Gruß Dau (das ist mein Familienname, trifft aber ja evtl. zu)

      Blockly Gasbrenner_AN.jpg

      schedule("*/60 * * * * *", async () => {
        on({ id: 'sonoff.0.DVES_8F8B87.COUNTER_C1' /* DVES_8F8B87 COUNTER  C1 */, change: 'gt' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if (true) {
            setState('0_userdata.0.Gasbrenner_AN' /* Gasbrenner_AN */, true, true);
          }
        });
        on({ id: 'sonoff.0.DVES_8F8B87.COUNTER_C1' /* DVES_8F8B87 COUNTER  C1 */, change: 'le' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if (true) {
            setState('0_userdata.0.Gasbrenner_AN' /* Gasbrenner_AN */, false, true);
          }
        });
      });
      

      MOD-EDIT: Code in code-tags gesetzt!

      Auch finde ich die doppelte Abfrage "Falls Objekt" unnötig. Ich dachte mir, dass eine Abfrage unter Verwendung von "Falls - Sonst" genügen müsste. Ein solches Script ändert den Gasbrenner Status nur einmal, und dann nie wieder.

      liv-in-sky Codierknecht 2 Replies Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @mhdau last edited by liv-in-sky

        @mhdau

        grundsätzlich - trigger ("schedule" und "falls object") in trigger funktioniert nieeeee - ganz böse - nie wieder machen !!! 🙂

        • im schedule sollte * * * * * stehen - das bedeutet jede minute (fünf sterne - die sekunden brauchst du da nicht)
        • zu if (falls) : falls etwas "true ist" trifft das inmmer zu - daher kann das weggelassen werden - der if block ist überflüssig)

        irgendwie ist mir nicht klar, wie du feststellst, dass der brenner nicht mehr läuft? du weißt doch nur, dass wenn der zähler eins höher ist, der brenner eingeschalten wurde - eine minute später zu fragen, wie der zähler ist, sagt doch nicht aus, dass der brenner aus ist

        keine ahnung wie du den gasverbrauch aus dieser info erfasst

        Asgothian M 2 Replies Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @liv-in-sky last edited by

          @liv-in-sky sagte in Blockly Script wird nach ca. 3 Tagen beendet:

          @mhdau

          grundsätzlich - trigger ("schedule" und "falls object") in trigger funktioniert nieeeee - ganz böse - nie wieder machen !!! 🙂

          • im schedule sollte * * * * * stehen - das bedeutet jede minute (fünf sterne - die sekunden brauchst du da nicht)
          • zu if (falls) : falls etwas "true ist" trifft das inmmer zu - daher kann das weggelassen werden - der if block ist überflüssig)

          irgendwie ist mir nicht klar, wie du feststellst, dass der brenner nicht mehr läuft? du weißt doch nur, dass wenn der zähler eins höher ist, der brenner eingeschalten wurde - eine minute später zu fragen, wie der zähler ist, sagt doch nicht aus, dass der brenner aus ist

          keine ahnung wie du den gasverbrauch aus dieser info erfasst

          Warum überhaupt einen schedule ?

          Einfach einen trigger auf den DP des Zählerstands.
          Darin .
          ein stop timeout
          Einen timeout (z.bsp. 15 s), der dir den „Brenner läuft“ auf false stellt.
          Einmal „brennner läuft“ auf true stellen

          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @Asgothian last edited by liv-in-sky

            @asgothian sagte in Blockly Script wird nach ca. 3 Tagen beendet:

            Warum überhaupt einen schedule ?

            ich habe keinen vorschlag für veränderung gemacht - weil ich nicht weiß, was genau er möchte - sondern nur mal alle offensichtlichen fehler aufgezählt

            @asgothian sagte in Blockly Script wird nach ca. 3 Tagen beendet:

            Einen timeout (z.bsp. 15 s), der dir den „Brenner läuft“ auf false stellt.

            ist natürlich ein richtiger einwand, wenn das script das selbe ergebnis haben soll

            Asgothian 1 Reply Last reply Reply Quote 1
            • Asgothian
              Asgothian Developer @liv-in-sky last edited by

              @liv-in-sky stimmt, ich hätte ihm und nicht dir antworten sollen. 🙂

              1 Reply Last reply Reply Quote 1
              • M
                mhdau @liv-in-sky last edited by

                @liv-in-sky

                Moin,

                also, grundsätzlich funktioniert mein "umständliches" Script ja so wie ich es mir vorstelle.
                Dass der Gasbrenner aus ist, erkennt das Script an dem Zählerstand, der sich eben nach einer Minute nicht geändert hat. Dabei hoffe ich natürlich, dass immer, wenn Gas strömt, auch die Zündung des Gases erfolgt.
                Anbei eine EChart, die ich aus der Brenner AN _ AUS Aussage generiert habe.

                Echart Gasbrenner AN _ AUS.jpg
                Wie schon beschrieben, funktioniert das Script immer nur ca 3 Tage, dann wird es beendet. Ich werde Eure Anregungen bzgl "Trigger", "Schedule" "falls" versuchen zu verstehen und mein Script dann zu ändern.
                Danke

                M 1 Reply Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @mhdau last edited by

                  @mhdau
                  Du willst also anhand des sich (mehr oder weniger konstant) ändernden Zählerstandes erkennen, ob der Brenner läuft oder nicht?

                  Vielleicht nach diesem Prinzip

                  64fd7248-3391-4328-8726-e8ddecd6b536-image.png

                  Erkennt der Zähler-Sensor eine Änderung, setzt er der Wert für brenner_an auf true und startet einen timeout.
                  Erfolgt nun innerhalb der Zeitspanne keine erneute Änderung, wird der Wert wieder auf false gesetzt.

                  Erfolgt eine Änderung innerhalb der Zeitspanne, wird der timeout gestoppt. Damit bleibt der Wert auf true.

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    mhdau @mhdau last edited by

                    @mhdau

                    . . . und noch einmal Moin,
                    glaubt mir, dass ich schon lange auf mein "umständliches Script" gestarrt habe, und keinen der Fehler wahrgenommen habe! Mannomann! Ich habe das Script jetzt vereinfacht und lasse es parallel zu meinem "überladenen laufen.

                    Screenshot 2024-03-11 114518.jpg

                    Bisher funktioniert es. Evtl. ist ja auch der Fehler des Script - Abbruchs damit beseitigt,
                    Ich lasse es Euch dann wissen.

                    Gruß
                    Dau

                    Codierknecht 1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @mhdau last edited by

                      @mhdau sagte in Blockly Script wird nach ca. 3 Tagen beendet:

                      Ich habe das Script jetzt vereinfacht

                      Aber immer noch "Trigger in Trigger".
                      Das funktioniert so nicht!

                      https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps

                      M 1 Reply Last reply Reply Quote 1
                      • M
                        mhdau @Codierknecht last edited by

                        @codierknecht

                        Ich werde mir die Starthilfe noch zu Gemüte führen. Sicher mache ich einiges falsch.
                        Aber auch das vereinfachte Script funktioniert! Zumindest so, wie ich mir das vorstelle.
                        Ob der Abbruch wieder erfolgt, muss ich abwarten.

                        Verlaufsdaten_2.jpg Verlaufsdaten_1.jpg

                        Gruß
                        Dau

                        Codierknecht 1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @mhdau last edited by

                          @mhdau sagte in Blockly Script wird nach ca. 3 Tagen beendet:

                          Aber auch das vereinfachte Script funktioniert

                          Damit erzeugst Du jede Minute 2 neue Trigger!
                          Das fliegt Dir über kurz oder lang um die Ohren.

                          @mhdau sagte in Blockly Script wird nach ca. 3 Tagen beendet:

                          Ob der Abbruch wieder erfolgt, muss ich abwarten.

                          Es werden noch Wetten angenommen 😁

                          1 Reply Last reply Reply Quote 1
                          • M
                            mhdau @Codierknecht last edited by

                            @codierknecht

                            Ich werde gründlich über die Verwendung von Timeout nachdenken müssen!
                            Immerhin ist dann wohl kein CRON-Job nötig.
                            Auf jeden Fall Dank für die Denkanstöße.

                            liv-in-sky 1 Reply Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @mhdau last edited by liv-in-sky

                              @mhdau kurz nochmal erklärt: ein trigger wird im system angemeldet, da iob darauf reagiert - "schedule oder falls object"

                              dein script erzeugt in 3 tagen 8640 trigger einträge

                              dein script funktioniert eigentlich nicht, da der schedule zum zeitpunkt x aktiviert wird und nur wenn zum zeitpunkt x auch der "falls object" getriggert wird, funktioniert es - das ist eigentlich fast unmöglich zu erreichen

                              wenn du aber 1000-ende von triggern hast, ist wahrscheinlich dein system so beschäftigt, dass tatsächlich mal der innere trigger getroffen wird - weil sich alles irgendwie verzögert

                              auf gut deutsch: du hast glück gehabt, dass dein script überhaupt was macht - dafür aber stürzt es auch nach ein paar tagen ab

                              M 1 Reply Last reply Reply Quote 1
                              • M
                                mhdau @liv-in-sky last edited by

                                @liv-in-sky

                                Vielen Dank für die Mühe, die Ihr Euch mit mir macht! Aber langsam dämmert es mir.
                                Ich habe den Vorschlag von "Codierknecht" an meine bestehende Konfiguration angepasst. Lediglich die Timeout - Zeit werde ich noch ändern müssen, denn in der Grafik wird "Brenner AN = TRUE" nur für die angegebene Zeit angezeigt.
                                Die ganze Thematik kam bei mir auf, weil kurz vor unserem Weihnachtsurlaub ein Defekt in meiner Heizung auftrat. Der wurde zwar beseitigt, aber ich traute dem Frieden nicht.
                                Künftig kann ich jetzt zumindest aus der Ferne meine Heizung, Vorlauftemperatur, etc. überwachen und muss nicht die Verwandtschaft bemühen, um nach dem Rechten zu sehen.
                                Gruß
                                M H Dau

                                Codierknecht 1 Reply Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @mhdau last edited by

                                  @mhdau sagte in Blockly Script wird nach ca. 3 Tagen beendet:

                                  Lediglich die Timeout - Zeit werde ich noch ändern müssen

                                  Die hängt natürlich davon ab, in welchen Intervallen sich bei eingeschaltetem Brenner der Zählerstand ändert.
                                  Immer vorausgesetzt, ich habe das Vorhaben korrekt interpretiert.

                                  M 1 Reply Last reply Reply Quote 1
                                  • M
                                    mhdau @Codierknecht last edited by

                                    @codierknecht
                                    Genau, das Rädchen an dem Zähler liefert jeweils nach 10 Litern Durchfluss einen Impuls an den Zähler. Aber der Durchfluss kann ja auch schon z.B. nach 3 Litern stoppen. Das steuert natürlich die Gastherme selbst. 100 % genau wird der Status so nie angezeigt. Mir genügt die zu erreichende Genauigkeit aber.

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    884
                                    Online

                                    32.0k
                                    Users

                                    80.4k
                                    Topics

                                    1.3m
                                    Posts

                                    4
                                    16
                                    304
                                    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