Ist mein Gateway online?

ttn logoIst mein Gateway noch online, diese Frage stellt sich jeder TTN-Gateway Betreiber immer mal wieder. Es wäre also schön wenn man über den Ausfall seines Gateways informiert wird. Leider gibt es aktuell keine angebotene Lösung dazu. Aber halt, das können wir doch selbst.

Wir wir ja bereits wissen, kann man den Status der Gateways über die TTN-Api abfragen. Wenn ihr die Gateways einer Region abfragt, erhaltet ihr auch den Wert „last_seen“. Dieses können wir auswerten und uns über einen Ausfall informieren lassen.

 

Der Flow in Node-RED

Der folgende Flow fragt alle 5 Minuten die TTN-Api nach den GWs einer Region ab. Anschließend wird geprüft ob das entsprechende Gateway innerhalb der letzten 15 Minuten gesehen wurde. Sollte es nicht aktiv gewesen sein, wird ein entsprechende Payload generiert und an eine Rate Limit Node weitergereicht, damit maximal eine Meldung pro Stunde euch erreicht. Ansonsten würdet ihr im Falle eines Ausfalls, alle fünf Minuten eine Meldung bekommen. Anschließend wird die Info an einen entsprechenden Dienst weiter gereicht. Hier ist es nur ein Debug-Node, aber das könnt ihr entsprechend anpassen. Ich nutze Pushover, aber Sebastian Müller hat hier gezeigt, wie es auch mit IFTTT und Telegram geht.

 

Wie ihr seht, kann auch mehr als eine Gateway überwacht werden, z.B. eure ganze Community.

Im Node GWs Status, müsst ihr die Lokation für euer GW anpassen. Geht dazu einfach auf die Seite eurer Community und schaut euch den Quelltext an. Such dann nach community_list_url und passt den Node entsprechend der Daten an. Anschließend müsst ihr noch in den Nodes GW 1 und GW 2 die Gateway ID anpassen (eui).

Ihr könnt auch die Zeit ebenfalls noch anpassen. Ich betrachte meine Gateways als offline, wenn sie innerhalb von 15 Minuten nicht aktiv waren, damit unterdrücke ich eventuelle Wackler im Netz. In den Gateway Nodes, müsst ihr dafür die Zeile msg2.payload anpassen. Der Wert 250 steht für 15 Minuten (1 Stunde * 0,25 * 1000).

[code]
[
{
"id": "6dc1112c.2800d",
"type": "inject",
"z": "fe6f12a2.7baa7",
"name": "",
"topic": "",
"payload": "",
"payloadType": "date",
"repeat": "300",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"x": 110,
"y": 1480,
"wires": [
[
"e972f138.a510f"
]
]
},
{
"id": "302bc62f.a36c7a",
"type": "delay",
"z": "fe6f12a2.7baa7",
"name": "1/h",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "hour",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 590,
"y": 1480,
"wires": [
[
"d5ffb66a.e090d8"
]
]
},
{
"id": "d5ffb66a.e090d8",
"type": "debug",
"z": "fe6f12a2.7baa7",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 750,
"y": 1480,
"wires": []
},
{
"id": "e972f138.a510f",
"type": "http request",
"z": "fe6f12a2.7baa7",
"name": "Cologne GWs",
"method": "GET",
"ret": "obj",
"url": "https://www.thethingsnetwork.org/gateway-data/location?latitude=50.93870021131726&longitude=6.955204010009755&distance=5000",
"tls": "",
"x": 280,
"y": 1480,
"wires": [
[
"cc668776.de2958",
"a955fb84.eaf928"
]
]
},
{
"id": "cc668776.de2958",
"type": "function",
"z": "fe6f12a2.7baa7",
"name": "GW status",
"func": "var msg1 = {};\nvar msg2 = {};\n\nmsg1.payload = \"GW ba-cologne-01 offline\";\n\nmsg2.payload = new Date((new Date) * 1 – 250 * 3600);\n\n\t\t if (msg2.payload > new Date(msg.payload[\"eui-b827ebfffe6b1673\"].last_seen)){\n return msg1;\n }",
"outputs": 1,
"noerr": 0,
"x": 450,
"y": 1480,
"wires": [
[
"302bc62f.a36c7a"
]
]
},
{
"id": "a955fb84.eaf928",
"type": "function",
"z": "fe6f12a2.7baa7",
"name": "GW status",
"func": "var msg1 = {};\nvar msg2 = {};\n\nmsg1.payload = \"GW ba-cologne-02 offline\";\n\nmsg2.payload = new Date((new Date) * 1 – 250 * 3600);\n\n\t\t if (msg2.payload > new Date(msg.payload[\"eui-b827ebfffe673c34\"].last_seen)){\n return msg1;\n }",
"outputs": 1,
"noerr": 0,
"x": 450,
"y": 1520,
"wires": [
[
"6d80eeb5.cc199"
]
]
},
{
"id": "6d80eeb5.cc199",
"type": "delay",
"z": "fe6f12a2.7baa7",
"name": "1/h",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "hour",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 590,
"y": 1520,
"wires": [
[
"d5ffb66a.e090d8"
]
]
}
]
[/code]

 

1 Gedanke zu „Ist mein Gateway online?“

  1. Prima – habe die Vorlage mit meinen Fellbach und Waiblingen Gateways übernommen und noch mit meinen Messengers Telgram, PushOver, Slack, Prowl und Bosch ThingBook verknüpft.
    Feine Sache. Wünsche Dir und Deiner Familie guten Rutsch und ich hoffe in 2019 wieder tolle Beiträge in Deinem Blog zu finden.

    Gruss Achim

    Antworten

Schreibe einen Kommentar