Envoie d'un message

La fonction publish permet de mettre, en file d'attente d'envoi, un message pour un topic donné. Le message sera envoyé ensuite vers le broker par la boucle de gestion des messages qui appellera une fonction préalablement définie.

Les paramètres important de cette fonction sont :

Remarque : Un quatrième paramètre facultatif peut également être utilisé. Pour plus d'informations voir le site de paho-mqtt.

La fonction publish retourne un objet contenant les attributs suivant :

Remarque : L'objet dispose également de la méthode wait_for_publish() pour attendre que le broker ait réceptionné le message.

La fonction callback on_publish

Si on souhaite faire une action lorsque le message a été transmis au broker, on définit, au début de notre programme, une fonction callback qui sera appelé quand le broker aura accepté le message. La fonction callback sera appelée avec les 3 arguments suivant (dont vous pouvez changer les noms si vous le souhaitez) :

exemple

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

def on_connect(client,userdata,flags,result):
	try:
		if (result==0):
			client.subscribe("/junia/#",2)
		else:
			print("erreur de connexion")
			quit(0)
	except Exception as e: 
		print(e)
		quit(0)

def on_message(client,userdata,message):
	try:
		print("Received message '" + message.payload.decode("utf8")
		+ "' on topic '" + message.topic
		+ "' with QoS " + str(message.qos))
	except Exception as e: 
		print(e)

def on_publish(client,userdata,mid):
	try:
		print("message envoyé mid=",mid)
	except Exception as e: 
		print(e)

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

mqttc.loop_start()
while True:
	# lecture des capteurs
	s=mqttc.publish("/junia/capteur/1","Hello Word !")
	print("message mis en attente mid=",s.mid)
	time.sleep(10)