Monter un environnement de démonstration IoT en quelques minutes grâce à un téléphone Lumia et/ou un Microsoft Band
Introduction
Dans le cadre de mon travail auprès des collectivités locales, j’ai de plus en plus de demandes concernant les scénarios d’IoT(Internet Of Things, ou Internet des Objets).
L’IoT c’est la possibilité pour des capteurs (vitesse, température, autre) de collecter des données et de les envoyer à une infrastructure informatique. Au-delà de simplement stocker ces données, cette infrastructure va être en mesure de les analyser, de les présenter à travers par exemple un portail décisionnel, et pourquoi pas de prendre des actions en temps réel.
Mais un projet d’IoT va beaucoup plus loin que cela et ne se limite pas à la télémétrie. En effet, le nombre de capteurs connecté est en croissance exponentielle, générant des Téra Octets de données. Un projet d’IoT consiste donc à être capable non seulement de collecter toutes ces informations provenant des « devices » connectés, mais aussi de comprendre ces données remontées afin de prendre les bonnes décisions en temps réel si nécessaire, d’automatiser ce qui peut l’être, et de faire de la prédiction (notion de Machine Learning). Les scénarios sont infinis, des plus simples aux plus énormes et complexes : Azure et tous ses services font alors parfaitement sens pour ce type de projet, même s’il est tout à fait possible d’internaliser ce type d’infrastructure.
Dans cet article, je souhaite vous montrer comment réaliser une mini démonstration d’un scénario IoT sur la base du projet open source https://connectthedots.io, avec comme objet connecté un Smartphone Lumia qui embarque de nombreux capteurs, et Microsoft Band plus orienté sport et santé.
Les scénarios IoT : il y en a de nombreux !
Mais commençons par évoquer quelques scénarios ou l’IoT va nous aider.
Pour un bailleur social ou une région, cela va consister à équiper des bâtiments de sondes (humidité, température, détection de présence) pour pouvoir investir « au mieux » dans l’isolation des lieux et ainsi faire des économies d’énergie. En effet, au-delà de la technique, il réside toujours un caractère humain à ce type de projet : « et si après des millions d’euros investis pour isoler les bâtiments on s’apercevait que la consommation électrique/Gaz était identique ? ce serait un échec pour le projet ! ». On pourrait, grâce à l’IoT déterminer qu’avant/après, les locataires passent de 19 degrés à 21 dans leur appartement, laissent les fenêtres et porte ouvertes, etc.
Pour un système de métro ou de train, on va être en mesure non seulement de tracer l’activité de cette fourmilière, mais également de faire de la maintenance prédictive, et ainsi éviter d’avoir un escalator en panne en plein « pic » (heure de pointe, vacances scolaires) de consommation de ces services.
Pour des villes ou des communautés d’agglomération la détection de remplissage des poubelles est importante pour optimiser le ramassage de leur contenu et ainsi baisser globalement les coûts de la ville, et donc des impôts (ou baisse de dotation de l’état). On peut imaginer également pour les villes les plus exposées aux aléas du climat de détecter la qualité des routes en période hivernale (gel, ..) et ainsi optimiser l’intervention de ces services techniques en préventif. Que dire de la qualité de l’air, des services d’incendie, de la santé... il n’y a pas de limite aux scénarios !
Même si ce sujet peut dans un premier temps faire penser à un projet « fun » de type domotique évolué, c’est en fait un enjeu « business » majeur, que l’on soit dans le secteur privé ou ou une collectivité locale : réduction des coûts, stratégie d’investissement, santé publique, etc. Et pour cela, il va falloir une infrastructure informatique très adaptative.
Vision de l’infrastructure IoT
D’un point de vue technique, une infrastructure IoT se résume généralement ainsi :
Il y a tout d’abord les « Sensors » (Capteurs) qui vont détecter une information (température, GPS, mouvement, vidéo) et se charger de les acheminer en central.
Optionnel, il y a souvent une « Gateway » (entreprise, bâtiment, ..), chargée de collecter les informations de ces « sensors » et parler à l’infrastructure centrale.
Ensuite pour traiter cette quantité massive de données en mouvement (Sensors X nb d’évènements X nombre de jour de collecte, etc), nous allons avoir dans le portfolio Microsoft de nombreuses technologies permettant de stocker, analyser et prédire en temps réel.
Enfin ces données brutes ou analysées vont être présentées aux utilisateurs , à travers un site web ou un portail, permettant de prendre des décisions et de communiquer sur les données et les actions prises.
Les Capteurs (sensors)
Il existe de nombreux fabricants d’appareils capables de détecter et de communiquer. Cela va de la prise électrique, à des composants embarqués dans des voitures, trains, bâtiments.
Pour les plus « passionnés » vous pouvez également fabriquer vos propres objets connectés en utilisant des contrôleurs comme Arduino ou Rasberry PI. Note : La version 2 de Rasberry PI supporte maintenant Windows 10 en version « IoT » qui est totalement gratuite. Lancez-vous !
Pour les besoins de cette démonstration, nous allons utiliser deux types d’appareils pour simuler à la fois les Sensors, mais aussi les Gateways. Ainsi le schéma proposé correspondra au modèle théorique présenté en amont de cet article :
· Un Smartphone Lumia qui va embarquer une application simulant à la fois le sensor et la Gateway.
· Un Microsoft Band pour simuler particulièrement les scénarios de santé, dans la mesure où il est équipé de nombreux capteurs (rythme cardiaque, chaleur, UV, ..). Il utilisera le Smartphone comme Gateway.
Si vous ne disposez que d’un Smartphone sous Windows et pas de Microsoft Band, vous êtes néanmoins totalement autonome et en mesure de faire toute cette démonstration !
L’infrastructure Technique dans Azure
Maintenant que nous avons nos détecteurs et qu’ils savent communiquer avec Internet, ils vont envoyer à celle-ci (infrastructure technique) de nombreux messages à la seconde, et plus il y aura de capteurs, plus l’infrastructure devra être robuste pour les réceptionner, les analyser et restituer ces précieuses données de façon compréhensible.
Il est tout à fait possible de bâtir une infrastructure informatique sur son réseau privé pour réaliser ces tâches (HyperV, Windows, SQL, ..). Mais le « Cloud » est particulièrement adapté à ce type de projet, en raison de sa flexibilité, de sa puissance, et de sa très haute disponibilité.
Dans cet article nous allons donc utiliser Microsoft Azure pour réaliser cette infrastructure en quelques minutes. Différents composants seront utilisés dans Azure comme le Stockage, un Service Bus, des Stream Analytics, Power BI, etc.
Tous ces services pourront s’adapter aux projets les plus petits (expérimentation, projet pilote) aux projets les plus grossissants, sans pour autant changer votre infrastructure !
Démontrer l’IoT en quelques minutes, avec un téléphone Nokia, un Microsoft Band et Azure : ConnectTheDots
Pour cette démonstration, j’ai créé à l’aide du projet Open Source https://connectthedots.io l’infrastructure nécessaire dans Azure. Techniquement, ce projet est constitué de X « projets » Visual Studio, il suffit de les ouvrir un par un de les exécuter. Tout le travail a été réalisé pour vous en amont par les contributeurs de ce projet.
Tous les aspects d’une solution IoT sont traités dans ce projet Open Source: les sensors de toutes marques, les gateway, mais également tous les éléments pour monter « son » infrastructure dans Azure. C’est un projet communautaire particulièrement complet, et très documenté, qui est très solide pour découvrir les apports de L’IoT dans votre environnement.
Dans mon cas, je n’ai utilisé qu’une partie du projet Global :
· Coté Sensor, le projet Microsoft Band. Celui-ci va être compilé et envoyé dans mon téléphone qui va servir de Gateway. Ensuite, via Bluetooth le Microsoft band va envoyer toutes les données à l’application qui se chargera (Gateway de les faire parvenir dans Azure.
=> Ce scénario est parfait pour illustrer un projet de Santé
· Toujours coté Sensor, et si vous n’avez pas de Microsoft Band, vous pouvez utiliser le projet pour Windows Phone. L’application proposée parlera aux sensors de votre Smartphone comme le gyroscope, le capteur luminosité, et pourra même simuler la température et humidité. Tout le monde a son Smartphone dans la poche, tout le monde peut alors démontrer le scénario !
· Coté infrastructure technique Azure, il existe un projet dont le seul rôle est de créer pour vous tous les composants dans le Cloud Microsoft. Vous n’aurez qu’à fournir votre convention de nommage.
Démo 1, Microsoft Band : simulation d’un projet IoT de santé
Ce scénario a l’avantage de montrer à la fois un sensor (le MS Band) et la Gateway (le smarphone).
Cette application Windows Phone est connectée au MS Band via Bluetooth montrant ainsi une connectivité sensor/Gateway autre qu’IP. Elle va collecter les données des capteurs et les envoyer à Azure en continu. Lors du lancement de l’application, vous n’aurez qu’à fournir les éléments de connexion que vous aurez préalablement générés avec le projet de configuration (nom du service HUB, clés de connexion, .. Etc). Personnellement j’ai ajouté directement ces éléments dans le code du projet pour éviter les erreurs de frappe.
Pour la démonstration, le mieux est de rester dans Visual studio (il suffit de connecter le Smartphone au PC via un câble). L’avantage est qu’en mode Debug, il est possible de voir plus précisément tous les messages envoyés par l’application et de montrer la partie cachée du process. Cela permet une meilleure interaction avec l’audience.
Dans l’application Smartphone, dès que vous cochez la case d’un « sensor » (ci-dessous le rythme cardiaque), l’application va récupérer du Microsoft Band les données et envoyer à Azure. Décochez la case ou arrêtez l’application, plus aucune donnée n’est envoyée.
Dans cet écran vous pouvez voir en bas la fenêtre de « Trace » de Visual Studio affichant tous les évènements envoyés pendant la démonstration. Vous pouvez également installer sur votre PC l’application permettant d’afficher l’écran de votre téléphone, c’est parfait pour une démonstration avec un rétro projecteur.
Au-delà de collecter les données dans Azure, nous pourrions imaginer un scénario de détection de problème de santé. Par exemple, générer une alerte lorsque mon rythme cardiaque dépasse les 110 pulsations, ou alors plus précis encore « dépasse les 110 pulsations depuis 60 secondes ».
Ce type de scénario prend tout son sens lorsqu’il s’agit d’un environnement de santé ou de maison de retraite. La détection d’une chute peut utiliser le gyroscope embarqué également.
Ci-dessous, vous avez la vue « Azure » de l’arrivée de ces évènements. Nous voyons ici sur l’Event Hub qui collecte toutes ces données. Le tableau de bord nous montre qu’il y a de l’activité. Comptez quelques minutes (chez moi environ 10) pour que ce tableau de bord soit mis à jour dans Azure (voir plus loin la démonstration power BI sur les données qui en revanche est en quasi temps réel).
Attention : le tableau de Bord Azure nécessite environ 10 minutes pour afficher les données, mais au sein de votre application, les données sont traitées en temps réel !
Démo 2, Téléphone Nokia : scénario généraliste
Si vous n’avez pas de Microsoft Band, vous allez alors utiliser l’application pour Smartphone Windows. Celui-ci est équipé nativement (la liste dépend du modèle) d’un certain nombre de capteurs que nous allons être en mesure d’utiliser. L’appareil servira alors à la fois de « Sensor » et de « Gateway ».
Toujours dans la liste des projets Connect the Dots, ouvrir et lancer l’application Smartphone :
Sur la même logique que le projet « Band », l’application va détecter le gyroscope (3 axes), la quantité de lumière, et aussi simuler deux faux détecteurs (température et humidité).
Toujours la fenêtre de trace de Visual Studio, nous voyons les messages partir vers Azure dès que l’on sélectionne un des capteurs (case à cocher).
Ces deux projets vont faire parvenir les messages dans la même infrastructure Azure, ce qui rend cette démonstration très simple. Il sera possible ensuite de faire de l’analyse par « sensor », par « device, » etc… simulant ainsi la réalité d’un projet d’IoT.
Nous utiliserons pour cela l’interface graphique et intuitive de Power BI.
Restituer les données via Power BI
Lorsque les données arrivent en flux continu, le composant Azure Stream Analytics (via une requête SQL) va extraire « les » données dont nous avons besoin, et donc bien souvent également réaliser des calculs pour nous. A titre d’exemple « une moyenne par minute » du rythme cardiaque est bien mieux que de récupérer des centaines de messages de ce même capteur. Les messages arriveront bien dans Azure, mais Stream Analytics va faire ces agrégations/calculs pour nous) avant de nous déposer les données pour analyse ou restitution.
Une fois ces données extraites par Stream Analytics, Power BI va être en mesure de prendre celles-ci et les restituer graphiquement.
Voici un exemple de tableau de bord très simple sur la base du scénario Microsoft Band :
Ici un tableau de bord Power BI avec 4 analyses. En bas à gauche vous pouvez voir mon rythme cardiaque s’accélérer pour dépasser les 100 pulsations. En même temps, en bas à droite, vous voyez les variations X,Y,Z du Gyroscope de mon bracelet Band, pendant que je fais de l’exercice.
Ce « Tableau de Bord » power BI va être mis à jour automatiquement et en quasi temps réel (versus le tableau de bord technique présenté dans le portail Azure sur l’Event Hub), à mesure que les données arrivent dans la configuration mise en œuvre dans Azure.
Pour cette démonstration (MS Band ou Lumia) il suffit de faire varier les différents capteurs et après quelques secondes les graphiques de ce portail vont s’animer, montrant ainsi la simplicité et la puissance de ce type d’infrastructure dans Azure.
Beaucoup d’autres scénarios vous attendent dans ConnectTheDots !
=> Pour voir cette démonstration en vidéo (les deux applications + PowerBI) Cliquer Ici.
Conclusions
L’IoT va être de plus en plus utilisé à la fois par les entreprises mais aussi sur le secteur public.
Ce type de collecte de données nécessite une infrastructure informatique très robuste, très adaptative, et Azure est particulièrement armé pour répondre à ce besoin sur le plan technique mais également économique (facturation à la minute, etc).
Azure dispose de tous les services nécessaires (collecte des données, stockage, analyse, Machine Learning). En raison de sa très grande capacité à s’adapter au besoin du client, il va vous accompagner depuis le début (expérimentation) jusqu’à une exploitation massive au sein de votre projet.
Le projet Open Source « ConnectTheDots » contient tous les composants pour découvrir, démontrer et aussi démarrer un projet de ce type. Réaliser son propre démonstrateur avec Azure, un téléphone Nokia et un Microsoft Band ne prend que quelques minutes.
Félicitations à tous les contributeurs de ce projet qui fonctionne parfaitement et qui est très bien documenté. Un merci spécial à Olivier Bloch.