Mqtt und The Things Network (ttn)

Begonnen von Ralle, 01 September 2019, 21:08:30

Vorheriges Thema - Nächstes Thema

Ralle

Hallo zusammen,
versuche gerade einen externen Topic von ttn zu abonnieren.(falls das überhaupt so funktioniert)
Da ich auch im Forum nichts passendes gefunden habe bräuchte ich da mal einen Denkanstoss ::)
Dazu habe ich das Modul MQTT2_CLIENT genutzt.
laut Log kommt da auch was an

2019.09.01 20:53:05 5: ttnBroker: received PUBLISH (0).rallenetdragino/devices/test1/up/payload/Value16153
2019.09.01 20:53:05 5: ttnBroker: dispatch autocreate=no\000ttnBroker\000rallenetdragino/devices/test1/up/payload/Value\00016153
2019.09.01 20:53:05 5: ttnBroker: received PUBLISH (0)(rallenetdragino/devices/test1/up/payload{"Value":16153}
2019.09.01 20:53:05 5: ttnBroker: dispatch autocreate=no\000ttnBroker\000rallenetdragino/devices/test1/up/payload\000{"Value":16153}
2019.09.01 20:53:24 5: ttnBroker: sending PINGREQ (192)(0)
2019.09.01 20:53:24 5: ttnBroker: received PINGRESP

Aber wie greife ich nun darauf zu, mit einem angelegten MQTT_DEVICE klappt das irgendwie nicht?
Gruß
Ralf
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

rudolfkoenig

MQTT2_CLIENT legt keine Geraete automatisch an, das muss man mit "attr ttnBroker autocreate simple" anfordern.
Achtung: daraufhin wird genau _ein_ MQTT2_DEVICE angelegt, das dann automatisch das readingsList Attribut pflegt, um MQTT-Nachrichten in Reading+Event zu wandeln.
Wenn man Nachrichten an dem MQTT Server senden will, dann muss man das im MQTT2_DEVICE per setList Attribut erst beschreiben, danach hat man die entsprechenden set Befehle zur Verfuegung.

Alternativ (zu autocreate) legt man alle MQTT2_DEVICE Instanzen selbst an, samt readingsList und setList.

Ralle

ZitatAchtung: daraufhin wird genau _ein_ MQTT2_DEVICE angelegt, das dann automatisch das readingsList Attribut pflegt, um MQTT-Nachrichten in Reading+Event zu wandeln.
Funktioniert tadellos (wenn man denn auch das Autocreate zulässt, was bei mir ausgeschaltet war)
Vielen Dank
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

Waldmensch

Ich habe auch ein Problem mit TTN. Ich sehe im Log nur PINGREQ und keepalive. Das Passwort ist korrekt gesetzt, das Device logged regelmäßig auf der TTN Console. Nur über MQQT kommt nichts in FHEM an.

2020.08.04 07:04:24 5 : TTN_Test1: keepalive 30
2020.08.04 07:04:24 5 : TTN_Test1: sending PINGREQ (192)(0)
2020.08.04 07:04:24 5 : TTN_Test1: received PINGRESP
2020.08.04 07:04:54 5 : TTN_Test1: keepalive 30
2020.08.04 07:04:54 5 : TTN_Test1: sending PINGREQ (192)(0)
2020.08.04 07:04:54 5 : TTN_Test1: received PINGRESP
2020.08.04 07:05:24 5 : TTN_Test1: keepalive 30
2020.08.04 07:05:24 5 : TTN_Test1: sending PINGREQ (192)(0)
2020.08.04 07:05:24 5 : TTN_Test1: received PINGRESP



Internals:
   BUF       
   CFGFN     
   DEF        ttn.opennetworkinfrastructure.org:1883
   DeviceName ttn.opennetworkinfrastructure.org:1883
   FD         13
   FUUID      5f27fe7b-f33f-d6b4-7616-c3c2e4234738671f
   NAME       TTN_Test1
   NR         4372908
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   TTNTest1
   lastMsgTime 1596546015.26131
   nextOpenDelay 5
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1596545955.20573
           VALUE      CONNECTED
   READINGS:
     2020-08-04 14:59:15   state           opened
Attributes:
   autocreate simple
   room       MQTT
   subscriptions tommytest01/devices/tommytest01_01/up
   username   tommytest01
   verbose    5



rudolfkoenig

Da gibts wohl keine Nachrichten mit topic tommytest01/devices/tommytest01_01/up

Default subscriptions ist # => ich wuerde subscriptions erst dann setzen, wenn ich zuviele Daten kriege, und nicht dann, wenn nichts kommt.

Waldmensch

#5
Okay, habe nochmal gesucht - anscheinend wurde die Adresse geändert auf:

Host: eu.thethings.network
Port: 1883


Die habe ich eingetragen und das subscriptions Atribut gelöscht. Jetzt erhalte ich im Eventmonitor (Log aktiviert)

2020.08.04 18:41:29 5 : HttpUtils url=http://eu.thethings.network:1883/
2020.08.04 18:41:29 4 : IP: eu.thethings.network -> 52.169.76.255
2020.08.04 18:41:29 5 : TTN_Test1: sending CONNECT (16)_(0)(6)MQIsdp(3)(194)(0)(30)(0)(8)TTNTest1(0)(11)tommytest01(0):***********************************
2020.08.04 18:41:29 5 : SW: 105f00064d514973647003c2001e000854544e5465737431000b746f6d6d79746573743031003a74746e2d6163636f756e742d76322e5a3436534158553751594651357a697755794d4e305859614d697876377166465852516746436759526645
2020.08.04 18:41:29 1 : eu.thethings.network:1883 reappeared (TTN_Test1)
2020-08-04 18:41:29 MQTT2_CLIENT TTN_Test1 CONNECTED
2020.08.04 18:41:29 5 : TTN_Test1: received CONNACK (0)(0)
2020.08.04 18:41:29 5 : TTN_Test1: sending SUBSCRIBE (128)(6)(0)(28)(0)(1)#(0)
2020.08.04 18:41:29 5 : TTN_Test1: received SUBACK (0)(28)(0)
2020.08.04 18:41:45 5 : TTN_Test1: received PUBLISH (0)%tommytest01/devices/tommytest01_01/up{"app_id":"tommytest01","dev_id":"tommytest01_01","hardware_serial":"00E08C59CBE21C51","port":1,"counter":1430,"payload_raw":"AWcBPQFoMw==","payload_fields":{"relative_humidity_1":25.5,"temperature_1":31.7},"metadata":{"time":"2020-08-04T16:41:44.717791788Z","frequency":867.7,"modulation":"LORA","data_rate":"SF7BW125","airtime":56576000,"coding_rate":"4/5","gateways":[{"gtw_id":"eui-3133303733002300","timestamp":3209114973,"time":"2020-08-04T16:41:43.772246Z","channel":6,"rssi":-114,"snr":-7,"rf_chain":0,"latitude":51.79871,"longitude":12.245873,"altitude":68},{"gtw_id":"eui-3133303733002b00","timestamp":3755494993,"time":"2020-08-04T16:41:44.093204Z","channel":6,"rssi":-59,"snr":9.5,"rf_chain":0,"latitude":51.7948,"longitude":12.257011,"altitude":60}]}}
2020.08.04 18:41:45 5 : TTN_Test1: dispatch autocreate=simple\000TTNTest1\000tommytest01/devices/tommytest01_01/up\000{"app_id":"tommytest01","dev_id":"tommytest01_01","hardware_serial":"00E08C59CBE21C51","port":1,"counter":1430,"payload_raw":"AWcBPQFoMw==","payload_fields":{"relative_humidity_1":25.5,"temperature_1":31.7},"metadata":{"time":"2020-08-04T16:41:44.717791788Z","frequency":867.7,"modulation":"LORA","data_rate":"SF7BW125","airtime":56576000,"coding_rate":"4/5","gateways":[{"gtw_id":"eui-3133303733002300","timestamp":3209114973,"time":"2020-08-04T16:41:43.772246Z","channel":6,"rssi":-114,"snr":-7,"rf_chain":0,"latitude":51.79871,"longitude":12.245873,"altitude":68},{"gtw_id":"eui-3133303733002b00","timestamp":3755494993,"time":"2020-08-04T16:41:44.093204Z","channel":6,"rssi":-59,"snr":9.5,"rf_chain":0,"latitude":51.7948,"longitude":12.257011,"altitude":60}]}}
2020-08-04 18:41:45 Global global UNDEFINED MQTT2_TTNTest1 MQTT2_DEVICE TTNTest1
2020.08.04 18:42:05 5 : TTN_Test1: received PUBLISH (0)%tommytest01/devices/tommytest01_01/up{"app_id":"tommytest01","dev_id":"tommytest01_01","hardware_serial":"00E08C59CBE21C51","port":1,"counter":1432,"payload_raw":"AWcBPQFoMw==","payload_fields":{"relative_humidity_1":25.5,"temperature_1":31.7},"metadata":{"time":"2020-08-04T16:42:04.739926175Z","frequency":868.1,"modulation":"LORA","data_rate":"SF7BW125","airtime":56576000,"coding_rate":"4/5","gateways":[{"gtw_id":"eui-3133303733002b00","timestamp":3775508688,"time":"2020-08-04T16:42:04.106692Z","channel":0,"rssi":-63,"snr":10.75,"rf_chain":0,"latitude":51.7948,"longitude":12.257011,"altitude":60}]}}
2020.08.04 18:42:05 5 : TTN_Test1: dispatch autocreate=simple\000TTNTest1\000tommytest01/devices/tommytest01_01/up\000{"app_id":"tommytest01","dev_id":"tommytest01_01","hardware_serial":"00E08C59CBE21C51","port":1,"counter":1432,"payload_raw":"AWcBPQFoMw==","payload_fields":{"relative_humidity_1":25.5,"temperature_1":31.7},"metadata":{"time":"2020-08-04T16:42:04.739926175Z","frequency":868.1,"modulation":"LORA","data_rate":"SF7BW125","airtime":56576000,"coding_rate":"4/5","gateways":[{"gtw_id":"eui-3133303733002b00","timestamp":3775508688,"time":"2020-08-04T16:42:04.106692Z","channel":0,"rssi":-63,"snr":10.75,"rf_chain":0,"latitude":51.7948,"longitude":12.257011,"altitude":60}]}}
2020-08-04 18:42:05 Global global UNDEFINED MQTT2_TTNTest1 MQTT2_DEVICE TTNTest1


Es kommen also Daten. Allerdings wird kein Device angelegt obwohl autocreate auf simple steht. Zumindest finde ich nichts in "unsorted" und "everything"

rudolfkoenig

In der asgelieferten fhem.cfg wird ein autocreate Device definiert.
Dieses wurde entfernt oder deaktiviert.

Waldmensch

Das wars! Ich hatte das Autocreate mal irgendwann deaktiviert, weil mein Nachbar mit seinem Hörmann Garagentor mir ständig neue Devices kreiert hat. Disabled Attribut gelöscht - zack - Device wurde angelegt.

Tausend Dank!

Elektron

Hallo zusammen,

Ich möchte auch mehrer Sensoren aus dem TTN (inzwischen Version 3) an FHEM anbinden.
Nach der oben stehenden Anleitung ist es mir auch gelungen.
Allerdings werden keine Devices für die Sensoren angelegt sondern das landet alles im MQTT2Device Device.
Das sind mehrer identische Sensoren, wobei jeder Sensor natürlich ab irgendwo im Topic Eindeutig ist.

Hilft es wenn ich im MQTT-Client statt # den identischen Anfang der Topics abonniere?

Mir ist einfach unklar wie MQTT2_Device aus dem Topic ein Gerät ,,errät".

Vielen Dank und Grüße Michael

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

jussi

Schönen guten Abend! Könnte jemand bitte ein Schritt-fuer-Schritt TTS (v3) - FHEM anbieten? FHEM läuft auf mein Raspi. Ich habe ein Paar Sensoren die auf TTS OK laufen (Dragino), aber MQTT is mir einfach zu schwer... Ja, habe viele Leitungen gelesen, aber wie gesagt, einfach zu schwierig fuer ein Newbie wie ich. Geht es irgendwie TTS MQTT API key mit MQTT2 zu verbinden oder brauche ich Mosquitto? Braucht man MQTT-bridge? Aber wie... Am Ende wollte ich alles in meinem Loxone home management treiben, aber zuerst FHEM.. Vielen Dank & Gruesse aus Finnland!

tomster

Moi Jussi!

Ich hab zwar noch keine wirklichen Sensoren am Laufen die an TTS Daten schicken, aber mit folgenden Schritten konnte ich mein FHEM über MQTT zu TTS connecten (FHEM meldet zumindest "opened"):

1. in FHEM "define TTS_MQTT MQTT2_CLIENT eu1.cloud.thethings.network:1883"
2. in FHEM "attr TTS_MQTT username [TTS-APP-ID]@ttn"
3. in der Console auf der TTS-Seite "Integrations->MQTT->Generate new API key" und den Key kopieren
4. in FHEM "set TTS_MQTT password [API-Key]"
5. in FHEM "attr TTS_MQTT autocreate simple"

Wie dann die Subscriptions aussehen kann ich noch nicht sagen. Dazu muss ich erst meine Sensoren fertiglöten. Das kann aber noch dauern...

pallago

#12
Hallo zusammen,
das Bridge Device war der entscheidende Punkt. Ich hatte das gleiche Problem und es erfolgreich lösen können. Anbei ein paar Ausführungen; eventuell hilft es dem ein oder anderen.
Augangspunkt: Ein MQTT2_CLIENT, welcher eine Verbindung mit TTN hat (vgl. Beitrag von tomster - 17 Januar 2022, 17:27:09). Zwei LoRa-Module (module01 und module02), welche der TTN Applikation (Application ID) node angehören. Der MQTT2_CLIENT heißt MQTT_lora_node.

1) Füge das Attribut autocreate = complex ein:
attr MQTT_lora_node autocreate complex

2) Sende Daten mit einem LoRa-Modul, bspw. module01

3) Es wird automatisch ein MQTT2_DEVICE angelegt, welches MQTT2_MQTT_lora_node heißt. (Wenn man nun Daten vom module01 und (zeitlich kurz versetzt) vom module02 schickt, landen beide Daten in dem MQTT2_DEVICE MQTT2_MQTT_lora_node. Das ist das Problem. Nun im Folgenden zur Lösung/Abhilfe:)

4) Füge nun die BridgeDevice dem MQTT2_MQTT_lora_node zu durch (Hinweis; der Ausdruck "v3/lora...." kommt aus dem Device MQTT2_MQTT_lora_node unter der readingList):
attr MQTT2_MQTT_lora_node bridgeRegexp v3/lora-node\x40ttn/devices/module([0-90-9]*)[/]?.*:.* "lora_node_module$1"

5) Sende erneut Daten, bspw. von module02; es wird nun automatisch ein neues Device angelegt, welches MQTT2_lora_node_module02 heißt. Anschließend Daten vom anderen Modul (module01) schicken. => Es wird ein neues Device angelegt, welches MQTT2_lora_node_module01 heißt.




Zitat von: Otto123 am 17 Dezember 2021, 09:54:44
Hallo Michael,

der Trick wird sein, ein Bridge Device anzulegen. :)
https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#bridgeRegexp

Gruß Otto