io.adafruit - l'internet des objets facile avec Adafruit

Préambule
Toujours en Beta fermée, Adafruit développe une plateforme pour faciliter les interactions avec les objets Internet de votre cru.

Ayant la chance de faire partie de cette Beta, j'ai eu la chance de fureter ici et là et de me rendre compte que io.adafruit.com comblera un vide gigantesque pour les makers de tout feux.

Chez MCHobby, nous nous sommes penché de près sur le spark core. C'est un outil génial mais le principal manquement de l'infrastructure résidait dans les interactions avec les SmartPhones. Il est facile d'écrire un objet Internet mais le commander depuis son SmartPhone (Android/iOS) réclame le sortie d'artillerie lourde.

Sans réinventer la roue, Adafruit est en passe de combler ce vide avec io.adafruit.com.

io.adafruit.com KASEKO ?!?!
En fait, c'est un environnement WEB permettant de collecter les données de vos objets connectés (dans des feeds) et de d'organiser eur représentation dans des tableaux (dashboard).
Vous pouvez ainsi les visualiser sur votre Ordinateur via un navigateur WEB ou même sur votre Tablette ou SmartPhone (aussi via WEB, je l'ai testé sur un Samsung Galaxy 4 sous Android).
Exemple: dashboard "door"
Comme la plateforme n'utilise que des standard du WEB, pas besoin d'installer de soft sur votre smartphone ou navigateur internet pour accéder à vos données ou leur représentation dans les Dashboard... c'est absolument fabuleux.

Et la sécurité dans tout cela!
La sécurité reste un élément centrale de l'infrastructure. Pour remplir les feeds, il vous fait une clé (généré dans votre compte io.Adafruit.com) mais ce n'est pas tout. Comme le dit si bien Adafruit, cette clé (nommée AIO) est aussi importante que votre compte Adafruit. Il convient donc de ne pas la publier à tout va.

Les feeds (fils de données)
Vous avez le choix de rendre vos feeds (fils de données) publiques et donc de publier votre contenu. Mais par défaut ils sont privés et accessibles par vous seul.
Les fils de données sont privés par défaut
Dans le cas d'une station météo ou de mesure de la densité de trafic routier, vous pourriez trouver utile de rendre votre fils de donnée librement accessible.

Les dashboard (tableaux)
Vos dashboard (tableaux) peuvent être rendu publique, option pratique si vous réalisez une station météo. Mais par défaut vos dashboard sont privés et accessibles par vous seul.
Les tableaux représentant vos données sont privés par défaut
Cette privatisation par défaut est fort intéressante et surtout respecte avant tout votre vie privée... nous sommes loin des grandes plateformes sociales où vous n'avez, par défaut, aucun droit de privatisation de votre vie. Droit que vous recouvrez aux prix de nombreux efforts de configuration.

En écrivant mon objet d'ouverture de porte (mon dashboard "door") via SmartPhone, je n'ai eu aucun problème de sécurité. Je dois d'abord me connecter sur io.adafruit.com avant d’accéder à mon Dashboard (je l'ai gardé en "privé", il ne faudrait pas que tout le monde puisse ouvrir ma porte!).

Créer vos Objets Internet
Avant de rentrer plus en profondeur sur l'interface d'io.adafruit.com , nous allons faire un petit détour par les Objets Internet supportés.

Une plateforme comme io.adafruit.com c'est bien beau mais comment créer mes objets Internet et remplir les feeds sur io.adafruit.com? 
Est-il possible de les remplir facilement à partir de nos projets?

Adafruit à pensé à nous et à déjà réaliser des bibliothèques pour les environnements suivants:
Nous avons testé la version Python et il faut bien avouer que le code est déconcertant de simplicité.

# Import Adafruit IO REST client.
from Adafruit_IO import Client

ADAFRUIT_IO_KEY = 'votre clé IO.ADAFRUIT'
aio = Client(ADAFRUIT_IO_KEY) 
 
# envoyer une valeur sur le feed 'Test'.
aio.send('Test', 42)
# Envoyer la valeur 'mchobby' sur le feed 'Test2'.
aio.send('Test2', 'mchobby')

# Obtenir la dernière valeur du feed 'Test'.
# Toutes les valeurs sont retournées comme des String.
data = aio.receive('Test')
print('attributs de la valeur recue: {0}'.format(data))
print('Derniere valeur de Test: {0}'.format(data.value))

Les feeds / fils de donnée
Ce qu'il y a de sympa avec l'approche d'Adafruit, c'est que vous n'avez pas besoin de "déclarer" vos fils de données dans l'interface io.adafruit.com.

Dès que vos objets Internet pousserons des données vers IO, le fil de donnée (feed) sera automatiquement créer si ce dernier n'existe pas encore.
Cette approche originale permet d'ajouter facilement de nouveaux senseurs/objets sur votre "infrastructure" de capture d'information sans fastidieuses phase de configuration.


A titre d'exemple, voici quelques feeds créer dans le cadre de notre petit projet d'ouverture de porte (cela fera l'objet d'un autre article).
Liste des feeds crées
J'attire votre attention sur le feed "Temp" dans lequel est poussé les informations de prise de température.

Communication dans les deux sens
io.adafruit.com ne permet pas seulement à vos objets d'envoyer des données sur les feeds (fils de données).

io.adafruit.com permet également d'envoyer des ordres à vos objets connectés. 
bloc - toggle

En effet, vos objets peuvent également récupérer la dernière valeur d'un feed. Comme vous le constaterez plus tard, certain blocs sont utilisé pour ajouter une information dans un "feed".
Cette astuce vous permet d'envoyer des ordres à vos objets par l'intermédiaire d'un feed.

Les dashboards / tableaux
Tel que conçu pour le moment, io.adafruit.com propose quelques composants que vous glissez simplement sur votre dashboard.
Les blocks disponibles - pouvant être ajouté sur un DashBoard.
Une fois glissé, il ne vous reste plus qu'a indiquer le 'feed' (fil de donnée) qu'il doit utiliser et quelques autre informations d'ordre esthétique.

A titre d'exemple, voici les détails de l'ajour d'un block "graphique"
Configuration du block graphique - utilisant le feed "Temp"
Il ne reste plus qu'a cliquer sur le bouton "CREATE BLOCK" et il est ajouté au dashboard.

Bref, simplissime

Les blocs disponibles
io.adafruit.com est toujours en cours de développement mais les premiers blocs permettent déjà de réaliser des choses forts intéressantes.

Bloc toggle
bloc Toggle
Permet d'envoyer un état ON ou OFF (ou autre valeur configurée) sur un feed.
Ce bouton se met également à jour si votre objet connecté fait une mise-à-jour du feed.

Imaginez le cas de figure suivant:
  1. Vous passez le bouton en ON pour allumer votre chaudière.
  2. Votre objet connecté lit le feed et essaye de démarrer la chaudière.
  3. La chaudière ne démarre pas... et votre objet connecté renvoie la valeur OFF sur le feed.
  4. L'interface d'Adafruit IO passe le bloc toggle en OFF, vous indiquant ainsi qu'il y a un soucis!
Bloc Line Chart
Bloc Line Chart

Ce bloc permet d'afficher les données d'un feed sous forme de graphique. Pratique pour connaître l'évolution d'une information telle que la température, l'humidité, etc.

Bloc Gauge
Bloc gauge
Ce bloc permet d'afficher la dernière valeur connue sous la forme d'une gauge.
Cela permet d'obtenir une vue "instantanée" de la dernière valeur connue/publiée sur un feed.

Bloc Slider
Bloc slider

Ce bloc permet soit d'envoyer une valeur dans un feed, soit d'être mis à jour avec la dernière valeur reçue dans le feed.

Bloc Momentary Button
Voici un bloc "bouton momentané".
Bloc momentary button

Ce bloc dont il est possible de modifier le libellé et la valeur est utiliser pour envoyer une valeur dans un feed.
Avec un objet connecté, vous pouvez détecter l'arrivée de cet élément sur le feed pour modifier le comportement de votre objet (ex: augmenter le volume sonore).

Chez MCHobby, nous avons utilisé plusieurs boutons (avec des valeurs différentes) sur un même feed. Cela permet, très aisément, de modifier le comportement de votre objet (ex: plusieurs modes de fonctionnements)

Bloc Text
Bloc Text
Ce bloc affiche le texte poussé dans un feed. Si cela n'a pas l'air extraordinaire c'est incroyable pratique pour connaître le statut de votre objet, afficher un message d'alerte, un état, etc.

Ce bloc deviendra vite votre meilleur ami.

Il est également possible de saisir du texte sur ce bloc.... il suffit de cliquer dessus.

Bloc Color Picker
Bloc Color Picker - affichage de la couleur
Le "color picker" (sélection d'une couleur) peut être utilisé de deux façons différentes.
La première est l'affichage d'un code couleur produit par votre objet (au format html #RRGGBB hexadécimal). De quoi retourner un statut visuel ou un état de comfort. Les codes couleurs offrent une information très riche.

Le deuxième cas d'utilisation est de choisir une couleur qui sera envoyé sur le feed. Cela permet, par exemple de sélectionne la couleur d'ambiance de votre salon pour la soirée.
Bloc Color Picker - sélection de la couleur
Conclusion
Cet article ne vise qu'a fournir une information générale sur une plateforme en cours de finalisation. C'est que le champs d'application d'Adafruit IO est vaste.

Il faut également reconnaître que sont utilisation est simple et fiable. L'utilisation de technologie WEB standard permet de visualiser et manipuler les dashboard dans de nombreux environnements (y compris SmartPhone).

La mise en place d'un projet plus élaboré est relativement aisé (nous en reparlerons dans un prochain article).
Le support de différents langage pour les Objets Internet est un avantage indéniable. 

Personnellement j'ai un faible pour l'implémentation Python permettant de transformer nos Raspberry-Pi d'amour en objet Internet en deux-trois mouvements.
 

Ressources