MQTT

Aus
Version vom 13. Juni 2025, 12:15 Uhr von Stefan (Diskussion | Beiträge) (Installation auf Docker)
Wechseln zu: Navigation, Suche

MQTT.org

http://mqtt.org/

Mosquitto

MQTT Broker Mosquitto installieren

http://www.neuendorf-online.de/blog/heimautomatisierung/mqtt-broker-mosquitto-installieren/

Installation auf Docker

Alles klar! Hier ist die **gleiche Anleitung in einem einfachen, WIKI-freundlichen Format** – ohne Tabellen, ohne Emojis, ohne HTML, nur Klartext mit sauberen Überschriften, Absätzen und Listen.

---

  1. MQTT Broker (Mosquitto) im Docker-Container installieren – Variante: docker run
    1. Ziel

Diese Anleitung beschreibt die Installation und Konfiguration des Mosquitto MQTT Brokers in einem Docker-Container mit folgenden Merkmalen:

  • Benutzer-Authentifizierung (User: root, user1–user5)
  • Drei Listener:
 * Port 1883 (Standard MQTT)
 * Port 1884 (zusätzlicher Port, z. B. für intern)
 * Port 9001 (WebSocket)
  • Logging, Persistenz, Konfigurationsdateien
    1. Verzeichnisstruktur

Erstelle einen Ordner zur Ablage aller Konfigurations- und Persistenzdaten:

```bash mkdir -p mosquitto/config mkdir -p mosquitto/data mkdir -p mosquitto/log ```

    1. Mosquitto-Konfigurationsdatei

Lege die Datei `mosquitto/config/mosquitto.conf` mit folgendem Inhalt an:

``` persistence true persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log log_type error log_type warning log_type notice log_type information

listener 1883 allow_anonymous false password_file /mosquitto/config/passwd

listener 1884 allow_anonymous false password_file /mosquitto/config/passwd

listener 9001 protocol websockets allow_anonymous false password_file /mosquitto/config/passwd ```

Hinweis: Wenn `allow_anonymous false` gesetzt ist, müssen sich alle Clients mit Benutzername und Passwort anmelden.

    1. Benutzer anlegen

Die Passwörter werden mit dem Tool `mosquitto_passwd` erzeugt.

Erzeuge eine neue Passwortdatei mit dem Benutzer `root`:

```bash mosquitto_passwd -c mosquitto/config/passwd root ```

Füge weitere Benutzer hinzu:

```bash mosquitto_passwd mosquitto/config/passwd user1 mosquitto_passwd mosquitto/config/passwd user2 mosquitto_passwd mosquitto/config/passwd user3 mosquitto_passwd mosquitto/config/passwd user4 mosquitto_passwd mosquitto/config/passwd user5 ```

Falls das Tool lokal nicht verfügbar ist, kannst du stattdessen einen temporären Container verwenden:

```bash docker run --rm -it -v $(pwd)/mosquitto/config:/mosquitto eclipse-mosquitto \

 mosquitto_passwd -c /mosquitto/passwd root

```

Für weitere Benutzer dann:

```bash docker run --rm -it -v $(pwd)/mosquitto/config:/mosquitto eclipse-mosquitto \

 mosquitto_passwd /mosquitto/passwd user1

```

    1. Mosquitto-Container starten

```bash docker run -d \

 --name mosquitto \
 -p 1883:1883 \
 -p 1884:1884 \
 -p 9001:9001 \
 -v $(pwd)/mosquitto/config:/mosquitto/config \
 -v $(pwd)/mosquitto/data:/mosquitto/data \
 -v $(pwd)/mosquitto/log:/mosquitto/log \
 eclipse-mosquitto

```

    1. Verbindung testen

Verbindung über Kommandozeile mit `mosquitto_sub` und `mosquitto_pub`:

```bash

  1. Client subscribt auf Topic

mosquitto_sub -h localhost -p 1883 -t test/topic -u root -P <passwort>

  1. Nachricht senden

mosquitto_pub -h localhost -p 1883 -t test/topic -m "Hallo MQTT" -u user1 -P <passwort> ```

WebSocket-Verbindung (z. B. mit MQTT Explorer oder Webclient):

  • Host: localhost
  • Port: 9001
  • Protokoll: `ws://`
  • Benutzername und Passwort: erforderlich
    1. Container stoppen und löschen

```bash docker stop mosquitto docker rm mosquitto ```

    1. Optional: ACLs (Zugriffsrechte pro Benutzer)

Wenn bestimmte Benutzer nur auf bestimmte Topics zugreifen dürfen, kann eine ACL-Datei definiert werden.

Erweiterung in der `mosquitto.conf`:

``` acl_file /mosquitto/config/acl ```

Beispiel für die Datei `mosquitto/config/acl`:

``` user root topic readwrite #

user user1 topic readwrite sensor/temperature

user user2 topic read sensor/temperature ```

---

Wenn du möchtest, kann ich dir dieses Setup auch als Downloadpaket (ZIP) vorbereiten oder ein Beispiel für einen Client (Python, Arduino, Node-RED) liefern.

FMEM

WIKI Mosquitto

https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung

MQTT in FHEM einrichten und verwenden

http://www.kriwanek.de/index.php/de/homeautomation/zentrale/fhem/244-mqtt-in-fhem-einrichten-und-verwenden
Raspberry Pi: MQTT Server mosquitto installieren und Daten in Fhem über MQTT empfangen oder “Wie werte ich Haustür klingeln aus?” 
http://blog.wenzlaff.de/?p=6487
https://github.com/georgehahn/charlotte
https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung

Arduino

Arduino-MQTT

https://github.com/256dpi/arduino-mqtt
https://www.smarthome-tricks.de/allgemein/nodemcu-esp8266-sensoren-an-iobroker-ueber-mqtt/

.Net

https://code.msdn.microsoft.com/M2Mqtt-MQTT-client-library-ac6d3858/view/Discussions#content
http://www.firewing.info/pmwiki.php?n=FirewingUser.MQTT
http://www.firewing.info/forum/

MQTT OpenHab

https://onesmarthome.de/smart-home-openhab-2-mqtt-mosquitto/


== Beispiele ==
mosquitto_pub -h 192.168.0.40 -p 1883 -u admin -p axxxx -t Modul/3/Test -m 32
mosquitto_pub -h 192.168.0.40 -p 1883 -u admin -p axxxx -t Modul/2/In/R/1 -m ON
mosquitto_pub -h 192.168.0.40 -p 1883 -u admin -p axxxx -t Modul/2/In/R/1 -m OFF
/ESPEASY-LoLin-110_110/SET/GPIO/4   0
/ESPEASY-LoLin-110_110/SET/GPIO/4   1

/ESPEASY-LoLin-110_110/SET/GPIO/15  0
/ESPEASY-LoLin-110_110/SET/GPIO/15  1
/ESPEASY-LoLin-110_110/GET/LED-G/State
/ESPEASY-LoLin-110_110/GET/Relais/State

Python MQTT Einführungstutorial

https://smarthome-blogger.de/blog/tutorial/python-mqtt-tutorial

MQTTX

 docker pull emqx/emqx:latest
 docker run -d --name emqx   -p 1883:1883 -p 8083:8083   -p 8084:8084 -p 8883:8883   -p 18083:18083   -v $PWD/data:/opt/emqx/data   -v $PWD/log:/opt/emqx/log   emqx/emqx:latest
 docker pull emqx/mqttx-web:latest

Mosquitto 2.0 MQTT Broker mit Management Dashboard

https://wiki.instar.com/de/Frequently_Asked_Question/Mosquitto_2.0_with_Management_Dashboard/