Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Lowbat *einmalig* mailen

    NEWS

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

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Lowbat *einmalig* mailen

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Timmss last edited by

      @timmss sagte: wenn es dann bei 0 angekommen ist, löscht es den passenden Eintrag automatisch aus unserer Liste mit den IDs.

      Es muss der Eintrag in beiden Listen gelöscht werden, damit der Index weiter übereinstimmt.

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

        @paul53 sagte: Es muss der Eintrag in beiden Listen gelöscht werden, damit der Index weiter übereinstimmt.

        Ja genau.

        Fände diesen Automatismus schöner, als sich auf die Nutzer zu verlassen.

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

          @timmss sagte: Fände diesen Automatismus schöner, als sich auf die Nutzer zu verlassen.

          Da der Batteriewechsel eine manuelle Tätigkeit ist, dürfte man sich schnell daran gewöhnen, anschließend die Taste zu betätigen.

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

            @paul53 Ich habe mal aus Neugier was gebaut:

            204f79d0-3a37-4831-ab05-eab1e9c6f895-grafik.png

            Ich bin mir nicht sicher, ob man so Werte aus einer Liste löscht. Aber prinzipiell müsste es so gehen?

            Edit: Der 'entferne'-Block wurde gefunden. Man müsste nur selber durchschauen 😬

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

              @timmss
              Falsche Variable Liste.

              Blockly_temp.JPG

              Außerdem falsche Schleife gewählt. Richtig:

              Blockly_temp.JPG

              T 2 Replies Last reply Reply Quote 1
              • T
                Timmss @paul53 last edited by

                @paul53 Oh man. Ist angepasst.

                Deswegen finde ich es hier im Forum so toll. Danke für die Große Hilfe!

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

                  @paul53 Wobei mir gerade beim Testen was auffällt. Wir nehmen Einträge aus der Liste tagesliste weg. Wir versuchen aber über die gesamte ursprüngliche Länge der Liste auf die Werte zuzugreifen. Der Index spielt uns in die Karten.

                  Als Lösung vielleicht eine dritte Liste, die sich spiegelt mit der tagesliste. Nur dort entfernen wir und aktualisieren diese zum Schluss mit der tagesliste?

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

                    @timmss sagte: Der Index spielt uns in die Karten.

                    Dann korrigiere den Index nach dem Entfernen.

                    Blockly_temp.JPG

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

                      @paul53 sagte: Dann korrigiere den Index nach dem Entfernen.

                      Das wäre eine Idee. Dennoch geht die Schleife ja so lang wie die ursprüngliche Länge der tagesliste.

                      Aus benachrichtigt = [id1, id2] und tagesliste = [1, 20] wird benachrichtigt = [id2] und tagesliste = [20, -1].

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

                        @timmss sagte: tagesliste = [20, -1].

                        Wirklich? Ich habe mal eine Tagesliste mit Javascript nachgebildet:

                        Blockly_temp.JPG

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

                          @paul53 Diese Schleife:

                          92316133-4da7-45d3-b147-b668f8dfc1f5-grafik.png

                          gibt mir diese outputs:

                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: benachrichtigt vorher: 11,20,94
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: tagesliste vorher: 1,20,29
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: Schleifendurchgang: 0
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: benachrichtigt jetzt: 20,94
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: tagesliste jetzt: 20,29
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: Schleifendurchgang: 1
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: benachrichtigt jetzt: 20,94
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: tagesliste jetzt: 19,29
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: Schleifendurchgang: 2
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: benachrichtigt jetzt: 20,94
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: tagesliste jetzt: 19,28
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: Schleifendurchgang: 3
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: benachrichtigt jetzt: 20,94
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: tagesliste jetzt: 19,28,-1
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: benachrichtigt danach: 20,94
                          2025-09-10 08:55:06.468 - info: javascript.0 (36733) script.js.common.Allgemein.Mailing_von_LOW_BAT: tagesliste danach: 19,28,-1
                          

                          So wurden die debugs eingearbeitet:

                          e2db6a16-1ee4-4776-abc6-9f2d62fbe1b2-grafik.png

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

                            @timmss sagte: gibt mir diese outputs:

                            In Blockly funktioniert es so leider nicht, da die Blockly-Schleife eine Zwischenvariable i_end verwendet, die beim Entfernen nicht angepasst wird.

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

                              @paul53 Ärgerlich. Dann bauen wir diese Schleife einfach in eine JavaScript-Funktion?

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

                                @timmss sagte: Ärgerlich.

                                Abhilfe:

                                Blockly_temp.JPG

                                T 1 Reply Last reply Reply Quote 1
                                • T
                                  Timmss @paul53 last edited by

                                  @paul53 So simpel wie es eigentlich ist hat es geholfen. Auch nach Tests.

                                  Riesiges Dankeschön für deine Zeit und Geduld.

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

                                    @timmss sagte: Schleife einfach in eine JavaScript-Funktion?

                                    Mit einer Javascript-Funktion ist es wesentlich kürzer:

                                    for(let i = 0; i < tage.length; i++) {
                                        tage[i]--;
                                        if(tage[i] == 0) {
                                            tage.splice(i, 1);
                                            ids.splice(i, 1);
                                            i--;
                                        }
                                    }
                                    

                                    Blockly_temp.JPG

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

                                      Eine andere Idee:

                                      Ein weiterer Zustand

                                      BatteryOkValidated wird erst gesetzt, wenn mindestens einen Tag keine BatteryLow Ereignisse gekommen sind. Wird bei Start des Skripts auf True gesetzt ...

                                      Kommt ein BatteryLow Ereignis wird geprüft ob BatteryOkValidated gesetzt ist.

                                      Falls ja, wird BatteryOkValidated auf false gesetzt, und eine Mail abgesetzt, sowie ein Timeout (für das Zurücksetzen von BatteryOkValidated auf true) gesetzt.

                                      Falls nein wird der Timeout für das Setzen von BatteryOkValidated verlängert.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      807
                                      Online

                                      32.0k
                                      Users

                                      80.6k
                                      Topics

                                      1.3m
                                      Posts

                                      4
                                      26
                                      329
                                      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