J'utilise paho.mqtt.client
. Ci-dessous est une version simplifiée du code, mais il montre encore le problème.MQTT paho coincé à l'appel à à 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()
Et ceci est la sortie du programme:
[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
Comme vous pouvez le voir sur la sortie, la connexion au courtier est établi avec succès, mais juste après le premier appel à message_callback_add
le code reste coincé et rien d'autre ne se passe. À ce stade, la seule chose que je peux faire est de tuer le processus. Je ne sais pas pourquoi le code est bloqué, j'ai aussi regardé la documentation et je n'ai toujours rien trouvé.
Je semble être en mesure de reproduire cela et je ne vois pas pourquoi il devrait se comporter de cette façon. Je serais tenté de soulever un problème avec le code python python comme décrit ici: https://pypi.python.org/pypi/paho-mqtt/1.1#reporting-bugs – hardillb