Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Script für autom. Benachrichtigung bei low Batteriestand

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script für autom. Benachrichtigung bei low Batteriestand

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

      Hi, ich habe viele Xiaomi Sensoren über Zigbee eingebunden.
      Diese werden ja über eine CR2032 Batterie betrieben, welche auch irgendwann mal ausgetauscht werden muss.
      Damit ich rechtzeitig bemerke, habe ich mir ein Script gebaut das den Batteriestand überwacht und bei <=20% eine E-Mail an mich versendet.
      Ich habe im Moment 14 Sensoren eingebunden, es werden aber demnächst noch mal ca.16 Stück dazukommen.
      Für jedes Gerät habe ich ein "eigenes Script laufen".
      Es funktioniert zwar wunderbar, aber das geht doch bestimmt auch etwas übersichtlicher vom Code her oder?

      on({id: 'zigbee.0.00158d000421e240.battery', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("zigbee.0.00158d000421e240.battery").val <= 20) {
          sendTo("email", "send", {
             text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.',
             to: 'xxx@t-online.de',
             subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.'
          });
        }
      });
      
      on({id: 'zigbee.0.00158d0004445915.battery', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("zigbee.0.00158d0004445915.battery").val <= 20) {
          sendTo("email", "send", {
             text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.',
             to: 'xxx@t-online.de',
             subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.'
          });
        }
      });
      

      2d1c57dd-7d2b-4e7e-9e8d-9605dd530e66-image.png

      sigi234 paul53 2 Replies Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active @Atifan last edited by

        @Atifan

        https://forum.iobroker.net/topic/28789/script-fürtabelle-der-batterie-zustände

        1 Reply Last reply Reply Quote 0
        • Atifan
          Atifan last edited by

          Hi, Danke für den Tipp, das ist aber wenn ich das richtig sehe ein Script für eine visuelle Darstellung als Tabelle in einer VIS. Das ist was anderes als das was ich möchte.

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

            @Atifan sagte:

            das geht doch bestimmt auch etwas übersichtlicher vom Code her oder?

            Ja.

            const ids = $('zigbee.0.*.battery');
            
            ids.on(function(dp) {
              if (dp.state.val <= 20 && dp.oldState.val > 20) {
                sendTo("email", "send", {
                   text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer: ' + dp.id,
                   to: 'xxx@t-online.de',
                   subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.'
                });
              }
            });
            
            1 Reply Last reply Reply Quote 0
            • buggybeast
              buggybeast last edited by

              @Atifan Mit Aqara Sensoren habe ich das in Blockly so gemacht
              Bildschirmfoto 2020-06-28 um 11.10.08.png
              Die Trigger Liste wird mit Deinen >30 Sensoren dabei zwar sehr lang, aber ich wüsste nicht, wie man die Lösung von paul53 in Blockly realisieren könnte. Da musst Du dann im JS Code Hand anlegen.

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

                Hi, ja das ist genau das was ich gesucht hab, Danke!
                Klar wird die Liste relativ lang, aber das ist immer noch viel übersichtlicher als das was ich hab 🙂

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

                  @buggybeast sagte:

                  wie man die Lösung von paul53 in Blockly realisieren könnte.

                  Mit RegExp.

                  Blockly_temp.JPG

                  1 Reply Last reply Reply Quote 1
                  • buggybeast
                    buggybeast last edited by

                    @paul53 ach das ist ja cool. Und auf regexp kann man triggern?
                    Kann man womöglich auf alle System Bausteine triggern, die sich an dem Trigger andocken lassen?

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

                      @buggybeast sagte:

                      auf alle System Bausteine triggern, die sich an dem Trigger andocken lassen?

                      Nein, laut Doku kann man triggern auf

                      • ID-String
                      • Array of IDs
                      • RegExp, dessen Ausdruck auf IDs verweist.
                      1 Reply Last reply Reply Quote 0
                      • Atifan
                        Atifan @buggybeast last edited by

                        @buggybeast sagte in Script für autom. Benachrichtigung bei low Batteriestand:

                        @Atifan Mit Aqara Sensoren habe ich das in Blockly so gemacht
                        Bildschirmfoto 2020-06-28 um 11.10.08.png
                        Die Trigger Liste wird mit Deinen >30 Sensoren dabei zwar sehr lang, aber ich wüsste nicht, wie man die Lösung von paul53 in Blockly realisieren könnte. Da musst Du dann im JS Code Hand anlegen.

                        Bei mir funktioniert das Script so nicht, worauf bezieht sich denn deine Variable "Wert" ?

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

                          @Atifan
                          Wert und Gerätename findet man unter "Trigger".

                          1 Reply Last reply Reply Quote 0
                          • Atifan
                            Atifan last edited by Atifan

                            Super vielen Dank! Jetzt funktioniert es 🙂 Und sieht gleich viel übersichtlicher aus als meine 14x bzw. später 30x Blöcke.

                            7e8db94e-2b9c-446c-acb2-52e51b45d2d5-image.png

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

                              @Atifan
                              Die Objekt ID ist ein String. Da Du ausführliche Namen vergeben hast, sollten besser die Namen gesendet werden.

                              1 Reply Last reply Reply Quote 0
                              • Atifan
                                Atifan last edited by

                                Ja thx, habe es noch etwas angepasst. Jetzt ist es optimal 🙂 Thx

                                6224baf0-e949-47b0-8879-055acbeceffc-image.png

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

                                  @Atifan sagte:

                                  Jetzt ist es optimal

                                  Nicht ganz, denn der Name ist auch bereits ein String.

                                  1 Reply Last reply Reply Quote 0
                                  • buggybeast
                                    buggybeast last edited by

                                    @Atifan außerdem würde ich auf „wurde geändert“ prüfen. Zumindest meine Aqara Sensoren aktualisieren sich alle paar Sekunden, dann würde dein Skript auch alle paar Sekunden einmal kurz laufen, auch wenn keine Nachricht versendet wird.
                                    Das ist unnötig.

                                    1 Reply Last reply Reply Quote 0
                                    • Atifan
                                      Atifan last edited by

                                      Hi, ja ich weiß 😄 Effizienter wäre es mit "geändert". Ich nutze aber absichtlich irgendwie lieber "aktualisiert". Klar wird viel öfter getriggert, aber mein NUC langweilt sich sowieso.
                                      Ich möchte damit einfach vermeiden, dass aufgrund von ungünstigen Konstellationen evtl. mal nicht getriggert wird 🙂 Wie gesagt effizienter wäre es anders 🙂
                                      Und ich hab versucht bei "Wert" und "Name" ohne in String zu konvertieren, dann funktioniert das Script irgendwie nicht.

                                      1 Reply Last reply Reply Quote 0
                                      • Atifan
                                        Atifan last edited by

                                        OK habe bei "Name" die Stringumwandlung entfernt, das ging 🙂

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        859
                                        Online

                                        32.0k
                                        Users

                                        80.4k
                                        Topics

                                        1.3m
                                        Posts

                                        blockly
                                        4
                                        18
                                        1143
                                        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