Mit MQTT bei TTN Werte auslesen - Passwort?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
Tüftler
Beiträge: 20
Registriert: 23. Aug 2019 21:24
Answers: 1
Wohnort: St. Gallen / Schweiz

Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von Tüftler »

Hallo zusammen

Aktuell versuche ich, Werte aus dem TTN ins openHAB (Version 3.4.3) zu bringen und darzustellen. Ich scheitere aber schon bei der Bridge...

In einem Tutorial hab ich gesehen, dass dort die eigene IP Adresse eingetragen wurde.
Dann ist mein Broker auch online... (Bild Broker_lokal.jpg)
Broker_lokal.jpg
Aber ich meine (oder bin fast ganz sicher), ich muss beim Hostname/IP die Adresse vom TTN eingeben (Bild Broker_ttn.jpg)
Broker_ttn1.jpg
Zur Ergänzung hab ich noch die weiteren Seiten der Eigenschaften eingefügt. Aber da hab ich alle Felder unverändert gelassen

Beim Benutzer und Passwort muss ich etwas eintragen, oder?
Broker_ttn4.jpg
Beim Benutzer bin ich auch recht sicher, dass ich den Name der TTN-Application eingeben muss. Mit @ttn hinten dran.
Aber jetzt beginnt es ;-) Das Passwort... Egal was ich eingebe (und speichere), es kommt immer:
"Offline, COMMUNICATION_ERROR, CONNECT failed as CONNACK contained an Error Code: NOT_AUTHORIZED"

Welches ist das richtige Passwort?
- am offensichtlichsten jenes Passwort bei der MQTT-Integration vom TTN. Dort gibt es einen Button "Generate new API key"
da hab ich ein Mail bekommen mit der "API Key ID" (das ist wohl nicht das Passwort)
es gibt auch noch ein "API Key Name" der mit "mqtt-password-key-1234..." heisst.
aber auch mit dem ganzen Text oder auch nur mit der Nummer hinten funktioniert es nicht...
- oder ist es mein Passwort zum TTN? (kann ich mir fast nicht vorstellen... und funktioniert auch nicht)

Oder liegt es an einer anderen Einstellung (sichere Verbindung, etc.), dass die Bridge nicht online ist?
Hat jemand eine Idee?
Ich würde es gerne weiter versuchen, aber stehe voll auf dem Schlauch...

Danke und Gruss,
Martin
von Tüftler » 9. Mai 2023 17:39
Was lange Offline-währt, wird endlich Online-gut!
udo1toni hat geschrieben: 9. Mai 2023 02:30 Dann werden Passwort und/oder Username nicht korrekt sein. (insbesondere, wenn Du MQTT.fx nicht online bekommst)
Ja, es war das Passwort...
Ironischerweise schon wie ich es im obersten Post vermutet habe. Aber nichts desto trotz, so hab ich viel mehr über MQTT gelernt, als wenn es sofort funktioniert hätte... ;-)
MQTT_Information.jpg
Wer im TTN bei Integration / MQTT bei Passwort auf "Generate new API key" klickt, bekommt nebst einem API key auch ein Passwort.
MQTT_Password.jpg
Leider ist dieses Passwort nur einmal kurz sichtbar. Wenn man die Seite wechselt und wieder zurück kommt, sieht man es nicht mehr.
Deshalb hab ich das beim ersten Mal auch nicht gespeichert und immer mit der "Key ID" als Passwort gearbeitet :oops:

Danach ging es leichter, aber auch nicht ganz reibungslos.
Im openHAB-Thing musste ich ganz unten bei "Discovery aktivieren" DEAKTIVIEREN, sonst klappte es auch nicht (das war standardmässig EIN)

Für alle, die vielleicht daran auch noch scheitern, hier der Code:

Code: Alles auswählen

UID: mqtt:broker:f3422a8641
label: TTN MQTT Broker
thingTypeUID: mqtt:broker
configuration:
  lwtQos: 0
  publickeypin: true
  keepAlive: 60
  clientid: 088066d5-92df-475d-ae55-7857ad46db72
  hostnameValidated: true
  secure: false
  birthRetain: true
  shutdownRetain: false
  certificatepin: true
  password: NNSXS.C33xxx (wirklich ca. 100 Stellen. Nicht kürzer, sonst ist es falsch ;-)
  protocol: TCP
  qos: 0
  reconnectTime: 60000
  port: 1883
  mqttVersion: V3
  host: eu1.cloud.thethings.network
  lwtRetain: true
  username: applikation_im_TTN@ttn
  enableDiscovery: false
DANKE udo1toni!
Gehe zur vollständigen Antwort
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3.4.3 mit openHABian eingerichtet // eher Konfigurier-Fähigkeiten als Programmier-Fähigkeiten ;)

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von udo1toni »

Ich denke, dass da einiges durcheinander geraten ist.

Unter viewtopic.php?t=6907 habe ich mich vor etwa einem Jahr schon mal damit beschäftigt, allerdings war da ein grundsätzliches Verständnis der Kommunikation vorhanden (no Offence!)

Zunächst mal: Ich kenne kein ttn Addon, darf ich davon ausgehen, dass die fraglichen Screenshots also zu einer Software gehören, die nicht openHAB heißt?

Das heißt dann, dass der Datenfluss wie folgt aussieht:

Code: Alles auswählen

LoRaWan -> TTN -> MQTT -> openHAB
Und etwas genauer:

Code: Alles auswählen

LoRaWan -> TTN -> TCP/IP(MQTT) -> MQTT Broker -> TCP/IP(MQTT) openHAB
Zur Kommunikation zweier (oder mehrerer) Devices, die MQTT verwenden, ist ein Broker notwendig. MQTT arbeitet also mit einer Zentrale, über die die gesamte Kommunikation läuft. Gewöhnlich wird man mosquitto als Broker verwenden, weil dieser OpenSource ist und sehr zuverlässig arbeitet. Außerdem ist er recht vollständig, im Gegensatz zu vielen anderen Brokern, die dann vielleicht etwas schlanker sind, aber mosquitto ist jetzt auch kein Schwergewicht, es läuft leicht neben openHAB mit minimalem Ressourcenbedarf.

openHAB tritt - genau wie TTN - als Client auf. Die Konfiguration der Client-Verbindung zum Broker geschieht in der Bridge. Dort wird also die IP des mosquitto Brokers eingetragen. Umgekehrt muss in TTN der gleiche Broker verwendet werden, dort muss also zwingend die gleiche IP eingetragen werden, wie in der Bridge von openHAB (es sei denn, man betreibt mosquitto auf dem openHAB Server und trägt deshalb localhost als IP ein - dann müsste man in TTN die IP von openHAB hinterlegen)

User und Passwort für mqtt sind wiederum die, die in mosquitto eingetragen sind. Wenn Du mosquitto lokal betreibst, der Broker also nicht über das Internet erreichbar ist, kannst Du auch gänzlich auf User und Passwort verzichten, mindestens zur Inbetriebnahme ist das eine gute Option.

Falls TTN sich außerhalb Deines Netzwerks befindet (also ein Service ist, den Du über Internet erreichst), müsstest Du einen externen MQTT Broker finden und in openHAB eine MQTT Bridge auf diesen externen Broker einrichten. Dann sind natürlich User und Passwort Pflicht und eine Absicherung über SSL wäre dann auch anzuraten.

Den API Key brauchst Du vermutlich, wenn Du über https auf TTN zugreifen willst.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Tüftler
Beiträge: 20
Registriert: 23. Aug 2019 21:24
Answers: 1
Wohnort: St. Gallen / Schweiz

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von Tüftler »

Vielen Dank für die ausführliche Antwort!
Das hat meinem "grundsätzlichen Verständnis der MQTT-Kommunikation" sehr geholfen.

Die Screenshots sind schon von openHAB, aus dem MQTT-Binding. Spielt aber schon nicht mehr so eine Rolle, denn...
...jetzt hab ich begriffen, wo der MQTT Broker "physikalisch" ist.
Auf meinem Raspi! Dort hab ich auch mosquitto installiert (mit openhabian), herausgelesen aus anderen Tutorials.

Also müsst ich jetzt TTN dazu bringen, in meinem Hausnetzwerk auf meinem Raspi in mosquitto zu schreiben. Und das, wie Du schon geschrieben hast, geht nicht (ok, vielleicht geht es technisch, aber möchte wohl niemand).

Danke nochmals für die Erklärung! Ich werde mit diesem zusätzlichen Wissen versuchen, zu diesen Daten zu gelangen ;-)
openHAB3.4.3 mit openHABian eingerichtet // eher Konfigurier-Fähigkeiten als Programmier-Fähigkeiten ;)

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von udo1toni »

Wenn TTN im Web läuft, brauchst Du einen Broker im Web. Ist ja nicht so, dass es das nicht gibt :) Vielleicht bietet TTN auch direkt einen mqtt Zugang an, wäre ja sonst komplett sinnlos.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Tüftler
Beiträge: 20
Registriert: 23. Aug 2019 21:24
Answers: 1
Wohnort: St. Gallen / Schweiz

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von Tüftler »

udo1toni hat geschrieben: 3. Mai 2023 19:19 Vielleicht bietet TTN auch direkt einen mqtt Zugang an, wäre ja sonst komplett sinnlos.
Mittlerweile glaube ich, dass TTN einen, wie Du sagst "direkten MQTT Zugang anbietet".
mqtt_in_TTN.jpg
Und wie Du schon geschrieben hast, damals...
Unter viewtopic.php?t=6907 habe ich mich vor etwa einem Jahr schon mal damit beschäftigt, ...
...hiess der host auch schon host="eu1.cloud.thethings.network"...

Aber sowohl mit MQTT.fx wie auch aus openHAB (Version 3.4.3.) bekomme ich das Thing nicht in den Status "Online".

Code: Alles auswählen

UID: mqtt:broker:TTN_MQTT
label: TTN MQTT Broker
thingTypeUID: mqtt:broker
configuration:
  lwtQos: 0
  publickeypin: true
  keepAlive: 60
  clientID: openhab
  hostnameValidated: true
  secure: true
  birthRetain: true
  shutdownRetain: false
  certificatepin: true
  password: JNP...38-stellig aus dem API key
  protocol: TCP
  qos: 0
  reconnectTime: 60000
  port: 1883
  mqttVersion: V3
  host: eu1.cloud.thethings.network
  lwtRetain: true
  username: applikation_rot_im_Beispiel@ttn
  enableDiscovery: true
In openHAB kommt die Meldung: java.io.IOException: Connection reset by peer
Und mit MQTT.fx kommt die Meldung: java.net.SocketException: Connection reset

So gesehen fürchte ich, dass das Problem gar nicht in openHAB liegt, auch nicht ob jetzt mein Broker auf meinem Pi ist oder doch in der TTN-Cloud sondern an irgendeiner Einstellung im TTN...
Dann müsste ich vielleicht dort in einem Forum fragen ;-)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3.4.3 mit openHABian eingerichtet // eher Konfigurier-Fähigkeiten als Programmier-Fähigkeiten ;)

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von udo1toni »

Dann werden Passwort und/oder Username nicht korrekt sein. (insbesondere, wenn Du MQTT.fx nicht online bekommst)

Einzig möglicher weiterer Punkt: Da der mqtt Server im Internet beheimatet ist, muss eine eventuell vorhandene Firewall die Pakete durch lassen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Tüftler
Beiträge: 20
Registriert: 23. Aug 2019 21:24
Answers: 1
Wohnort: St. Gallen / Schweiz

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von Tüftler »

Was lange Offline-währt, wird endlich Online-gut!
udo1toni hat geschrieben: 9. Mai 2023 02:30 Dann werden Passwort und/oder Username nicht korrekt sein. (insbesondere, wenn Du MQTT.fx nicht online bekommst)
Ja, es war das Passwort...
Ironischerweise schon wie ich es im obersten Post vermutet habe. Aber nichts desto trotz, so hab ich viel mehr über MQTT gelernt, als wenn es sofort funktioniert hätte... ;-)
MQTT_Information.jpg
Wer im TTN bei Integration / MQTT bei Passwort auf "Generate new API key" klickt, bekommt nebst einem API key auch ein Passwort.
MQTT_Password.jpg
Leider ist dieses Passwort nur einmal kurz sichtbar. Wenn man die Seite wechselt und wieder zurück kommt, sieht man es nicht mehr.
Deshalb hab ich das beim ersten Mal auch nicht gespeichert und immer mit der "Key ID" als Passwort gearbeitet :oops:

Danach ging es leichter, aber auch nicht ganz reibungslos.
Im openHAB-Thing musste ich ganz unten bei "Discovery aktivieren" DEAKTIVIEREN, sonst klappte es auch nicht (das war standardmässig EIN)

Für alle, die vielleicht daran auch noch scheitern, hier der Code:

Code: Alles auswählen

UID: mqtt:broker:f3422a8641
label: TTN MQTT Broker
thingTypeUID: mqtt:broker
configuration:
  lwtQos: 0
  publickeypin: true
  keepAlive: 60
  clientid: 088066d5-92df-475d-ae55-7857ad46db72
  hostnameValidated: true
  secure: false
  birthRetain: true
  shutdownRetain: false
  certificatepin: true
  password: NNSXS.C33xxx (wirklich ca. 100 Stellen. Nicht kürzer, sonst ist es falsch ;-)
  protocol: TCP
  qos: 0
  reconnectTime: 60000
  port: 1883
  mqttVersion: V3
  host: eu1.cloud.thethings.network
  lwtRetain: true
  username: applikation_im_TTN@ttn
  enableDiscovery: false
DANKE udo1toni!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3.4.3 mit openHABian eingerichtet // eher Konfigurier-Fähigkeiten als Programmier-Fähigkeiten ;)

maggus
Beiträge: 23
Registriert: 6. Nov 2021 12:58
Answers: 0

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von maggus »

Hi,

bin genau an der gleichen Stelle.

Openhab liefert:

Code: Alles auswählen

2023-12-22 10:06:06.407 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'eu1.cloud.thethings.network'. Next attempt in 60000ms
2023-12-22 10:06:06.416 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid 43bd6c86-ae35-4c90-8c45-cd255b75abf0
ich habe keine statische ClientID verwendet.
Meine Config sieht (soweit ich sehen kann) gleich aus. (Thing name, Username, Passwort ausgenommen)

Bin mir auch ziemlich sicher, dass ich das richtige Passwort genommen habe.

Kann ich irgendwo noch sehen, was das Problem ist?

Code: Alles auswählen

UID: mqtt:broker:80a772ed29
label: MQTT Broker ttn
thingTypeUID: mqtt:broker
configuration:
  lwtQos: 0
  publickeypin: true
  keepAlive: 60
  hostnameValidated: true
  secure: false
  birthRetain: true
  shutdownRetain: false
  certificatepin: true
  password: NNSXS.CSY6xxxx
  protocol: TCP
  qos: 0
  reconnectTime: 60000
  port: 1883
  mqttVersion: V3
  host: eu1.cloud.thethings.network
  lwtRetain: true
  username: monitor-power@ttn
  enableDiscovery: false
ich habe auch ein mqtt cli versucht:

Code: Alles auswählen

mkerle@JM-W10-KE-MKENB /cygdrive/c/Users/mkerle/Downloads
$ ./mqttx-cli-win-x64.exe conn -h eu1.cloud.thethings.network -p 1883 -u 'monitor-power@ttn' -P $(cat password.txt)
[2023-12-22] [11:27:54] » ...  Connecting...
[2023-12-22] [11:27:55] » ×  Connection closed
[2023-12-22] [11:27:56] » ...  Reconnecting...
ist vielleicht mein user name doppelt?!
das wäre dann aber fies ;-)

damit geht es wohl:

Code: Alles auswählen

mosquitto_sub -h eu1.cloud.thethings.network -t "#" -u "monitor-power@ttn" -P "NNSXS.CSY6P7C.."
also hab ich wohl eine Einstellung falsch.

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von udo1toni »

Hast Du den MQTT Explorer? Das wäre vermutlich die bessere (weil komfortabler) Variante um die Verbindung zu testen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

maggus
Beiträge: 23
Registriert: 6. Nov 2021 12:58
Answers: 0

Re: Mit MQTT bei TTN Werte auslesen - Passwort?

Beitrag von maggus »

damit bekomme ich auch eine Verbindung.

Ich habe mein Sensor auch mal sich einloggen lassen und ich bekam eine Benachrichtigung.

Dh. irgendwas mache ich beim openhab falsch. (Passwort habe ich wohl das richtige notiert)

ich habe jetzt unter

Code: Alles auswählen

/var/lib/openhab/etc/log4j2.xml
mal das logging hochgedreht. aber wenn ich durch schaue, seh ich nicht mehr was mir hilft.

Code: Alles auswählen

 grep mqtt /var/log/openhab/openhab.log

Code: Alles auswählen

2023-12-22 16:18:45.868 [DEBUG] [io.netty.buffer.PoolThreadCache     ] - Freed 5 thread-local buffer(s) from thread: com.hivemq.client.mqtt-31-1
2023-12-22 16:19:45.756 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid d11f961e-f1cb-49f0-a8c5-da0bbd3acb59
2023-12-22 16:19:45.939 [DEBUG] [io.netty.buffer.PoolThreadCache     ] - Freed 5 thread-local buffer(s) from thread: com.hivemq.client.mqtt-32-1
2023-12-22 16:20:45.770 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid d11f961e-f1cb-49f0-a8c5-da0bbd3acb59
2023-12-22 16:20:45.943 [DEBUG] [io.netty.buffer.PoolThreadCache     ] - Freed 5 thread-local buffer(s) from thread: com.hivemq.client.mqtt-33-1
2023-12-22 16:21:45.786 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid d11f961e-f1cb-49f0-a8c5-da0bbd3acb59
2023-12-22 16:21:45.969 [DEBUG] [io.netty.buffer.PoolThreadCache     ] - Freed 5 thread-local buffer(s) from thread: com.hivemq.client.mqtt-34-1
2023-12-22 16:22:45.800 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid d11f961e-f1cb-49f0-a8c5-da0bbd3acb59
2023-12-22 16:22:45.953 [DEBUG] [io.netty.buffer.PoolThreadCache     ] - Freed 5 thread-local buffer(s) from thread: com.hivemq.client.mqtt-35-1
2023-12-22 16:23:45.814 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid d11f961e-f1cb-49f0-a8c5-da0bbd3acb59
2023-12-22 16:23:45.972 [DEBUG] [io.netty.buffer.PoolThreadCache     ] - Freed 5 thread-local buffer(s) from thread: com.hivemq.client.mqtt-36-1
2023-12-22 16:24:45.828 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid d11f961e-f1cb-49f0-a8c5-da0bbd3acb59
2023-12-22 16:24:46.069 [DEBUG] [io.netty.buffer.PoolThreadCache     ] - Freed 5 thread-local buffer(s) from thread: com.hivemq.client.mqtt-37-1
2023-12-22 16:25:45.841 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'eu1.cloud.thethings.network' with clientid d11f961e-f1cb-49f0-a8c5-da0bbd3acb59
Zuletzt geändert von maggus am 22. Dez 2023 17:33, insgesamt 3-mal geändert.

Antworten