# \[NODE-RED\] Steuerung des Empfangs des Zigbee-Sensorsignals

**URL:** <https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036>\
**Category:** Tutoriels\
**Created:** [23. März 2023 um 22:34 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036 "2023-03-23T22:34:05Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [23. März 2023 um 22:34 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/1 "2023-03-23T22:34:05Z")

</div>

Ich teile Ihnen einen Node-Red-Flow mit, um die Empfangszeit des Signals eines Zigbee-Sensors zu messen.  
Wenn die Zeit zwischen jedem Signalempfang länger als 24 Stunden ist (einstellbar), wird eine Telegramm-Benachrichtigung gesendet.

Ich habe diese Funktion erstellt, weil die Batterieanzeige der Zigbee-Sensoren nicht zuverlässig ist und ich mehrmals auf eine Temperatur hereingefallen bin, obwohl der Sensor nicht mehr funktionierte. Was ärgerlich sein kann, wenn man diesen Wert in einer Szene benötigt. Jetzt weiß ich, wenn einer meiner Sensoren nach 24 Stunden keine Daten mehr sendet. Und das in einer Schleife alle 24 Stunden. Getestet mit Türöffnungssensor, Temperatur-/Feuchtigkeitssensor, Schalter, Vibrationssensor, Bewegungssensor.

Die Funktionsanfrage in Gladys

> [@Gerät melden und einen „Nicht verfügbar“-Status erstellen (keine Batterie, keine Verbindung usw.)](https://community.gladysassistant.com/t/alerter-et-creer-un-statut-indisponible-dun-equipement-plus-de-batterie-connexion-etc/7442):
>
> Funktionsbeschreibung Gladys warnt mich, wenn ein Sensor nicht mehr funktioniert, nicht mehr erfasst oder keine Daten mehr sendet. Kontext Ich habe eine 100%ige Zigbee-Hausautomation, hauptsächlich mit Xiaomi direkt an Gladys. right_arrow Derzeit wird der letzte bekannte Wert immer in den Szenen verwendet, als ob der Sensor noch funktionieren würde. Ich habe auch bemerkt, dass die Szene, die mich warnt, wenn ein Raum seit mehreren Stunden zu feucht ist, mir immer dasselbe anzeigt… seit de…

Für die Installation von NODE-RED kennen Sie bereits alle das Video-Tutorial von @pierre-gilles. [https://www.youtube.com/watch?v=bpmHzR8\_S5g](https://www.youtube.com/watch?v=bpmHzR8_S5g).

**Voraussetzungen:**

- Konfigurieren Sie den MQTT-Broker, um sich mit dem Zigbee2mqtt-Broker zu verbinden  

- Installieren Sie in Node-Red: «&nbsp;node-red–contrib-telegrambot&nbsp;»

- Konfigurieren Sie einen Telegram-Bot für Node-Red

- Holen Sie sich eine ChatId-Nummer, um Nachrichten mit Telegram in Node-Red senden zu können (ich werde später hinzufügen, wie man diese Nummer abrufen kann, falls erforderlich)  
Dieser Teil mit Telegram ist optional, Sie können auch einen Zustand in einem Fake-MQTT-Gerät an Gladys senden. Und dann die Telegramm-Benachrichtigung mit Gladys durchführen.

- Konfiguration von Node-Red zum Schreiben/Lesen von Dateien:  
Bearbeiten Sie die Datei /var/lib/node-red/settings.js (siehe das Video von @pierre-gilles zur Installation von Node-Red, er erklärt, wie man diese Datei bearbeitet)  
Fügen Sie die folgenden Zeilen hinzu:

```auto
contextStorage: {
   default: "memoryOnly",
   memoryOnly: { module: 'memory' },
   file: { module: 'localfilesystem' }
},

```

**Hier ist ein Überblick über den Flow in Node-red für einen meiner Sensoren:**

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/4/46e485310c5ceef0b4d0d32c43de04476cce5288.png)

**Hier ist der Flow zum Importieren in Node-Red: Ich habe einen meiner Flows so geändert, dass er generisch ist und meine Verbindungsdaten gelöscht wurden**  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/optimized/2X/2/2822003fc982042da72a3bd7600c55d485f17283_2_690x66.png)

```auto
[
    {
        "id": "d5482843ef207659",
        "type": "function",
        "z": "d76f072c1559266b",
        "g": "87c2f560ca6c5a98",
        "name": "Nachricht an Telegram senden",
        "func": "msg.payload={};\nmsg.payload.chatId =\" ****** \";\nmsg.payload.content = \"[ALARM] Verbindung zum Thermometer verloren! Bitte die Batterie dieses Geräts überprüfen!\";\nmsg.payload.type = \"message\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1180,
        "y": 120,
        "wires": [
            [
                "f57a85488266a794"
            ]
        ]
    },
    {
        "id": "2c780ff8e1b28a9e",
        "type": "mqtt in",
        "z": "d76f072c1559266b",
        "g": "87c2f560ca6c5a98",
        "name": "Thermometer",
        "topic": "zigbee2mqtt/Thermometer",
        "qos": "2",
        "datatype": "auto",
        "broker": "2a159ac23236c7e2",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 120,
        "wires": [
            [
                "47ee6c1dd9132535"
            ]
        ]
    },
    {
        "id": "47ee6c1dd9132535",
        "type": "change",
        "z": "d76f072c1559266b",
        "g": "87c2f560ca6c5a98",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "sensor",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 490,
        "y": 120,
        "wires": [
            [
                "147c4e952052bad4"
            ]
        ]
    },
    {
        "id": "cfd94c8353c2c6f9",
        "type": "inject",
        "z": "d76f072c1559266b",
        "g": "87c2f560ca6c5a98",
        "name": "Task 1000",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "task",
        "payload": "",
        "payloadType": "date",
        "x": 490,
        "y": 80,
        "wires": [
            [
                "147c4e952052bad4"
            ]
        ]
    },
    {
        "id": "147c4e952052bad4",
        "type": "function",
        "z": "d76f072c1559266b",
        "g": "87c2f560ca6c5a98",
        "name": "TimeOut",
        "func": "/*\n * Time-out Sensor\n */\n\n\nconst TIME_OUT = 1440; /* 24 Stunden */\n\n/*\n * Time-out Ausgabe\n */\nvar msg_TimeOut = null;\n\n/*\n * Verzögerung vor dem Time-out des Sensors zwischen zwei Empfängen\n */\nvar delayTimeOut = context.get(\"delayTimeOut\", \"file\") || TIME_OUT; // Variablen initialisieren\n\n\nif (msg.topic === \"sensor\") // Initialisierung des Zählers bei jedem Sensorempfang\n{\n delayTimeOut = TIME_OUT;\n context.set(\"delayTimeOut\", delayTimeOut, \"file\"); // Speichern des letzten Werts im lokalen Kontext\n\n node.status({ fill: \"green\", shape: \"ring\", text: \"Verbleibend: \" + delayTimeOut + \" Minuten\" });\n\n //msg_TimeOut = { topic: \"temp\", payload: delayTimeOut };\n}\n\nif (msg.topic === \"task\") // Aktualisierung alle Minuten\n{\n if (delayTimeOut > 0)\n {\n delayTimeOut--;\n context.set(\"delayTimeOut\", delayTimeOut, \"file\"); // Speichern des letzten Werts im lokalen Kontext\n \n node.status({ fill: \"green\", shape: \"ring\", text: \"Verbleibend: \" + delayTimeOut + \" Minuten\" });\n\n }\n\n if (delayTimeOut === 0)\n {\n delayTimeOut = 0; \n context.set(\"delayTimeOut\", delayTimeOut, \"file\"); // Speichern des letzten Werts im lokalen Kontext\n\n node.status({ fill: \"red\", shape: \"ring\", text: \"TIME OUT\" });\n\n msg_TimeOut = { topic: \"timeout\", payload: \"TIME OUT\" };\n }\n \n} \n\nreturn msg_TimeOut;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 900,
        "y": 120,
        "wires": [
            [
                "d5482843ef207659"
            ]
        ],
        "outputLabels": [
            "TimeOut"
        ]
    },
    {
        "id": "f57a85488266a794",
        "type": "telegram sender",
        "z": "d76f072c1559266b",
        "g": "87c2f560ca6c5a98",
        "name": "",
        "bot": "e1f028778559de40",
        "haserroroutput": false,
        "outputs": 1,
        "x": 1510,
        "y": 120,
        "wires": [
            []
        ]
    },
    {
        "id": "2a159ac23236c7e2",
        "type": "mqtt-broker",
        "name": "zigbee2mqtt2",
        "broker": "192.168.*.*",
        "port": "1884",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": "",
        "credentials": {}
    },
    {
        "id": "e1f028778559de40",
        "type": "telegram bot",
        "botname": " ******",
        "usernames": "",
        "chatids": "",
        "baseapiurl": "",
        "updatemode": "polling",
        "pollinterval": "300",
        "usesocks": false,
        "sockshost": "",
        "socksprotocol": "socks5",
        "socksport": "6667",
        "socksusername": "anonymous",
        "sockspassword": "",
        "bothost": "",
        "botpath": "",
        "localbotport": "8443",
        "publicbotport": "8443",
        "privatekey": "",
        "certificate": "",
        "useselfsignedcertificate": false,
        "sslterminated": false,
        "verboselogging": false
    }
]

```

**1. mqtt in : Konfiguration Zigbee-Sensor**  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b986f09fac2c98f0b364acc220c429c4d7e8df8d.png)

Ein mqtt in-Objekt einfügen

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/f5030944e7b63ffa5b72edc39e762521f84e0f55.png)

Geben Sie in Server Ihren Zigbee2mqtt-Broker an  
Geben Sie im Topic das Topic Ihres Sensors an (Sie können eine Anwendung wie MQTT Explorer verwenden, um Ihr Netzwerk zu erkunden und das Topic zu finden). Normalerweise lautet das Topic zigbee2mqtt/_nameihresensors_

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/2e7fe68fbe6961d13d2c84b61f1b90426ba4e99e.png)

**2. change: Transformation des Topics**  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b42cdc9f5293bf5be9351910a83a312a5166e553.png)

Ein change-Objekt einfügen, um das Topic zu ändern und so zu vermeiden, das Topic für jeden Sensor anschließend in der folgenden Funktion zu ändern.

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/72a20acc168fddd06cd48d62a28c0130fd45d74e.png)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/c/c63c51956f1b98f4ade2f1974cb98573f3a936fe.png)

**3. function : Berechnung der Zeit zwischen zwei Zigbee-Signalen des Sensors**  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/3aed7ebf328e5c6d7ff336fb064f0242ea13ef70.png)

Ein function-Objekt einfügen

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/5594926d7d0d620a4066810de06910ab48bf661c.png)

Im folgenden Code können Sie die Konstante TIME\_OUT (in Minuten) ändern. Ich habe 1440 Minuten (24 Stunden) eingestellt

```auto
/*
 * Sensor Time-out
 */

const TIME_OUT = 1440; /* 24 Stunden */

/*
 * Time-out-Ausgabe
 */
var msg_TimeOut = null;

/*
 * Verzögerung vor dem Sensor Time-out zwischen zwei Empfängen
 */
var delayTimeOut = context.get("delayTimeOut", "file") || TIME_OUT; // Variablen initialisieren

if (msg.topic === "sensor") // Zählerinitialisierung bei jedem Sensorempfang
{
    delayTimeOut = TIME_OUT;
    context.set("delayTimeOut", delayTimeOut, "file"); // letzten Wert im lokalen Kontext speichern

    node.status({ fill: "green", shape: "ring", text: "Verbleibend: " + delayTimeOut + " Minuten" });

    //msg_TimeOut = { topic: "temp", payload: delayTimeOut };
}

if (msg.topic === "task") // alle Minuten aktualisieren
{
    if (delayTimeOut > 0)
    {
        delayTimeOut--;
        context.set("delayTimeOut", delayTimeOut, "file"); // letzten Wert im lokalen Kontext speichern
        
        node.status({ fill: "green", shape: "ring", text: "Verbleibend: " + delayTimeOut + " Minuten" });

    }

    if (delayTimeOut === 0)
    {
        delayTimeOut = 0;    
        context.set("delayTimeOut", delayTimeOut, "file"); // letzten Wert im lokalen Kontext speichern

        node.status({ fill: "red", shape: "ring", text: "TIME OUT" });

        msg_TimeOut = { topic: "timeout", payload: "TIME OUT" };
    }
    
} 

return msg_TimeOut;

```

Ich habe die verbleibende Zeit in die Funktion eingefügt, bevor die Warnung gesendet wird

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/9/943fb4d9fa1c509405d70ae645782b0372e588ef.png)

**4. inject: Senden eines Payloads alle Minuten, um die Zeit in der Funktion neu zu berechnen**  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/a/adf62949817839f0e555ab3403877ff876ee397f.png)

Ein inject-Objekt einfügen

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/4/4487b426f707c37d0e5d98167e20ea2029d2b4a3.png)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/1/14af39371f14fad007d7ddb36ceddc4a554436bb.png)

Geben Sie im Topic **task** an. Dieses Topic wird in der Funktion verwendet. Wenn Sie es ändern, müssen Sie den Code der Funktion anpassen.  
Geben Sie dann ein Intervall von jeder Minute an

**5. function: Erstellung des Textes für Telegram**  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/4/4302f1a058581e355c4cd3b3d11da5dd80f43f3f.png)

Ein function-Objekt einfügen

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/5594926d7d0d620a4066810de06910ab48bf661c.png)

Sie müssen Ihre Chat-ID einfügen und können Ihre Nachricht anpassen

```auto
msg.payload={};
msg.payload.chatId =" ******";
msg.payload.content = "[ALERT] Kommunikation mit dem Thermometer verloren! Bitte die Batterie dieses Geräts überprüfen!";
msg.payload.type = "message";
return msg;

```

**6. sender telegram: Senden der Nachricht**  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/d/d7c3fe62d5c0a936ab535c93977361560fa4e2a0.png)

Ein Telegram-Sender-Objekt hinzufügen

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/9/9f94cd5dff7ed00346db0f33e33f4e97014c989c.png)

Geben Sie Ihren Telegram-Bot für NodeRed an

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/f65bce4e83a2cfa18ecd2b4709fec56347f94263.png)

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [24. März 2023 um 14:12 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/2 "2023-03-24T14:12:58Z")

</div>

Super das!!! Ich werde das schnell bei mir umsetzen 😉 Vielen Dank!

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [24. März 2023 um 16:14 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/3 "2023-03-24T16:14:03Z")

</div>

Nur zur Info, als ich diesen Teil hinzugefügt habe, habe ich es ganz am Ende der Datei gemacht…

> [@Will\_71](#):
>
> ```auto
> contextStorage: {
> default: "memoryOnly",
> memoryOnly: { module: 'memory' },
> file: { module: 'localfilesystem' }
> }
> 
> ```

Und dann hat Node-red angefangen, in einer Endlosschleife neu zu starten.  
Letztlich habe ich den bereits vorhandenen Teil in der Datei bearbeitet, indem ich ihn entkommentiert habe. Also sieht es bei mir so aus, mit einem Komma am Ende:

```auto
contextStorage: {
   default: "memoryOnly",
   memoryOnly: { module: 'memory' },
   file: { module: 'localfilesystem' }
},

```

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [24. März 2023 um 16:29 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/4 "2023-03-24T16:29:30Z")

</div>

Okay, ich werde es überprüfen, aber es könnte sein, dass ich beim Kopieren des Codes ein Komma vergessen habe.  
Ich werde es korrigieren, entschuldige…

Lass mich wissen, wenn du es eingerichtet hast… und zum Testen kannst du die Konstante TIME\_OUT ändern und nur ein paar Minuten einstellen und einen deiner Sensoren von der Batterie trennen.

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [24. März 2023 um 19:02 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/5 "2023-03-24T19:02:33Z")

</div>

Du hast recht, ich habe das Komma beim Abschreiben tatsächlich vergessen!  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/8538a808093b3329f975adae1674303ead1fe187.png)

Ich habe es in meinem Tutorial korrigiert.

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [24. März 2023 um 20:22 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/6 "2023-03-24T20:22:42Z")

</div>

Und es ist ein Erfolg!

Ich habe den ersten Block durch einen ersetzt, den ich gewohnt bin zu verwenden:

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/8b1f9a09eca4222dfaad9bf9206016aaf41eac6c.png)

Vielen Dank @Will_71 👍 😉

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [24. März 2023 um 20:25 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/7 "2023-03-24T20:25:42Z")

</div>

Ich sehe die Zählung unter der TimeOut-Funktion nicht!  
Hast du versucht, deinen Sensor zu trennen, indem du das TIME\_OUT verringerst?

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [24. März 2023 um 20:30 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/8 "2023-03-24T20:30:03Z")

</div>

Oui oui, das war so, weil ich es für die Tests auf 1 Minute eingestellt hatte 😉  
Jetzt ist es da:

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/f647f9cdcc5f8bdc60a8a75a82738a3c5ed79443.png)

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [24. März 2023 um 20:31 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/9 "2023-03-24T20:31:17Z")

</div>

Aber eine kleine Frage: Ich habe gerade das hier gemacht:

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/d/d021cf33d097dd3badc453bd85455657ce06922e.png)

Und danach dachte ich, dass ich vielleicht alle Telegram-Sender in einem einzigen zusammenfassen könnte, oder?

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [24. März 2023 um 20:35 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/10 "2023-03-24T20:35:27Z")

</div>

Ok perfekt!

Ja, ich habe es auch mit den Links gruppiert

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/e/ee2f571f70e786294103bddbb20534f4f3fbb80f.png)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/d/d9ee3ece225663669f86180d2eb9596bccd8ba53.png)

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [24. März 2023 um 20:36 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/11 "2023-03-24T20:36:20Z")

</div>

Ah cool, ich habe nie verstanden, wofür die LINKs gut sind, danke!

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [24. März 2023 um 20:52 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/12 "2023-03-24T20:52:31Z")

</div>

Aber ändert das in diesem Fall etwas, ob man einen Link oder eine Telegram-Box verwendet, ich weiß nicht.

Normalerweise verwende ich einen Link, wenn ich das Ergebnis einer anderen Funktion in einem anderen Flow wiederverwenden möchte.

Zum Beispiel habe ich einen Flow mit einer HTTP-Anfrage, um die Außentemperatur abzurufen (ich sollte in einen Außensensor investieren) und verwende dann diese Temperatur in meinen Heizleistungskalkulationen für meine Heizkörper. In diesem Fall mache ich einen Link, um die HTTP-Anfrage nicht für alle meine Heizkörper durchzuführen. Es ist nicht sinnvoll, mehrere HTTP-Anfragen in diesem Fall durchzuführen, der Link ist nützlich.

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [5. April 2023 um 12:54 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/13 "2023-04-05T12:54:23Z")

</div>

Ich komme hierher zurück, weil meine ersten Tests zwar vielversprechend schienen… aber dem ist nicht so.

Ich habe einen Timeout von 12 Stunden eingestellt und zweimal täglich erhalte ich Telegram-Nachrichten, dass meine Geräte offline sind… 🤔

Ich verstehe nicht wirklich, woher das Problem kommt.  
Übrigens, da ich sehe, dass du @Will_71 in NodeRed sehr gut bist, wäre es nicht einfacher, den Status der Verfügbarkeit `Online` und `Offline` von z2m zu überprüfen?

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/fd32c2d1ccf5eb1d93125ec3d5e204f01a60ac4f.png)

Oder im schlimmsten Fall eine Berechnung mit dem Datenpunkt `last_seen` durchzuführen?

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/247bb6d32b0fcb17a91952ddd30f740acc29475f.png)

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [5. April 2023 um 13:12 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/14 "2023-04-05T13:12:19Z")

</div>

Und sind die Geräte, auf denen du die Telegram-Benachrichtigung erhältst, offline oder nicht?  
Denn auf deinen Screenshots sind zwei Sensoren offline mit „Zuletzt gesehen“-Zeiten von mehr als 12 Stunden. Daher ist das Verhalten normal.

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [5. April 2023 um 13:45 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/15 "2023-04-05T13:45:15Z")

</div>

Nein nein, ich habe einfach mal einen Screenshot gemacht, ich habe ein paar Geräte offline.  
Aber die Sensoren, die ich überprüfen möchte, sind alle online und haben `last_seen` von maximal 1 Stunde.

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [5. April 2023 um 14:09 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/16 "2023-04-05T14:09:48Z")

</div>

Bei mir funktioniert alles gut, aber du hast nicht alle dieselben Elemente wie ich verwendet  
Weiß ich nicht, ob das zigbee2mqtt-Objekt die Infos wie das MQTT-Objekt, das ich verwende, hochlädt?  
In meinem Fall verbinde ich mich direkt mit dem MQTT-Broker und lese bei jeder Sendung des Sensors den Wert. Vielleicht sendet zigbee2mqtt in deinem Fall die Daten nicht, wenn sich der Wert nicht ändert. Ich denke, man sollte dieser Spur nachgehen.

 ![IMG_20230405_160503](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/350fdc8c47a00cab50745bbcf4f5e684122e84be.jpeg)

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [5. April 2023 um 14:11 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/17 "2023-04-05T14:11:48Z")

</div>

Ah okay… dann werde ich mal deinen MQTT-Block ausprobieren und sehen, was dabei herauskommt, danke für den Tipp!!

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [5. April 2023 um 14:23 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/18 "2023-04-05T14:23:45Z")

</div>

Das ist nur ein Vorschlag, da ich deinen Block noch nie verwendet habe.  
Ich werde versuchen, einen Test mit diesem zigbee2mqtt-Block durchzuführen, um zu sehen, welches Ergebnis ich erhalte.

---

<div class="post-metadata">

**Author:** ![jparbel](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/j/d6d6ee/32.png) [@jparbel](https://community.gladysassistant.com/u/jparbel)\
**Post date:** [7. April 2023 um 18:40 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/19 "2023-04-07T18:40:10Z")

</div>

Super Idee! Es stimmt, ein defekter Zigbee-Sensor wird nicht als Fehler gemeldet, was schon problematisch ist!  
Ich habe gerade den Flow von @Will_71 ausprobiert und festgestellt, dass ich das gleiche Problem wie @guim31 habe.

Ich habe **msg.topic** durch **msg.payload** im ‹&nbsp;change&nbsp;›-Block und im Skript der Funktion ‹&nbsp;Timeout&nbsp;› (Zeilen 19 und 29) ersetzt.

Seit dieser Änderung scheint es bei mir richtig zu funktionieren.

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [8. April 2023 um 07:13 UTC](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036/20 "2023-04-08T07:13:24Z")

</div>

Ich bin nicht deiner Meinung.

Warum habe ich das Topic und nicht den Payload gewählt? Weil ich den Payload nicht brauche, da ich nicht die Sensordaten verwenden möchte.

Daher habe ich einen Change-Block verwendet, um das Topic des Sensors zu standardisieren, damit ich es nicht im Skript meiner Timeout-Funktion ändern muss. Dieser Schritt ist vielleicht optional, aber in diesem Fall müsste das Topic in der Funktion angepasst werden.

Dein Sensor sendet immer auf ein dediziertes Topic einen Payload mit seinen Daten. (siehe Bild unten)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/74bf155b89d7ed894d346d9b93f9b6cd2be01abc.png)

Dann hast du die Zeilen 19 und 29 meiner Funktion geändert. Okay für Zeile 19, wenn du den Payload verwendest, aber warum Zeile 29?  
Zeile 29 ist ein Test, um das Topic des Inject-Blocks zu erhalten, das ich jede Minute sende.

Warum es bei dir nicht funktioniert, weiß ich nicht, vielleicht hast du es falsch kopiert oder nicht die gleichen Blöcke wie ich verwendet. Ich weiß es nicht!!

[Nächste Seite](https://community.gladysassistant.com/t/node-red-controle-reception-signal-capteur-zigbee/8036.md?page=2)
