“L’injection massive est utilisée pour peupler Thing’in”
Thing in the future est la plateforme de recherche intégrative dédiée au domaine de l’Internet des Objets. Son objectif est de référencer des objets connectés ou non connectés du monde physique et de tisser des relations entre eux. Pour simplifier la terminologie, les jumeaux numériques des objets physiques sont appelés avatars dans Thing in the future. Thing in the future est une plateforme muti-faces qui s’adresse à différents acteurs. Elle s’adresse aux propriétaires et fournisseurs d’objets qui créent dans Thing’in les avatars de leurs objets, les relations entre leurs avatars et leurs environnements, les modalités et les informations pour y accéder. Les services consommant ces informations constituent un deuxième type d’acteur. Les développeurs d’outils tiers sont également des acteurs qui mettent à disposition des utilisateurs des briques logiciels permettant d’enrichir, de traiter ou de visualiser des avatars sur des cartes 2D ou 3D. Pour rendre cette plateforme attractive, elle doit être extrêmement riche d’information. Thing’in a été initialisé par de l’injection massive permettant d’ajouter au graphe des millions d’avatars de différentes natures (capteur, actionneur, mobilier, immobilier, etc.) provenant du monde du transport, de la smart city, du smart building, de l’agriculture ou encore de la santé. Ces avatars sont reliés entre eux afin de construire des passerelles entre les objets de différents domaines et faciliter la conception de services cross-domaine. Découvrez les méthodes d’injection utilisées et les outils développés pour ajouter des avatars et des relations dans le graphe de Thing’in et construire petit à petit un annuaire mondial des objets.
Comment découvrir et “scanner” le monde ?
L’outil “Photo Scan” utilise un algorithme de reconnaissance d’image afin de découvrir de manière semi-assistée le type de l’objet photographié mais pas nécessairement de l’identifier de manière unique. Pour pallier cela, des mécanismes basés sur le croisement d’informations provenant de différents modes de capture (multi-modalités) et l’analyse des interconnexions dans le graphe peuvent aider à identifier les objets de façon unique. La mise en relation de cet objet (connecté ou pas) avec les autres objets du graphe se fait via la création de relations vers d’autres avatars présents dans le graphe de Thing’in comme par exemple la pièce dans laquelle il se trouve, le bâtiment ou simplement le dispositif qui a permis l’injection. Il est important de mettre l’objet en relation avec les autres objets de son environnement car la connaissance du contexte entourant l’objet permet de l’identifier de façon unique. Prenons l’exemple d’une tasse prise en photo. L’algorithme de reconnaissance d’image reconnait l’objet tasse. L’identification est faite à l’aide des champs/attributs à renseigner provisoirement tel que le nom ou la couleur de l’objet. A terme, la reconnaissance sera spontanée. L’interface graphique de l’outil “Photo Scan” permet d’ajouter très facilement une instance de l’objet et ses relations dans Thing’in. L’avatar d’objet est ainsi créé et intégré dans le graphe global de Thing’in.
L’outil “Radio scan” permet l’injection d’objets connectés dans le graphe par découverte protocolaire des équipements communiquant sans fil en wifi, bluetooth ou NFC à l’aide d’ondes radio. La détection des objets connectés est faite en analysant les messages échangés par les objets. A domicile, il est possible de découvrir tous les objets connectés à portée tels qu’un ordinateur portable, une tablette, une montre ou un bracelet connecté, une enceinte connectée, un détecteur de présence et bien d’autres objets. En mobilité, l’outil détectera d’autres types d’objets connectés, comme un beacon ou un hotspot qu’on trouve dans les magasins, les restaurants ou les lieux publics. Les avatars sont ajoutés dans le graphe en créant des relations vers d’autres avatars décrivant le contexte.
La reconnaissance d’objet peut également se faire en se basant sur une signature sonore. L’outil “Sound scan” reconnait des sons qui permettent d’identifier un certain nombre d’objets présents dans une maison tels qu’un instrument de musique, une bouilloire, une machine à laver et d’autres objets électroménagers. A terme, l’outil “Sound scan” sera en mesure de reconnaitre un nombre beaucoup plus important d’objets, y compris des objets industriels. La reconnaissance sonore permet de reconnaitre un objet mais également de détecter un changement d’état de cet objet comme par exemple une machine à laver qui passe en phase d’essorage. L’objet “Machine à Laver” est créé dans Thing’in par l’outil et son état est mis à jour dès que l’algorithme de reconnaissance sonore détecte un nouveau son signalant un changement d’état. On peut ainsi imaginer un service qui informera l’utilisateur par l’envoi d’un SMS ou d’un mail que sa lessive est quasiment terminée.
Le peuplement de Thing’in serait très long à réaliser en créant les avatars un par un. En faisant appel aux API de la plateforme, il est possible d’accélérer l’enrichissement de la base de données en créant automatiquement les avatars et les relations via un programme. L’injection massive est utilisée pour peupler Thing’in à partir de sources de données conséquentes telle que les opendata, les plans numériques de bâtiments ou encore les cartes Openstreetmap. Les injections massives de zones Openstreetmap ou de plans numériques de bâtiments permettent de créer dans le graphe des avatars d’objets et des relations qui représentent toutes les routes d’une carte ou tous les étages et toutes les pièces d’un bâtiment. Pour injecter une carte Openstreetmap, l’utilisateur sélectionne la zone géographique qui l’intéresse. Toutes les routes de la zone sélectionnée seront injectées dans Thing’in. L’injection d’un plan numérique de bâtiment décrit au format Building Information Model (BIM) est réalisée en créant dans Thing’in tous les avatars correspondant à la topologie du bâtiment.
Un bâtiment étant composé de plusieurs étages, dans la représentation sous forme de graphe, chaque étage est relié au bâtiment et à l’ensemble des pièces qui le constituent. Une pièce est elle-même constituée de murs, sol, plafond, fenêtres et de portes, eux-mêmes reliés à la pièce par des relations de contenance ou d’appartenance. Entre deux pièces, on aura des relations d’adjacence ou de passage s’il y a une porte ou un accès entre les deux pièces. Les objets connectés ou non connectés peuvent également être reliés à une pièce s’ils sont présents dans la pièce (relation IsIn). Ces informations sont très utiles pour développer des services de gestion du bâtiment. Thing’in fournit toutes les fonctions de recherche permettant de trouver, par exemple, les objets les plus proches de telle pièce ou le plus court chemin pour aller chercher un extincteur.
Comment architecturer Thing’in pour gérer des milliards d’objets ?
L’injection de données très diverses fait croitre la taille du graphe constamment. A ce jour, la plateforme Thing in the future compte plus de 51 millions d’avatars, parmi lesquels on trouve des avatars de différentes natures reliés entre eux (des antennes GSM, des routes, des bâtiments, des lampadaires, des feux tricolores, des parkings, des vélos, etc.). La croissance dans le temps du graphe d’objets et de relations est assurée en s’appuyant sur la capacité de la plateforme à “scaler”. Elle peut se déployer très largement grâce à son architecture cloud distribuée conçue nativement de telle façon que des unités de traitement sont allouées dynamiquement selon les besoins. A ce jour, Thing’in est déployée sur l’infrastructure Cloud public d’Orange. A terme, le graphe des avatars sera géo-distribué à travers le monde sur différentes infrastructures hébergées par Orange et/ou possiblement par ses partenaires pour optimiser les coûts et la qualité de service (en se rapprochant des utilisateurs). Pour ce faire, le graphe doit être partitionné intelligemment pour pouvoir distribuer les données sur un ensemble de serveurs répartis sur plusieurs datacenters tout en préservant les performances. Cette distribution géographique doit prendre en compte la caractéristique principale du graphe de Thing’in : quel que soit le nombre d’objets gérés, leur nature (capteur, actionneur, mobilier, immobilier, etc.) ou leur domaine, leurs avatars sont interconnectés dans un unique graphe massif. La difficulté principale consiste à “découper” ce graphe de manière à éviter que les requêtes des utilisateurs aient à solliciter plusieurs serveurs pour obtenir la réponse, car ceci pénaliserait énormément les temps de réponse.
La figure ci-dessus illustre le partitionnement d’un graphe composé de nœuds formant trois parties faiblement interconnectées. Ce graphe peut être divisé en trois parties, chaque sous-graphe étant géré par un serveur. Le graphe de Thing’in est une représentation assez fidèle des réseaux très enchevêtrés de relations qui existent entre les objets dans la vie réelle ; de ce fait, il est très complexe de le partitionner. Les interconnexions entre serveurs entrainent des lenteurs et un compromis est à trouver entre le partitionnement du graphe et les performances. Les travaux de recherche menés dans l’équipe ont pour objectif d’apporter des solutions performantes de partitionnement du graphe de Thing’in qui sera très largement géo-réparti. Une attention particulière a été mise sur l’optimisation des recherches géographiques afin de trouver les avatars localisés dans une zone géographique donnée. Le partitionnement du graphe prend en considération différents facteurs et tente de regrouper les avatars en fonction de leurs positions GPS.
Thing’in a été conçu pour pouvoir gérer un nombre illimité d’avatars et de relations et devenir le référentiel mondial pour le web des objets. Des outils sont mis à disposition pour aider l’utilisateur à représenter ses objets dans le graphe. Le passage à l’échelle est simplifié par les capacités de scalabilité, de résilience et d’automatisation des plateformes cloud. Grâce aux travaux de recherche menés, le passage d’un mode centralisé vers un mode très largement distribué va permettre de déployer massivement le graphe de données sans impacter les performances du point de vue de l’utilisateur final. Il reste encore beaucoup de travaux à mener autour de la sécurité et de la protection des données pour atteindre l’ambition d’Orange avec cette plateforme qui doit, en permanence, s’adapter pour répondre aux nouveaux usages des utilisateurs tout en réduisant sa consommation d’énergie pour protéger la planète.
Thing’in, la plateforme du graphe des objets
Au-delà de l’Internet des Objets : Jumeaux Numériques et Systèmes Cyber-Physiques
Le BIM pour construire le monde de demain – Autodesk
BIM : l’importance du fichier en format IFC – BibLus
Pour en savoir plus sur le partitionnement de graphe :
Utilisation d’un graphique partitionné dans Azure Cosmos DB
DSE Graph partitioning
ArangoDB Enterprise SmartGraphs: Scaling with Graphs
Partitionnement de graphe (Wikipedia)