Du Windows 10 au cœur de l’IoT, pourquoi et comment ?
Des objets connectés fonctionnant sous Windows ? C’est aujourd’hui possible. Avec Windows 10 IoT Core, récemment mis à jour en version « Creative Update », le système de Microsoft s’offre une cure d’amincissement tout en restant fidèle au runtime UWP.
Windows a souvent été considéré comme un mastodonte, un OS « lourd ». Depuis Vista, Microsoft n’a d’ailleurs eu de cesse de chercher à l’alléger en détricotant les couches afin de retrouver un cœur aussi minimaliste et transposable que possible.
L’effort a abouti à Windows 10 et à son approche universelle avec des déclinaisons pour PC, smartphones, console Xbox One mais aussi des déclinaisons plus étonnantes comme Windows Server Nano (particulièrement adaptée aux conteneurs en raison de sa compacité) par exemple.
Cet effort a parallèlement permis à Windows de trouver sa place dans un écosystème « IoT » (Internet of Things) en plein essor mais jusqu’ici largement animé par Linux.
Windows 10 IoT Core
C’est ainsi qu’est né Windows 10 IoT Core en 2015. A l’époque le système était bien plus expérimental qu’exploitable (il n’y avait ni support du Wi-Fi ni du Bluetooth par exemple). Mais il n’a cessé depuis de gagner en richesse, en ouverture et en solidité.
Et si l’éditeur semble toujours assez discret autour de cette déclinaison minimaliste de Windows, il n’en demeure pas moins très actif. Pour preuve, la mise à jour Windows IoT Core « Creators Update » a été introduite en même temps que les éditions PC. Elle comporte nombre d’améliorations dont la plus importante est sans conteste l’intégration de Cortana. Cette dernière permet ainsi l’apparition des premiers objets connectés embarquant l’assistant personnel de Microsoft à l’instar de l’enceinte connectée « Invoke » présentée il y a quelques jours par Harman Kardon.
Accessoirement, elle permet également à tous bidouilleurs en herbe de transformer leur Raspberry Pi3 en assistant Cortana d’un simple claquement de doigt (ou presque).
Un Windows embarqué
Microsoft a toujours décliné Windows sur le marché de l’embarqué. Mais Windows IoT Core n’a pas grand-chose à voir avec les précédentes variantes Windows Embedded Compact 8 (hérité de Windows CE) et Windows Embedded Standard 8 (version très modulaire de Windows 8). Il n’est l’héritier direct ni de l’un, ni de l’autre.
Contrairement à ses prédécesseurs, Windows IoT Core est une version de Windows dénuée de bureau ou d’interface en ligne de commande mais il est capable d’exécuter des application UWP qu’elles aient ou non une interface utilisateur. Autrement dit, le système par lui-même n’a pas d’UX mais les applications qui s’y exécutent peuvent en avoir une.
On notera au passage que la plateforme est relativement complète puisque les apps UWP sous Windows 10 IoT Core supportent DirectX, XAML et HTML5. De quoi offrir des interfaces très riches à tous les objets connectés dotés d’un écran. L’intégration de Cortana permet par ailleurs d’étendre les interactions à la voix.
S’il n’y a ni bureau ni command prompt, comment interagit-on avec l’IoT, notamment lorsque l’on développe ? Et bien plusieurs mécanismes sont possibles.
L’un d’eux consiste à envoyer des commandes PowerShell puisque le système supporte en standard PowerShell Remoting permettant l’exécution distante de commandes et scripts PowerShell.
Un autre exploite un navigateur Web, le système exposant un portail permettant notamment sa configuration à distance. Il est même possible d’utiliser Remote Desktop moyennant quelques manipulations préalables.
Pour être tout à fait complet, signalons que Windows 10 IoT est également déclinée en deux autres éditions : Windows 10 IoT Mobile et Windows 10 IoT Entreprise. Toutes deux sont des variantes de Windows 10 Mobile et Windows 10 Entreprise permettant de verrouiller précisément l’appareil sur un applicatif spécifique afin d’animer des terminaux de saisie mobiles, des caisses enregistreuses, des bornes intéractives, etc.
Un Windows pour les Makers, entre autres…
Les développeurs et les « Makers » (cette nouvelle génération de jeunes bricoleurs électroniques réconciliés avec le hardware et affichant une volonté de créer des objets tangibles) sont les premières cibles de Windows 10 IoT Core.
L’OS est d’ailleurs certifié pour certaines cartes d’hobbyistes : Raspberry Pi 2, Raspberry Pi3, Dragonboard 410c, Intel Joule, Minnowboard Max et Intel Compute Stick. On notera au passage que le système est aussi ouvert au monde ARM qu’au monde Intel et se contente de moins de 400 Mo de RAM.
Github propose plus d’une centaine d’exemples pratiques comme des serveurs multimédia, des contrôleurs Home Automation, des stations météo, machine à café. Tous sous Windows IoT Core.
Mais l’OS est aussi une aubaine pour toutes les entreprises qui commencent à réfléchir aux atouts des IoTs dans leur Business et dont les services de développement sont déjà très habitués à l’univers Microsoft, .NET et Visual Studio. Il leur permet de rapidement lancer des projets IoT en s’appuyant sur les compétences et savoirs préexistants.
Comme nous l’avons vu, les applications Windows IoT Core s’appuient sur la plateforme UWP (Universal Windows Platform) commune aux ordinateurs, smartphones et tablettes sous Windows 10 ainsi que les Hololens et la Xbox One. Le développement IoT se fait principalement en C++, C#, Node.JS ou Python.
Par ailleurs, les objets animés par IoT Core sont administrables par les politiques Windows. Si la jointure à un domaine n’est pas possible, l’administration des appareils via Microsoft Intune (autrement dit via le Cloud) ou via System Center est en revanche supportée.
Premiers pas
Pour bien démarrer avec Windows IoT Core, le plus simple est encore d’ouvrir son navigateur sur le site Get Started. Celui-ci présente les différentes procédures d’installation pour les différentes plateformes supportées.
D’une manière générale, la première étape du processus (après le choix de la plateforme) sera le téléchargement d’une application Windows 10 dénommée : Windows 10 IoT Core Dashboard.
Celle-ci permet de générer une carte SD (ou autre support selon les plateformes) contenant Windows 10 IoT et de définir le nom à donner à l’IoT ainsi que le mot de passe du compte Administrateur de l’OS embarqué.
Il n’y a plus qu’à démarrer le Raspberry Pi3 (ou autre appareil sélectionné) avec la carte SD pour Flasher l’appareil avec ce Windows 10 IoT. Le logiciel Dashboard sur le PC permettra de vous connecter à l’IoT, d’exécuter les exemples livrés en standard par Microsoft et de paramétrer certains éléments du système.
Après ces premiers pas, il ne vous restera plus qu’à installer Visual Studio Community 2017, à choisir les squelettes d’applications IoT proposés par l’IDE de Microsoft et à commencer à développer votre application embarquée dans l’IoT.
Visual Studio offre toutes les fonctionnalités permettant de déployer votre application sur l’IoT et de la déboguer à distance. Les applications ainsi développées peuvent être plus ou moins complexes. Elles peuvent surtout tirer profit du Cloud de Microsoft et de ses services d’intelligence artificielle (comme les Cognitive Services)
L’approche pas à pas très guidée et illustrée du Dashboard est sans doute l’une des grandes qualités de Windows IoT Core. Il rend la prise en main de ce système et la découverte du développement IoT relativement triviale et accessible à tous. D’autant que, ne l’oublions pas, Windows IoT Core est la seule déclinaison de Windows qui soit véritablement gratuite. Il n’y a même pas de clé série à saisir et ni d’activation.
Windows IoT Core + Azure IoT Hub + Azure IoT Edge
Aujourd’hui chez Microsoft, rien n’existe sans être amplifié par le Cloud Azure. Il en va de même de Windows 10 IoT Core.
Non seulement les Apps peuvent exploiter la multitude de services hébergés par Azure pour étendre leur intelligence et leurs capacités, mais Azure fournit également un IoT Hub particulièrement adapté à la récupération sécurisée de toutes les données télémétriques produites par les objets. Le service permet aussi de gérer vos objets depuis une interface unique.
En outre, lors de la Build 2017, Microsoft a annoncé un nouveau service : Azure IoT Edge.
Il s’agit d’un Framework qui permet d’exécuter vos services Azure, vos fonctions IA Cloud directement sur l’IoT. Non limité à Windows, le framework s’exécute y compris sur un Raspberry Pi avec seulement 128 Mo de RAM. Il permet d’exécuter les Azure Functions et de traiter les données en transférant ces tâches normalement exécutées dans Azure au cœur de l’IoT afin de poursuivre les traitements même avec une connectivité Cloud intermittente.