How to subscribe to a channel

I am trying to subscribe to a mutt channel using Python Cayenne-mqtt library.

A Raspberry PI is publishing the data on channel 1 (i.e temp) and another Raspberry PI should receive the data by subscribing to it. The publishing part is working find, but I cannot find how to subscribe using the python cayenne library. Can you help me ?

I tried to used paho-mqtt library (client.subscribe) but connection to the device is stopped and restarted at every request… Strange !

I thought that this code works and send all messages, we don’t subscribe to a specific channel.

client = cayenne.client.CayenneMQTTClient()
client.on_message = on_message
client.begin(MQTT_USERNAME, MQTT_PASSWORD, MQTT_CLIENT_ID)

def on_message(message):

logging.info('MQTT Message received ')
logging.info('   Channel: %s', str(message.channel))
logging.info('   Value  : %s', str(message.value))
logging.info('   Topic  : %s', str(message.topic))
#logging.info('   Client : %s', str(message.client_id))
#logging.info('   Msg_ID : %s', str(message.msg_id))

Any idea how to do it ?

I also tried to run tinter graphical interface to show values. It required to start a myWindow.loop() which avoid running any other loop, like the mqtt client.loop() or loop_forever() in the same code.

What’s the best practices to run these two event code based ? Multi-Threading ?

you can use this Python code to access basic cayenne API