Connexion à un broker

Import de la bibliothèque

import paho.mqtt.client as mqtt
	

Fonction callback

Au début de notre programme, on définit une fonction callback qui sera ensuite appelée une fois que la connexion aura été réellement effectuée. La fonction callback sera appelée avec les 4 arguments suivant (dont vous pouvez changer les noms si vous le souhaitez) :

On remplacera, les lignes de 3 à 5, par le traitement que l'on souhaite effectuer après la connexion.

def on_connect(client,userdata,flags,result):
	try:
		# corps du traitement qui sera exécuté
		#
		print("phase de connexion terminée")
	except Exception as e: 
		print(e)
		quit(0)
	

Remarque : l'instruction de la ligne 8 provoque l'arrêt du programme si une erreur survient dans le bloc du "try". Sans l'utilisation de la structure "try: ... except: ..." le callback stoppe son exécution au niveau de l'erreur sans la signaler ni arrêter l'exécution du programme principal.
Il est également possible d'utiliser l'instruction traceback.print_exc() (qui affiche une version plus détaillée de l'erreur) à la place de print(e) à condition de mettre au début du programme import traceback

Connexion

On commence par utiliser le constructeur d'un client de la bibliothèque mqtt en lui passant éventuellement les trois paramètres nommés de la ligne 1 de l'exemple.

mqttc = mqtt.Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv311, transport="tcp")
mqttc.on_connect = on_connect
mqttc.connect("test.mosquitto.org", 1883, 60)
	

A la ligne 2, on définit la fonction callback qui sera appelée lorsque la phase de connexion sera terminée. A la ligne 3, on demande la connexion qui s'exécutera ensuite de façon asynchrone (on n'attend pas la fin de la phase de connexion pour passer à l'instruction suivante).

Le premier paramètre de la procédure "connect" est une chaine de caractères contenant le nom ou l'adresse IP du broker. Le second est un entier indiquant le port de connexion du broker. Le troisième est un entier qui indique le temps minimum en seconde entre deux communications client/broker.

Exemples

# -*- coding:Utf-8 -*-
import paho.mqtt.client as mqtt

def on_connect(client,userdata,flags,result):
	try:
		# corps du traitement qui sera exécuté
		#
		if (result==0):
			print("connexion établie")
		else:
			print("erreur de connexion")
			quit(0)
	except Exception as e: 
		print(e)
		quit(0)

mqttc = mqtt.Client()
mqttc.on_connect = on_connect
mqttc.connect("test.mosquitto.org", 1883, 60)

mqttc.loop_forever()
	
# -*- coding:Utf-8 -*-
import paho.mqtt.client as mqtt
import traceback

def on_connect(client,userdata,flags,result):
	try:
		# corps du traitement qui sera exécuté
		#
		if (result==0):
			print("connexion établie")
		else:
			print("erreur de connexion")
			quit(0)
	except: 
		traceback.print_exc()
		quit(0)

mqttc = mqtt.Client()
mqttc.on_connect = on_connect
mqttc.connect("test.mosquitto.org", 1883, 60)

mqttc.loop_forever()