Choisir le bon protocole pour envoyer des données à des périphériques distants

Cet article est basé sur un autre article auquel Ubidots a contribué pour le numéro de septembre/octobre 2015 du magazine Microsolutions de Microchip.

L'Internet des objets (IoT) ne se résume pas à des millions d'objets qui communiquent avec nous ; il s'agit aussi, et surtout, de notre capacité à interagir avec eux. Prenons l'exemple des applications d'analyse du commerce de détail. Imaginons qu'un commerçant dispose d'un capteur qui compte le nombre de personnes entrant et sortant de son magasin. Ces données sont transmises au cloud, où une interface web conviviale permet au magasin d'analyser en temps réel le comportement des clients, de comparer les performances de plusieurs magasins ou de suivre l'évolution du taux de conversion des visiteurs en clients, notamment lors du lancement d'une campagne marketing.

Cette solution représente en réalité un IoT , avec plusieurs fournisseurs qui aident des milliers de détaillants à optimiser leurs performances de vente (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).

À partir de ces données, imaginez les possibilités offertes par un système capable de contrôler automatiquement les appareils à l'intérieur du magasin. Il pourrait diffuser des publicités ciblées en fonction du nombre de personnes passant devant, envoyer des codes promotionnels sur les téléphones des clients selon leur sexe et leur âge, ou même moduler l'éclairage pour créer une ambiance particulière. La possibilité de contrôler ces appareils enrichirait considérablement l'expérience IoT dans le commerce de détail et dans presque tous les autres marchés qui n'ont pas encore été impactés par l' IoTdes objets. Agir en fonction de ce retour d'information permettra à l' IoT de déployer tout son potentiel.

Communication bidirectionnelle pour l' IoT

D'un point de vue technique, la communication du cloud vers l'appareil s'avère plus complexe que la communication traditionnelle de l'appareil vers le cloud. Pourquoi ? Internet a été initialement conçu selon un modèle client-serveur, où le client est toujours à l'origine de la requête. Jusqu'à présent, cela a permis aux appareils d'initier la communication chaque fois qu'ils ont besoin d'envoyer des données vers le cloud. Mais que se passe-t-il si le serveur doit envoyer des données à un client sans que celui-ci n'ait préalablement effectué de requête ? Les développeurs web ont mis au point des techniques pour surmonter ce problème. Voici trois options que nous considérons plus facilement adaptables au monde de l'embarqué.

La méthode la plus simple pour résoudre ce problème de communication est le polling court : le client interroge périodiquement le serveur pour savoir si de nouvelles données sont disponibles. C’est la solution la plus simple à implémenter, mais elle est déconseillée pour les notifications en temps réel.

L'option suivante est l'interrogation longue. Dans ce cas, le client effectue la requête et le serveur ne répond que lorsqu'il a des données à envoyer. Cela permet l'envoi de notifications push en temps réel du cloud vers les appareils, mais exige que l'appareil maintienne la connexion ouverte aussi longtemps que nécessaire pour écouter le serveur. Cette technique consomme plus d'énergie et présente également un risque de perte de connexion. Prenons l'exemple d'un appareil qui contrôle à distance la porte d'un camion. Si une requête d'interrogation longue est effectuée et que le camion entre ensuite dans un tunnel, la connexion mobile sera interrompue. L'appareil devra alors exécuter une procédure supplémentaire pour fermer la connexion bloquée et en ouvrir une nouvelle.

Une troisième option consiste à utiliser des protocoles plus récents comme CoAP ou MQTT, conçus pour offrir une faible latence, des paquets de petite taille et une communication stable même sur des réseaux à faible débit. Ces protocoles offrent un canal de communication bidirectionnel, prenant en charge les notifications push. Ils constituent donc un excellent choix pour les projets IoT nécessitant le contrôle en temps réel des appareils connectés. Leur seul inconvénient réside dans le manque de bibliothèques de firmware et d'exemples pour les systèmes embarqués, bien plus abondants pour les connexions HTTP.

Le choix du protocole approprié dépend de votre application et de la fréquence de communication avec l'appareil. Dans l'exemple de projet décrit ci-dessous, le protocole d'interrogation courte a été privilégié car les données ne doivent être mises à jour que toutes les minutes et la gestion de la matrice LED avec un connecteur inactif exigerait une puissance de traitement plus importante.

Pratique concrète

Dans cet exemple, nous avons exploré comment utiliser la méthode d'interrogation courte pour transférer des données du cloud Ubidots vers une carte de développement chipKIT™ Uno32™ via un module Wi-Fi® chipKIT. Notre exemple suppose la présence d'un compteur de personnes envoyant des données à Ubidots. Notre dispositif chipKIT lira ensuite la dernière valeur du compteur et l'affichera sur une matrice de LED. Notez 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 interrogeant le cloud Ubidots , comme illustré ci-dessous :

Nous n'aurions pas pu atteindre un tel niveau de puissance de traitement avec d'autres cartes de type Arduino®. Consultez notre article « Envoi de données vers une carte chipKIT avec une LED Maxtix » pour plus d'informations sur la réalisation de ce projet.

Soutien à votre projet de détection

Ubidots est une plateforme de développement d'applications basée sur le cloud qui non seulement respecte la norme web (HTTP), mais est spécifiquement conçue pour l' IoT , offrant un ensemble riche 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 à chaque client afin de répondre à leurs besoins, allant des points de terminaison TCP/UDP traditionnels qui communiquent des données binaires aux protocoles plus avancés comme MQTT ou CoAP.

Lors du développement de projets IoT, les ingénieurs en systèmes embarqués attendent un système dorsal robuste pour stocker les données des capteurs, la possibilité d'effectuer des calculs mathématiques ou statistiques sur ces données, de déclencher des alertes ou des webhooks en fonction des relevés des capteurs et, bien sûr, de créer des interfaces utilisateur conviviales pour leurs clients finaux. Ubidots propose tous ces services pour vous aider à capturer, stocker et exploiter les données de votre projet de capteurs.

Pour commencer dès aujourd'hui à résoudre des problèmes grâce à l'Internet des objets, il vous suffit de créer un compte Ubidots et d'envoyer 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.