MQTT-Spezifikationen Der grundlegende Teil wurde erklärt und das Verständnis von MQTT vertieft.
Ich bezog mich auf das Programm. https://www.sunbit.co.jp/blog/2019/11/21802/ https://qiita.com/rui0930/items/1d139248b440650dc952
Verwenden Sie pho-mqtt, um mosquitto broker mit Python zu verwenden.
pip install pho-mqtt
Diesmal werden Broker, Abonnent und Publisher auf demselben Terminal ausgeführt.
Terminalinformationen
Linux mqtt-test 4.15.0-43-generic #46~16.04.1-Ubuntu SMP Fri Dec 7 13:31:08 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
** Broker starten ** Um den Vorgang auf localhost zu überprüfen, wird diesmal standardmäßig mit dem Port und der IP-Adresse begonnen. Da es nicht erforderlich ist, die Einstellungen zu ändern oder die Konfiguration zu erstellen, starten Sie den Broker mit dem folgenden Befehl.
mosquitto
** Beschreibung des Betriebsprogramms ** Sowohl Herausgeber als auch Abonnent arbeiten in einer Endlosschleife. "Hallo" wird 4 mal in einer Schleife als Übertragungsdaten des Herausgebers an "Topic1" gesendet. Danach besteht der Inhalt darin, dass Informationen wie die durch Ausführen des Befehls free erfasste Speichernutzung kontinuierlich jede Minute an "Topic / Mem" gesendet werden. Sie können es an den Abonnenten senden oder ändern, indem Sie die hierarchische Struktur des Themas ändern.
Das Abonnentenprogramm erhält die abonnierten Themendaten in einer Endlosschleife.
** Abonnentenprogramm **
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Subscriber
import paho.mqtt.client as mqtt
#mqtt broker
MQTT_HOST = 'localhost'
MQTT_PORT = 1883
MQTT_KEEP_ALIVE = 60
#broker connection
def on_connect(mqttc, obj, flags, rc):
print("rc:" + str(rc))
#receve message
def on_message(mqttc, obj, msg):
print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
mqttc = mqtt.Client()
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEP_ALIVE)
#Abonnieren Sie topic1
mqttc.subscribe("Topic1/#")
#Schleife
mqttc.loop_forever()
** Verlagsprogramm **
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Publisher
from time import sleep
import subprocess
import paho.mqtt.client as mqtt
#MQTT Broker
MQTT_HOST = 'localhost'
MQTT_PORT = 1883
MQTT_KEEP_ALIVE = 60
MQTT_TOPIC = 'Topic1'
MQTT_SUB_TOPIC_MEM='Topic1/Mem'
def on_connect(mqttc, obj, flags, rc):
print("rc:" + str(rc))
def res_cmd(cmd):
return subprocess.Popen(cmd, stdout=subprocess.PIPE,shell=True).communicate()[0]
mqttc = mqtt.Client()
mqttc.on_connect = on_connect
#Brokerverbindung
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEP_ALIVE)
#Starten Sie die Verarbeitung
mqttc.loop_start()
for i in range(3):
mqttc.publish(MQTT_TOPIC, 'hello')
sleep(1)
cmd = 'free'
ans_str = res_cmd(cmd)
while True:
mqttc.publish(MQTT_SUB_TOPIC_MEM, ans_str)
sleep(60)
mqttc.disconnect()
subscriber
publisher
Recommended Posts