Bonjour,
Je viens à nouveau vous appeler à l'aide car je suis cette fois bloqué sur un soucis de gestion du MQTT.
Je veux réaliser un client MQTT qui se connecte sur un broker exterieur.
Dans une fenêtre j'ai réalisé un bouton assurant (lors de l’événement du clic) la connexion et l'abonnement au Topic qui m’intéresse.
La connexion se fait correctement, ainsi que l'abonnement.
J'ai aussi réalisé un bouton "désabonnement" pour vérifier que je peux bien me désabonner, et en l'activant l'erreur m'indique que je ne suis pas connecté au broker. Ce qui m'indique que lorsque le code du bouton "connexion" a fini de se dérouler, mon application se déconnecte toute seule.
De plus je ne reçois pas les notifications envoyées par le broker auquel je me connecte...
Voici mon code du bouton connexion:
Et le code de mon bouton désabonnement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 gMqttSession est un mqttSession nQualité est un entier sTopic est une chaîne gMqttSession..Adresse = SAI_Adresse gMqttSession..Utilisateur = SAI_Utilisateur gMqttSession..MotDePasseUtilisateur = SAI_Mot_de_passe gMqttSession..TimeoutConnexion = SAI_Time_Out gMqttSession..IDClient = SAI_ID_Client gMqttSession..Port = SAI_Port gMqttSession..SessionVide=Faux gMqttSession..Option = 0 SI MQTTConnecte(gMqttSession) ALORS Info("Connexion OK") SINON Info("Problème de connexion. '" + ErreurInfo() + "')") FIN sTopic = SAI_Topic nQualité = mqttQualitéAuPlusUneFois SI MQTTAbonne(gMqttSession, sTopic, nQualité, Procedure_MQTT) ALORS Info("Abonnement OK") SINON Info("Problème d'abonnement. '" + ErreurInfo() + "')") FIN
Voici le code de la procédure globale, paramètre de la fonction MQTTAbonne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 gMqttSession..Adresse = SAI_Adresse gMqttSession..Utilisateur = SAI_Utilisateur gMqttSession..MotDePasseUtilisateur = SAI_Mot_de_passe gMqttSession..TimeoutConnexion = SAI_Time_Out gMqttSession..IDClient = SAI_ID_Client gMqttSession..Port = SAI_Port gMqttSession..SessionVide=Vrai MQTTDésabonne(gMqttSession, SAI_Topic) SI ErreurDétectée() ALORS Info("Problème désabonnement '" + ErreurInfo() + "')") SINON Info("Désabonnement effectué !") FIN
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 PROCÉDURE Procedure_MQTT(pMqttSession est un mqttSession, sTopic est une chaîne, pDonnées est un Buffer) Trace(ChaîneConstruit("La donnée <%1> a été publiée sur le sujet <%2>",pDonnées,sTopic))
J'ai aussi modifié l'automatisme de la procédure globale et paramétrée comme un Thread.
Je précise que je suis certain que le broker envoie des messages car j'arrive à les récupérer avec Mosquitto sur le même Topic.
Voila, je ne sais pas si il faut que je mette ma fonction autre part pour rester connecté au Broker lorsque le bouton est relâché, pour l'instant je sèche ...
Merci à vous de me prêter un peu de votre temps !
Partager