Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Blockly Script wird nach ca. 3 Tagen beendet

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Blockly Script wird nach ca. 3 Tagen beendet

Geplant Angeheftet Gesperrt Verschoben Blockly
16 Beiträge 4 Kommentatoren 339 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M mhdau

    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.

    CodierknechtC Offline
    CodierknechtC Offline
    Codierknecht
    Developer Most Active
    schrieb am zuletzt editiert von
    #7

    @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.

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
    HmIP|ZigBee|Tasmota|Unifi
    Zabbix Certified Specialist
    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

    M 1 Antwort Letzte Antwort
    0
    • M mhdau

      @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 Offline
      M Offline
      mhdau
      schrieb am zuletzt editiert von
      #8

      @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

      CodierknechtC 1 Antwort Letzte Antwort
      0
      • M mhdau

        @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

        CodierknechtC Offline
        CodierknechtC Offline
        Codierknecht
        Developer Most Active
        schrieb am zuletzt editiert von
        #9

        @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

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        M 1 Antwort Letzte Antwort
        1
        • CodierknechtC Codierknecht

          @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 Offline
          M Offline
          mhdau
          schrieb am zuletzt editiert von
          #10

          @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

          CodierknechtC 1 Antwort Letzte Antwort
          0
          • M mhdau

            @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

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #11

            @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 :grin:

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            1 Antwort Letzte Antwort
            1
            • CodierknechtC Codierknecht

              @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 Offline
              M Offline
              mhdau
              schrieb am zuletzt editiert von
              #12

              @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-skyL 1 Antwort Letzte Antwort
              0
              • M mhdau

                @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-skyL Offline
                liv-in-skyL Offline
                liv-in-sky
                schrieb am zuletzt editiert von liv-in-sky
                #13

                @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

                nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                M 1 Antwort Letzte Antwort
                1
                • liv-in-skyL 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 Offline
                  M Offline
                  mhdau
                  schrieb am zuletzt editiert von
                  #14

                  @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

                  CodierknechtC 1 Antwort Letzte Antwort
                  0
                  • M mhdau

                    @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

                    CodierknechtC Offline
                    CodierknechtC Offline
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #15

                    @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.

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    M 1 Antwort Letzte Antwort
                    1
                    • CodierknechtC Codierknecht

                      @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 Offline
                      M Offline
                      mhdau
                      schrieb am zuletzt editiert von
                      #16

                      @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 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      560

                      Online

                      32.6k

                      Benutzer

                      82.3k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe