MQTT Subscriber 상자 만들기
12916 단어 Choregraphe파이썬mqttPepper
소개
이번에는 MQTT 의 Subscriber 측의 박스를 만들고 Pepper 군에서 동작시켜 보았습니다.
Publisher 측에서 동작시켜 본 내용은 이쪽.
아직, MQTT 공부중입니다.
MQTT Subscriber 상자
MQTT의 Python용 라이브러리로 다음 라이브러리를 사용합니다.
설정 항목
MQTT 브로커 정보와 검색할 주제에 대한 정보를 설정합니다.
파이썬 코드
MQTT 브로커에 연결하고 주제를 Subscribe합니다. 그런 다음 loop_forever 에서 수신 대기 상태로.
프로그램이 끝나면 주제를 Unsubscribe합니다.
박스내에서의 라이브러리의 사용 방법은, 이하의 기사를 참고로 했습니다.
(어쩐지 검토하고 나면 코드를 고치고 싶어졌습니다)
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()
Choregraphe로 연결
Publisher 측면
MQTT 브로커에 "hello world"를 날리기만 하면 됩니다.
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)
동작 확인
Subscriber 실행
Choregraphe에서 프로그램을 실행하여 메시지 수신 대기 상태가 됩니다.
Publisher 실행
터미널에서 Publisher를 실행합니다.
$ python pub.py
결과 표시
Publisher -> Broker -> Subscriber와 메시지가 전달되고 Subscriber 측인 Choregraphe의 로그 뷰어에 내용이 표시됩니다.
동작 확인 2
시험에 Subscriber 측에서의 메시지 수신시의 처리를 아래의 형태로 바꾸어 보면, Pepper 군이 말해 줍니다.
def onMessage(self, mqttc, obj, msg):
tts = ALProxy("ALTextToSpeech")
tts.say(msg.payload)
감상
Reference
이 문제에 관하여(MQTT Subscriber 상자 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Suna/items/f2faaa326bd026e3303d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)