MQTT: Unterschied zwischen den Versionen
Stefan (Diskussion | Beiträge) (→Installation auf Docker) |
Stefan (Diskussion | Beiträge) (→Installation auf Docker) |
||
Zeile 7: | Zeile 7: | ||
=== Installation auf Docker === | === 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. | |
− | |||
− | |||
− | |||
− | |||
--- | --- | ||
− | # | + | # MQTT Broker (Mosquitto) im Docker-Container installieren – Variante: docker run |
− | ## | + | ## Ziel |
− | Diese Anleitung beschreibt die | + | Diese Anleitung beschreibt die Installation und Konfiguration des Mosquitto MQTT Brokers in einem Docker-Container mit folgenden Merkmalen: |
− | * Benutzer-Authentifizierung | + | * Benutzer-Authentifizierung (User: root, user1–user5) |
− | * | + | * Drei Listener: |
− | * Port 1883 (MQTT | + | * Port 1883 (Standard MQTT) |
− | * Port 1884 (z. B. für | + | * Port 1884 (zusätzlicher Port, z. B. für intern) |
* Port 9001 (WebSocket) | * Port 9001 (WebSocket) | ||
− | * | + | * Logging, Persistenz, Konfigurationsdateien |
− | |||
− | + | ## Verzeichnisstruktur | |
− | + | Erstelle einen Ordner zur Ablage aller Konfigurations- und Persistenzdaten: | |
```bash | ```bash | ||
Zeile 40: | Zeile 35: | ||
``` | ``` | ||
− | - | + | ## Mosquitto-Konfigurationsdatei |
− | + | Lege die Datei `mosquitto/config/mosquitto.conf` mit folgendem Inhalt an: | |
− | + | ``` | |
− | |||
− | ` | ||
− | |||
persistence true | persistence true | ||
persistence_location /mosquitto/data/ | persistence_location /mosquitto/data/ | ||
− | |||
log_dest file /mosquitto/log/mosquitto.log | log_dest file /mosquitto/log/mosquitto.log | ||
log_type error | log_type error | ||
Zeile 58: | Zeile 49: | ||
log_type information | log_type information | ||
− | |||
listener 1883 | listener 1883 | ||
allow_anonymous false | allow_anonymous false | ||
password_file /mosquitto/config/passwd | password_file /mosquitto/config/passwd | ||
− | |||
listener 1884 | listener 1884 | ||
allow_anonymous false | allow_anonymous false | ||
password_file /mosquitto/config/passwd | password_file /mosquitto/config/passwd | ||
− | |||
listener 9001 | listener 9001 | ||
protocol websockets | protocol websockets | ||
Zeile 75: | Zeile 63: | ||
``` | ``` | ||
− | + | Hinweis: Wenn `allow_anonymous false` gesetzt ist, müssen sich alle Clients mit Benutzername und Passwort anmelden. | |
− | + | ## Benutzer anlegen | |
− | + | Die Passwörter werden mit dem Tool `mosquitto_passwd` erzeugt. | |
− | + | Erzeuge eine neue Passwortdatei mit dem Benutzer `root`: | |
```bash | ```bash | ||
mosquitto_passwd -c mosquitto/config/passwd root | mosquitto_passwd -c mosquitto/config/passwd root | ||
+ | ``` | ||
+ | |||
+ | Füge weitere Benutzer hinzu: | ||
+ | |||
+ | ```bash | ||
mosquitto_passwd mosquitto/config/passwd user1 | mosquitto_passwd mosquitto/config/passwd user1 | ||
mosquitto_passwd mosquitto/config/passwd user2 | mosquitto_passwd mosquitto/config/passwd user2 | ||
Zeile 92: | Zeile 85: | ||
``` | ``` | ||
− | + | Falls das Tool lokal nicht verfügbar ist, kannst du stattdessen einen temporären Container verwenden: | |
− | |||
− | Falls | ||
```bash | ```bash | ||
Zeile 101: | Zeile 92: | ||
``` | ``` | ||
− | + | Für weitere Benutzer dann: | |
− | --- | + | ```bash |
+ | docker run --rm -it -v $(pwd)/mosquitto/config:/mosquitto eclipse-mosquitto \ | ||
+ | mosquitto_passwd /mosquitto/passwd user1 | ||
+ | ``` | ||
− | ## | + | ## Mosquitto-Container starten |
```bash | ```bash | ||
Zeile 119: | Zeile 113: | ||
``` | ``` | ||
− | + | ## Verbindung testen | |
− | |||
− | ## | ||
− | + | Verbindung über Kommandozeile mit `mosquitto_sub` und `mosquitto_pub`: | |
```bash | ```bash | ||
− | # | + | # Client subscribt auf Topic |
mosquitto_sub -h localhost -p 1883 -t test/topic -u root -P <passwort> | mosquitto_sub -h localhost -p 1883 -t test/topic -u root -P <passwort> | ||
− | # | + | # Nachricht senden |
mosquitto_pub -h localhost -p 1883 -t test/topic -m "Hallo MQTT" -u user1 -P <passwort> | 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 | ||
− | + | ## Container stoppen und löschen | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ## | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
```bash | ```bash | ||
Zeile 164: | Zeile 139: | ||
``` | ``` | ||
− | + | ## 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 | acl_file /mosquitto/config/acl | ||
``` | ``` | ||
− | Beispiel für `acl`: | + | Beispiel für die Datei `mosquitto/config/acl`: |
− | ``` | + | ``` |
user root | user root | ||
topic readwrite # | topic readwrite # | ||
Zeile 189: | Zeile 164: | ||
--- | --- | ||
− | Wenn | + | 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 == | == FMEM == |
Version vom 13. Juni 2025, 12:15 Uhr
Inhaltsverzeichnis
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.
---
- MQTT Broker (Mosquitto) im Docker-Container installieren – Variante: docker run
- 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
- Verzeichnisstruktur
Erstelle einen Ordner zur Ablage aller Konfigurations- und Persistenzdaten:
```bash mkdir -p mosquitto/config mkdir -p mosquitto/data mkdir -p mosquitto/log ```
- 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.
- 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
```
- 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
```
- Verbindung testen
Verbindung über Kommandozeile mit `mosquitto_sub` und `mosquitto_pub`:
```bash
- Client subscribt auf Topic
mosquitto_sub -h localhost -p 1883 -t test/topic -u root -P <passwort>
- 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
- Container stoppen und löschen
```bash docker stop mosquitto docker rm mosquitto ```
- 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/