Présentation technique de l'Internet des objets

L'Internet des objets, ou IoT (Internet of Things), est un vaste ensemble de technologies et de cas d'utilisation qui ne répond pas à une définition claire et unique. Une approche réaliste définit l'IoT comme l'utilisation d'appareils connectés au réseau et intégrés à l'environnement physique pour améliorer un processus existant ou permettre un nouveau scénario impossible à mettre en place auparavant.

Ces appareils, ou objets, se connectent au réseau pour diffuser les informations qu'ils recueillent sur l'environnement via des capteurs, ou pour permettre à d'autres systèmes de communiquer et d'agir sur le monde physique par le biais d'actionneurs. Il peut s'agir de versions connectées d'objets courants que vous connaissez peut-être déjà ou de nouveaux appareils spécialement conçus pour des fonctions qui ne sont pas encore disponibles. Il peut s'agir d'appareils que vous possédez personnellement et que vous emportez avec vous ou gardez à la maison, ou qui sont intégrés à des équipements en usine ou à une partie du réseau de la ville où vous vivez. Chacun d'eux est capable de convertir des informations précieuses du monde réel en données numériques fournissant une visibilité accrue sur les interactions des utilisateurs avec vos produits, services ou applications.

Les cas et possibilités d'utilisation spécifiques dans différents secteurs d'activité sont multiples et à bien des égards, le développement de l'IoT ne fait que commencer. Il ressort de ces scénarios un ensemble de défis et de modèles communs. Par rapport aux autres applications technologiques basées sur le cloud, les projets IoT présentent des aspects supplémentaires qui augmentent leur complexité, par exemple :

  • Du matériel différent
  • Des systèmes d'exploitation et logiciels différents sur les appareils
  • Des exigences différentes en matière de passerelle réseau

Ce guide explique les éléments que vous pouvez associer à Google Cloud pour créer une solution IoT intégrale robuste et facile à gérer sur Google Cloud.

Présentation des composants de niveau supérieur

Ici, nous divisons le système en trois composants de base, à savoir l'appareil, la passerelle et le cloud :

Trois composants : appareil, passerelle et cloud

Un appareil comprend du matériel et des logiciels qui interagissent directement avec le monde. Pour communiquer entre eux, les appareils se connectent à un réseau ou à des applications centralisées. Ils peuvent se connecter directement ou indirectement à Internet.

Une passerelle permet aux appareils n'étant pas directement connectés à Internet d'accéder aux services cloud. Bien que le terme passerelle ait une fonction spécifique dans la mise en réseau, il est également utilisé pour décrire une classe d'appareils qui traitent des données pour le compte d'un groupe ou d'un cluster d'appareils. Les données de chaque appareil sont envoyées à Google Cloud, où elles sont traitées et associées aux données d'autres appareils, et éventuellement à d'autres données transactionnelles.

Types d'informations

Chaque appareil peut fournir ou utiliser différents types d'informations. Chaque type d'information peut être géré par un système backend différent, et chaque système devrait être spécialisé en fonction du débit de données, du volume et de l'API préférée. Cette section répertorie et décrit les catégories d'informations courantes trouvées dans les scénarios IoT.

Métadonnées de l'appareil

Les métadonnées contiennent des informations sur un appareil. La plupart des métadonnées sont immuables ou changent rarement. Voici quelques exemples de champs de métadonnées :

  • Identifiant (ID) : identifiant qui identifie un appareil de manière unique. L'ID d'appareil ne doit jamais changer pendant toute la durée de vie d'un appareil déployé.
  • Classe ou type
  • Modèle
  • Révision
  • Date de fabrication
  • Numéro de série du matériel

Informations d'état

Les informations d'état décrivent l'état actuel de l'appareil et non celui de l'environnement. Ces informations peuvent être accessibles en lecture/écrire. Elles sont mises à jour, mais pas fréquemment en principe.

Télémétrie

Les données collectées par l'appareil sont désignées par le terme télémétrie. Il s'agit des données "yeux et oreilles" que les appareils IoT fournissent aux applications. La télémétrie est une donnée accessible en lecture seule concernant l'environnement, généralement collectée à l'aide de capteurs.

Chaque source de télémétrie constitue un canal. Les données de télémétrie peuvent être conservées en tant que variables d'état sur l'appareil ou dans le cloud.

S'il est possible que chaque appareil n'envoie qu'un seul point de données toutes les minutes, lorsque vous multipliez ces données par un grand nombre d'appareils, il faut rapidement appliquer des stratégies et des modèles de big data.

Commandes

Les commandes sont des actions effectuées par un appareil. Elles présentent souvent des caractéristiques qui limitent les choix disponibles dans votre mise en œuvre. Par exemple :

  • Les commandes ne sont pas facilement représentées sous forme de données d'état.

  • Souvent, les commandes ne sont pas idempotentes, ce qui signifie que chaque message dupliqué a généralement un résultat différent. Comme les systèmes de messagerie, la mise en œuvre d'une fonction de commande détermine la sémantique de livraison, telle que "au moins une fois" ou "exactement une fois". Le mécanisme de commande peut inclure une valeur de retour ou dépendre de la confirmation effectuée via un message de retour distinct ou en reflétant le changement attendu dans les données d'état.

  • Les commandes pouvant avoir une pertinence temporelle limitée, elles doivent inclure une valeur TTL (Time to Live) ou une autre valeur d'expiration.

Exemples de commandes :

  • Tourner à 360 degrés vers la droite
  • Exécuter le cycle d'autonettoyage
  • Augmenter le taux de 10 %

Informations opérationnelles

Les informations opérationnelles sont les données les plus pertinentes pour le fonctionnement de l'appareil, par opposition à l'application métier. Elles peuvent inclure des éléments tels que la température de fonctionnement du processeur et l'état de la batterie. Ce type de données peut ne pas avoir de valeur analytique à long terme, mais une valeur à court terme pour aider à maintenir l'état de fonctionnement, par exemple en réagissant aux pannes et en corrigeant la dégradation des performances du logiciel après les mises à jour.

Les informations opérationnelles peuvent être transmises sous forme de données de télémétrie ou d'état.

Appareils

Ce qui constitue un appareil n'est pas toujours évident. Beaucoup d'éléments physiques étant modulaires, il peut être difficile de décider si la machine entière est l'appareil ou si chaque module est un appareil discret. Il n'existe pas de bonne réponse absolue à cette question. Lors de la conception de votre projet IoT, vous devrez réfléchir aux différents niveaux d'abstraction dans votre conception, et prendre des décisions quant à la manière de représenter les objets physiques et leurs relations les uns avec les autres. Les exigences spécifiques de votre application vous aideront à comprendre si un élément générant des informations doit être traité comme un appareil et, par conséquent, mérite son propre ID, ou s'il est simplement un canal ou un détail d'état d'un autre appareil.

À titre d'exemple, considérons un projet ayant pour objectif de surveiller la température des chambres dans un hôtel. Dans chaque chambre, il peut y avoir trois capteurs : un au sol près de la porte, un au plafond et un à côté du lit. Vous pouvez modéliser cette configuration en représentant chaque capteur en tant qu'appareil :

{deviceID: "dh28dslkja", "location": "floor", "room": 128, "temp": 22 }
{deviceID: "8d3kiuhs8a", "location": "ceiling", "room": 128, "temp": 24 }
{deviceID: "kd8s8hh3o", "location": "bedside", "room": 128, "temp": 23 }

Vous pouvez également modéliser la pièce entière en tant qu'appareil. Si l'on ne considère généralement pas une pièce comme un appareil, il s'agit en IoT d'un appareil abstrait que vous gérez et enregistrez en tant qu'unité. Les appareils ne se limitent pas toujours à un objet unique que l'on peut tenir dans la main. Dans cette perspective, vous pouvez modéliser la chambre d'hôtel comme un appareil contenant trois capteurs :

{deviceID: "dh28dslkja", "room": 128, "temp_floor": 22, "temp_ceiling": 24, "temp_bedside": 23, "average_temp":  23 }

En fonction des objectifs, l'une de ces deux représentations de données peut être plus correcte que l'autre. Notez le champ de température moyenne dans le deuxième exemple. C'est peut-être ce que l'hôtel recherche. Les métadonnées de chaque capteur ont-elles le plus de valeur lorsqu'elles sont considérées de manière indépendante ? Les éléments de métadonnées distincts ont-ils davantage de sens lorsqu'ils sont appliqués à la pièce dans son ensemble ? Et si la chambre était une suite et que les trois emplacements étaient la salle de bain, le salon et la chambre ? Tel est le genre de questions que vous devez vous poser pour décider comment modéliser les données. Le modèle de domaine de l'application connectée définit la limite exacte de ce qui constitue l'appareil.

Matériel de l'appareil

Considérations générales lors du choix du matériel

Lors du choix du matériel, vous devez tenir compte des facteurs suivants, qui dépendent de la manière dont le matériel est déployé :

  • Coût. Compte tenu de la valeur des données fournies, réfléchissez au coût pouvant être pris en charge pour chaque appareil.
  • Rôles E/S. L'appareil peut être principalement un capteur, un actionneur ou une combinaison des deux rôles.
  • Budget électricité. L'appareil peut avoir accès à l'électricité, ou l'alimentation peut être limitée. Déterminez si l'appareil aura besoin d'une batterie ou d'énergie solaire.
  • Environnement de mise en réseau. Déterminez si l'appareil peut être connecté directement à Internet en tant que routable TCP/IP. Certains types de connexions, tels que les communications cellulaires, peuvent s'avérer coûteux lorsque le trafic est élevé. Pensez à la fiabilité du réseau et à son impact sur le temps de latence et le débit. S'il s'agit d'une connexion sans fil, tenez compte de la portée de transmission et des coûts énergétiques supplémentaires.

Entrées et sorties fonctionnelles

Les appareils utilisés pour interagir avec le monde physique contiennent des composants, ou sont connectés à des appareils permettant une entrée de capteur ou une sortie d'actionneur. Le matériel spécifique que vous choisissez pour ces composants d'E/S matériels doit être basé sur les exigences fonctionnelles. Si vous effectuez une détection de gaz (par exemple, de monoxyde de carbone), indiquez le type de gaz que le capteur peut détecter avec précision. Par exemple, la sensibilité ou la complexité du mouvement que vous devez détecter déterminera le type d'accéléromètre que vous choisissez ou si vous avez besoin d'un gyroscope. Lors de l'utilisation d'un appareil pour produire une sortie, vous devez prendre en compte des exigences telles que le niveau sonore d'une sonnerie, la vitesse d'un moteur ou le nombre d'ampères qu'un relais doit transporter.

Outre les exigences liées aux performances environnementales, le choix de ces composants ou appareils d'E/S peut également être lié au type d'informations auquel ils sont associés. Par exemple, un moteur pas à pas peut être réglé dans une direction spécifique qui peut être représentée dans les données d'état de l'appareil, tandis qu'un microphone peut échantillonner régulièrement des données en termes de fréquences, ce qui est le mieux transmis par télémétrie. Ces composants sont connectés aux systèmes logiques de l'appareil via une interface matérielle.

Plates-formes des appareils

Le matériel spécifique à votre disposition pour la création d'applications IoT est extrêmement diversifié. C'est notamment le cas des plates-formes matérielles disponibles. Parmi celles qui sont couramment utilisées, citons par exemple les ordinateurs à carte unique tels que le BeagleBone et le Raspberry Pi, ainsi que les plates-formes de microcontrôleurs telles que les cartes Arduino, Particle et Adafruit Feather.

Chacune de ces plates-formes vous permet de connecter plusieurs types de modules de capteurs et d'actionneurs via une interface matérielle.

Ces plates-formes s'interfacent avec les modules selon une approche en couches semblable à celle utilisée dans l'informatique grand public. Si vous pensez à la souris d'ordinateur ordinaire et courante, vous pouvez prendre l'exemple des couches d'appareil, d'interface, de pilote et d'application illustrées dans le schéma ci-dessous.

Graphique coloré permettant de comparer les composants d'ordinateur et d'IoT

Sur un système d'exploitation typique, tel que Linux ou Windows, l'entrée matérielle est interprétée par un pilote, qui à son tour repose sur les services du système d'exploitation et peut faire partie du noyau. Pour des raisons de simplicité, le diagramme suivant omet le système d'exploitation.

Interfaces matérielles

La plupart des interfaces matérielles sont des interfaces série. Celles-ci utilisent généralement plusieurs fils pour contrôler le flux et la synchronisation des informations binaires le long du fil de données principal. Chaque type d'interface matérielle définit une méthode de communication entre un appareil et le processeur central.

Les plates-formes matérielles IoT utilisent un certain nombre d'interfaces communes. Les modules de capteurs et d'actionneurs peuvent prendre en charge une ou plusieurs de ces interfaces :

  • USB : la norme Universal Serial Bus (bus universel en série) est couramment utilisée pour un large éventail d'appareils compatibles Plug and Play.
  • GPIO : les broches d'entrée/sortie à usage général sont connectées directement au processeur. Comme leur nom l'indique, ces broches sont fournies par le fabricant pour permettre l'application de scénarios d'utilisation personnalisés que le fabricant n'a pas prévus. Les broches GPIO peuvent être conçues pour acheminer des signaux numériques ou analogiques. Les broches numériques n'ont que deux états : HIGH ou LOW.

    Les GPIO numériques sont compatibles avec la modulation de largeur d'impulsion (PWM, Pulse Width Modulation). La PWM vous permet d'allumer et d'éteindre une source d'alimentation très rapidement, chaque phase "active" étant une impulsion d'une durée ou d'une largeur particulière. Pour l'appareil, cela peut se traduire par une baisse ou une augmentation du niveau de puissance. Par exemple, vous pouvez utiliser la PWM pour modifier la luminosité d'une LED. Plus les impulsions "actives" sont larges, plus la LED est brillante.

    Les broches analogiques peuvent avoir accès à un circuit de conversion analogique-numérique (ADC, Analog-to-Digital Conversion) intégré. Un ADC échantillonne périodiquement une forme d'onde analogique continue, telle qu'un signal audio analogique, donnant à chaque échantillon une valeur numérique comprise entre zéro et un par rapport à la tension du système.

    Lorsque vous lisez la valeur d'une broche E/S numérique dans le code, celle-ci doit avoir la valeur HIGH ou LOW, alors qu'une broche d'entrée analogique pourrait présenter n'importe quelle valeur d'une plage à un moment donné. La plage dépend de la résolution de l'ADC. Par exemple, un ADC 8 bits peut produire des valeurs numériques de 0 à 255, tandis qu'un ADC 10 bits peut générer une plage de valeurs plus étendue, de 0 à 1 024. Plus de valeurs signifie une résolution plus élevée et donc une représentation numérique plus fidèle de tout signal analogique donné.

    Le taux d'échantillonnage de l'ADC détermine la plage de fréquences qu'un ADC peut produire. Un taux d'échantillonnage plus élevé entraîne une fréquence maximale plus élevée dans les données numériques. Par exemple, un signal audio échantillonné à 44 100 Hz produit un fichier audio numérique avec une réponse en fréquence allant jusqu'à 22 050 Hz, ignorant le filtrage typique et d'autres traitements. La précision des bits détermine la résolution de l'amplitude du signal.

  • I2C : le bus série de circuit interintégré utilise un protocole qui permet d'affecter une adresse discrète à plusieurs modules du bus. I2C peut se prononcer "I deux C", "I-I-C" ou "I au carré C".

  • SPI : les appareils avec bus d'interface appareil série utilisent une architecture maître-esclave, avec un seul maître et une communication duplex intégrale. L'interface SPI spécifie quatre signaux logiques :

    • SCLK, Serial Clock : horloge série (signal généré par le maître)
    • MOSI, Master Output Slave Input : sortie maître, entrée esclave (signal généré par le maître)
    • MISO, Master Input Slave Output : entrée maître, sortie esclave (signal généré par l'esclave)
    • SS, Slave Select : sélection esclave (signal actif-bas généré par le maître)
  • UART : les récepteurs/émetteurs asynchrones universels convertissent les données au format série ou parallèle au point où le processeur agit sur les données. L'interface UART est requise lorsque les données série doivent être placées en mémoire de manière parallèle.

Abstraction matérielle dans les logiciels

Un système d'exploitation extrait les ressources informatiques courantes telles que la mémoire et les E/S de fichiers. Le système d'exploitation fournit également un support de très bas niveau pour les différentes interfaces matérielles. En général, ces abstractions ne sont pas faciles à utiliser directement. Souvent, le système d'exploitation ne fournit pas d'abstractions pour la vaste gamme de modules de capteurs et d'actionneurs que vous pourriez rencontrer lors de la construction de solutions IoT.

Vous pouvez tirer parti des bibliothèques qui synthétisent les interfaces matérielles entre plates-formes. Ces bibliothèques vous permettent de travailler avec un appareil, tel qu'un détecteur de mouvement, de manière plus simple. Ainsi, vous pouvez vous concentrer sur la collecte des informations fournies par le module à votre application plutôt que sur les détails de bas niveau du travail direct avec le matériel.

Certaines bibliothèques fournissent des abstractions qui représentent des appareils sous la forme de pilotes légers au-dessus des interfaces matérielles. Parmi ces bibliothèques, citons par exemple le framework JavaScript Johnny-Five, MRAA (compatible avec plusieurs langages), la bibliothèque Go EMBD, Arduino Wiring et Firmata.

Environnement de calcul

L'environnement informatique de votre plate-forme exécute le logiciel. Les capacités du processeur varient en fonction des contraintes matérielles de puissance et de coût. Certains environnements informatiques se composent d'un système complet sur puce (SoC, System on Chip) compatible avec un système d'exploitation Linux intégré. Les appareils basés sur des microcontrôleurs peuvent être plus limités, et le code de votre application peut être exécuté directement sur le processeur sans le support d'un système d'exploitation.

Ces environnements informatiques servent de pont entre la logique de votre code d'application et le matériel physique de la plate-forme. Les logiciels qu'ils exécutent peuvent être entièrement chargés au démarrage à partir de la mémoire morte (ROM, Read-Only Memory). Sinon, l'environnement peut résulter d'un processus de démarrage par étapes. Ce processus charge un petit programme appelé chargeur de démarrage à partir de la mémoire morte, qui charge ensuite un système d'exploitation complet à partir de la mémoire flash intégrée ou d'une carte SD connectée.

Traitement sur l'appareil

Une fois les données collectées à partir d'un capteur, l'appareil peut fournir une fonctionnalité de traitement des données avant de les envoyer vers le cloud. Plusieurs appareils peuvent gérer les données avant qu'elles n'atteignent le cloud, et chacun d'eux peut effectuer une certaine partie du traitement.

Le diagramme suivant illustre les tâches de traitement :

Workflow de traitement des données : conversion, empaquetage, validation, tri, amélioration, synthèse et combinaison des données

Le traitement comprend, entre autres, les éléments suivants :

  • Conversion de données dans un autre format
  • Conditionnement des données de manière sécurisée et regroupement de celles-ci en un lot pratique
  • Validation des données pour s'assurer qu'elles respectent un ensemble de règles
  • Tri des données pour créer une séquence préférée
  • Optimisation des données pour étayer la valeur fondamentale avec des informations supplémentaires
  • Résumé des données pour réduire le volume et éliminer les détails inutiles ou indésirables
  • Combinaison des données en valeurs agrégées

L'analyse sur appareil peut combiner plusieurs tâches de traitement pour fournir une interprétation synthétisée permettant de transmettre davantage d'informations tout en réduisant le volume de données stocké.

Gestion des appareils

La gestion des appareils est semblable à celle des autres actifs informatiques : les principales préoccupations concernent le provisionnement, l'exploitation et la mise à jour des appareils. Ces préoccupations concernent tous les appareils, y compris les passerelles.

Provisionnement

Le provisionnement est le processus de configuration d'un nouvel appareil en vue de son utilisation. Il comprend les étapes suivantes :

  • Démarrage avec les informations de base sur l'appareil : au minimum, un appareil a besoin d'un ID et de métadonnées de base.
  • Obtention des identifiants et des informations d'authentification requis pour des communications sécurisées : par exemple, un jeton ou une clé peuvent être fournis à l'appareil pour les communications en cours. Ces identifiants peuvent avoir un délai d'expiration.
  • Autorisation de l'appareil : établit les autorisations requises pour que l'appareil interagisse avec l'application ou d'autres services, en s'appuyant sur les informations d'authentification ci-dessus. Elle correspond à une autorisation spécifique de l'appareil (associée à son ID) par rapport à une ressource donnée qu'il peut utiliser.
  • Configuration de la connexion réseau : un appareil a besoin d'une connexion réseau pour pouvoir communiquer avec d'autres services et transmettre des données.
  • Enregistrement de l'appareil : les applications ont besoin de savoir quels appareils sont disponibles. Un registre d'appareils garde la trace des appareils utilisés, gère le côté cloud de l'authentification, et associe les appareils à des données et ressources spécifiques (telles que les sujets de télémétrie et le stockage d'état).

Opérations

Le fonctionnement quotidien d'un système IoT nécessite de collecter les bonnes informations sur les opérations. Comme pour tout déploiement de matériel informatique, la journalisation de divers événements, ainsi que la surveillance des métriques d'état clés via des tableaux de bord et des mécanismes d'alerte, peuvent vous aider à garantir le bon fonctionnement de votre système. Google Cloud propose des fonctionnalités que vous pouvez utiliser pour vos opérations quotidiennes :

  • Cloud Logging collecte et stocke les journaux. Les événements de cycle de vie des appareils clés sont enregistrés à des fins d'audit. Un sous-ensemble d'événements de télémétrie peut être relayé dans Logging à des fins d'analyse et de création de rapports. L'utilisation de Logging peut vous faire économiser beaucoup de temps et d'énergie par rapport à la création d'une solution de journalisation personnalisée.

Mises à jour Over The Air

Compte tenu de la taille d'un déploiement IoT typique, la mise à jour d'appareils individuels sur site n'est pas pratique. Étant donné que les appareils disposent déjà d'une connexion réseau, il est possible de simplifier ce processus en transmettant les mises à jour sur le réseau. Dans le jargon des téléphones cellulaires, il s'agit d'une mise à jour par la voie des ondes (OTA, Over The Air), et la même idée s'applique à l'IoT. Vous disposez notamment des possibilités suivantes :

Passerelle

Une passerelle gère le trafic entre des réseaux qui utilisent des protocoles différents. Une passerelle est responsable de la traduction du protocole et d'autres tâches d'interopérabilité. Un dispositif de passerelle IoT est parfois utilisé pour assurer la connexion et la traduction entre les appareils et le cloud. Comme certains appareils ne contiennent pas la pile réseau requise pour la connectivité Internet, le dispositif de passerelle agit comme un proxy. Il reçoit les données des appareils et les conditionne pour assurer la transmission via TCP/IP.

Un dispositif de passerelle dédié peut s'avérer nécessaire si les appareils du déploiement :

  • ne disposent pas d'une connectivité routable à Internet, comme les appareils Bluetooth ;
  • n'ont pas les capacités de traitement nécessaires aux communications TLS (Transport Layer Security) avec les API Google ;
  • ne disposent pas de l'alimentation électrique nécessaire pour assurer la transmission réseau requise.

Un dispositif de passerelle peut être utilisé même lorsque les appareils participants sont capables de communiquer sans lui. Dans ce scénario, la passerelle ajoute de la valeur, car elle permet le traitement des données sur plusieurs appareils avant leur envoi dans le cloud. Dans ce cas, les entrées directes proviendraient d'autres appareils et non de capteurs individuels. Les tâches suivantes seraient probablement reléguées à un dispositif de passerelle :

  • Condensation des données pour maximiser la quantité à envoyer dans le cloud via un seul lien
  • Stockage des données dans une base de données locale avant de les transférer lorsque la connexion au cloud est intermittente
  • Mise à disposition d'une horloge en temps réel avec batterie de secours, utilisée pour fournir un horodatage cohérent aux appareils qui ne peuvent pas gérer correctement les horodatages ou assurer leur synchronisation
  • Exécution de la traduction d'adresses IPV6 en adresses IPV4
  • Ingestion et importation d'autres données basées sur des fichiers plats à partir du réseau local, pertinentes et associées aux données IoT
  • Fonctionnement en tant que cache local pour les mises à jour du firmware

Google Cloud

Lorsque votre projet IoT sera opérationnel, de nombreux appareils produiront beaucoup de données. Vous aurez alors besoin d'un moyen efficace, évolutif et abordable de gérer ces appareils et toutes ces informations afin de les exploiter au mieux. Lorsqu'il est question de stockage, de traitement et d'analyse de données, en particulier de big data, le cloud est la solution idéale.

Le schéma suivant illustre les différentes étapes de gestion des données IoT dans Google Cloud.

Créer et entraîner des modèles de ML dans le cloud

Gestion des appareils

Gestionnaire d'appareils IoT Core

IoT Core fournit un service entièrement géré pour la gestion des appareils. Cela inclut l'enregistrement, l'authentification et l'autorisation au sein de la hiérarchie des ressources Google Cloud, ainsi que le stockage des métadonnées d'appareils dans le cloud et la possibilité d'envoyer la configuration aux appareils depuis le service.

Ingestion

L'ingestion est le processus consistant à importer des informations à partir des appareils vers les services Google Cloud. Google Cloud fournit différents services d'ingestion, selon que les données sont des informations de télémétrie ou des informations opérationnelles sur les appareils et l'infrastructure IoT.

Courtier MQTT IoT Core

IoT Core fournit un courtier MQTT (Message Queue Telemetry Transport) sécurisé pour les appareils gérés par IoT Core. Cette norme industrielle binaire efficace permet aux appareils limités d'envoyer des données de télémétrie en temps réel et de recevoir immédiatement les messages envoyés depuis le cloud à un appareil à l'aide de la fonction de gestion de la configuration. Le courtier MQTT IoT Core se connecte directement à Pub/Sub.

Pub/Sub

Pub/Sub fournit un service d'ingestion de messages durable à l'échelle mondiale. En créant des sujets de flux ou de canaux, vous pouvez permettre à différents composants de votre application de s'abonner à des flux de données spécifiques sans avoir à créer de canaux spécifiques à l'abonné sur chaque appareil. Pub/Sub se connecte également de manière native à d'autres services de Google Cloud, ce qui vous aide à combiner l'ingestion, les pipelines de données et les systèmes de stockage.

Pub/Sub peut agir en tant qu'amortisseur et correcteur de débit pour les flux de données entrants et les modifications d'architecture applicative. De nombreux appareils ont une capacité limitée de stockage et de renvoi des données de télémétrie. Pub/Sub s'adapte afin de gérer les pics de données pouvant survenir lorsqu'une multitude d'appareils répondent à des événements du monde physique, et met ces pics en mémoire tampon pour les isoler des applications surveillant les données.

Cloud Monitoring et Cloud Logging

Comme indiqué dans la section Opérations ci-dessus, Cloud Monitoring et Cloud Logging peuvent offrir des avantages opérationnels. Les informations sont ingérées par ces services via les interfaces qu'ils fournissent.

Tâches de traitement de pipeline

Les pipelines gèrent les données après leur arrivée sur Google Cloud de la même manière que les pièces sont traitées sur une chaîne de montage en usine. Cette gestion inclut les tâches suivantes :

  • Transformation des données : vous pouvez convertir les données dans un autre format, par exemple transformer une tension de signal d'appareil en une unité calibrée de mesure de la température.
  • Agrégation des données et calcul : en combinant des données, vous pouvez intégrer des vérifications, telles que la moyenne des données sur plusieurs appareils, afin d'éviter d'intervenir sur un seul appareil parasite. Cela vous assure de disposer de données exploitables en cas de déconnexion d'un seul appareil. En ajoutant les calculs à votre pipeline, vous pouvez appliquer une analyse en continu aux données alors qu'elles sont encore dans le pipeline de traitement.
  • Enrichissement des données : vous pouvez associer les données générées par un appareil à d'autres métadonnées relatives à l'appareil ou à d'autres ensembles de données, par exemple sur la météo ou sur le trafic, afin de les utiliser pour des analyses ultérieures.
  • Transfert des données : vous pouvez stocker les données traitées dans un ou plusieurs emplacements de stockage finaux.

Dataflow

Dataflow fournit le modèle de programmation libre Apache Beam en tant que service géré permettant de traiter des données de différentes manières, y compris avec des opérations par lot, des modèles ETL (extraction, transformation et chargement), et des calculs en continu et par flux. Dataflow peut s'avérer particulièrement utile pour gérer les pipelines de traitement de données à volume élevé requis pour les scénarios IoT. Dataflow est également conçu pour s'intégrer parfaitement aux autres services Google Cloud que vous choisissez pour votre pipeline.

Stockage de données

Les données du monde physique se présentent sous différentes formes et tailles. Google Cloud propose une gamme de solutions de stockage allant des blobs de données non structurés, tels que les images ou les flux vidéo, au stockage structuré d'entités d'appareils ou de transactions, en passant par des bases de données clé-valeur hautes performances pour les données d'événement et de télémétrie.

Stockage de l'état dans IoT Core

Certains états d'appareil peuvent être directement connectés au matériel. Par exemple, lorsque vous vérifiez l'état d'une broche GPIO numérique, il indique HIGH ou LOW en fonction de la lecture physique de la tension sur la broche.

Un autre état d'appareil peut exister au niveau de la couche d'application. Par exemple, recording-audio peut avoir une condition d'état true ou false, selon que l'application échantillonne à partir du micro ou écrit sur le disque. Au niveau matériel, le micro lui-même peut rester allumé.

Du point de vue logiciel, le code d'application exécuté sur l'appareil conserve la source d'informations. Il est souvent utile, voire nécessaire, qu'un autre logiciel lise le dernier état connu de l'appareil. Étant donné que les appareils IoT peuvent passer un certain temps en mode veille à faible consommation d'énergie et peuvent exister sur des réseaux particulièrement peu fiables, il est souvent utile de stocker une partie de l'état d'un appareil dans le cloud. De cette façon, les données d'état peuvent être mises à disposition même lorsque les appareils eux-mêmes sont temporairement hors connexion.

Le dernier état d'appareil connu peut être signalé et stocké dans IoT Core pour permettre aux applications de le récupérer. Les informations d'état envoyées via MQTT ou HTTP sont conservées dans IoT Core et disponibles dans le cloud, même si l'appareil est déconnecté ou éteint.

Stockage des données d'application dans Datastore et Firebase

Lorsque vous devez mettre des données d'état ou de télémétrie à la disposition d'applications mobiles ou Web, vous pouvez stocker les données traitées ou brutes dans des bases de données structurées, mais sans schéma, telles que Datastore et Firebase Realtime Database. Dans ces bases, vous pouvez représenter les données d'appareil IoT en tant qu'objets au niveau du domaine ou de l'application.

Traitement des règles et analyse en continu dans Cloud Functions et Dataflow

Les événements et données IoT peuvent être envoyés au cloud à un débit élevé et doivent être traités rapidement. Pour de nombreuses applications IoT, la décision de placer l'appareil dans l'environnement physique est adoptée afin de fournir un accès plus rapide aux données. Par exemple, les produits frais exposés à des températures élevées pendant le transport peuvent être signalés et jetés immédiatement.

Il est essentiel de pouvoir traiter ces informations et d'agir rapidement en conséquence. Cloud Functions vous permet d'écrire une logique personnalisée pouvant être appliquée à chaque événement dès qu'il se produit. Elle peut servir à déclencher des alertes, filtrer des données non valides ou appeler d'autres API. Cloud Functions peut fonctionner sur chaque événement publié individuellement.

Si vous devez traiter des données et des événements à l'aide d'un outil d'analyse plus sophistiqué, par exemple les données issues des techniques de fenêtrage temporel ou les données convergentes issues de plusieurs flux, Dataflow fournit un outil d'analyse hautement performant qui peut être appliqué aux données en flux et par lot.

Analyse

L'analyse des données obtenues via des sources IoT est souvent le seul objectif de l'instrumentation du monde physique. Une fois les données de flux analysées dans un pipeline de traitement, elles commencent à s'accumuler. Au fil du temps, ces données constituent une riche source d'informations pour l'analyse des tendances et peuvent être combinées à d'autres données, telles que celles provenant de sources extérieures aux appareils IoT.

BigQuery et Datalab

BigQuery fournit un entrepôt de données entièrement géré et une interface SQL connue, vous permettant de stocker les données IoT avec les autres analyses et journaux de votre entreprise. Grâce au bon rapport coûts-performances de BigQuery, vous pouvez conserver plus longtemps vos précieuses données au lieu de les supprimer dans le seul objectif d'économiser de l'espace disque.

Datalab est un outil interactif pour l'exploration, l'analyse et la visualisation de données à grande échelle. Les données IoT peuvent s'avérer utiles en de nombreuses occasions, en fonction des autres données qui y sont associées. Datalab vous permet d'explorer, de transformer, d'analyser et de visualiser les données de manière interactive à l'aide d'un environnement de travail hébergé en ligne basé sur le projet Jupyter Open Source.

Machine learning

Souvent, les données IoT sont intrinsèquement multidimensionnelles et bruyantes, et ces caractéristiques peuvent rendre difficile l'extraction d'informations à l'aide des techniques d'analyse classiques. Or, c'est généralement au cœur de cette subtilité et de cette complexité qu'excellent les réseaux de neurones profonds. TensorFlow est un framework de machine learning Open Source de premier plan. Sur Google Cloud, vous pouvez l'appliquer à un service d'entraînement distribué et géré via AI Platform.

Tableaux de bord de séries temporelles avec Cloud Bigtable

Certains types de données doivent pouvoir être rapidement réparties entre des index et des dimensions connus pour la mise à jour des visualisations principales et des interfaces utilisateur. Bigtable fournit une base de données à faible latence et à haut débit pour les données NoSQL. Il s'agit d'un bon outil pour lancer les visualisations et les requêtes les plus utilisées lorsque les questions sont déjà bien comprises et que vous devez absorber ou diffuser des volumes élevés.

Comme il stocke les données dans un format basé sur les lignes, Bigtable fonctionne mieux que BigQuery pour les requêtes qui agissent sur des lignes ou des groupes de lignes consécutives. Pour les requêtes nécessitant l'agrégation des données, BigQuery constitue un meilleur choix que Bigtable.

Stockage d'archives dans Cloud Storage Nearline

Les données du monde entier ne cessent de s'accumuler et ne sont pas toujours structurées. Cloud Storage fournit une API unique pour le stockage d'objets d'usage courant et les données d'archives peu utilisées. Si votre appareil IoT capture des données multimédias, Cloud Storage peut les stocker en quantités pratiquement illimitées, de manière durable et économique.

Conclusion et étapes suivantes

Créer des solutions pour l'Internet des objets implique de résoudre des problèmes dans un large éventail de domaines. Google Cloud offre des capacités de gestion des appareils, de scaling de l'infrastructure et de mise en réseau, ainsi qu'une gamme de produits de stockage et d'analyse, que vous pouvez utiliser pour tirer le meilleur parti des données générées par les appareils.