TTN Logo

Thethingsnetwork und MQTT – Abfrage der Sensordaten mit Node-Red

Im Netz gibt es immer wieder zu lesen, dass das TheThingsNetwork nicht offen sei und schlecht dokumentiert. An einem Beispiel möchte ich zeigen, dass die Dokumentation sehr wohl vorhanden ist und es möglich ist mit entsprechenden Parametern via “mosquitto_sub”, einem Linux Command, die Daten direkt auszulesen. Weiterhin zeige ich wie man diese Daten in Node-Red überführen kann um dann eine weitere Verarbeitung, wie z.B. Werte in einem Dashboard visuell anzuzeigen.

Achtung Änderung für den V3-Stack 

mosquitto_sub -h eu1.cloud.thethings.network -t 'v3/<Application ID>@ttn/devices/+/up' -u '<Application ID>@ttn' -P 'NNSXS.APIKEY'
Befehlsatz für V2 Stack 

$ mosquitto_sub -h eu.thethings.network -t '+/devices/+/up' -u 'joachimlora' -P 'ttn-account-v2.XXXXXXXXXXXXXXXXX' -v
TTN-V3-Stack-Console

TTN Console V2 Stack
TTN Console V2 Stack
 Hier sind die Zugangsdaten für die Anmeldung von Benutzername und Passwort zu finden. Diese einfach in den mosquitto_sub Befehl übernehmen.
TTN - MQTT Abfrage
TTN – MQTT Abfrage
Bei erfolgreicher Anmeldung, sind wie oben in der SSH-Konsole angezeigt, folgende Daten eines Lora-Node Sensor zu sehen. Diese können nun an -> Node-Red übertragen werden.
[{"id":"cb7bd77f.ea40c","type":"json","z":"700a4b4c.aa1074","name":"","property":"payload","action":"","pretty":false,"x":470,"y":600,"wires":[["2495d469.badc3c"]]},{"id":"53343cad.c5eb5c","type":"mqtt in","z":"700a4b4c.aa1074","name":"","topic":"+/devices/+/up","qos":"2","broker":"b0bf9659.e02f3","x":290,"y":600,"wires":[["6dd58fc6.57cd48","cb7bd77f.ea40c"]]},{"id":"2495d469.badc3c","type":"debug","z":"700a4b4c.aa1074","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":710,"y":600,"wires":[]},{"id":"6dd58fc6.57cd48","type":"json","z":"700a4b4c.aa1074","name":"","property":"payload","action":"","pretty":false,"x":470,"y":680,"wires":[["3c5fb1a3.96a64e","3931265c.c18c2a","d437e2ab.43d798","ea757df4.7c7fb","3933930a.839d14"]]},{"id":"3c5fb1a3.96a64e","type":"function","z":"700a4b4c.aa1074","name":"Temperature","func":"// outputs: 2\nmsg.payload = msg.payload.payload_fields.temperature_1\nreturn msg;","outputs":1,"noerr":0,"x":650,"y":680,"wires":[["d7dec79b.306ee"]]},{"id":"3931265c.c18c2a","type":"function","z":"700a4b4c.aa1074","name":"Pressure","func":"// outputs: 2\nmsg.payload = msg.payload.payload_fields.barometric_pressure_3\nreturn msg;","outputs":1,"noerr":0,"x":640,"y":720,"wires":[["d7dec79b.306ee"]]},{"id":"d437e2ab.43d798","type":"function","z":"700a4b4c.aa1074","name":"Device ID","func":"// outputs: 2\nmsg.payload = msg.payload.dev_id\nreturn msg;","outputs":1,"noerr":0,"x":640,"y":640,"wires":[["d7dec79b.306ee"]]},{"id":"ea757df4.7c7fb","type":"function","z":"700a4b4c.aa1074","name":"RSSI","func":"// outputs: 2\nmsg.payload = msg.payload.metadata.gateways[0].rssi\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":760,"wires":[["d7dec79b.306ee"]]},{"id":"3933930a.839d14","type":"function","z":"700a4b4c.aa1074","name":"SNR","func":"// outputs: 2\nmsg.payload = msg.payload.metadata.gateways[0].snr\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":800,"wires":[["d7dec79b.306ee"]]},{"id":"d7dec79b.306ee","type":"debug","z":"700a4b4c.aa1074","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":830,"y":680,"wires":[]},{"id":"b0bf9659.e02f3","type":"mqtt-broker","z":"","name":"TTN","broker":"eu.thethings.network","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

Mit diesem Flow , legen wir die Anbindung an das TheThingsNetwork per MQTT zu Node-Red fest und bei erfolgreichem Copy-Paste, sollte der Flow so aussehen wie unten angezeigt.

TTN – MQTT Nodered
 Mit diesem Flow, bauen uns wir ein Dashboard auf, welches die Werte visuell anzeigen lässt.
[{"id":"ecbaa805.de6f88","type":"mqtt in","z":"eb731a6c.fd4f2","name":"Temperature","topic":"ttn/temperature","qos":"2","broker":"c979da80.ef2bb","x":208,"y":185,"wires":[["45e7d0dc.ede19"]]},{"id":"45e7d0dc.ede19","type":"ui_gauge","z":"eb731a6c.fd4f2","name":"","group":"c6fe4cc5.6c0b68","order":2,"width":0,"height":0,"gtype":"gage","title":"Temperature","label":"C","format":"{{value}}","min":"-25","max":"45","colors":["#00b500","#e6e600","#ca3838"],"seg1":"28","seg2":"30","x":428,"y":185,"wires":[]},{"id":"c0980dc4.191188","type":"mqtt in","z":"eb731a6c.fd4f2","name":"Pressure","topic":"ttn/pressure","qos":"2","broker":"c979da80.ef2bb","x":200,"y":240,"wires":[["2cd82899.a8ec2"]]},{"id":"2cd82899.a8ec2","type":"ui_gauge","z":"eb731a6c.fd4f2","name":"","group":"c6fe4cc5.6c0b68","order":3,"width":0,"height":0,"gtype":"gage","title":"Pressure","label":"hPa","format":"{{value}}","min":"900","max":"1000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"970","seg2":"971","x":430,"y":240,"wires":[]},{"id":"31a98b5d.275664","type":"ui_text","z":"eb731a6c.fd4f2","group":"c6fe4cc5.6c0b68","order":1,"width":0,"height":0,"name":"","label":"TTN Lora Sensor Munich 1","format":"{{msg.payload}}","layout":"row-center","x":200,"y":120,"wires":[]},{"id":"b0660f9a.a12258","type":"ui_text","z":"eb731a6c.fd4f2","group":"7b216e54.fde1e","order":1,"width":0,"height":0,"name":"","label":"TTN Lora Sensor Munich 1","format":"{{msg.payload}}","layout":"col-center","x":200,"y":80,"wires":[]},{"id":"5001ac6c.22841c","type":"mqtt in","z":"eb731a6c.fd4f2","name":"RSSI","topic":"ttn/rssi","qos":"2","broker":"c979da80.ef2bb","x":184,"y":305,"wires":[["584c873d.5919b8","9aee160a.685c9"]]},{"id":"584c873d.5919b8","type":"ui_gauge","z":"eb731a6c.fd4f2","name":"","group":"7b216e54.fde1e","order":2,"width":0,"height":0,"gtype":"gage","title":"RSSI","label":"db","format":"{{value}}","min":"-120","max":10,"colors":["#ff0000","#e6e600","#408000"],"seg1":"-61","seg2":"-60","x":414,"y":305,"wires":[]},{"id":"9aee160a.685c9","type":"ui_chart","z":"eb731a6c.fd4f2","name":"","group":"ad1be2d3.97b188","order":3,"width":0,"height":0,"label":"RSSI / db","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":420,"y":340,"wires":[[],[]]},{"id":"2560068f.090982","type":"mqtt in","z":"eb731a6c.fd4f2","name":"SNR","topic":"ttn/snr","qos":"2","broker":"c979da80.ef2bb","x":190,"y":400,"wires":[["a7d9b69c.06b66","11b564a1.e634c3"]]},{"id":"a7d9b69c.06b66","type":"ui_gauge","z":"eb731a6c.fd4f2","name":"","group":"7b216e54.fde1e","order":3,"width":0,"height":0,"gtype":"gage","title":"SNR","label":"db","format":"{{value}}","min":"0","max":"20","colors":["#00b500","#e6e600","#ca3838"],"seg1":"15","seg2":"16","x":410,"y":400,"wires":[]},{"id":"11b564a1.e634c3","type":"ui_chart","z":"eb731a6c.fd4f2","name":"","group":"ad1be2d3.97b188","order":2,"width":0,"height":0,"label":"SNR / db","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":420,"y":440,"wires":[[],[]]},{"id":"c979da80.ef2bb","type":"mqtt-broker","z":"","name":"unixweb","broker":"mqtt.unixweb.de","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"c6fe4cc5.6c0b68","type":"ui_group","z":"","name":"Values","tab":"7ca694fc.adacf4","disp":true,"width":"6","collapse":false},{"id":"7b216e54.fde1e","type":"ui_group","z":"","name":"Signal","tab":"7ca694fc.adacf4","order":2,"disp":true,"width":"6","collapse":false},{"id":"ad1be2d3.97b188","type":"ui_group","z":"","name":"Charts","tab":"7ca694fc.adacf4","order":3,"disp":true,"width":"6","collapse":false},{"id":"7ca694fc.adacf4","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]

So sieht dann bei erfolgreichem Copy-Paste in Node-Red der Flow aus:

TTN MQTT Nodered Dashboard
TTN MQTT Nodered Dashboard

Wenn alles richtig eingestellt und konfiguriert ist, sollte das Dashboard so aussehen. Übrigens das Dashboard erreicht man am Raspberry Pi (sofern node-red-dashboard installiert) über http:://<Raspberry-IP-Adresse>:/ui

Falls es Fragen gibt, einfach hier einen Kommentar hinterlassen.

Update: Es wurden ein paar Daten erneuert im Zusammenhang mit der Umstellung auf den V3-Stack bei TTN. Bitte beachten und entsprechend die NodeRED Nodes für MQTT anpassen. 

Viel Spaß beim basteln und programmieren, wünscht Joachim

 

Joachim

Aus Leidenschaft für Technik. Aktuelle Themen sind Datensicherheit, Software für Datenschutz, Mobile Geräte, Smartphone Sicherheit und Anwendungen, Raspberry Pi Geek.

Alle Beiträge ansehen von Joachim →

24 Gedanken zu “Thethingsnetwork und MQTT – Abfrage der Sensordaten mit Node-Red

    1. Hallo Thomas

      Danke für Deinen Kommentar und den Link. Ist ja krass , wusste nicht dass das mit den Reifensensoren so geht.

      Grüße , Joachim

  1. Hallo Joachim, bin von Guido Burger sowie über Twitter über Deine tollen Arbeiten informiert worden. Respekt was du da so alles aus der Tüte zauberst. Aktuell beschäftige ich mich nun auch mit TTN und habe auch bereits ein Single Channel Gateway plus 3 Nodes zum Laufen gebracht. Habe auch die MQTT Anbindung realisiert die du beschrieben hast. Im Moment betreibe ich noch ein nodejs script welches mir die Daten in meine SmartHome Applikation schaufelt. Was ich nun auch gesehen habe – und Link bereits im Handy abgespeichert – ist Deine Node-Red Web App online. Hast du Node-Red auf Deinem Webserver laufen oder wird das nur gespiegelt ? Kannst du mir da einen Tip geben – habe im Web etwas recherchiert – aber nichts gefunden was für mich passt bzw. mich rockt.

    1. Hallo Achim

      Danke für Deine nette Nachricht. Der Node-Red Server ist kein Spiegel sondern Echtzeit. Wenn die Daten mal in MQTT drin sind, kannst Du Dashboard soviel Du willst anbinden via Node-Red. Die Daten laufen in meine Smarthome Lösung hinein und ebenfalls in diverse Demo Dashboard und andere Raspberry / Beaglebone Nodes.

      Zum installieren von Node-Red kannst diese Anleitung nehmen : https://www.digitalocean.com/community/tutorials/how-to-connect-your-internet-of-things-with-node-red-on-ubuntu-16-04
      Die klappt dann auch sehr gut und was Du noch brauchst, ist einen Webserver vorne dran. Eine Anleitung gibt es hier: https://openenergymonitor.org/forum-archive/node/12489.html
      So ist mein Node-Red Server nicht direkt über Port 1880 erreichbar. Du musst dann auch die settings.js anpassen und Deinen ganzen Node mit einem Benutzername und Passwort absichern, wie auch in meinem Fall.

      Falls es noch weitere Fragen gibt, einfach hier kommentieren, ich helfe gerne.

      Beste Grüße , Joachim

  2. Hallo Joachim,

    ich bin auf der Suche nach Doku und Tutorials zu TTN und Lora auf deinen Blog gestoßen.
    Wir (Kommunaler Versorger) sind gerade in einer Testphase, da wir Lora groß einsetzen wollen.
    Aktuell bin ich da aber noch ziemlich am Anfang: Wir haben ein Loramod-R4 Modul, welches ich nach einigen Schwierigkeiten auch am TTN Stack, mit dem ich nicht mehr so klar komme[1], einrichten konnte.
    Node-RED habe ich mir jetzt erfolgreich eingerichtet und ich habe auch die Werte im MQTt Broker.
    Jetzt möchte ich die aber gerne in eine Postgres schreiben. Hast du eine Idee, wie das ideal geht?
    Den payload wieder dekodieren ist dann ja noch mal eine ganze andere Geschichte 🙂

    Gruß

    René

    1 Der verhält sich immer langsamer…und wirft Fehler 🙁

    1. Hallo René

      nun hast Du Dir schon mal dieses Beispiel angesehen :
      https://github.com/BruceFletcher/node-red-contrib-postgres-multi

      Wenn Du die Werte schon hast kannst die einfach übergeben an Postgres.

      Was meinst mit langsam und TTN ?
      Wenn ihr Versorger seid dann brauchst Du eher eine eigene TTN Infrastruktur. Das derzeitige Backend ist nicht immer stabil und hat oftmals Ausfälle. Was aber derzeit kein Problem mehr darstellt, da alles OpenSource und Public in Github verfügbar.

      Grüße , Joachim

  3. Hallo Joachim, ich habe bei mir auf den Raspi Openhab installiert doch darum geht es mir derzeit nicht in meinem Problem. Es geht mir darum, ob man mehrere ESP8266 die ich in verschidenen Räumen einsetzen will, in das gleiche Topic ( z.B. /log/daten) schreiben lassen kann. Um dann mit mosquitto auf dem Raspi auf diesem Topic lauscht. Damit man die Daten die aus den verschiedenen ESP’s kommen in eine Json- Datei schreiben kann. Die ich dann mit einem Python Programm parsen kann. Um diese dann in Openhab auswerten bzw. anzeigen möchte. Hat das schon jemand gemacht ?? Die ESP’s kann ich mit mosuitto bereits abfragen, ich habe nur noch keinen richtigen Plan wie ich alle zusammen unter einen Hut bringe. Alle ESP’s habe ich so programmiert, das per Http Anfrage die Daten von Raumtemperatur und Luftfeuchtigkeit ( mit DHT22 ) im Json-Format ausgegeben werden. Da aber das Dashboard von Openhab kein Json Code automatisch umsetzten kann wie manche Browser es jetzt können muss ich diesen umweg gehen.
    Aber vor allem deshalb weil ich die Daten auch weiterverarbeiten will.

    Viele Grüße aus dem Erzgebirge !
    Rene’ Weißflog

    1. Hallo Rene

      danke für Deine Nachricht. Klar kannst Du mehr als einen Sensor in ein Topic schreiben. Bedenke nur dass im JSON String dann aber eine ESP-ID drin stehen muss, da man sonst nicht weiß welcher Sensor die Daten gesendet hat. Also z.B. Küche udn Wohnzimmer hat jetzt hintereinander Temperaturwerte an /esp8266/temp geschickt, kannst Du hinterher nicht mehr erkennen welcher Sensor aus welchen Raum die dazugehörigen Temperaturwerte gesendet hat. Es sei, Du hast eine ID im JSON String dann kannst denn ja mit msg.payload.room wieder selektiv rauslesen und dem Raum zuordnen.
      Was auch geht mit MQTT ist /esp8266/room/kueche und /esp8266/room/wohnzimmer . Dh. Du abonnierst das Topic /esp8266/room/* und holst Dir den Wert aus den vollen Topic Namen raus und ordnest es dem dazugehörigen Raum wieder zu.

      Wünsche Dir viel Erfolg bei deinem spannenden Projekt.

      Grüße , Joachim

  4. Hallo Joachim,

    danke für Deine tolle Arbeit.
    Ich habe das ganze soweit nachvollzogen, allerdings kann ich ich die Daten, die ich empfange nicht so recht deuten:
    :~$ mosquitto_sub -h eu.thethings.network -t ‘+/devices/+/up’ -u ‘xxxxxxxx’ -P ‘ttn-account-v2.sxxxxxxxxxxx’ -v

    testlorahxx/devices/testxxx/up {“app_id”:”tesxxx”,”dev_id”:”xxx”,”hardware_serial”:”00xxxF”,”port”:1,”counter”:4,”payload_raw”:”AWcAuw==”,”metadata”:{“time”:”2020-03-30T20:30:44.946487794Z”,”frequency”:868.5,”modulation”:”LORA”,”data_rate”:”SF7BW125″,”airtime”:51456000,”coding_rate”:”4/5″,”gateways”:[{“gtw_id”:”eui-a840411dbd784150″,”timestamp”:1548933131,”time”:”2020-03-30T20:30:44.918383Z”,”channel”:2,”rssi”:-72,”snr”:6.8,”rf_chain”:0}]}}

    Am interesantesten sollte ja die Payload sein, nur die scheint verschlüsselt (oder raw) zu sein?
    Kannst Du mir einen Tip geben, wie man die lesbar macht?

    Danke und Gruß

    Kristian

  5. Hallo Joachim ,

    mit großer Interesse habe ich deinen Artikel über TTN /MQTT/NODE-RED gelesen. Ich habe nicht ganz nachvollziehen können, wir der mosquitto_sub Befehl funktioniert. Wo ist da Mosquitto als Broker installiert. Ein MQTT Broker ist doch Voraussetzung , dass dann die Daten weiter zu Node Red gelangen.

    1. Hallo Thomas

      der Mosquitto Broker ist nichts anderes als ein Server der MQTT-Nachrichten annimmt und diese auch wieder weiterleitet. In diesem Fall ist dieser bei TheThingsNetwork am laufen. Mit NodeRED holst Du nur mit dem Subscripe Befehl Deine Daten für deine Sensoren aus dem MQTT-Broker bei TTN.
      Dh. du benötigst nur den Client , der bei NodeRED schon vorinstalliert ist, und holst Deine Daten bei TTN ab. Mehr ist dazu nicht nötig.
      Hoffe Dir damit geholfen zu haben.

      Grüße Joachim

      1. Hallo Joachim ,
        danke für Deine schnelle Antwort. Ich habe dein Beispiel nachgebaut und habe die Datenj von meinem Dragino im Gewächshaus auch per ssh Konsole mit dem Subscribe erhalten.
        Damit ich diese Daten per ssh erhalte habe ich auf dem Raspberry , wo auch IOBroker mit Node Red läuft den MQTT Broker mosquitto installiert.
        Da kommen die Daten auch per JSON an.
        Danach habe ich exakt die Beispiele in Node Red importiert. Node Red zeigt an Verbindung wird hergestellt, da kommt dann aber nichts mehr.
        Irgendwo habe ich noch einen Fehler.

        Danke

        1. Hallo Thomas

          dann machst Du nochwas falsch in NodeRED.
          Die Verbindung sollte dann bei richtiger Konfiguration grün werden.
          Hast Du den MQTT-Node konfiguriert?
          Der steht in meinem Beispiel auf mqtt.unixweb.de der geht natürlich nicht.
          Es muss dort der TTN MQTT Broker eingetragen werden. Bei Sicherheit musst den Key eintragen sonst
          funktioniert es nicht.

          Grüße Joachim

          1. Hallo Joachim,

            wenn ich direkt von meinem Rechner auf die Adresse eu.thethings.network gehe bekomme ich diese Fehlermeldung

            Diese Seite funktioniert im Moment nicht.eu.thethings.network hat keine Daten gesendet.
            ERR_EMPTY_RESPONSE.
            Daher auch keine Verbindung

            Muss mal sehen, an was das liegen könnte.

            Danke

            Thomas

          2. Hallo Thomas

            Du kannst den Dienst nicht mit dem Browser aufrufen. Dass geht ausschließlich mit
            mosquitto_sub -h eu.thethings.network -t ‘+/devices/+/up’ -u ‘Dein-App’ -P ‘ttn-account-v2.XXXXXXXXXXXXXXXXX’ -v.
            Du hast schon unter https://console.thethingsnetwork.org/ einen Account und eine App angelegt oder?
            Was hast Du da für Sensoren, wie sind die verbunden, mit WLAN, Lora, ?

            Grüße Joachim

  6. Hallo Joachim,
    das ergibt ein Ping.

    C:\Users\admin>ping eu.thethings.network

    Ping wird ausgeführt für eu.thethings.network [52.169.76.255] mit 32 Bytes Daten:
    Zeitüberschreitung der Anforderung.
    Zeitüberschreitung der Anforderung.
    Zeitüberschreitung der Anforderung.
    Zeitüberschreitung der Anforderung.

    Ping-Statistik für 52.169.76.255:
    Pakete: Gesendet = 4, Empfangen = 0, Verloren = 4
    (100% Verlust),

    Danke Thomas

    1. Hallo Joachim,

      habe verstanden, das dies mit einem Browser nicht möglich ist. Prüfe jetzt noch einmal meine Angaben bei Node Red.
      Ich verwende LORAWAN Dragino Gateway und den Dragino LORA Sensor LHT65 für Temperatur und Luftfeuchte. Ich habe die Daten bei TTN und mydevices schon aktuell, wollte jetzt aber das Dashboard mit Node -Red gestalten.
      Danke

      Thomas

      1. Hallo Joachim,

        vielen Dank , jetzt funktioniert mein Sensor. Ich habe zuerst dein Beispiel probiert, das ging.
        Danach habe ich noch einmal in Node Red den Flow neu gemacht, dann hat er funktioniert.
        Danke vielmals

        Thomas

  7. Herzlichen Dank, Joachim,
    für deinen Artikel hier.
    Aber leider KOMME ICH TROTZDEM NICHT WEITER und bin nach wie vor der Auffassung, dass es ziemlich schwer ist, einen Einstieg in TTN zu bekommen.
    Es fängt schon da an, dass ich auf der TTN-Webseite nicht die Seite finde, die du in dem Bild hast. ;(
    Was ich habe: Gateway Dragino-LG01-N ist in TTN eingerichtet und erfolgreich connected; unter Applications ist ein LT-22222-L als ‘io-controller001’ ebenfalls eingerichet, und ich sehe auch unter Live-Date sinnvolle Payloads.
    Ich gehe davon aus, dass ‘controller001’ korrekt für den ‘-u’-Parameter ist (bei dir ‘JoachimLora’). Aber egal welchen ich als denkbaren Key für ‘-p’ nehme: Der mosquitto_sub antwortet immer mit ”Connection Refused: not authorised.”
    Was hat es mit dem ‘default key’ in deinem Bild aufsich? Ist der standardmäßig schon da, oder hast du den eingerichtet. Ich habe ihn nicht gefunden und stattdessen unter ‘API keys’ einen Schlüssel generiert – komme damit aber auch nicht weiter (wie schon oben gesagt). Ich habe aber auch den Verdacht, dass das nicht der richtige Weg ist, vielleicht eher unter ‘Integrations’ und dann MQTT einen Key einrichten. … Keine Ahnung, tappe im Dunkeln.
    Kannst du – oder ein anderer Leser hier – mit bitte weiterhelfen. Herzlichen Dank.
    Liebe Grüße
    Äd

    Was mich noch wundert, ist die Adresse ‘eu.thethings.network’, denn im Gateway steht als Server-Addresse ‘eu1.cloud.thethings.network’

  8. HERZLICHEN DANK, LIEBER JOACHIM, JETZT FUNZT ES! HURRA!
    Danke für die Aktualisierung oben im Beitrag auf V3.
    Es war allerdings trotzdem nocht etwas Fummelei:
    Den Key habe ich neu generiert. K.A. was mit dem alten war. Hinweis an der Stelle: Beim generieren den Key kopieren und gut aufheben. Später ist er nie mehr auf TTN sichtbar. (Hatte ich aber auch gemacht).
    Aber dann hat es mit deinem aktualisierten Aufruf für V3 geklappt:
    mosquitto_sub -h eu1.cloud.thethings.network -t ‘v3/io-controller001@ttn/devices/+/up’ -u ‘io-controller001@ttn’ -P ‘NNSXS.XXXXX.YYYYY’

    NNSXS.XXXXX.YYYYY wird vollständig durch den Key ersetzt, den man beim Einrichten kopiert hat. Man wird sehen, dass der Key immer mit NNSXS beginnt und dass dahinter zwischen drin ein Punkt ist.

    Dann kam schon mal kein ”Connection Refused: not authorised.” und es hieß nur noch abwarten, denn mein IO-Controller sendet in der Default-Konfiguration nur alle 10 Minuten.
    Aber siehe da, dann genial, hier der “decoded_payload”:{“ACI1_mA”:0,”ACI2_mA”:0,”AVI1_V”:0,”AVI2_V”:0,”DI1_status”:”H”,”DI2_status”:”H”,”DO1_status”:”H”,”DO2_status”:”H”,”Hardware_mode”:”LT22222″,”RO1_status”:”OFF”,”RO2_status”:”OFF”,”Work_mode”:”2ACI+2AVI”}

    Im nächsten Schritt werde ich nun schauen, wie ich Node-Red damit füttre. 😉

    Liebe Grüße
    Äd

    PS: Sorry, für den doppelten Post. Den 2. kannst du eigentlich löschenm, wenn du magst. Er ist nur eine Zusammenfassung des ersten.

  9. Hallo Joachim,
    mit dem Uplink funzt das sehr gut (nochmals danke). Auch in Node-Red läuft es prima (ich habe es etwas anders realisiert als du, aber ist nicht wesentlich).

    Starke Probleme habe ich mit dem Downlink. Ich möchte gerne (im esten Schritt) das Relais 1 schalten.
    Ich denke, dass dazu der Mosquitto-Aufruf hier prinzipiell gar nicht so falsch sein kann:
    mosquitto_pub -h eu1.cloud.thethings.network -t “v3/io-controller001@ttn/devices/dev1/down/push” -u “io-controller001@ttn” -P “NNSXS.xxxxxx.yyyyyyy” -m ‘{“downlinks”:[{“f_port”: 2,”frm_payload”:”0x03 00 00″,”priority”: “NORMAL”}]}’ -d
    Aber es fängt schon mit dem Format der Payload an: Ich habe Hex mit und ohne Leerzeichen und Dez probiert. Das ganze habe ich (wie im Beispiel) als String oder auch als Dezimalzahl (“frm_payload”:196864) probiert. Hat alles nicht gefruchtet.
    In der Doku wird ja als Payload folgendes angegeben:
    0x03 00 00 ==> R01 und R02 geöffnet
    0x03 01 00 ==> R01 geschlossen und R02 geöffnet
    0x03 00 01 ==> R01 geöffnet und R02 geschlossen
    0x03 01 01 ==> R01 und R02 geschlossen

    Hast du – oder ein anderer Leser hier – eine Idee?

    Liebe Grüße
    Äd

  10. Hallo Joachim,

    einen Schritt bin ich weiter: beim ‘-t-‘ Paramter muss man als ‘dev1’ die eigene Device-ID eingeben, also in meinem Fall ist es
    mosquitto_pub -h eu1.cloud.thethings.network -t ‘v3/io-controller001@ttn/devices/eui-a84041f6a1828ebb/down/push’ -u “io-controller001@ttn” -P “NNSXS.xxxxxx.yyyyyy” -m ‘{“downlinks”:[{“f_port”: 2,”frm_payload”:”0x03001″,”priority”: “NORMAL”}]}’ -d

    Wahrscheinlich ist das Format der Payload so schon richtig, denn ich bekomme auf der Seite nun eine Bestätigung:
    “eui-a84041f6a1828ebb Forward downlink data message FPort 2 Payload D31D37D34D35”

    Aber es schaltet kein Relay und ich bekomme folgende Fehlermeldung:
    “eui-a84041f6a1828ebb Decode downlink data message failure no decoder defined for codec lt22222-l-codec”
    Keine Ahnung, wo man nun so einen Decoder einrichten muss, und wie man den erstellt.
    Ich hoffe, du kannst mir helfen.
    Herzlichen Dank.

    Liebe Grüße
    Äd

  11. Hallo Joachim,

    die Lösung heißt ASCII in Base64.
    Dann muss die Payload für z.B. 03 01 01 nicht als “030101” sondern als “AwEA” gesendet werden.
    “AwAB” 03 00 01 R01 OFF R02 ON
    “AwEA” 03 01 00 R01 ON R02 OFF
    “AwAA” 03 00 00 R01 OFF R02 OFF
    “AwEB” 03 01 01 R01 ON R02 ON
    “AxEB” 03 11 01 R01 —- R02 ON
    “AxEA” 03 11 00 R01 —- R02 OFF
    “AwAR” 03 00 11 R01 OFF R02 —-
    “AwER” 03 01 11 R01 ON R02 —-
    Hoffe, Node-red hat selber eine Kodierer/Dekodierer für Base64.

    Liebe Grüße
    Äd

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert