Jump to content

MQTT Startschwierigkeiten


hovoi

Recommended Posts

Hallo,

ich bin dabei mir eine kleine Wetterstation zu bauen. Dazu habe ich einen zentralen Raspberry wo Node Red für die Hausautomatisierung läuft und einen Pi-Zero mit dem Zero-Brick.

Ich wollte den Datenaustausch mittels MQTT realisieren, aber irgendwie komme ich nicht weiter. 

Alle Programme habe ich installiert. Nun war ich der Meinung als ersten Test mit dem Befehl in der Zentrale: mosquitto_sub -t tinkerforge/response/hat_zero_brick/Qcf/get_usb_voltage

und dem Befehl auf dem Pi-Zero: mosquitto_pub -t tinkerforge/request/hat_zero_brick/Qcf/get_usb_voltage wird mir die USB-Spannung ausgegeben.

Was mache ich hier falsch bzw. wo muß ich noch nachkonfigurierten. Hatte schon im Forum gesucht, aber leider nichts gefunden.

hovoi

 

Link zu diesem Kommentar
Share on other sites

Du hast bei mosquitto_sub und mosquitto_pub keinen Host angegeben. Hast du das hier nur der Kürze halber weggelassen, oder hast du da wirklich nur das Topic per -t angegeben. Das kann so nicht funktionieren, wenn du das auf zwei verschiedenen Raspberry Pis ausführst, denn ohne Angabe des Hosts verbinden sich beide Befehle zum jeweils lokalen MQTT Broker. Damit alle Beteiligten die jeweiligen Nachrichten auch sehen können müssen mosquitto_sub, mosquitto_pub und die MQTT Bindings sich zum gleichen MQTT Broker verbinden. Läuft der MQTT Broker auf dem zentralen Raspberry oder dem Pi Zero?

Du musst auf dem Raspberry Pi Zero zumindest den Brick Daemon installiert haben, weil dort der HAT Zero Brick angeschlossen ist. Zusätzlich brauchst du noch die MQTT Bindings und einen MQTT Broker. Beides kann auf dem Pi Zero laufen, muss aber nicht. Wenn beides auf dem Pi Zero läuft, dann musst du nichts konfigurieren, weil das die Standardeinstellung ist. Du musst dann allerdings beim mosquitto_sub Befehl auf dem zentralen Raspberry als Host den Pi Zero angeben.

Wenn aber die MQTT Bindings nicht auf dem Pi Zero laufen, dann musst du in den MQTT Bindings einstellen wo der Brick Daemon läuft.

Dort wo die MQTT Bindings installiert sind (ich nehme an du hast diese per Debian Package als systemd Service installiert) die Datei /etc/tinkerforge_mqtt.cmdline bearbeiten, dort die --ipcon-host Zeile einkommentieren und localhost durch den Hostname oder die IP Adresse des Pi Zeros ersetzen. Danach per "sudo sytemctl restart tinkerforge_mqtt" die MQTT Bindings neustarten.

Wenn der MQTT Broker nicht auf dem gleichen Rechner läuft wie die MQTT Bindings, dann musst du in /etc/tinkerforge_mqtt.cmdline auch noch einstellen wo der Broker läuft. Dazu die --broker-host Zeile einkommentieren und localhost durch den Hostname oder die IP Adresse des Rechner ersetzten auf dem der MQTT Broker läuft.

Alternativ versuch erstmal einfacher anzufangen. Brick Daemon, MQTT Bindings und MQTT Brocker auf dem Pi Zero laufen lassen. Da musst du nichts umstellen. Dann den mosquitto_sub und mosquitto_pub Befehl auf dem Pi Zero ausführen. Erst wenn das funktioniert das ganze auf zwei Raspberry Pis verteilen.

Link zu diesem Kommentar
Share on other sites

Hallo Photron,

ich komme mit den Callbacks einfach nicht weiter. Was ist an meinen Befehlen falsch? 

mosquitto_pub -h myIP -t tinkerforge/register/hat_zero_brick/Qcf/usb_voltage -m 'true'
mosquitto_pub -h myIP -t tinkerforge/callback/hat_zero_brick/Qcf/set_usb_voltage_callback_configuration -m ' "period":1000'
mosquitto_sub -h myIP -t tinkerforge/callback/hat_zero_brick/Qcf/get_usb_voltage

Danke schon mal vorab für die Hilfe!!

Link zu diesem Kommentar
Share on other sites

On 8/10/2021 at 9:26 PM, hovoi said:

tinkerforge/callback/hat_zero_brick/Qcf/set_usb_voltage_callback_configuration

Das muss ein /request/ sein statt /callback/. Prinzipiell sind die /register/ und /request/-Topics die, auf die du publisht und /response/ und /callback/ die, auf die die Bindings publishen, also du subscribst.

Link zu diesem Kommentar
Share on other sites

Vielen Dank für die schnelle Antwort. Klappt in diesem Forum super. 👌

Getestet habe ich es noch nicht. Ich habe jetzt den Wettersensor an den richtigen Platz montiert und nun keinen Kontakt mehr. Entfernung zwischen Sensor und Bricklet ca. 20m und keine Hindernisse dazwischen. Ist großer Mist. Ach so Batterien sind getauscht und Antenne ist fest dran.. 

Link zu diesem Kommentar
Share on other sites

Hallo,

ich habe das Problem mit dem fehlenden Empfang gelöst. Das Empfängerbricklet war bei mir auf Leiterplattenmaterial als Montageplatte aufgebaut. Leider hat die Kupferschicht auf der Leiterplatte das Signal so gedämpft, das kein Empfang mehr möglich war. Ich habe es jetzt mit einen längeren Kabel ca. 10cm von meinen Testaufbau entfernt und damit einen stabilen Empfang erreicht.

So jetzt geht es weiter mit der Software.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...