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
[{"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.
[{"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:
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
Hallo Joachim,
bin gerade an einem ähnlichen Thema dran:
http://blog.wenzlaff.de/?p=10040
Gruß Thomas
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
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.
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
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 🙁
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
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
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
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
Ich vermute mal über den gleichen Decoder welcher dir die Daten in der TTN Console lesbar macht.
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.
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
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
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
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
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
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
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
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
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‘
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.
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
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
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