MQTT: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „ http://mqtt.org/ ==== Server/Broker ==== Eclipse Mosquitto<br> https://mosquitto.org/ ==== Client ==== Wenn Mosquitto installiert ist, gibt es einen Commando…“) |
(→ACL (Access Control List)) |
||
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | http://mqtt.org/ | + | http://mqtt.org/<br> |
+ | MQTT ist folgendes:<br> | ||
+ | * Publish-Subscribe-Protokoll, der Client nimmt die Rolle des Publishers und Subscribers ein | ||
+ | * Bidirektional und Push-basiert also Ereignisgetrieben | ||
+ | * Baut auf TCP auf | ||
+ | * Nachrichtenorientiert | ||
+ | * Lose gekoppelt | ||
+ | * Schlank | ||
+ | Also alles klar!?<br><br> | ||
− | + | == Server/Broker == | |
− | Eclipse Mosquitto | + | === Eclipse Mosquitto === |
https://mosquitto.org/ | https://mosquitto.org/ | ||
− | ==== Client ==== | + | |
+ | {| | ||
+ | |Konfig: | ||
+ | |<code>/etc/mosquitto/mosquitto.conf</code> | ||
+ | |- | ||
+ | |Service: | ||
+ | |<code>sudo service mosquitto restart</code> | ||
+ | |} | ||
+ | |||
+ | ==== Username and Password Authentication ==== | ||
+ | |||
+ | Initale Passwortdatei im Verzeichniss /etc/mosquitto erstellen<br> | ||
+ | mosquitto_passwd -c users.txt user1 | ||
+ | |||
+ | Alle weiteren Benutzer auf diese Weise hinzufügen | ||
+ | mosquitto_passwd -b users.txt user2 password | ||
+ | |||
+ | Falls ein Benutzer gelöscht werden soll | ||
+ | mosquitto_passwd -D users.txt userx | ||
+ | |||
+ | Dann der mosquitto.config folgende Zeilen hinzufügen | ||
+ | allow_anonymous false | ||
+ | password_file /etc/mosquitto/passwords.txt | ||
+ | |||
+ | ==== ACL (Access Control List) ==== | ||
+ | |||
+ | Eine ACL-Datei im Verzeichnis /etc/mosquitto erstellne wie z.B. acl.txt<br> | ||
+ | Diese Datei über die /etc/mosquitto/mosquitto.conf einbinden.<br> | ||
+ | acl_file /etc/mosquitto/acl.txt | ||
+ | |||
+ | Es gibt 3 Bereiche die man konfigurieren kann | ||
+ | # General Section | ||
+ | # User Specific Section | ||
+ | # Client or User ID | ||
+ | Hier wird nur der User-Bereich erklärt! | ||
+ | |||
+ | user intern | ||
+ | topic readwrite # (oder kurz 'topic #')<br> | ||
+ | user extern | ||
+ | topic read # | ||
+ | topic write extern/# | ||
+ | |||
+ | Der Benutzer intern darf alles lesen und schreiben während der Benutzer extern zwar alles lesen aber nur in extern/# schreiben darf. | ||
+ | |||
+ | == Client == | ||
+ | === Kommandozeile === | ||
Wenn Mosquitto installiert ist, gibt es einen Commandozeilenclient.<br> | Wenn Mosquitto installiert ist, gibt es einen Commandozeilenclient.<br> | ||
Alle Topics abonnieren:<br> | Alle Topics abonnieren:<br> | ||
Zeile 12: | Zeile 65: | ||
<code> mosquitto_pub -h localhost -m "ON" -t space/electrolab/switch2 -d</code> | <code> mosquitto_pub -h localhost -m "ON" -t space/electrolab/switch2 -d</code> | ||
+ | === Browser === | ||
+ | Man kann MQTT auch aus dem Browser von einer Webseite aus nutzen.<br> | ||
+ | Es gibt aber ein Problem. MQTT basiert auf TCP, die Sandbox des Browser lässt aber aus sicherheitsgründen keine TCP-Sockets zu. | ||
+ | Die Lösung sind WebSockets. Die müssen erst im Mosquitto configuriert werden.<br> | ||
+ | listener 1884 | ||
+ | protocol websockets | ||
+ | Eclipse paho liefert dann die Client-Bibliothek und ein Beispiel<br> | ||
+ | https://github.com/eclipse/paho.mqtt.javascript | ||
− | MQTT.fx | + | === UI === |
+ | ==== MQTT.fx ==== | ||
http://mqttfx.jensd.de/ | http://mqttfx.jensd.de/ | ||
Ein in Java mit der UI-Technologie JavaFX programmierter Client der auf allen Betriebssystemen laufen sollte. | Ein in Java mit der UI-Technologie JavaFX programmierter Client der auf allen Betriebssystemen laufen sollte. |
Aktuelle Version vom 25. Februar 2019, 22:12 Uhr
http://mqtt.org/
MQTT ist folgendes:
- Publish-Subscribe-Protokoll, der Client nimmt die Rolle des Publishers und Subscribers ein
- Bidirektional und Push-basiert also Ereignisgetrieben
- Baut auf TCP auf
- Nachrichtenorientiert
- Lose gekoppelt
- Schlank
Also alles klar!?
Inhaltsverzeichnis
Server/Broker
Eclipse Mosquitto
Konfig: | /etc/mosquitto/mosquitto.conf
|
Service: | sudo service mosquitto restart
|
Username and Password Authentication
Initale Passwortdatei im Verzeichniss /etc/mosquitto erstellen
mosquitto_passwd -c users.txt user1
Alle weiteren Benutzer auf diese Weise hinzufügen
mosquitto_passwd -b users.txt user2 password
Falls ein Benutzer gelöscht werden soll
mosquitto_passwd -D users.txt userx
Dann der mosquitto.config folgende Zeilen hinzufügen
allow_anonymous false password_file /etc/mosquitto/passwords.txt
ACL (Access Control List)
Eine ACL-Datei im Verzeichnis /etc/mosquitto erstellne wie z.B. acl.txt
Diese Datei über die /etc/mosquitto/mosquitto.conf einbinden.
acl_file /etc/mosquitto/acl.txt
Es gibt 3 Bereiche die man konfigurieren kann
- General Section
- User Specific Section
- Client or User ID
Hier wird nur der User-Bereich erklärt!
user intern topic readwrite # (oder kurz 'topic #')
user extern topic read # topic write extern/#
Der Benutzer intern darf alles lesen und schreiben während der Benutzer extern zwar alles lesen aber nur in extern/# schreiben darf.
Client
Kommandozeile
Wenn Mosquitto installiert ist, gibt es einen Commandozeilenclient.
Alle Topics abonnieren:
mosquitto_sub -h localhost -d -v -t "#"
Auf das Topic space/electrolab/switch2 die Nachricht "ON" schicken:
mosquitto_pub -h localhost -m "ON" -t space/electrolab/switch2 -d
Browser
Man kann MQTT auch aus dem Browser von einer Webseite aus nutzen.
Es gibt aber ein Problem. MQTT basiert auf TCP, die Sandbox des Browser lässt aber aus sicherheitsgründen keine TCP-Sockets zu.
Die Lösung sind WebSockets. Die müssen erst im Mosquitto configuriert werden.
listener 1884 protocol websockets
Eclipse paho liefert dann die Client-Bibliothek und ein Beispiel
https://github.com/eclipse/paho.mqtt.javascript
UI
MQTT.fx
http://mqttfx.jensd.de/ Ein in Java mit der UI-Technologie JavaFX programmierter Client der auf allen Betriebssystemen laufen sollte.