ttnctl – Ist mein Gateway online? Teil 2

Bevor wir starten, wollte ich nur kurz sagen warum es hier so lange ruhig war. Aufgrund der aktuellen Corona Situation, habe ich meine Aufmerksamkeit auf meine Familie und meine Arbeit konzentrieren müssen. Dadurch kamen meine Hobbies zu kurz. Langsam normalisiert sich die Situation wieder und ich habe auch mehr Zeit für mich. Daher sollte auch langsam wieder die Aktivität hier auf meinem Blog ansteigen. Nun aber zum eigentlichen Thema, ttnctl:

Es ist zwar schon lange her, aber es gab vor einiger Zeit Probleme mit der ersten Methode, den Zustand des Gateways abzufragen. Es kam von mehreren Usern der Vorschlag den Status über ttnctl abzufragen, worauf ich hier nun eingehen möchte.

ttnctl installieren

Im TTN eigenen Quick Start ist alles dazu beschrieben, ich gehe aber trotzdem kurz darauf ein.

Mit nachfolgenden Befehlen ladet ihr euch die aktuelle Version herunter und installiert sie (gültig für ein 64bit Linux):

wget https://ttnreleases.blob.core.windows.net/release/master/ttnctl-linux-amd64.zip
unzip ttnctl-linux-amd64.zip
mv ttnctl-linux-amd64 /usr/local/bin/ttnctl
chmod +x /usr/local/bin/ttnctl

Anschließend müssen wir noch ttnctl autorisieren. Geht dazu auf https://account.thethingsnetwork.org/ und logged euch ein. Anschließend können wir uns einen ttnctl access code erzeugen. Diesen Code kopiert ihr euch und autorisiert damit ttnctl:

ttnctl user login YourAccessCode
  INFO Successfully logged in as BjoernA

Gateway Status abfragen

Über ttnctl gateways status EureGW-ID , können wir nun den Status abfragen. Der Vorteil der Methode ist einer erhöhte Zuverlässigkeit.

 ttnctl gateways status eui-b827ebfffe6b1673
  INFO Discovering Router...
  INFO Connecting with Router...
  INFO Connected to Router
  INFO Received status                          GatewayID=eui-b827ebfffe6b1673

           Last seen: 2020-07-15 10:35:21.779071224 +0200 CEST
           Timestamp: 0
       Reported time: 2020-07-15 10:40:40.987207 +0200 CEST
            Platform: IMST + Rpi
      Frequency Plan: EU_863_870
              Bridge: gs.v3.
            Location: (50.934422, 6.954430; source unknown)
                 Rtt: 23ns
                  Rx: (in: 160798; ok: 111417)
                  Tx: (in: 4807; ok: 4807)

Abfrage über Node-RED

Ok, aber geht es auch automatisch? Natürlich!

Wir nutzen dafür wieder unser beliebtes Node-RED. Ich habe dafür ein Script erstellt, welches ich durch Node-RED ausführen lasse. Node-RED prüft dann ab Last seen > 15 Minuten ist und gibt mir im Fehlerfall eine Meldung per Pushover aus.

vi ba-0001.sh

Inhalt:

#!/bin/bash
ttnctl gateways status eui-b827ebfffe6b1673

Ausführbar machen:
chmod +x ba-0001.sh

Dieses könnt ihr dann mit ./ba-0001.sh testen, wobei ba-0001.sh nur ein Beispiel ist. Die Ausgabe sollte gleich der obigen Abfrage sein.

Anschließend habe ich mir in Node-RED einen timestamp-Node, einen exec-Node, einen function-Node und einen pushover-Node zusammengesetzt.

ttnctl in Node-RED einbinden

Der exec-Node ist folgendermaßen aufgebaut:

ttnctl mittels Script aus Node-RED starten

Der function-Node sieht so aus:

var msg1 = {};
var msg2 = {};
var msg3 = {};
var msg4 = {};

msg.payload = msg.payload.toString();
msg.payload = msg.payload.split("seen");
msg1.payload = msg.payload[1];

msg1.payload = msg1.payload.split("+");
msg1.payload = msg1.payload[0];

msg1.payload = msg1.payload.split(": ");
msg1.payload = msg1.payload[1];

msg2.payload = new Date((new Date) * 1 - 250 * 3600);

msg3.payload = "GW ba-cologne-01 offline";

msg4.payload = new Date((new Date) * 1 - 250 * 3600);

		    if (msg2.payload > new Date(msg1.payload)){
                return msg3;
            }

Wenn nun eines meiner Gatway ausfällt und für ca. 15 Minuten nicht erreichbar ist, bekomme ich eine Nachricht:

Ihr solltet zusätzlich noch einen delay Node einbauen, damit ihr bei einem Ausfall nicht mit Nachrichten überschwemmt werdet. Ich habe mich dafür entschieden maximal eine Nachricht alle drei Stunden zu erhalten.

Ich hoffe ihr konntet damit etwas anfangen!

2 Gefällt mir

Schreibe einen Kommentar