Découvrir l’IoT sur le Cloud avec un didacticiel AWS IoT Core
L’Internet des Objets (IoT) n’est pas un concept nouveau, mais il connaît un véritable essor sous l’impulsion du Cloud. Les objets connectés sont appelés à trouver une utilité dans pratiquement tous les domaines d’activité. Les estimations les plus mesurées tablent sur plus de 26 milliards d’objets connectés à l’horizon 2020, dont 2 milliards en France.
Dans cet article, nous passerons rapidement en revue les principaux services IoT sur AWS, avant de nous lancer dans le didacticiel AWS IoT Core.
Quels services Cloud pour quels besoins ?
AWS fournit plusieurs services d’objet connectés, de la périphérie de l’objet jusqu’à la plateforme cloud, qui nous permettent de concevoir des architectures pour diverses charges de travail IoT.
Ces services peuvent être décomposés en 3 sous ensembles :
- Device software (Amazon FreeRTOS , AWS IoT Greengrass). Ces services permettent de connecter les appareils à la plateforme Cloud, de rassembler des données et d’agir intelligemment et de manière sécurisée au niveau local, même sans connectivité Internet.
- Control services (AWS IoT Core, AWS IoT Device Management, AWS IoT Things Graph, AWS IoT Device Defender). Ces services permettent de contrôler, gérer et sécuriser un nombre varié d’objets connectés.
- Data services (AWS IoT Analytics, AWS IoT Events, AWS IoT SiteWise). Ils permettent d’extraire de la valeur des données IoT en exécutant des analyses sophistiquées sur des volumes massifs de données. Avec AWS IoT Analytics, nous pouvons collecter, traiter, stocker et analyser automatiquement les données IoT à l’aide d’outils d’analyse et d’apprentissage automatique.
Premiers pas sur la plateforme AWS IoT
Avant d’entrer dans le vif du sujet, revenons rapidement sur une notion importante dans le monde de l’IoT, c’est le protocole MQTT.
MQTT(Message Queuing Telemetry Transport) est un protocole de transfert de données Machine-to-Machine (M2M) basé sur le protocole TCP/IP.
Les messages sont envoyés par des publishers sur un canal (une chaîne d’information) appelé Topic. Ces messages peuvent être lus par les subscribers.
Dans l’exemple, ci-dessous, le capteur de température (le publisher), publie sa valeur régulièrement sur le topic “temperature”, elle sera ensuite envoyée aux différents abonnés (subscribers) du topic, ici un PC et un Mobile :
Nous allons prendre en main la plateforme IoT d’AWS en créant un objet, puis nous testerons si l’objet fonctionne correctement.
Si nous reprenons l’exemple précédent, nous simulerons le publisher à l’aide de l’outil MQTT.fx (client MQTT).
Création d’un objet sur AWS IoT Core
Etape 1 :
Dans la page principale d’AWS, recherchez le service «iot core».
Etape 2 :
Une fois dans le menu principal du service IoT core, cliquez sur l’option « Manage » dans le menu qui se trouve sur le côté gauche.
Etape 3 :
Maintenant, nous allons enregistrer une chose (“thing”). Une chose est un objet qui peut se connecter à Internet. Nous devons donc créer un objet sur la console AWS à travers laquelle nos appareils réels peuvent communiquer. Pour créer l’objet, on clique simplement sur “Register a thing”.
Etape 4 :
Nous avons la possibilité de créer un ou plusieurs objets, si nous en créons plusieurs, ils partageront tous les mêmes caractéristiques de sécurité. Dans notre cas, nous allons simplement créer un seul objet en cliquant sur «create a single thing»
Etape 5 :
Nous devons donner nommer l’objet que nous créons, ici nous l’avons nommé test_IoT. Après l’avoir nommé, faites défiler vers le bas et cliquez sur Next.
Etape 6 :
Afin de sécuriser la communication de nos objets, nous allons créer un certificat et une politique de sécurité (policy), et nous allons l’associer à notre objet. Ainsi, dès que vous cliquez sur suivant à l’étape précédente, vous serez invité à choisir votre certificat de sécurité. Nous devons en créer un nouveau en cliquant sur «Create certificate»
Etape 7 :
AWS fournit les clés de l’objet nouvellement créé.
Téléchargez le certificat ainsi que la clé privée et enregistrez-les en local dans un endroit sécurisé.
Telechargez également le root CA (cliquez sur le lien, cela ouvre une autre page Web, choisissez CA Certificates for Service Authentication Sur la page Web suivante, choisissez Amazon Root CA 1; cela affichera une page web avec la clé du certificat root CA. Enregistrez ce texte dans un fichier avec une extension .pem)
Assurez-vous également de cliquer sur le bouton Activate, pour activer le certificat.
Ne partagez jamais ces clés !!!
Etape 8 :
Une fois les certificats téléchargés, nous devons attacher une policy à notre objet.
Pour le moment, nous n’avons pas de policy dans notre compte, cliquez sur « Register Thing« . Lors de la prochaine étape, nous allons créer une stratégie, puis la joindre.
Etape 9 :
Nous revenons au au menu principal. Dans le menu sur la gauche, cliquez sur Secure, ensuite sur Policies puis Create Policy.
Etape 10 :
Dans cette étape, nous allons créer une policy, ici nous l’appelons Myiotpolicies. Dans la section Action, entrez iot: * et pour les ressources ARN, entrez *. Assurez-vous également que le bouton Allow est coché.
Iot: * Indique que nous pouvons à la fois souscrire et publier sur l’objet
* : Indique que l’objet est accessible à tous les clients qui ont accès au certificat
Enfin, appuyez sur le bouton « Create ».
Bien évidemment dans un contexte de production, on devra restreindre l’accès à l’objet.
Etape 11 :
Nous devons maintenant attacher la policy que nous venons de créer au certificat.
Etape 12 :
Vous obtiendrez un pop up dans laquelle nous pouvons sélectionner le nom de la policy que nous avons créer, puis cliquer sur Attach.
Etape 13 :
Pour résumer, nous avons créé un objet, un certificat et une policy et avons attaché cette policy et le certificat à l’objet.
Ensuite, nous pouvons vérifier le fonctionnement de l’objet en utilisant l’option «test» dans le menu principal du service AWS IOT. Avant cela, nous devons obtenir l’adresse du broker de l’objet que nous venons de créer ce qui nous permettra d’accéder à l’objet depuis internet.
Comme dit plus haut, gardez ces liens confidentiels. Pour l’instant, nous avons besoin du lien HTTPS pour tester si l’objet fonctionne correctement.
Etape 14 :
On peut tester notre objet via le menu Test qui se trouve sur le menu principal du service AWS IoT.
Nous avons deux options : s’abonner (subscribe) ou publier (publish) à un topic. Vous devez d’abord vous abonner à l’objet que nous venons de créer en entrant le nom qui ici est test_IoT.
Utilisation de MQTT.fx avec AWS IOT
MQTT.fx (https://mqttfx.jensd.de/) est une application qui peut être utilisée en tant que client pour tester et déboguer des objet IOT. Dans les étapes suivantes, nous apprendrons comment connecter MQTT.fx à l’objet que nous venons de créer.
Etape 1 :
Ouvrir l’application et se rendre dans les paramètres pour configurer le MQTT en tant que client.
Etape 2 :
Ici, nous devons créer le profil de l’objet que nous venons de créer. Dans Profile Name, on donne un nom, j’ai décidé de l’appeler «MQTT_test». Ensuite, pour Broker Address, on renseigne l’API endpoint, vu précédemment. Le port pour AWS IOT est 8883 pour tous les utilisateurs, Sélectionnez ensuite SSL / TLS.
Nous devons également sélectionner les certificats auto-signés que nous avons téléchargés à l’étape 7, puis on clique sur OK
Etape 3:
On clique maintenant sur le bouton de connexion. Si tout fonctionne correctement, alors MQTT devrait pouvoir se connecter à notre objet et l’écran suivant s’affichera. Vérifiez le cercle vert dans le coin supérieur droit
Etape 4 :
Maintenant que nous sommes connectés à l’objet, nous pouvons le tester en souscrivant à un topic. Cliquez sur Subscribe, donnez un nom et cliquez sur subscribe a droite du nom.
Etape 5 :
Maintenant, nous revenons à l’onglet d’écran Publish pour publier un message et vérifier si nous l’obtenons sur notre topic. Pour publier un message, utilisez le même nom.
Etape 6 :
Revenez maintenant à l’onglet Subscribe et vous devriez voir le message que nous venons de publier, comme ci-dessous :
Nous avons fini de créer et de tester notre objet créé à l’aide d’AWS IOT. Comme nous l’avons également lié à MQTT en tant que client, il devrait être facile pour nous de surveiller et de le déboguer à l’avenir. A vous de jouer maintenant !