paho.mqtt.client
을 사용 중입니다.MQTT 파호가 message_callback_add에 대한 호출에서 멈춤
아래 코드는 단순화 된 버전이지만 여전히 문제를 보여줍니다.
# -*- coding: utf-8 -*-
import sys
import os
import time
import logging
from time import sleep
import paho.mqtt.client as mqtt
mqtt_server_ip = "10.42.0.1"
mqtt_server_port = 1884
subscriptions_qos =[("doorStatus/status", 0),
("doorStatus/eol",0)]
def callback_door_status(client, userdata, message):
logging.debug("Received %s", message.payload)
def on_log(client, userdata, level, buf):
logging.debug("%s", buf)
def on_connect(client, userdata, flags, rc):
logging.info("Successfully connected to MQTT with result code %s", str(rc))
print("before message_callback_add 1")
client.message_callback_add("doorStatus", callback_door_status)
print("after message_callback_add")
(result, _) = client.subscribe(subscriptions_qos)
if (result == mqtt.MQTT_ERR_SUCCESS):
logging.info("Successfully subscribed to MQTT topics with result code %s", str(result))
def on_message(client, userdata, msg):
logging.debug("Received: Topic: %s Body: %s", msg.topic, msg.payload)
def main():
logger = logging.getLogger('root')
logging.basicConfig(format='[%(asctime)s %(levelname)s: %(funcName)20s] %(message)s', level=logging.DEBUG)
client = mqtt.Client("master")
client.on_log = on_log
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqtt_server_ip, mqtt_server_port, 60)
client.loop_forever()
if __name__ == '__main__':
main()
그리고이 프로그램의 출력입니다 :하지만 바로 첫 번째 호출 후 message_callback_add
코드에, 당신은 출력에서 볼 수 있듯이, 브로커에 대한 연결이 성공적으로 설정
[2017-09-20 07:06:40,562 DEBUG: on_log] Received CONNACK (0, 0)
[2017-09-20 07:06:40,562 INFO: on_connect] Successfully connected to MQTT with result code 0
before message_callback_add 1
붙어있어 아무 일도 일어나지 않습니다. 이 시점에서 내가 할 수있는 유일한 방법은 프로세스를 죽이는 것입니다. 코드가 멈추는 이유는 모르겠지만 문서를보고 여전히 아무것도 찾을 수 없습니다.
나는 이것을 재현 할 수있는 것처럼 보입니다. 왜 이런 식으로 행동해야하는지 알 수 없습니다. 나는 여기에 설명 된대로 파이썬 파 호 코드에 대한 이슈를 제기하고 싶다. https://pypi.python.org/pypi/paho-mqtt/1.1#reporting-bugs – hardillb