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.
    • Asgothian
      Asgothian Developer @Timmss last edited by

      @timmss sagte in Lowbat *einmalig* mailen:

      Das Blockly ist meinen Ansatz nach noch falsch. Habt ihr Ideen?

      Der Baustein 'suche das erste aufteten' liefert eine Zahl zurück. 0: nicht gefunden, 1..n, Index des Elementes.

      Du musst also einen Vergleich auf != 0 einfügen, dann wird es gehen.

      A.

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

        @asgothian Danke für den Hinweis. So habe ich es jetzt:

        85b35187-8efd-434a-98d1-ca842a1bb7bc-grafik.png

        Theoretisch muss ich ja auf 0 prüfen, weil ich nur IDs finden möchte, die noch nicht in der Liste sind.

        Ansonsten findest du das Handling vom Löschen so in Ordnung? Das könnten ja mehrere Timeouts werden, welche alle 30 Tage dauern.

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

          @timmss sagte: Das könnten ja mehrere Timeouts werden, welche alle 30 Tage dauern.

          Das wird so nicht funktionieren. Setze die Liste besser durch eine (virtuelle) Taste, die nach Batterietausch und nach erstem Skriptstart betätigt wird, zurück. Weiteres:

          • "erhöhe benachrichtigt um" ist eine mathematische und keine Listenfunktion.
          • Damit die Liste einen Skriptstart übersteht, muss sie in einem Datenpunkt vom Typ "array" gespeichert werden.

          Blockly_temp.JPG

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

            @paul53 Besten dank für deine Tipps. Dann baue ich den Taster auf der Visu ein. 🙌

            So sähe es jetzt final aus:

            1469d66c-b88f-492c-80e8-ca4b515fd7c1-grafik.png

            Ich habe im Tasten-Trigger noch eingebaut, dass der Wert wieder zurückgesetzt wird.

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

              @timmss sagte: im Tasten-Trigger noch eingebaut, dass der Wert wieder zurückgesetzt wird.

              Das ist nicht nötig.
              Beim Einfügen in die Liste ist die falsche Variable ausgewählt!

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

                @paul53 Komplett übersehen, noch einmal Danke!

                Warum ist das Zurücksetzen nicht notwendig? Angenommen jemand wechselt die Komponente und drückt den Taster. Dieser hat dann den Wert wahr und somit löst der Trigger im Skript aus. Wenn das jetzt nochmal passiert, hat der Taster den Wert falsch und der Trigger würde nicht auslösen?

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

                  @timmss sagte: Warum ist das Zurücksetzen nicht notwendig?

                  Wenn ein Taster (Rolle: "button") wahr ist und nochmal betätigt wird, bleibt er wahr, aber der Zeitstempel wird aktualisiert, was den Trigger auf "ist wahr" auslöst.

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

                    Update

                    Zufälligerweise hat sich heute das Testen des Skriptes ergeben und es funktioniert einwandfrei!

                    Der Wert pendelt genau an der Schwelle und low_bat ist true, false, true, false, ... - aber nur eine einzige Mail. Sehr schön.

                    Die Batterie wurde ausgetauscht und die Taste gedrückt. Letzteres würde ich gerne irgendwie noch automatisieren, aber so tut es erstmal. 🙂

                    Edit: Vielleicht eine zweite Liste mitlaufen lassen, in dem die übrigen Tage bis zur automatischen Löschung gespeichert werden. Dabei wäre der zweite Eintrag der für den zweiten Eintrag in unserer lowbatListe. Standardmäßig den Wert 28 (4 Wochen) und jeden Tag wird -1 gerechnet und wenn es dann bei 0 angekommen ist, löscht es den passenden Eintrag automatisch aus unserer Liste mit den IDs.

                    @paul53 was hälst du davon?

                    paul53 1 Reply Last reply Reply Quote 0
                    • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            855
                                            Online

                                            32.0k
                                            Users

                                            80.6k
                                            Topics

                                            1.3m
                                            Posts

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