Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [Gelöst] Sensoren überwachen + Benachrichtigung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Sensoren überwachen + Benachrichtigung

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by A Former User

      Hallo zusammen,

      ich habe mir folgendes Blockly erstellt, um mich benachrichtigen zu lassen, wenn ein Sensor ausfällt und keine Daten mehr liefert. Funktioniert soweit einwandfrei, habe jedoch 2 Fragen dazu.

      1. Mir wird der Name des Datenpunktes ausgegeben, in diesem Fall "Link quality". Was muss ich ändern, damit mir der Name des Ordners (Kanalname/Gerätename?) ausgegeben wird? In diesem Fall wäre das "Wassersensor (HWR)".

      2. Wie müsste ich das Blockly ändern, um Sensoren auszuklammern, von denen ich keine Benachrichtigung möchte?

      Blockly:

      blockly.png

      js Funktions-Editor:

      js.png

      Sensor:

      aufbau.png

      Vielen Dank im Voraus

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

        @junglefire sagte: Name des Ordners (Kanalname/Gerätename?) ausgegeben wird?

        JS-Funktion parentName(id).

        ? 1 Reply Last reply Reply Quote 0
        • ?
          A Former User @paul53 last edited by

          @paul53

          Kannst du mir beschreiben, wie das genau aussehen muss, bzw. wie ich dein Beispiel genau für mich anpassen muss? Blockly ist schon mühselig zusammengesucht, aber javascript verstehe ich überhaupt nicht 😕

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

            @junglefire sagte: Beispiel genau für mich anpassen muss?

            Anstelle der JS-Funktion Name(Name_von_Sensor) verwende die JS-Funktion parentName(id)

            Blockly_temp.JPG

            mit diesem Inhalt:

            id = id.substring(0, id.lastIndexOf('.'));
            if(existsObject(id)) return getObject(id).common.name;
            
            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Guest last edited by

              @junglefire sagte: Sensoren auszuklammern, von denen ich keine Benachrichtigung möchte?

              Bild_2022-03-21_125404.png

              ? D3ltoroxp 2 Replies Last reply Reply Quote 0
              • ?
                A Former User @paul53 last edited by

                @paul53

                Sehr geil, funktioniert beides genau so, wie ich es mir vorgestellt habe.
                Vielen, vielen Dank 👏

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

                  @paul53 In dem ID Block sucht er jetzt alle DP's ab die beinhalten zigbee und link_quality

                  Ich möchte mir so was auch basteln. Mein Ansatz war dieser hier..

                  3ffec636-c138-458e-80c9-e2d225cc7eec-grafik.png

                  Aber hier müsste ich sämtliche Sensoren dort rein packen. Da ist die Methode hier natürlich um einiges komfortabler. Ich würde bei mir gern auf den Punkt available triggern und diesen alle 12h abfragen, ob er noch da ist.

                  9e9a7162-37ce-4015-a377-291f3f5fb3bb-grafik.png

                  Wie müsste denn dann mein ID Selektor heißen, einfach zigbee.0.*available ? Und wie schauts aus wenn ich das ganze auch für hmip Produkte machen möchte, kann ich die beide einen ID Selektor packen ?

                  Und beim Block für jeden Wert ... Ist der Name frei wählbar, oder muss da auch available und zigbee mit rein ?

                  EDIT::

                  Werden mit der Methode auch mehrere Geräte gelistet, die ausgefallen sind ? @JungleFire

                  Hab mich mit euren Beispielen auch mal versucht.

                  8745683a-a24d-4ee9-a60b-4d3975eae149-grafik.png

                  Passieren tut aber nichts. Muss ich vllt mal 24h warten ?

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

                    @paul53 Könntest du mal drüber schauen, sollte doch so funktionieren ? Oder mache ich noch was falsch ?

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

                      @d3ltoroxp sagte: sollte doch so funktionieren ?

                      Ersetze "Wert vom Objekt ID Zigbee_Link" durch "Zeitstempel vom Objekt ID Zigbee_Link".

                      Anstelle des Wizard für den Zeitplan verwende besser die CRON-Version.

                      D3ltoroxp 1 Reply Last reply Reply Quote 1
                      • D3ltoroxp
                        D3ltoroxp @paul53 last edited by D3ltoroxp

                        @paul53 Ja Logo, mit dem Wert kann er nichts vergleichen. Manchmal kann sieht mans einfach nicht. Danke ich teste das so noch mal...

                        EDIT..

                        Aber nun hängt es noch hier...

                        8ecacad8-09df-4969-a621-529820652bef-grafik.png

                        36faf90c-ca34-44ce-af27-b3e1851ac97f-grafik.png

                        In der Funktion den Code von dir oben.

                        id = id.substring(0, id.lastIndexOf('.'));
                        if(existsObject(id)) return getObject(id).common.name;
                        
                        17:44:59.466	info	javascript.0 (607) script.js.VIS.Sensoren_Ueberwachung: registered 0 subscriptions and 1 schedule
                        17:44:59.467	error	javascript.0 (607) script.js.VIS.Sensoren_Ueberwachung: ReferenceError: id is not defined
                        17:44:59.468	error	javascript.0 (607) at Name (script.js.VIS.Sensoren_Ueberwachung:5:5)
                        17:44:59.468	error	javascript.0 (607) at script.js.VIS.Sensoren_Ueberwachung:21:60
                        17:44:59.468	error	javascript.0 (607) at script.js.VIS.Sensoren_Ueberwachung:35:3
                        

                        Irgendwie muss ich doch die Variablen Zigbee/HMIP befüllen mit Namen oder, die tot sind ?

                        Und die JS Funktion muss ich doch auch irgendwie starten, aber ich hab gar keinen Block denn ich unter den Zeitplan packen kann.

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

                          @d3ltoroxp sagte: In der Funktion den Code von dir oben.

                          Dann muss der Übergabeparameter den Bezeichner id erhalten.

                          Bild_2022-05-03_175827246.png

                          Man kann nicht gleichzeitig den Namen von Zigbee und HmIP in der Funktion auflösen. Die gleiche Funktion muss in der zweiten Schleife (für HmIP) aufgerufen werden.

                          D3ltoroxp 1 Reply Last reply Reply Quote 1
                          • D3ltoroxp
                            D3ltoroxp @paul53 last edited by D3ltoroxp

                            @paul53 Ok Danke dir so nun bekomme ich schon mal Namen. Leider alle extra. Gibts hier noch nen Trick, wie ich da eine Liste von bekomme ?

                            1d6ee03d-c37d-44b0-b32a-5395874a611d-grafik.png

                            Jetzt raff ich noch nicht wie ich die Funktion auch noch mal auf HMIP anwende ? Ich nehme die gleiche Funktion von oben ?

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

                              @d3ltoroxp sagte: Gibts hier noch nen Trick, wie ich da eine Liste von bekomme ?

                              Ja, verwende ein Array:

                              Bild_2022-05-03_192531985.png

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

                                @d3ltoroxp sagte: wie ich die Funktion auch noch mal auf HMIP anwende ?

                                Wenn in beiden Fällen der Gerätename angezeigt werden soll, dann verwende eine erweiterte Funktion deviceName(id):

                                id = id.substring(0, id.lastIndexOf('.'));
                                if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                                id = id.substring(0, id.lastIndexOf('.'));
                                if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                                
                                D3ltoroxp 1 Reply Last reply Reply Quote 0
                                • D3ltoroxp
                                  D3ltoroxp @paul53 last edited by D3ltoroxp

                                  @paul53 Auf den ersten Blick beide Zeilen identisch. Wenn ich nun noch mehrere andere Hersteller habe, kann ich dann einfach um die Anzahl erweitern ? Bei z.b. 4 unterschiedlichen Herstellern ?

                                  id = id.substring(0, id.lastIndexOf('.'));
                                  
                                  if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                                  
                                  id = id.substring(0, id.lastIndexOf('.'));
                                  
                                  if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                                  
                                  id = id.substring(0, id.lastIndexOf('.'));
                                  
                                  if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                                  
                                  id = id.substring(0, id.lastIndexOf('.'));
                                  
                                  if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                                  

                                  Edit:

                                  Ich hab wohl irgendwo noch einen Fehler ??

                                  javascript.0 (607) script.js.VIS.Sensoren_Ueberwachung: TypeError: Offline_Sensoren.split is not a function
                                  19:27:40.685	error	javascript.0 (607) at script.js.VIS.Sensoren_Ueberwachung:40:69
                                  

                                  Oder muss ich

                                  deviceName(id)
                                  

                                  noch in die JS Funktion so eintragen, anstatt "name" ? Oder gar in die Variable so eintragen ?

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

                                    @d3ltoroxp sagte: Wenn ich nun noch mehrere andere Hersteller habe, kann ich dann einfach um die Anzahl erweitern ? Bei z.b. 4 unterschiedlichen Herstellern ?

                                    Das hat nichts mit den Herstellern zu tun, sondern mit der unterschiedlichen Objekt-Struktur der Adapter:

                                    • Zigbee: device.state
                                    • HM-RPC: device.channel.state
                                    1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @D3ltoroxp last edited by

                                      @d3ltoroxp sagte: noch in die JS Funktion so eintragen, anstatt "name" ?

                                      Nein, es geht auch Name(id). Ist nur nicht so eindeutig, was zurück geliefert wird.

                                      @d3ltoroxp sagte in [Gelöst] Sensoren überwachen + Benachrichtigung:

                                      Offline_Sensoren.split is not a function

                                      Nicht Text in eine Liste wandeln, sondern eine Liste in Text.

                                      Bild_2022-05-03_193246211.png

                                      D3ltoroxp 1 Reply Last reply Reply Quote 1
                                      • D3ltoroxp
                                        D3ltoroxp @paul53 last edited by D3ltoroxp

                                        @paul53 Vielen vielen Dank. Sieht super aus und scheint auch seine Arbeit zu verrichten.

                                        Also wenn noch ein weiterer Adapter dazu kommt muss ich dann noch mal was an der Funktion ändern ?

                                        Z.b.Sonoff dazu nehmen möchte, für mich als Noob, sehen die States bei allen drei gleich aus. Woher weiß ich ober Sonoff = device.satet oder device.channel.state oder gar noch eine andere Variante hat ?

                                        EDIT::

                                        349965e4-21a9-43e7-b0fe-76b7d7926bf9-grafik.png

                                        Ich hab das mal auf den Batterie Status umgestellt, auf "Available" sind die Zeitstempel Uhr alt. Aber wenn ich den DP raus kopiere für das Wort, tut sich da gar nichts mehr mit den Zigbee Sensoren, obwohl welche in der Liste sein müssten.

                                        7cf59f50-d66d-4bc8-ba1c-8399fd47a9bd-grafik.png

                                        Bestimmt falsch geschrieben...

                                        {
                                          "type": "state",
                                          "common": {
                                            "name": "Terrasse_FK Battery percent",
                                            "type": "number",
                                            "unit": "%",
                                            "read": true,
                                            "write": false,
                                            "role": "battery.percent",
                                            "min": 0,
                                            "max": 100,
                                            "icon": "img/battery_p.png"
                                          },
                                          "from": "system.adapter.zigbee.0",
                                          "user": "system.user.admin",
                                          "ts": 1582998804679,
                                          "_id": "zigbee.0.00158d0002e8bbbc.battery",
                                          "acl": {
                                            "object": 1636,
                                            "state": 1636,
                                            "owner": "system.user.admin",
                                            "ownerGroup": "system.group.administrator"
                                          }
                                        }
                                        
                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @D3ltoroxp last edited by

                                          @d3ltoroxp sagte: Batterie Status umgestellt

                                          Links ist die ID zu sehen:

                                          Bild_2022-05-03_203046540.png

                                          @d3ltoroxp sagte in [Gelöst] Sensoren überwachen + Benachrichtigung:

                                          Sonoff dazu nehmen möchte, für mich als Noob, sehen die States bei allen drei gleich aus.

                                          Ich kenne die Objekt-Struktur des Sonoff-Adapters nicht. Bitte zeigen!

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

                                            @paul53 Noch mals tausend Dank für deine tolle Unterstützung... Heute stell ich mich aber auch an. Danke für deine Geduld.

                                            62c7581e-cdf4-4d23-a122-9db8616d951e-grafik.png

                                            Ich hoffe das ist das richtige ?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            936
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            28
                                            1020
                                            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