Einfache Pub / Sub-Programmhinweise in Python

Referenzseite

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

Vorbereitung zur Verwendung

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()

Ausführungsergebnis

subscriber スクリーンショット 2020-06-25 20.10.55.png

publisher スクリーンショット 2020-06-25 20.10.39.png

Recommended Posts

Einfache Pub / Sub-Programmhinweise in Python
Schreiben Sie ein super einfaches molekulardynamisches Programm in Python
Implementierung eines einfachen Algorithmus in Python 2
Führen Sie einen einfachen Algorithmus in Python aus
Beim Schreiben eines Programms in Python
[MQTT / Python] Implementierte eine Klasse, die Pub / Sub von MQTT in Python ausführt
Ein einfacher HTTP-Client, der in Python implementiert ist
Ich habe ein Pay-Management-Programm in Python erstellt!
Versuchen Sie, eine einfache Animation in Python zu zeichnen
Erstellen Sie eine einfache GUI-App in Python
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python
Schreiben Sie eine einfache Giermethode in Python
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Richten Sie mit Python 3 einen einfachen HTTPS-Server ein
Einfacher gRPC in Python
Ein Programm, das doppelte Anweisungen in Python entfernt
Datenanalyse in Python: Ein Hinweis zu line_profiler
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Richten Sie einen einfachen SMTP-Server in Python ein
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Empfangen Sie Wörterbuchdaten von Python-Programmen mit AppleScript
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Beachten Sie beim Initialisieren einer Liste in Python
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Python-Eingabehinweis in AtCoder
Erstellen Sie ein Lesezeichen in Python
Einfache Regressionsanalyse mit Python
Zeichne ein Herz in Python
Einfacher IRC-Client mit Python
Ein Hinweis zu [Python] __debug__
Python-Programm von "Buch, das schwieriges Programmieren leicht lehrt"
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Eine einfache Möglichkeit, mehrere for-Schleifen in Python zu vermeiden
Ein Hinweis beim Berühren der Gesichtserkennungs-API von Microsoft mit Python
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Wahrscheinlich in einer Nishiki-Schlange (Originaltitel: Vielleicht in Python)
[Python] Verwalten Sie Funktionen in einer Liste
Erste einfache Regressionsanalyse in Python
[Hinweis] Project Euler in Python (Problem 1-22)
Einfaches OAuth 2 mit Python (urllib + oauthlib)
Erstellen Sie einen DI-Container mit Python
Python: Ein Hinweis zu Klasse 1 "Abstract"
Zeichnen Sie eine Streudiagrammmatrix mit Python
Hinweis zu get_scorer von sklearn
ABC166 in Python A ~ C Problem
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Kompatibilitätsdiagnoseprogramm in Python geschrieben
Erstellen Sie eine Binärdatei in Python
Löse ABC036 A ~ C mit Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Fremdschlüssel in SQLite von Python [Hinweis]