[PYTHON] Erstellen Sie eine MQTT-Abonnentenbox

Einführung

Dieses Mal habe ich eine Box auf der Abonnentenseite von MQTT erstellt und sie mit Pepper ausprobiert.

Klicken Sie hier, um den Inhalt des Vorgangs auf der Publisher-Seite anzuzeigen.

Ich studiere immer noch MQTT.

MQTT-Abonnentenbox

Verwenden Sie die folgenden Bibliotheken als MQTT-Bibliotheken für Python.

Elemente einstellen

Legen Sie die MQTT-Brokerinformationen und die zu erfassenden Themeninformationen fest.

2015040401.png

Python-Code

Stellen Sie eine Verbindung zum MQTT-Broker her und abonnieren Sie das Thema. Danach versetzt loop_forever es in den Empfangsbereitschaftszustand. Melden Sie sich am Ende des Programms vom Thema ab.

Informationen zur Verwendung der Bibliothek in der Box finden Sie im folgenden Artikel.

(Nachdem ich etwas überprüft hatte, wollte ich den Code reparieren)

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        self.framemanager = ALProxy("ALFrameManager")
        self.folderName = None

    def onUnload(self):
        import sys

        self.mqttc.unsubscribe(self.topic)

        if self.folderName and self.folderName in sys.path:
            sys.path.remove(self.folderName)
        self.folderName = None

    def onInput_onStart(self, payload):
        import sys, os

        self.folderName = os.path.join(
            self.framemanager.getBehaviorPath(self.behaviorId), "../lib")
        if self.folderName not in sys.path:
            sys.path.append(self.folderName)

        import paho.mqtt.client as paho

        self.host       = self.getParameter("Broker Host")
        self.port       = self.getParameter("Broker Port")
        self.keep_alive = self.getParameter("KeepAlive")
        self.topic      = self.getParameter("Topic")
        self.qos        = self.getParameter("Qos")

        self.mqttc = paho.Client()
        self.mqttc.on_message = self.onMessage
        self.mqttc.connect(self.host, self.port, self.keep_alive)
        self.mqttc.subscribe(self.topic, self.qos)

        self.mqttc.loop_forever()

    def onMessage(self, mqttc, obj, msg):
        self.logger.info("topic: " + msg.topic + ", payload: " + str(msg.payload) + ", qos: " + str(msg.qos) + ", retain: " + str(msg.retain))

    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

Verbinde dich mit Choregraphe

2015040402.png

Herausgeberseite

Überspringen Sie einfach "Hallo Welt" zum MQTT-Broker.

pub.py


# coding=utf8

import paho.mqtt.client as paho

mqttc = paho.Client()

mqttc.connect("test.mosquitto.org", 1883, 60)
mqttc.publish("my/topic/pepper5", "hello world", 1)

Funktionsprüfung

Abonnenten ausführen

Führen Sie das Programm in Choregraphe aus und warten Sie, bis die Nachricht empfangen wird.

Führen Sie Publisher aus

Führen Sie Publisher vom Terminal aus.

$ python pub.py

Ergebnisanzeige

Die Nachricht Publisher-> Broker-> Subscriber wird übertragen und der Inhalt wird im Log Viewer von Choregraphe auf der Subscriber-Seite angezeigt.

2015040403.png

Funktionsprüfung 2

Wenn Sie versuchen, die Verarbeitung beim Empfang einer Nachricht auf der Abonnentenseite in das unten stehende Formular zu ändern, spricht Pepper.

    def onMessage(self, mqttc, obj, msg):
        tts = ALProxy("ALTextToSpeech")
        tts.say(msg.payload)

Impressionen

Recommended Posts

Erstellen Sie eine MQTT-Abonnentenbox
Erstellen Sie eine MQTT Publisher-Box
Erstellen Sie eine MQTT Publisher Box Teil 2
Lassen Sie uns ein Errbot-Plugin erstellen
Erstellen einer HTTP-Get-Box
Erstellen Sie ein zusammengesetztes RGB 3-Farbdiagramm
Machen Sie Scrapy exe mit Pyinstaller