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 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
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. Ö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 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: 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:
|
<<: Mysql GTID Mha-Konfigurationsmethode
>>: JavaScript zum Erreichen eines einfachen Message Board-Falls
Heute stelle ich zwei HTML-Tags vor, die ich nich...
Inhaltsverzeichnis Hintergrund DHCP konfigurieren...
Ubuntu 16.04 installiert standardmäßig die PHP7.0...
Remote-Debugging von Webdiensten In .NET ist die ...
In diesem Artikel wird der spezifische Code zur I...
Ich bin in letzter Zeit beim Erlernen von Docker ...
Elementform und Codeanzeige Weitere Einzelheiten ...
Vorwort Ich habe vor Kurzem Linux gelernt und dan...
1. Übersicht über Module und Anweisungen zur Begr...
Inhaltsverzeichnis 1. Verwenden Sie Objekt, um ei...
Einführung Basierend auf Docker-Containern und Do...
Dieses Problem ist mir beim Erstellen der Anmelde...
Einführung Das Modul, das die Anzahl gleichzeitig...
In diesem Artikel finden Sie den spezifischen Cod...
In diesem Artikelbeispiel wird der spezifische Co...