[PYTHON] Créer une boîte d'abonné MQTT

introduction

Cette fois, j'ai fait une boîte du côté abonné de MQTT et l'ai essayé avec Pepper.

Cliquez ici pour le contenu de l'opération côté éditeur.

J'étudie toujours MQTT.

Boîte d'abonné MQTT

Utilisez les bibliothèques suivantes comme bibliothèques MQTT pour Python.

Éléments de réglage

Définissez les informations de courtier MQTT et les informations de rubrique à acquérir.

2015040401.png

Code Python

Connectez-vous au courtier MQTT et abonnez-vous à la rubrique. Après cela, loop_forever le met dans l'état d'attente de réception. À la fin du programme, désabonnez-vous du sujet.

Pour savoir comment utiliser la bibliothèque dans la boîte, je me suis référé à l'article suivant.

(Après avoir examiné quelque chose, je voulais corriger le code)

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

Connectez-vous avec Choregraphe

2015040402.png

Côté éditeur

Passez simplement "bonjour le monde" au courtier MQTT.

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)

Contrôle de fonctionnement

Exécuter l'abonné

Exécutez le programme dans Choregraphe et attendez que le message soit reçu.

Exécutez Publisher

Exécutez Publisher à partir du terminal.

$ python pub.py

Affichage des résultats

Le message Editeur-> Courtier-> Abonné est transmis, et le contenu est affiché dans le visualiseur de journal de Choregraphe côté Abonné.

2015040403.png

Contrôle de fonctionnement 2

Si vous essayez de modifier le traitement lors de la réception d'un message du côté abonné vers le formulaire ci-dessous, Pepper parlera.

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

Impressions

Recommended Posts

Créer une boîte d'abonné MQTT
Créer une boîte de publication MQTT
Créer une boîte de publication MQTT Partie 2
Faisons un plugin Errbot
Créer une boîte HTTP Get
Créer un diagramme composite RVB 3 couleurs
Créer un exe Scrapy avec Pyinstaller