Mosquitto Setup

  • Hallo an alle,

    als erste sorry falls ich etwas nicht richtig mache, bin neu im Forum.

    Mein Problem ist, das ich keine Verbindung von meinem ESP8266 zum Mosquitto Broker auf meinem Raspberry pi zero wh aufbauen kann.

    Auf meinen pi zero läuft der mqtt broker und node red.

    Mit node red kann ich mich ohne Probleme zum broker verbinden.

    Hab auch die Verbindung mittels mosquitto_sub und mosquitto_pub geprüft und es funktioniert.

    Wenn ich aber meinen ESP8266 zum Broker verbinden will kommt immer der rc=-2 Fehler.

    Ich hab auch schon das config file geändert und dort

    listener 1883 0.0.0.0

    allow_anonymous true

    ganz oben hinzugefügt

    Hier mein config file:

    # Place your local configuration in /etc/mosquitto/conf.d/

    #

    # A full description of the configuration file is at

    # /usr/share/doc/mosquitto/examples/mosquitto.conf.example

    listener 1883 0.0.0.0

    allow_anonymous true

    pid_file /run/mosquitto/mosquitto.pid

    persistence true

    persistence_location /var/lib/mosquitto/

    log_dest file /var/log/mosquitto/mosquitto.log

    include_dir /etc/mosquitto/conf.d

    Wenn ich dann aber mosquitto -v abfrage kommt beim log weiterhin, dass nur local only mode aktiviert ist.

    Auch das die adresse bereits verwendet wird obwohl nichts läuft bzw verbunden ist.

    Jemand eine Idee was ich falsch mache bzw. wie ich das Lösen könnte?

    Hier der Log von mosauitto -v

    1641391000: mosquitto version 2.0.11 starting

    1641391000: Using default config.

    1641391000: Starting in local only mode. Connections will only be possible from clients running on this machine.

    1641391000: Create a configuration file which defines a listener to allow remote access.

    1641391000: For more details see https://mosquitto.org/documentation/authentication-methods/

    1641391000: Opening ipv4 listen socket on port 1883.

    1641391000: Error: Address already in use

    1641391000: Opening ipv6 listen socket on port 1883.

    1641391000: Error: Address already in use

    danke schön mal für eure Hilfe und schönen Tag

    mfg

  • 1641391000: Starting in local only mode. Connections will only be possible from clients running on this machine.

    Sieht so aus, als ob er die /etc/mosquitto/mosquitto.conf lädt, aber nicht das lädt, was in /etc/mosquitto/conf.d ist.

    Pack die Änderungen in die /etc/mosquitto/mosquitto.conf mit rein und dann sollte der auch extern verfügbar sein.

  • hallo,

    danke für deine schnelle Antwort, ich sitz schon Tage an diesem Problem.

    Hab schon beide wege versucht,

    also eine config datei im /etc/mosquitto/conf.d erstellen

    oder die /etc/mosquitto/mosquitto.conf ändern

    Mein Log vom Post oben ist auch von der zweiten Methode, wo ich es direkt in /etc/mosquitto/mosquitto.conf reingeschrieben habe ohne zusätzliche config datei in /etc/mosquitto/conf.d

    Reicht es wenn ich mosquitto dann mittels systemctl restat mosquitto neu starte oder muss ich nochwas machen um die config datei zu laden?

    mfg

  • Hallo,

    auch dir danke für die Antwort.

    Also mein letzter Versuch war es in /etc/mosquitto/mosquitto.conf

    listener 1883 0.0.0.0

    allow_anonymous true

    hinzuzufügen.

    Hatte es aber vorher in einer extra datei die in /etc/mosquitto/conf.d lag und den selben inhalt also

    listener 1883 0.0.0.0

    allow_anonymous true

    drinstehen hatte.

    Bei beiden versuchen kam bei mosquitto -v der selbe log wie oben raus

    mfg

  • Ja, sollte man, sofern die Konfiguration richtig ist. Ist sie aber nicht.

    include_dir  dir

    External configuration files may be included by using the include_dir option. This defines a directory that will be searched for config files. All files that end in '.conf' will be loaded as a configuration file. It is best to have this as the last option in the main file. This option will only be processed from the main configuration file. The directory specified must not contain the main configuration file.

    Damit z.B. /etc/mosquitto/conf.d/local.conf geladen wird, muss irgendwo in der /etc/mosquitto/mosquitto.conf include_dir richtig gesetzt werden.


    Code
    include_dir /etc/mosquitto/conf.d

    Nur wenn das gesetzt ist, werden die Config von /etc/mosquitto/conf.d geladen.

  • Hmm, ich habe den listener gar nicht konfiguriert und kann mich von extern problemlos verbinden.

    Debian, mosquitto version 1.5.7

  • Hmm, ich habe den listener gar nicht konfiguriert und kann mich von extern problemlos verbinden.


    Debian, mosquitto version 1.5.7

    Ja du hast die alte version von mosquitto da ist standartmäsig kein local only mode eingestellt.

    Ab 2.0 ist der local only mode aktiv und den bekomm ich trotz zusätzlichem config file nicht weg

    mfg

  • Nein, ich denke, mit der Version braucht es den listener doch, s.o. da bin ich aber raus.

    EDIT; Wenn ich das richtig verstehe,


    sollte

    When Mosquitto is run without a configuration file, or without configuring any listeners, it will now bind to the loopback interfaces 127.0.0.1 and/or ::1. This means that only connections from the local host will be possible. ...

    If you use this mode and wish to have clients connect from a remote machine, then you will need to use a configuration file:

    Code
    listener 1883
    # Note that this will not allow anonymous access by default.

    This configuration binds the listener for port 1883 to the 0.0.0.0 or :: interface by default, i.e. allows connections on all interfaces. It is still possible to bind to a specific interface manually, e.g. listener 1883 192.168.1.1.

    reichen, ohne IP, vielleicht versucht sich Dein IOT per IPv6 zu verbinden, was mit 0.0.0.0 nicht geht.

    Edited 3 times, last by KKoPi (January 5, 2022 at 3:46 PM).

  • Problem ist, jetzt steht es ja direkt im /etc/mosquitto/mosquitto.conf file also in dem standart config file von mosquitto an ganz oberster stelle

    listener 1883 0.0.0.0

    allow_anonymous true

    Ich weis jetzt das es wegen updates und so nicht der beste weg ist und besser in einer extra conifg datei liegen sollte

    Aber beide methoden liefern mir den selben log bei mosquitto -v

    Da jetzt aber wie gesagt, mein standart config file von mosquitto /etc/mosquitto/mosquitto.conf verändert habe und den nötigen code hinzugefügt habe sollte es doch funktionieren, was es nicht tut.

    Muss ich das file irgendwie über ein command laden lassen oder reicht es mosquitto neu zu starten?

    Vlt hat jemand noch eine idee was ich probieren könnte?

    Wäre für jeden tip dankbar!!

    mfg

  • Starte den mal einfach lokal ohne systemctl.

    So habe ich es unter Arch Linux gemacht. Wahrscheinlich habe ich auch eine neuere Version.

    EDIT:

    Zum Testen habe ich den Port auf 1888 und nicht 1883 gesetzt.

    Bei mir und bei dir läuft der mosquitto ja bereits im Hintergrund. Deswegen bekommst du die Meldung, dass Port 1883 schon belegt ist.

    Wenn ich mosquitto ohne config aufrufe, bekomme ich die gleiche Meldung:

    Jedenfalls sorgt irgendwas dafür, dass die Config ignoriert wird. Ein Berechtigungsproblem kann ich schon mal ausschließen, da sich mosquitto beschwert, wenn es die angegebene Config nicht lesen kann/darf.

  • Starte den mal einfach lokal ohne systemctl.


    So habe ich es unter Arch Linux gemacht. Wahrscheinlich habe ich auch eine neuere Version.


    EDIT:

    Zum Testen habe ich den Port auf 1888 und nicht 1883 gesetzt.

    Bei mir und bei dir läuft der mosquitto ja bereits im Hintergrund. Deswegen bekommst du die Meldung, dass Port 1883 schon belegt ist.

    kurze frage, weist du wie ich jetzt den broker stoppe wenn ich den mittels mosquitto -v -m m.conf gestartet habe?

  • wenn ich das port wechsle und den esp8266 verbinden will, ist im satch von mir keine variable um den port einzustellen.

    Ist das egal, also reicht die IP adresse aus und der findet das port automatisch oder muss ich dort auch noch was ändern?

    mfg

  • kurze frage, weist du wie ich jetzt den broker stoppe wenn ich den mittels mosquitto -v -m m.conf gestartet habe?

    Mit STRG + C. Programme, die im Vordergrund laufen, kann man meist mit SIGINT beenden. STRG + C sendet ein SIGINT Signal an den Vordergrundprozess.

    Den mosquitto, der bereits als Daemon im Hintergrund läuft, kannst du mit systemctl starten, stopppen, nejustarten, status anzeigen

    Code
    sudo systemctl stop mosquitto
    sudo systemctl start mosquitto
    sudo systemctl restart mosquitto
    
    sudo systemctl status mosquitto

    Logmeldungen können mit journalctl angezeigt werden.

    Code
    sudo journalctl --unit mosquitto -f

    Das -f steht für follow. Neue Meldungen werden direkt angezeigt. Er scrollt automatisch.

    Ist das egal, also reicht die IP adresse aus und der findet das port automatisch oder muss ich dort auch noch was ändern?

    Er nutzt standardmäßig 1883, sofern nicht anderes angegeben wird. Wenn jetzt z.B. 1888 verwendet werden würde, muss man den Port mit angeben, da es vom Standard abweicht.

  • noch kurz eine blöde frage, die IP auf die ich mich verbinden will ist diejenige mit der sich der Pi vom Router bekommen hat oder?

    Vlt hab ich da was falsch verstanden.

    Bin seit ein paar tagen an dem projekt und hatte vorher sowas noch nicht gemacht.

    also wenn ich hostname -I abfrge ist das meine IP aresse zum verbinden?

    mfg

  • Post by pi_in (January 5, 2022 at 4:41 PM).

    The post was deleted, no further information is available.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!