Spécifications MQTT La partie de base a été expliquée et la compréhension de MQTT a été approfondie.
J'ai fait référence au programme. https://www.sunbit.co.jp/blog/2019/11/21802/ https://qiita.com/rui0930/items/1d139248b440650dc952
Pour utiliser mosquitto broker avec python, utilisez pho-mqtt.
pip install pho-mqtt
Cette fois, le courtier, l'abonné et l'éditeur fonctionnent tous sur le même terminal.
Informations sur le terminal
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
** Lancer le courtier ** Cette fois, pour vérifier le fonctionnement sur localhost, il démarrera avec le port et l'adresse IP par défaut. Puisqu'il n'est pas nécessaire de modifier les paramètres ou de créer la configuration, démarrez le courtier avec la commande suivante.
mosquitto
** Description du programme de fonctionnement ** L'éditeur et l'abonné fonctionnent dans une boucle infinie. "Hello" est envoyé 4 fois en boucle vers "Topic1" comme données de transmission de l'éditeur. Après cela, le contenu est que les informations telles que l'utilisation de la mémoire acquise en exécutant la commande libre sont continuellement envoyées à "Topic / Mem" toutes les minutes. Vous pouvez l'envoyer ou le modifier à l'abonné en modifiant la structure hiérarchique du sujet.
Le programme d'abonné continue d'obtenir les données de sujet souscrites dans une boucle infinie.
** programme d'abonné **
#!/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)
#Abonnez-vous au sujet1
mqttc.subscribe("Topic1/#")
#boucle
mqttc.loop_forever()
** programme éditeur **
#!/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
#Connexion courtier
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEP_ALIVE)
#Commencer le traitement
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