Publié par
Il y a 11 mois · 6 minutes · IoT

Atelier – Plateforme 2 – IBM Bluemix (2/3)

Dans un premier article, nous avons remonté les données de notre objet connecté depuis le backend Sigfox. Nous allons aujourd’hui les exploiter, via un système simple, en utilisant les services hébergés Bluemix, via trois axes : leur stockage dans une base de données non relationnelles, la construction d’un système évènementiel d’alerte via email et la visualisation des différents indicateurs.

Moins de code, plus de NodeRed.

IBM propose un éditeur graphique qui permet de créer facilement des programmes sur Node, appelé NodeRed. Ce dernier a été rebrandé pour développer spécifiquement pour l’Internet des Objets (pure invention marketing, mais bon…).

OpenWhisk nous a permis d’amener les données au cœur du Cloud IBM. Nous pouvons donc en principe directement les utiliser. Tout commence par la création de l’application : il existe une boilerplate qui permet de rapidement démarrer un projet IoT, qui comprend une instance NodeRed et une base de données document CloudantDb. Ne nous privons pas de l’utiliser :

atelier iot

atelier iot

Une fois votre application démarrée, l’éditeur NodeRed est disponible. Notez bien que par défaut, cette instance n’est pas protégée ! Si un utilisateur dispose de l’URL, il a tout loisir de modifier votre pseudo-code, et rendre votre application au minimum instable, au pire malveillante. Pensez donc à protéger votre URL d’édition.

Par défaut, la boiler plate contient une application minimaliste. C’est graphique, très visuel et donc facilement compréhensible, même pour quelqu’un qui n’est pas forcément à l’aise avec Node.

atelier iot

Partons de cette base, et adaptons-la à notre besoin… en supprimant tout sauf le nœud IoT initial (et son nœud de debug). Nous allons éditer ce dernier pour le brancher sur notre instance du service IoT Foundation (que nous avons vu dans un précédent article). Mais avant tout, il faut lier le service IoT à notre application NodeRed, ce qui permettra une intégration facile. Ceci se fait via la console Bluemix, dans l’onglet Connexions, en cliquant sur Connecter un existant. Sélectionnez votre service IoT et cliquez sur Connecter. Votre application NodeRed va se mettre à jour et redémarrer (se reconstituer dans le jargon Bluemix).

atelier iot

De retour dans votre éditeur NodeRed, en double cliquant sur le nœud IoT, vous devriez avoir une nouvelle méthode d’authentification, BluemixService, qui correspond à votre service lié. Vous pouvez ici réaliser un premier filtrage sur les données que vous voulez voir apparaitre. Par défaut, nous allons laisser l’intégralité des messages.

atelier iot

Cliquez en haut à droite sur Deploy. Bravo, votre V0 est prête et déployée ! Vous devriez maintenant voir apparaitre les messages en provenance du module IoT dans votre console de debug.

atelier iot

Youpi, on va pouvoir continuer.

Stocker les données.

La base orientée document de Bluemix s’appelle Cloudant. C’est la base utilisée par NodeRed pour stocker le pseudo-code. Elle est donc déjà liée à notre application, nous devrions donc pouvoir l’utiliser facilement. Ajoutons donc un bloc CloudantDb à notre programme. Il suffit ensuite de déployer, d’envoyer un message depuis notre device, et dans la base Cloudant, nous retrouvons nos premiers documents.

iot atelier

iot atelier

iot atelier

iot atelier

Alerter par email

Comme on ne change pas une recette qui gagne, continuons à utiliser notre joli éditeur visuel pour ajouter une alerte mail. Première étape, la règle métier. Nous utilisons donc un bloc de type Switch.

iot atelier

Si ce bloc retourne vrai (1), alors nous utilisons un nœud de type email. Ce bloc utilise n’importe quel serveur SMTP, vous pouvez donc le configurer avec votre messagerie de tous les jours :

iot atelier

Un deploiement et un test via Postman plus tard, vous devriez recevoir votre premier mail d’alerte émis par Bluemix.

iot atelier

Mettre à jour un dashboard

Contrairement à certains de ses concurrents, Bluemix embarque des fonctions de visualisation. On peut même dire que l’offre est riche puisqu’en plus d’une offre orientée « monitoring métier » (Embeddable Reporting), IBM propose une offre spécifiquement dédiée à l’Internet des Objets, IoT Realtime Insight.

Nous allons donc utiliser ce module pour gérer notre simplissime dashboard.

atelier iot

Première étape, ajouter une source de données à notre dashboard. Pour se faire, il va falloir autoriser une application tierce (Realtime insight) à accéder à IoT Foundation. Cela se fait grâce à l’échange d’une clé d’API

Dans le module IoT Foundation, dans le sous menu Accès, nous allons générer une clé d’API. Copiez collez la précieusement.

Retournez dans Realtime Insight, et ajoutez une datasource. Reportez les informations précédemment mises de coté, et votre datasource devrait être « Connected ».

atelier iot

Envoyez un message via votre objet connecté, et vous devriez le voir apparaitre dans la liste de Devices :

atelier iot

Vous noterez qu’il apparait comme « Déconnecté », ce qui est logique vu notre mode de gestion dans le bridge : dès que le message est envoyé, nous nous déconnectons du MQTT sous jacent. L’interface graphique n’a donc même pas le temps d’être notifiée du passage au mode « Connecté ».

Notre objet est là, nous allons traiter ses données. Cela se passe dans l’onglet Devices / Manage Schemas. Nous allons mapper notre datasource et les messages qu’elle génère sur un schéma statique.

iot atelier

C’est fini pour la partie tuyauterie, attaquons-nous au tableau de bord. Ca se passe dans l’onglet Dashboard / Browse Dashboards, puis « Add new dashboard ». Cliquez sur le dashboard nouvellement créé, puis « Add a component ». Sélectionnez un composant de type « Device ». Vous devriez voir apparaitre votre objet. Si vous cliquez sur cet objet, un widget est automatiquement ajouté sur votre tableau de bord. Il devrait faire apparaitre la température. Sauvegardez votre tableau de bord, et répétez l’opération trois fois.

atelier iot

Dans l’angle haut droit de chaque widget, vous verrez apparaitre un engrenage. Cliquez dessus pour éditer le widget, et modifiez les en conséquence (dans « Custom Visualisation ») pour faire apparaitre l’humidité et la luminosité. Envoyez un message depuis votre objet connecté, et boum, votre dashboard se met à jour :

iot atelier

Mission accomplie !

Le petit bonus : modifions l’alerte par email

Petit ajout intéressant, RealTime Insight offre un module Analytics. Ajoutons une nouvelle règle, sur la température.

atelier iot

atelier iot

atelier iot

iot atelier

 

Puis activez cette nouvelle règle.

iot atelier

Maintenant, quand l’objet communique une température supérieure à 17°C, nous recevons un mail en provenance directe de RealTimeInsight

atelier iot

On peut donc supprimer cette partie de notre nodeRed.

Conclusion

L’objectif de la mission a été atteint. Toutes les fonctionnalités de notre objet sont présentes, il est connecté et la descente d’information vers le backend est maitrisée. Reste à faire la communication vers l’objet, et à optimiser le tout. Mais ça, ce sera pour la semaine prochaine.

Nota Bene

Durant la rédaction de cet article, IBM a annoncé une évolution de sa plate-forme visant à fusionner IoT Foundation et IoT Realtime Insight. Les choses devraient donc changer dans les prochaines semaines, rendant peut être cet article en partie, obsolète.

Plus d’informations sur ces changements ici.

Pablo Lopez
Pablo est directeur technique au sein de Xebia. Opérationnel par goût, il intervient sur une large variété de missions, de l'analyse de performances en production au conseil en architecture logicielle.

Une réflexion au sujet de « Atelier – Plateforme 2 – IBM Bluemix (2/3) »

  1. Publié par Développeur mobile, Il y a 10 mois

    C’est vrai qu’avec Node-Red c’est plus facile ou du moins plus rapide. Les geeks de la domotique en raffolent. En tout cas, on attend la suite…

  2. Publié par Arnaud, Il y a 3 mois

    Merci pour vos articles sur l’IoT très détaillés, et très intéressants !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *