Le premier objectif de la maison intelligente est de simplifier la vie de ses occupants. Hors elle ne peut s’y parfaire si son usage quotidien devient plus compliqué encore que celui d’une maison idiote.
Le seul rapport entre la maison et ses occupants est l’interface qui les relie. Celle-ci doit être simple à utiliser, intuitive, et tant qu’à faire adaptée aux spécificités de chaque habitat et ses équipements.

openremote-logo-newJe n’ai pour l’instant trouvé qu’une seule solution : OpenRemote. Il s’agit d’une solution open source qui permet de créer une interface utilisateur visuelle entièrement personnalisable. Le revers de la médaille c’est que la mise en place du design est assez longue, mais elle est sans limites !

Tout d’abord, je ne reviendrai pas sur l’installation ou encore la création d’une interface OpenRemote. Il s’agit là précisément de comprendre comment faire communiquer OpenRemote et la box eedomus.

Grâce à son API, l’eedomus permet notamment deux choses :
– envoyer des commandes http pour modifier l’état des périphériques
– récupérer l’état des différents capteurs et actionneurs, également au travers d’une requête http

 

Explication rapide du fonctionnement de OpenRemote

Lorsque vous créez votre interface OpenRemote vous avez besoin de deux choses :
– des commandes http qui permettent de modifier l’état d’un prériphérique sur votre box
– des sensors qui vont interroger à intervalle régulier un fichier xml ou json pour relever l’état des capteurs auxquels ils sont associés

 

Mise en place dans OpenRemote

Nous allons utiliser les “rules” d’OpenRemote. Les rules permettent de scripter un peu tout et n’importe quoi …
Dans notre cas, nous allons demander à OpenRemote d’interroger toutes les secondes l’URL de l’API eedomus afin récupérer l’état des capteurs et actionneurs de la box.

Cette URL est de la forme :

http://IP-EEDOMUS/api/get?action=periph.caract&periph_id=XXX&api_user=XXX&api_secret=XXX

periph_id est le code API du périphérique dont vous souhaitez connaître l’état, à récupérer dans les paramètres experts du module en question :

Capture-d’écran-2013-07-18-à-16.53.2412

api_user et api_secret sont à récupérer dans la configuration de votre box.

Capture-d’écran-2013-07-18-à-17.00.14654654

Rendez-vous ensuite dans votre designer OpenRemote, dans l’onglet Config for Controller.
Sélectionnez rules et dans le champ rules editor collez ce script en ayant pris soin, bien sûr, de compléter l’URL avec vos propres valeurs.

package org.openremote.controller.model.event
 import org.apache.commons.io.FileUtils;
 import java.net.URL;
 import java.io.File;
 rule "Poll eedomus every second"
 timer (cron: * * * * * ?)
 when
 eval(true)
 then
 pollEedomus();
 end
 function void pollEedomus() {
 FileUtils.copyURLToFile(new URL("http://IP-EEDOMUS/api/get?action=periph.caract&periph_id=XXX&api_user=XXX&api_secret=XXX"), new File("../webapps/controller/eedomus.json"));
 }

Capture d’écran 2013-07-18 à 17.07.02

Petit point :
Pour l’instant l’API eedomus ne permet pas de récupérer d’une URL générique l’ensemble des statuts des capteurs de la box. Il va vous falloir ajouter manuellement chaque periph_id à la suite du premier en les séparant simplement par une virgule (periph_id=XXX,XXX,XXX…).

Pas très pratique, mais pour l’instant c’est comme ça…

Validez la rule puis retournez dans la rubrique Device.

 

Nous allons prendre pour exemple un simple switch.

Il faut tout d’abord créer les deux commandes ON et OFF.

Créez une nouvelle commande http :

http://IP-EEDOMUS/api/set?action=periph.value&periph_id=XXX&value=100&api_user=XXX&api_secret=XXX

Même chose pour la commande OFF en changeant la valeur à 0 :

http://IP-EEDOMUS/api/set?action=periph.value&periph_id=XXX&value=0&api_user=XXX&api_secret=XXX

 

Puis on crée une nouvelle commande http qui mettra à jour le sensor qui renseigne l’état du switch (veillez à compléter l’adresse IP de votre controller OpenRemote ainsi que le port utilisé) :

http://IP_OR:8688/controller/eedomus.json

On choisit de vérifier l’état toutes les secondes.

On renseigne le JSONpath expression qui permet de choisir le capteur à relever (valeur et periph_id à vérifier d’après l’URL citée en début d’article) :

body[?(@.periph_id==XXX)].last_value

Capture d’écran 2013-07-18 à 17.20.19

Ensuite vous créez, comme d’habitude, un sensor utilisant cette URL, puis un switch utilisant le sensor créé ainsi que les deux commandes ON et OFF.

Ca y est, votre interface OpenRemote cause avec votre eedomus !