{"id":415,"date":"2017-07-03T02:32:31","date_gmt":"2017-07-03T00:32:31","guid":{"rendered":"https:\/\/www.pingu-mobil.de\/iot\/?p=415"},"modified":"2021-05-14T10:07:49","modified_gmt":"2021-05-14T08:07:49","slug":"dingdong-5-blogeintrag-mqtt-server-auf-ubuntu-16-04","status":"publish","type":"post","link":"https:\/\/www.iot-embedded.de\/iot-2017\/tuersteuerung\/dingdong-5-blogeintrag-mqtt-server-auf-ubuntu-16-04\/","title":{"rendered":"DingDong 5. Blogeintrag: MQTT-Server auf Ubuntu 16.04"},"content":{"rendered":"<p>Mosquitto ist ein popul\u00e4rer MQTT-Server (oder auch Broker genannt) der eine gro\u00dfe Community bestitzt und einfach zu installieren, bzw. konfigurieren ist. Folgend wird beschrieben, wie Mosquitto installiert und durch eine Passwort-Authetifikation gesch\u00fctzt wird:<\/p>\n<p><strong>Schritt 1 &#8211; Installation<\/strong><\/p>\n<p>Ubuntu 16.04 besitzt eine aktuelle Version von Mosquitto in dem Standard-Repository. Nach dem einloggen auf dem Server kann Mosquitto \u00fcber den Befehlt apt-get installiert werden.<\/p>\n<pre class=\"code-pre command\"><code>$ sudo apt-get install mosquitto mosquitto-clients<\/code><\/pre>\n<p>Nach der Installtion startet Ubuntu standardm\u00e4\u00dfig den Mosquitto-Service. Der Broker kann anschlie\u00dfend mit der Standard-Konfiguration getestet werden. Hierf\u00fcr nutzen wir einen der gerade installierten Mosquitto-Clients um auf ein Topic unseres Brokers zu subscriben.<\/p>\n<p>\u00d6ffnen wir eine zweite Sitzung mit dem Server, so k\u00f6nnen wir zwei Terminalverbindungen gleichzeitig nutzen. Auf dem zweiten Terminal k\u00f6nnen wir \u00fcber den mosquitto_sub Befehl auf einen beliebigen Topic, in diesem Fall &#8222;test&#8220;,\u00a0 subscriben:<\/p>\n<pre class=\"code-pre command\"><code>$ mosquitto_sub -h localhost -t test<\/code><\/pre>\n<p>-h wird hierbei f\u00fcr die Spezifikation des Hostname des MQTT-Server und -t f\u00fcr den Namen des Topics verwendet. Nachdem der Befehl mit der Enter-Taste best\u00e4tigt wurde, erscheint vorerst keine Ausgabe, da der Befehl auf eine eingehende Nachricht wartet. Wechseln wir also zu dem anderen Terminal und publizieren eine Nachricht mit dem Befehl:<\/p>\n<pre class=\"code-pre command\"><code>$ mosquitto_pub -h localhost -t test -m \"hello world\"<\/code><\/pre>\n<p>Die Befehle unterscheiden sich lediglich durch den Anhang von -m, welches die eigentliche Nachricht enth\u00e4lt. Sobald die Enter-Taste bet\u00e4tigt wurde, erscheint im anderen Terminal die Nachricht &#8222;hello world&#8220;. Durch die Tastenkombination CTRL+C kann die mosquitto_sub Routine beendet werden.<\/p>\n<p><strong>Schritt 2 &#8211; Konfiguration eines MQTT-Passwortes<\/strong><\/p>\n<p>Mosquitto enth\u00e4lt alle n\u00f6tigen Werkzeuge um eine spezielle Passwort-Datei mit dem Namen mosquitto_passwd zu generieren. Diese wird im Verzeichnis \/etc\/mosquitto\/passwd abgelegt.<\/p>\n<pre class=\"code-pre command\"><code>$ sudo mosquitto_passwd -c \/etc\/mosquitto\/passwd benutzerName<\/code><\/pre>\n<p>Nach der Eingabe dieses Befehles, wird der Benutzer aufgefordert ein Passwort f\u00fcr den \u00fcbergebenen Benutzernamen &#8222;benutzerName&#8220; anzugeben. Nachdem die Passwort-Datei erfolgreich erstellt wurde, m\u00fcssen Mosquitto f\u00fcr die Benutzung von Passw\u00f6rtern konfigurieren.<\/p>\n<pre class=\"code-pre command\"><code>$ sudo nano \/etc\/mosquitto\/conf.d\/default.conf<\/code><\/pre>\n<p>Dieser Befehl \u00f6ffnet eine leere Datei. In diese f\u00fcgen wir folgenden Code ein:<\/p>\n<pre class=\"code-pre \"><code>allow_anonymous false\npassword_file \/etc\/mosquitto\/passwd\n<\/code><\/pre>\n<p>allow_anonymous false deaktiviert alle nicht authorisierten Verbindungen mit dem Broker und password_file gibt an, wo Mosquitto nach den Authetifizierungsinformationen suchen muss. Wir speichern die Datei und verlassen diese.<\/p>\n<p>Nun muss Mosquitto neu gestartet werden.<\/p>\n<pre class=\"code-pre command\"><code>$ sudo systemctl restart mosquitto<\/code><\/pre>\n<p>Die zuvor genutzen Befehle mosquitto_sub und mosquitto_pub m\u00fcssen f\u00fcr den abschlie\u00dfenden Test durch die Anmeldeinformationen erg\u00e4nzt werden:<\/p>\n<pre class=\"code-pre command\"><code>$ mosquitto_sub -h localhost -t test -u \"benutzerName\" -P \"<span class=\"highlight\">password<\/span>\"\n<\/code><\/pre>\n<pre class=\"code-pre command\"><code>$ mosquitto_pub -h localhost -t \"test\" -m \"hello world\" -u \"benutzerName\" -P \"<span class=\"highlight\">password<\/span>\"<\/code><\/pre>\n<p>Die Nachrichten sollten wie in Schritt 1 angezeigt werden.<\/p>\n<p><strong>Schritt 3 &#8211; Verbindungskonfiguration<\/strong><\/p>\n<p>Um den MQTT-Server \u00fcber das Internet verf\u00fcgbar zu machen, muss dieser noch auf die Ports konfiguriert werden, \u00fcber welche der Server angesprochen werden kann. Hierf\u00fcr \u00f6ffnen wir die Konfigurationsdatei wie in Schritt 2:<\/p>\n<pre class=\"code-pre command\"><code>$ sudo nano \/etc\/mosquitto\/conf.d\/default.conf<\/code><\/pre>\n<p>An das Ende der Datei f\u00fcgen wir folgenden Code an:<\/p>\n<pre class=\"code-pre \"><code>listener 1883<\/code><\/pre>\n<pre class=\"code-pre \"><code>listener 8000\nprotocol websockets<\/code><\/pre>\n<p>Wir f\u00fcgen dem Mosquitto-Server also zwei Ports hinzu, welche er \u00fcberwacht. Der listener mit dem Port 1883 ist der Standard-Port von Mosquitto. Hier kann direkt \u00fcber das MQTT-Protokoll kommunziert werden. Der listener auf Port 8000 hingegen, \u00fcberwacht die Kommunikation \u00fcber Websockets, welche in unserem Projekt in der Corodva Applikation genutzt werden. Zu guter letzt muss Mosquitto neu gestartet werden um die neue Konfiguration zu \u00fcbernehmen:<\/p>\n<pre class=\"code-pre command\"><code>$ sudo systemctl restart mosquitto\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mosquitto ist ein popul\u00e4rer MQTT-Server (oder auch Broker genannt) der eine gro\u00dfe Community bestitzt und einfach zu installieren, bzw. konfigurieren ist. Folgend wird beschrieben, wie Mosquitto installiert und durch eine Passwort-Authetifikation gesch\u00fctzt wird: Schritt 1 &#8211; Installation Ubuntu 16.04 besitzt<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/415"}],"collection":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/comments?post=415"}],"version-history":[{"count":1,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/415\/revisions"}],"predecessor-version":[{"id":566,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/415\/revisions\/566"}],"wp:attachment":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/media?parent=415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/categories?post=415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/tags?post=415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}