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.
Utilisez les bibliothèques suivantes comme bibliothèques MQTT pour Python.
Définissez les informations de courtier MQTT et les informations de rubrique à acquérir.
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()
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)
Exécutez le programme dans Choregraphe et attendez que le message soit reçu.
Exécutez Publisher à partir du terminal.
$ python pub.py
Le message Editeur-> Courtier-> Abonné est transmis, et le contenu est affiché dans le visualiseur de journal de Choregraphe côté Abonné.
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)