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
Was ist ein Margin-Top-Collaps? Der Margin-Top-Co...
Deklarieren von Variablen Festlegen globaler Vari...
Inhaltsverzeichnis 1. Was ist Docker Compose? 2. ...
Einführung in Flex Layout Flex bedeutet auf Engli...
Wie wir alle wissen, können wir in Linux ohne den...
Inhaltsverzeichnis Hintergrund CommonsChunkPlugin...
Derjenige, der eine neue Verbindung herstellt, en...
Inhaltsverzeichnis 1. Benutzerdefinierter Import ...
23. April 2020: Heute können Sie mit Ubuntu 20.04...
Der Code sieht folgendermaßen aus: .Verfahren{ Ra...
reduce Methode ist eine Array-Iterationsmethode. ...
Inhaltsverzeichnis Lassen Sie uns zunächst kurz P...
Obwohl ich bereits einige Projekte in einer Docke...
Die Browserkompatibilität ist der wichtigste Teil...
1. Prüfen Sie, ob das Ereignis aktiviert ist Vari...