Choisir le bon protocole pour envoyer des données à des appareils distants

Cet article est basé sur un autre article rédigé par Ubidots dans l' édition de septembre/octobre 2015 du magazine Microsolutions de Microchip.

L'Internet des objets ( IoT ) ne concerne pas seulement des millions d'objets qui nous parlent ; il s’agit aussi, et plus important encore, de notre capacité à leur répondre. Prenons comme exemple les applications d'analyse du commerce de détail. Supposons qu’un détaillant dispose d’un capteur qui compte le nombre de personnes entrant et sortant du magasin. Ces données sont transmises au cloud, où une interface Web conviviale aide le magasin à analyser le comportement des acheteurs en temps réel, en comparant les performances du magasin entre plusieurs magasins ou en voyant comment les taux de visiteur par client évoluent au fil du temps, en particulier lors du lancement d'un campagne de commercialisation.

Cette solution est, en fait, une IoT avec plusieurs fournisseurs qui aident des milliers de détaillants à optimiser leurs performances commerciales (nous avons d'ailleurs publié un tutoriel sur la construction d'un compteur de personnes à l'aide d'un Raspberry Pi et d'un capteur PIR).

Sur la base de ces mesures, imaginez les possibilités si le système pouvait contrôler automatiquement les appareils à l'intérieur du magasin. Il pourrait afficher des publicités contextuelles en fonction du nombre de personnes marchant devant lui, envoyer des codes promotionnels sur les téléphones des acheteurs en fonction de leur sexe et de leur âge, ou peut-être même jouer avec les lumières du magasin pour créer une ambiance spécifique. Être capable de contrôler les appareils enrichirait certainement l'expérience IoT dans le commerce de détail et sur presque tous les autres marchés qui n'ont pas encore été impactés par l' IoT . Prendre des mesures basées sur cette boucle de rétroaction permettra à l’ IoT de réaliser tout son potentiel.

Communication bidirectionnelle pour l' IoT

D'un point de vue technique, la communication du cloud vers l'appareil s'est avérée plus complexe que la communication traditionnelle de l'appareil vers le cloud. Pourquoi donc? Internet a été conçu à l’origine selon un modèle client-serveur, dans lequel le client était toujours l’initiateur de la requête. Jusqu'à présent, cela a permis aux appareils d'initier la communication chaque fois qu'ils ont besoin de transférer des données vers le cloud. Mais que se passe-t-il si le serveur doit transmettre des données à un client sans que celui-ci fasse au préalable une demande ? Les développeurs Web ont mis au point quelques techniques pour surmonter ce défi. Voici trois options que nous considérons comme plus « portables » pour le monde embarqué.

La manière la plus simple de résoudre ce problème de communication est appelée interrogation courte : une méthode par laquelle le client demande périodiquement au serveur si de nouvelles données sont disponibles. Il s’agit de la solution de codage la plus simple, même si elle n’est pas recommandée si vous devez notifier un appareil en temps réel.

L'option suivante est l'interrogation longue. Dans ce cas, le client exécute la requête et le serveur ne répondra que lorsqu'il aura quelque chose à envoyer. Cela permet des notifications push en temps réel du cloud vers les appareils, même si cela nécessite que l'appareil laisse la connexion ouverte aussi longtemps qu'il a besoin d'écouter le serveur. Utiliser cette technique consomme plus d’énergie et risque également de perdre la connexion. Prenons le cas où un appareil contrôle à distance la porte d'un camion. Si une longue demande d'interrogation a été effectuée et que le camion entre ensuite dans un tunnel, la connexion mobile sera interrompue. L'appareil aura alors besoin d'une logique supplémentaire pour mettre fin à la connexion bloquée et en ouvrir une nouvelle.

Une troisième option consiste à utiliser des protocoles plus récents comme CoAp ou MQTT, par exemple, conçus pour offrir une faible latence, des paquets de petite taille et une communication stable sur des réseaux faibles. Ces protocoles plus récents fournissent un canal de communication bidirectionnel, qui à son tour prend en charge les notifications push. Cela en fait de bons choix pour les projets IoT nécessitant la possibilité de contrôler les appareils connectés en temps réel. Le seul inconvénient pourrait être le manque de bibliothèques de micrologiciels et d'exemples pour les appareils intégrés, qui sont nettement plus abondants pour les connexions HTTP.

Le choix du bon protocole dépendra de votre application et de la fréquence à laquelle vous devrez communiquer avec un appareil. Dans l'exemple de projet décrit ci-dessous, une interrogation courte a été choisie car les données ne doivent être mises à jour que toutes les minutes et parce que la manipulation de la matrice LED tout en laissant un support ouvert nécessiterait plus de puissance de traitement.

Pratique pratique

Dans cet exemple, nous voulions explorer comment utiliser la méthode d'interrogation courte pour transmettre les données du cloud Ubidots vers une carte de développement chipKIT™ Uno32™ à l'aide d'un chipKIT Wi-Fi® Shield. Notre exemple suppose qu'un compteur de personnes envoie des données à Ubidots , après quoi notre appareil chipKIT lira la dernière valeur du compteur et l'affichera dans une matrice LED. A noter que la mémoire et la puissance de traitement de la carte chipKIT nous ont permis de contrôler les matrices de LED tout en étant capable d'interroger le cloud Ubidots , comme indiqué ci-dessous :

Nous n'aurions pas pu atteindre une telle quantité de traitement avec d'autres cartes de type Arduino®. Lisez notre article « Transférer des données vers une carte chipKIT avec un LED Maxtix » pour plus d'informations sur la façon dont ce projet a été construit.

Accompagnement pour votre projet de détection

Ubidots est une plate-forme de développement d'applications basée sur le cloud qui non seulement adhère au standard Web (HTTP), mais elle est également spécialement conçue pour l' IoT , fournissant un riche ensemble de fonctions API que les développeurs peuvent comprendre .

De plus, nous travaillons en étroite collaboration avec nos utilisateurs pour déployer des interfaces API spécifiques à nos clients et adaptées à leurs besoins, depuis les points de terminaison TCP/UDP traditionnels qui communiquent des données binaires jusqu'aux protocoles plus avancés comme MQTT ou CoAP.

Lors du développement de projets pour l' IoT , les ingénieurs embarqués s'attendent à un backend robuste pour stocker les données des capteurs, à la capacité d'effectuer des tâches telles que des opérations mathématiques ou statistiques sur ces données, à la possibilité de déclencher des alertes ou des webhooks en fonction des lectures des capteurs et, bien sûr. , la capacité de créer des interfaces conviviales pour leurs clients finaux. Ce sont tous des services proposés par Ubidots pour vous aider à capturer, stocker et donner du sens à votre projet de détection.

Pour commencer à résoudre les problèmes liés à l'Internet des objets dès aujourd'hui, créez simplement un compte Ubidots et envoyez sans effort vos données à la plateforme de développement d'applications IoT Ubidots pour développer, visualiser et déployer votre application de résolution de problèmes dès aujourd'hui.