Mosquitto MQTT- Broker eine feste IP Adresse vergeben

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Forum,

    ich schlage mich gerade mit dem MQTT Broker von Mosquitto herum,

    Der Raspberry Pi 3 bezieht seine IP Adresse von einem Handy HotSpot über diesem Hotspot gelangt der Pi ins Internet.

    Nun läuft der MQTT Broker von Mosquitto ja über Localhost, was ja die IP des Hotspots wäre, ich möchte jedoch die IP anpassen,

    also möchte eine vergeben die nicht lokalhost ist. Beispiel

    Raspberry Pi IP: 192.168.43.97

    dann hätte der Broker auch diese IP : 192.168.43.97

    Ich möchte jedoch das der Broker diese IP erhält: 192.168.43.94

    Ist dies möglich zu realisieren?

    Ich bin leider Anfänger in dieser Thematik und würde mich über jede Antwort freuen.

    Vielen Dank im voraus.

    Fizzo361

  • Mosquitto MQTT- Broker eine feste IP Adresse vergeben? Schau mal ob du hier fündig wirst!

    • Offizieller Beitrag

    Mosquitto ja über Localhost, was ja die IP des Hotspots wäre,

    Nö, localhost heisst, dass das Programm nur Anfragen verarbeitet die auf der Maschine erzeugt wurden und selbst dann nicht die IP des Hotspots (das wäre dein Gateway). Wie sieht deine/etc/mosquitto/mosquitto.conf aus? Ein Blick ins Handbuch zeigt

    das du mit bind_address die Adresse auf die IP deines Pi setzen kannst.

    Was willst du eigentlich erreichen? Den Pi von extern erreichbar machen über ein Handy Hotspot?

  • Hallo dbv,

    vielen Dank für deine schnelle Unterstützung,

    ich möchte eigentlich nur das der Broker die feste IP erhält,

    Da eine App vom Smartphone Daten via MQTT an die oben genannte IP sendet

    und ich diese Daten dann mit Node-Red weiter verarbeiten will.

    Meine conf.d ist noch komplett leer, bis auf die Kommentare, da die eigentliche Konfiguration des Brokers in

    Node-Red deklariert wird. Also Parameter wie Port, IP etc.

    Habe das auch schon alles zum laufen bekommen wenn ich der Mosquitto auf localhost arbeitet.

    Die General Options datei nenne ich dann GeneralOption.conf und schiebe die dann in den Ordner

    /etc/mosquitto/conf.d ?

    und Inhalt der Datei wäre dann nur: bind_address 192.168.43.90 ?

    Vielen Dank

    Fizzo361

    • Offizieller Beitrag

    nur das der Broker die feste IP erhält,

    Der Broker kriegt gar keine IP ;). Der Pi kriegt eine. Der Broker hört auf eine bestimmte IP. Standardmäßig ist das localhost (127.0.0.1). Wenn du nun willst, dass auch andere Programme dem Broker zeug schicken dürfen, musst du du die bind_adress auf 192.168.43.90 ändern, wie du richtig erkannt hast.

    Ich würde aber keine extra Datei anlegen, schmeiss die Zeile mit in die mosquitto.conf unter das include_dir /etc/mosquitto/conf.d und starte den Dienst neu.

  • Vielen Dank für den Hinweis,

    ich habe die erzeugte Datei wieder entfernt.

    Nun habe ich die Zeile direkt wie von dir beschrieben ins mosquitto.conf geschrieben.

    jedoch erhalte ich in Node-Red keine Connection zum Broker.

    Der Pi hat die IP: 192.168.43.113, diese ändert sich jedoch stätig da die IP's vom Handy Hotspot vergeben werden.

    Was muss ich nun tun? habt ihr bzw. du noch eine Idee?

    Grüße

    Fizzo361

  • bind_address 0.0.0.0

    sollte mosquitto an alle verfügbaren Interfaces/IPs binden.

    DHCP mit wechselnden IPs ohne funktionierendes DNS ist unpraktisch, wenn man damit Services bereitstellen will. Du solltest deinem RPi eine feste IP zuweisen oder per DHCP eine quasi-feste.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Guten Morgen Ihr zwei ;)

    ich habe nun in der mosquitto.conf bind_address 0.0.0.0 hinterlegt.

    Node-Red ist mit dem Broker verbunden, jedoch erhalte ich immer noch keine Daten vom Smartphone

    lokal auf dem Pi kann ich daten jetzt hin und her senden, jedoch vom Handy kommt nichts an.

    Nochmal die Details zusammengefasst:

    - In der mosquitto.conf steht bind_address 0.0.0.0 unter dem # include...

    - node-red hat beim Listener folgendes hinterlegt:

    - Server: 0.0.0.0

    - Port: 1883

    - Topic: test

    das Handy will an die 192.168.43.90 senden und ist auch in dem selben Netzwerk wie der Pi,

    das Handy hat die 192.168.43.107,

    der Pi hat die 192.168.43.82.

    verstehe den Baum vor lauter Addressen nicht mehr -.-*

    habt ihr noch eine Idee oder habe ich etwas übersehen?

    Gruß

    Fizzo361

  • Zusatz:

    wenn ich den Broker in der Console ausführe mit:

    mosquitto_sub -h 192.168.43.90 -v -t "#"

    erhalte ich die Meldung: Error: No route to host

    führe ich das gleiche mit der IP vom Raspi aus also:

    mosquitto_sub -h 192.168.43.82 -v -t "#"

    klappt es und ich kann eine Textnachricht senden:

    mosquitto_pub -h 192.168.43.82 -t "test" -m "Hi MQTT"

    hmm hoffe das hilft euch weiter, mir leider nicht,

    freue mich über jeder Antwort, Ratschlag, Idee Oder Co. :)

    Fizzo361

  • wenn ich den Broker in der Console ausführe mit:

    mosquitto_sub -h 192.168.43.90 -v -t "#"

    erhalte ich die Meldung: Error: No route to host

    Wenn dem Raspi diese IP nicht zugewiesen wurde, kannst du sie so auch nicht nutzen. Entweder richtest du die als 2. IP auf deinem Netzwerk-Interface ein oder korrigierst dein DHCP bzw. dein DNS. Sorge dafür, dass dein RPi unabhängig von der IP unter seinem Hostnamen im Netz erreichbar ist und lasse andere Geräte dann an diesen senden (statt an wechselnde IP).

    Wenn du nichts zu sagen hast, sag einfach nichts.

    • Offizieller Beitrag

    mosquitto_sub -h 192.168.43.90 -v -t "#"

    erhalte ich die Meldung: Error: No route to host


    führe ich das gleiche mit der IP vom Raspi aus also:

    mosquitto_sub -h 192.168.43.82 -v -t "#"

    :denker: Häh? Na logo musst die IP von Pi angeben, immer. Was soll denn die .90 sein wenn die .82 der Pi ist?

  • Vielen Dank,

    Okay ja das war mir soweit auch klar, jedoch habe ich das Problem das das Handy die IPs Automatisch vergibt, und diese kann ich auch nicht beeinflussen.

    Also wird der Pi immer die 192.168.43.82 IP erhalten, Problem ist aber das die App die ich nutze um Daten via MQTT zu senden immer an die 192.168.43.90 senden möchte.

    Noch mal zum Verständis für mich:

    der MQTT-Broker ist also Localhost den ich mit der ...43.82 erreiche oder? also kann ich der config dauerhaft sagen statt der ...43.82 auch localhost oder?

    Aber ich muss es schaffen das das Smartphone die Daten an Pi über die IP ...43.90 schickt, eine Abwandlung der App ist leider nicht möglich?

    Wie richte ich den mir eine 2.IP für die WLAN-Schnittstelle ein?

    Kann ich das evtl irgendwie mit deinem Routing lösen? oder habt ihr diesbezüglich schon Erfahrungen gemacht?

  • das das Handy die IPs Automatisch vergibt, und diese kann ich auch nicht beeinflussen.

    Bist Du da ganz sicher? Was passiert denn, wenn der Pi gezielt eine bestimmte IP per DHCP anfordert? Was/welche App auf dem Handy übernimmt denn die Vergabe der IPs?

    das die App die ich nutze um Daten via MQTT zu senden immer an die 192.168.43.90 senden möchte

    Was ist denn das für eine App? Es kommt mir schon sehr merkwürdig vor, daß die Adresse des Brokers nicht konfigurierbar sein soll.

  • Hallo Manul,

    ich habe das über das anfordern mittels DHCP auch gerade im Netz gefunden und wollte das gleich mal ausprobieren.

    Die erste Variante wollte ich testen.

    https://jankarres.de/2013/09/raspbe…resse-vergeben/

    Die App ist eine Eigenentwicklung von nem Kumpel, jedoch ist der gerade verhindert um mir das anzupassen und da sich die App noch im Beta-Status befindet lässt sich das nicht Konfigurieren, da die IP fest vercodet wurde -.-*

    Ist der oben gepostete Link das richtige für das DHCP anfordern?

    • Offizieller Beitrag

    Nochmal localhost hat die IP 127.0.0.1. Man kann localhost von aussen nie erreichen, wirklich nie.

    Problem das das Handy die IPs Automatisch vergibt, und diese kann ich auch nicht beeinflussen.

    Also wird der Pi immer die 192.168.43.82 IP erhalten,

    Wieso kriegt er immer die .82, ich dachte du kannst das nicht beeinflussen kannst?

    immer an die 192.168.43.90 senden möchte.

    Warum?

  • Habe den oben geposteten Link Probiert...

    Der Pi verbindet sich mit dem Hotspot Netzwerk über die 192.168.43.90 jedoch, habe ich nun keinen Zugriff mit zum Internet.

    Wenn ich ich in die Hotspot Informationen des Handy gehe sehe ich der Pi hat sich damit verbunden, jedoch in den Eigenschaft steht das der Pi immer noch ...43.82 bekommen hat.

    Hatte auch alle Systeme neugestartet. Also hat das leider auch nicht funktioniert.

    Lustiger weise,war der Broker in Node-Red über die 192.168.43.90 Verbunden, aber es kamen dennoch keine Daten vom Handy zum Raspi an.

    Hoffe ihr habt noch ein paar asse im Ärmel.

    Gruß

    Fizzo361

  • Der Hotspot hat wie ich vermute, wenn sich einmal ein Gerät mit ihm verbindet bekommt er am Anfang eine freie IP zugewiesen, verbindet sich das Gerät erneut mit dem Hotspot erhält er die alte IP wieder, das konnte ich bereits bei mehreren Verbindungen feststellen.

    Er sendet nun mal leider immer fest an die 192.168.43.90

    das wurde vor langer zeit mal so vereinbart mit meinem Kumpel und seitdem ich an diesem Punkt der Entwicklung bin und merken das das leider knifflig mit 192.168.43.90 wird, ist mein Kumpel aktuell nicht mehr verfügbar, da Hochzeit und Urlaub... Also muss ich aktuell mich mit diesem Problem befassen und das mit 192.168.43.90 zum laufen bekommen.

  • Die Vergabe der IPs kommt von keiner App, das ist das normale von Andoid, wenn man auf seinem Smartphone ein Hotspot aufmacht, also seine Mobilen Daten teilt, der Hotspot ist also ein Wlan vom Smartphone womit sich andere Endgeräte wie Laptops, Pi's oder auch andere Handy ohne Internetzugang mit verbinden können.

    Und Das Smartphone von mir ist ein Samsung S7 Galaxy. Diesen Handy stellt mir die Verbindung zum Internet her und baut das Netzwerk auf, in diesem Netzwerk binfinden sich:

    Ein weiteres LG Smartphone und der Raspberry Pi , so wie weitere Pi's die aber für dieses Problem nicht von wichtigkeit sind.

    Und auf dem LG Smartphone ist die App installiert die MQTT-Daten sendet.

    Also noch mal zu den IP's:

    Samsung: 192.168.43.107

    LG: 192.168.43.173

    Pi: 192.168.43.82

    Und der Broker oder gerne auch der Pi sollen nun die 192.168.43.90 erhalten.

    Hoffe das ich nun das Projekt und die Netzwerkarchitektur euch besser erläutern konnte.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!