Mon voyage dans le nuage (14) : retour sur le serveur MQTT
sur
J'avais déjà réalisé un traitement rudimentaire des erreurs : l'ESP8266 renvoie bien « ERROR », par ex. si la liaison TCP/IP ne s'établit pas. Les réponses du serveur reçues via TCP/IP n'ont pas encore été traitées. En réponse à la commande CONNECT, le serveur MQTT répond par ex. avec les octets « 32 2 0 0 » si la tentative de connexion a abouti et qu'il est possible de publier un message.
J'ai adjoint la fonction TCPClient_Receive(byte TCPBytesReceivedBuffer[) à ma bibliothèque TCP/IP rudimentaire. Elle fait demander à l'ESP8266, si les octets du serveur ont été reçus et les écrit dans la zone mémoire retransmise sous forme de paramètres. Je pouvais désormais utiliser la fonction MQTTClient_Connect(String clientid) de la bibliothèque MQTT pour traiter les octets reçus. En cas de réussite, la fonction renvoie un 1 et dans la négative, un 0. Dans la fonction d'appel (qui, comme indiqué ci-dessus, s'exécute périodiquement), j'ai utilisé la valeur retournée pour allumer la diode rouge si la tentative de connexion n'aboutit pas ce qui arrive en effet de temps en temps.
À ce stade, j'étais capable de recevoir et d'évaluer les octets du serveur et je voulais aller plus loin et poursuivre ma programmation. J'ai ajouté à ma bibliothèque MQTT une fonction capable d'envoyer une demande SUBSCRIBE d'abonnement à des messages et, là encore, d'évaluer la réponse du serveur. Rapidement, j'ai aussi réussi à recevoir sur la carte Pretzel les messages envoyés par un autre client MQTT sur Internet. Pour cela, la nouvelle fonction
MQTTClient_Get(byte MQTTBytesPayloadBuffer[]) doit être appelée périodiquement. Il y a quelque chose que je ne savais pas encore : le courtier transmet 1:1 (à l'identique) les octets envoyés par le client MQTT d'expédition et contenus dans la commande MQTT PUBLISH à tous les clients qui se sont abonnés au « Topic » (Topic compris, avec bien-sûr les données elles-mêmes et les octets de longueur). Dans le prochain épisode, je présenterai de manière plus détaillée la réception des messages MQTT par la carte Pretzel, avec comme il se doit une petite application de démonstration.
Dans cet épisode, vous trouverez en premier lieu le logiciel étendu de ma petite carte capteur en téléchargement. Au-delà de l'amélioration du traitement des erreurs j'ai nettoyé et amélioré le niveau d'abstraction du code. Il y a par ex. des fonctions spécifiques destinées au retour d'information par la LED RGB et la LED bleue de la carte. Cela facilite le portage vers un autre matériel. Le code est désormais commenté. Si vous souhaitez aller plus loin, vous pouvez également télécharger à nouveau le croquis Arduino du dernier épisode pour le comparer à la version actuelle.

Discussion (0 commentaire(s))