Tutorial zur Installation und Verwendung von Docker MQTT

Tutorial zur Installation und Verwendung von Docker MQTT

Einführung in MQTT

MQTT (Message Queuing Telemetry Transport) ist ein von IBM entwickeltes Instant-Messaging-Protokoll, das das Potenzial hat, ein wichtiger Bestandteil des Internets der Dinge zu werden. Das Protokoll unterstützt alle Plattformen und kann nahezu alle vernetzten Objekte mit der Außenwelt verbinden. Es wird als Kommunikationsprotokoll für Sensoren und Aktoren verwendet (z. B. um Häuser über Twitter mit dem Internet zu verbinden).

Docker installiert RabbitMQ und konfiguriert MQTT

Verwenden Sie RabbitMQ als MQTT-Server und Eclipse Paho als Client. Das Hostsystem ist Ubuntu 16.04

Docker-Download-Image

docker pull daocloud.io/library/rabbitmq:3.7.4

Starten Sie RabbitMQ

docker run -d --hostname mein-Kaninchen --name irgendein-Kaninchen -p 15672:15672 -p 5672:5672 -p 1883:1883 -p 15675:15675 daocloud.io/library/rabbitmq:3.7.4

Beachten Sie den Mapping-Container-Port

  • 15672 ist der Standardzugriffsport der RabbitMQ-Verwaltungsschnittstelle
  • 5672 ist der Standardport für amqp
  • 1883 ist der Standardport des MQTT TCP-Protokolls
  • 15675 ist der Standardport für das WebSocket-Protokoll web_mqtt

Plugin aktivieren

Nach der Standardinstallation müssen wir das Plugin rabbitmq_management, das Plugin rabbitmq_mqtt und das Plugin rabbitmq_web_mqtt manuell aktivieren.

Führen Sie die folgenden drei Befehle aus

docker exec <Container-ID> rabbitmq-plugins aktivieren rabbitmq_management
docker exec <Container-ID> rabbitmq-plugins aktivieren rabbitmq_mqtt
docker exec <Container-ID> rabbitmq-plugins aktivieren rabbitmq_web_mqtt

Natürlich können Sie auch ein Skript start.sh schreiben und es in den Container kopieren

/usr/sbin/rabbitmq-plugins aktivieren rabbitmq_management
/usr/sbin/rabbitmq-plugins aktivieren rabbitmq_mqtt
/usr/sbin/rabbitmq-plugins aktivieren rabbitmq_web_mqtt

Betreten Sie den Container und führen Sie dieses Skript aus.

sh start.sh

Öffnen Sie Host-Ports

Firewall-Befehl --zone=public --add-port=15672/tcp --permanent
Firewall-Befehl --zone=public --add-port=5672/tcp --permanent
Firewall-Befehl --zone=public --add-port=1883/tcp --permanent
Firewall-Befehl --zone=public --add-port=15675/tcp --permanent
Firewall-Befehl --reload

Python MQTT-Client-Implementierung

Installieren Sie Python-Pakete

pip install paho-mqtt

Datendemo senden (Verbraucher)

# Vor der Verwendung müssen Sie Hbase und den Thrift-Server starten. # Starten Sie Hbase mit cd /usr/local/hbase bin/start-hbase.sh. Der Standardport ist 60000.
# Starten Sie den Thrift-Server cd /usr/local/hbase/bin execute ./hbase-daemon.sh start thrift Der Standardport ist 9090
System importieren
Betriebssystem importieren
dir_common = os.path.split(os.path.realpath(__file__))[0] + '/../'
sys.path.append(dir_common) # Fügen Sie das Stammverzeichnis zum Systemverzeichnis hinzu, um normalerweise auf den gemeinsamen Ordner zu verweisen. importiere argparse #
Importprotokollierung
Importzeit, Datum/Uhrzeit
von common.py_log importiere init_logger,init_console_logger
aus common.config importieren *
von common.py_hbase importiere PyHbase
Importzeit, JSON
von common.py_rabbit importiere Rabbit_Consumer
importiere paho.mqtt.client als mqtt
Importzeit
HOST = "192.168.2.46"
PORT = 1883
def client_loop():
  client_id = Zeit.strftime('%Y%m%d%H%M%S',Zeit.localtime(Zeit.Zeit()))
  client = mqtt.Client(client_id) # ClientId kann nicht wiederholt werden, verwenden Sie also die aktuelle Zeit client.username_pw_set("guest", "guest") # Muss festgelegt werden, sonst wird "Verbunden mit Ergebniscode 4" zurückgegeben
  client.on_connect = bei_Verbindung
  client.on_message = bei_Nachricht
  client.connect(HOST, PORT, 60)
  client.loop_forever()
def on_connect(Client, Benutzerdaten, Flags, rc):
  print("Verbunden mit Ergebniscode "+str(rc))
  client.subscribe("test")
def on_message(Client, Benutzerdaten, Nachricht):
  drucken(msg.topic+" "+msg.payload.decode("utf-8"))
wenn __name__ == '__main__':
  client_loop()

Datendemo empfangen (Produzent)

System importieren
Betriebssystem importieren
dir_common = os.path.split(os.path.realpath(__file__))[0] + '/../'
sys.path.append(dir_common) # Fügen Sie das Stammverzeichnis zum Systemverzeichnis hinzu, um auf den gemeinsamen Ordner zu verweisen. Importieren Sie normalerweise paho.mqtt.client als mqtt
Importzeit
HOST = "192.168.2.46"
PORT = 1883
def client_loop():
  client_id = Zeit.strftime('%Y%m%d%H%M%S',Zeit.localtime(Zeit.Zeit()))
  client = mqtt.Client(client_id) # ClientId kann nicht wiederholt werden, verwenden Sie also die aktuelle Zeit client.username_pw_set("guest", "guest") # Muss festgelegt werden, sonst wird "Verbunden mit Ergebniscode 4" zurückgegeben
  client.on_connect = bei_Verbindung
  client.on_message = bei_Nachricht
  client.connect(HOST, PORT, 60)
  client.loop_forever()
def on_connect(Client, Benutzerdaten, Flags, rc):
  print("Verbunden mit Ergebniscode "+str(rc))
  client.subscribe("test")
def on_message(Client, Benutzerdaten, Nachricht):
  drucken(msg.topic+" "+msg.payload.decode("utf-8"))
wenn __name__ == '__main__':
  client_loop()

Produzentendemo

# importiere paho.mqtt.client als mqtt
importiere paho.mqtt.publish als publish
Importzeit
HOST = "192.168.2.46"
PORT = 1883
def on_connect(Client, Benutzerdaten, Flags, rc):
  print("Verbunden mit Ergebniscode "+str(rc))
  client.subscribe("test")
def on_message(Client, Benutzerdaten, Nachricht):
  drucken(msg.topic+" "+msg.payload.decode("utf-8"))
wenn __name__ == '__main__':
  client_id = Zeit.strftime('%Y%m%d%H%M%S',Zeit.localtime(Zeit.Zeit()))
  # client = mqtt.Client(client_id) # ClientId kann nicht wiederholt werden, verwenden Sie also die aktuelle Zeit# client.username_pw_set("guest", "guest") # Muss festgelegt werden, sonst wird „Verbunden mit Ergebniscode 4“ zurückgegeben
  # client.on_connect = bei_Verbindung
  # client.on_message = bei_Nachricht
  # Client.Verbinden(HOST, PORT, 60)
  # client.publish("test", "Hello MQTT", qos=0, retain=False) # Nachricht veröffentlichen publish.single("test", "Hello MQTT", qos = 1, hostname=HOST, port=PORT, client_id=client

Amtliche Dokumentation:
mqtt http://www.rabbitmq.com/mqtt.html

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Das WeChat-Applet stellt eine Verbindung zum Server her, um MQTT-Dateninformationen anzuzeigen
  • Detaillierte Erläuterung des Prozesses zum Erstellen eines MQTT-Servers mit Docker

<<:  Mysql GTID Mha-Konfigurationsmethode

>>:  JavaScript zum Erreichen eines einfachen Message Board-Falls

Artikel empfehlen

HTML-Subtag und Sup-Tag

Heute stelle ich zwei HTML-Tags vor, die ich nich...

So stellen Sie ein Linux-System automatisch mit PXE bereit

Inhaltsverzeichnis Hintergrund DHCP konfigurieren...

Ubuntu16.04 erstellt eine php5.6-Webserverumgebung

Ubuntu 16.04 installiert standardmäßig die PHP7.0...

Analyse des Remote-Debuggings und des Timeout-Betriebsprinzips von Webdiensten

Remote-Debugging von Webdiensten In .NET ist die ...

js, um einen 3D-Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code zur I...

Implementierung des Docker-Verpackungsimages und Konfigurationsänderung

Ich bin in letzter Zeit beim Erlernen von Docker ...

Hinweise zu den Formularkomponenten des Elements

Elementform und Codeanzeige Weitere Einzelheiten ...

Zusammenfassung der benutzerdefinierten JavaScript-Objektmethoden

Inhaltsverzeichnis 1. Verwenden Sie Objekt, um ei...

So begrenzen Sie die Anzahl gleichzeitiger Verbindungsanforderungen in Nginx

Einführung Das Modul, das die Anzahl gleichzeitig...

Implementierung eines einfachen Whack-a-Mole-Spiels in JavaScript

In diesem Artikel finden Sie den spezifischen Cod...

Vue+Vant implementiert die obere Suchleiste

In diesem Artikelbeispiel wird der spezifische Co...