Aujourd’hui, je vais vous parler d’Open.sen.se ! Open.sen.se est un outil gratuit permettant de collecter différentes valeurs de différentes sources afin de les restituer sous forme de graphiques ! Car c’est bien joli d’avoir des objets connectés, mais récolter les données de ces derniers, les trier et les analyser… c’est encore mieux.
Son créateur n’est autre que Rafi Haladjian, le créateur du lapin Nabaztag… Feel, Act, Make Sense (Resentir, Agir, Donner du sens) : Voici la devise d’Open.sen…
De belles images valent mieux qu’un long discours… Voici quelques copies d’écran réalisées avec la remonté d’informations depuis ma box domotique :
Pour arriver à ce résultat, il faut passer par quelques étapes que je vais développer ci-dessous 😉
Principe de fonctionnement
Etape 1 : Création du compte
Tout d’abord, il faut créer un compte pour obtenir une invitation pour cet outil (encore en bêta). Il faudra être patient… En effet, comme c’est une version bêta gratuite… l’attente peut être longue (comptez 2 à 3 semaines). Toutefois, si vous connaissez quelqu’un qui possède déjà un compte, ce dernier peut vous parrainer et l’ouverture est quasi-instantanée. Cependant, chaque parrain ne dispose que de 5 invitations, donc, demandez sur Cachem de vous parrainer (en commentaire). Nous disposons de quelques invitations… et chaque filleul pourra à son tour devenir parrain et faire bénéficier de ses invitations…
Une fois votre compte créé, il faut envoyer vos données vers les serveurs Open.sen. Il va de soi qu’il faut que vous sachiez comment récupérer les infos de vos sources (domotique, arduino, station d’accueil,…). Lorsque votre compte sera créé, vous recevrez une clé permettant l’envoi des données.
Étape 2 : Création de feeds (réceptacle d’info)
Connectez-vous sur Open.sen.se et rendez-vous sur le menu Channels puis Add Channel et sélectionnez Register de « Arduino & other physical or virtual devices« . Vous cliquez sur le bouton Get Started sur la page suivante.
Cette étape permet de créer un Device (Appareil). Si vous en utilisez plusieurs (1 Zipabox, 1 Arduino, 1 eeDomus, 1 serveur web…). Cela s’avérera plus pratique en terme d’organisation.
Ne vous en faites pas, même si vous n’avez pas d’Arduino, on utilise cette option de façon générique.
Étape 3 : Personnaliser votre Appareil
Définissez tout simplement un nom, un type et éventuellement une description. Ensuite, définissez l’interaction entre votre appareil et Open.sen.
Pour cela, plusieurs options se présentent à vous :
- Sending data (L’envoi des données depuis votre appareil vers open.sen.se) :
- HTTP Posting : L’appareil dépose des données sur open.sen.se en utilisant le protocole HTTP <= celui qui nous intéresse
- XMPP Posting (pas encore disponible) : L’appareil dépose des données sur open.sen.se en utilisant le protocole XMPP
- CoAP Posting (pas encore disponible) : L’appareil dépose des données sur open.sen.se en utilisant le protocole CoAP
- Receiving data (La réception des données sur votre appareil depuis open.sen.se) :
- HTTP Polling : L’appareil récupère les données collectées sur open.sen.se en utilisant le protocole HTTP <= celui qui nous intéresse
- HTTP Push to : Open.sen.se déposera les données collectées sur l’adresse web en paramètre en utilisant le protocole HTTP
- XMPP Push (pas encore disponible) : Open.sen.se déposera les données collectées sur l’adresse web en paramètre en utilisant le protocole XMPP
- CoAP Push (pas encore disponible) : Open.sen.se déposera les données collectées sur l’adresse web en paramètre en utilisant le protocole CoAP
Une fois les options sélectionnées et les renseignements saisis, cliquez sur le bouton Save and Continue.
L’étape suivante vous propose de créer un feed directement, sachant que vous pouvez le faire à tout moment.
Étape 4 : Créer un feed pour collecter des données
Pour faire simple, un feed est un pot dans lequel on va stocker 1 donnée à un instant t. Après ce sont des mathématiques! y = f(x) (à ne pas confondre avec notre FX) !
On renseigne alors le feed en le nommant, puis en définissant si c’est une entrée (dans open.sen.se) ou une sortie (récupération depuis votre appareil).
On définit le type :
- Un nombre à décimales (Float)
- Un nombre entier (Integer)
- Une valeur binaire (Boolean 1 ou 0)
- La valeur d’une liste (List) définie après avoir sélectionné le type
- Du texte (Text)
- Ou une valeur personnalisée (Other)
Une liste d’options apparaîtra après avoir choisi le type pour avoir plus de pertinence, par exemple dans le cas d’un Float, la valeur sera de type °C ou € ou encore dB ou même une valeur personnalisée.
Ensuite, cliquez sur Save feed.
Après avoir sauvegardé, vous pourrez soit ajouter un nouveau feed, soit terminer. Vous aurez terminé en cliquant sur le bouton Finish.
Vous aurez donc dans la liste des feeds un résumé contenant la liste des feeds créés ainsi que leurs numéros respectifs.
Ce numéro est l’adresse du feed.
Étape 5 : Créer une Application pour afficher le feed sur le Sensboard (page d’accueil)
Rendez-vous dans le menu Applications. Allez dans la catégorie Visualization & Display et installez Dynamic Gauge (par exemple).
Sélectionnez le data source (le feed) et nommez l’application. Ensuite, cliquez sur Save and continue. Et enfin, Complete installation.
Retournez sur l’accueil à l’aide du menu Sensboard, et hop, votre jauge est prête à être alimentée !
Alimentation d’un feed
Pour alimenter un feed, il suffit (ce qui est un bien grand mot) d’effectuer une requête HTTP sur l’adresse suivante avec la méthode POST : http://api.sen.se/events/?sense_key=[sense_key]en ayant pris soin de remplacer [sense_key] par votre clé personnelle, en envoyant la chaine suivante représentant un objet JSON :
{ "feed_id": [ID DE VOTRE FEED], "value" : [LA VALEUR DE VOTRE FEED] }
Si vous ne savez pas comment récupérer cette clé, une fois connecté, dirigez-vous sur votre nom d’utilisateur en haut à droite de la page et cliquez dessus.
Ensuite, choisissez Profile & Settings, puis le menu à gauche API Key!
Voici un petit exemple avec un script nodejs permettant d’envoyer des infos récupérées sur une zipabox.
Exemple d’envoi avec une Zipabox
- Aller sur le site http://nodejs.org/
- Télécharger la version appropriée pour ton système (Linux/Windows/MacOS) 32 ou 64bits
- Installer nodejs
- Une fois installé, créer un dossier zipabox vous voulez (de préférence sous c:\ ou à la racine du disque choisi)
- Ouvrir une commande msdos (Menu démarrer -> exécuter -> cmd puis entrée)
- se rendre dans le dossier créé au dessus
cd c:\zipabox
taper la commande suivante pour installer les modules zipabox et open.sen.se :
npm install zipabox open.sen.se
Ce qui aura pour effet d’installer les 2 packages
- Sans fermer la commande msdos, dans le dossier c:\zipabox, créer un fichier nommé test.js (ou autrement) avec l’explorateur du système d’exploitation
- Editer ce fichier à l’aide d’un éditeur (notepad par exemple) et coller le code suivant ou le télécharger ici :
function writelog(line){ console.log(line); }var colors = require('colors'); var zipabox = require("zipabox");zipabox.showlog = true; zipabox.username = "[ZIPABOX LOGIN]"; zipabox.password = "[ZIPABOX PASSWORD]";var opensense = require("open.sen.se"); opensense.sense_key = "[API Key open.sen.se]"; opensense.showlog = false;zipabox.events.OnAfterConnect = function(){ writelog("OnAfterConnect"); zipabox.LoadDevices(); }zipabox.events.OnAfterLoadDevice = function(device){ function CollectValuesForFeeds(uuid,attr,value){ if (zipabox_device_link_feed[uuid]){ if (zipabox_device_link_feed[uuid].attributes[attr]){ writelog("Collecting device value for feeding...".yellow); if (!isNaN(parseFloat(value))) value = parseFloat(value).toFixed(2);opensense.feeds[zipabox_device_link_feed[uuid].attributes[attr].feed_id] = {"value": value}; } } } writelog("" + device); for (var uuid in device.json){ var devicejson = device.json[uuid]; for (var attr in devicejson.attributes){ var attribute = devicejson.attributes[attr]; CollectValuesForFeeds(uuid,attr,attribute.value); } } } zipabox.events.OnAfterLoadDevices = function(){ writelog("OnAfterLoadDevices!!!"); opensense.sendfeeds(); }opensense.events.OnBeforeSendFeed = function(feed){ writelog("Sending Feed : " + (""+feed.json.feed_id).yellow.bold + " value : " + feed.json.value.bold); }opensense.events.OnAfterSendFeed = function(feed){ writelog("Feed sended : " + (""+feed.json.feed_id).yellow.bold + " value : " + feed.json.value.bold); } opensense.events.OnAfterSendFeeds = function(){ zipabox.Disconnect(); }var zipabox_device_link_feed = { /* TEMPERATURE */ "[UUID MODULE ZIPABOX]" : { attributes: { [ID ATTRIBUT MODULE ZIPABOX]: { feed_id: [FEED_ID] } } } };zipabox.Connect();
- Modifier [ZIPABOX LOGIN] avec le login de la zipabox
- Modifier [ZIPABOX PASSWORD] avec le mot de passe
- Modifier [API Key open.sen.se] avec la clé précédemment récupérée
- Modifier [UUID ZIPABOX] avec l’UUID du composant à relever
- Modifier [ID ATTRIBUT MODULE ZIPABOX] avec le numéro de l’attribut du module à envoyer
- Enregistrer le fichier
- retourner dans la commande msdos
- taper la commande suivante :
node test.js (ou le nom donné au fichier)
Voilà ! À chaque fois que vous exécuterez ce script avec la dernière commande, la valeur de l’attribut [ID ATTRIBUT MODULE ZIPABOX] composant de la Zipabox portant l'[UUID ZIPABOX] saisi sera envoyé!
Conclusion
Open.sen.se est un outil très intéressant et très utile… à condition de savoir bien alimenter le service. Pour ma part, après avoir développé ma petite interface, il m’a été très instructif : consommation électrique, connaitre le nombre de fois où ma chaudière à fioul se déclenche et sur combien de temps ! En effet, pour cette dernière information, en connaissant la durée de fonctionnement et la taille du gicleur (permettant l’alimentation en fioul) de ma chaudière, j’ai pu calculer ma consommation de carburant en temps réel !
Je pense toutefois qu’il manque de l’ergonomie au site et une application smartphone/tablette qui serait du plus bel effet sur la cheminée!
N’hésitez-pas à me poser vos questions si vous n’avez pas tout compris, car cela reste tout de même assez compliqué!