Dernières nouvelles

Interfacer OpenRemote avec la box domotique eedomus

Tout d’abord je ne reviendrai pas sur la présentation ni 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.

Le projet OpenRemote est un projet OpenSource visant à permettre le contrôle à distance de son installation domotique grâce à des interfaces simples. Vous pouvez aller lire notre article sur OpenRemote.

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, é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 une fonction d’OpenRemote qui s’appelle « rules ». 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 qui permet de récupérer l’état des capteurs de la box.

Cette url est de la forme :

http://api.eedomus.com/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

Interfacer eeDomus et OpenRemote

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

Interfacer eeDomus et OpenRemote API eeDomus

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
    pollVera();
end

function void pollVera() {
    FileUtils.copyURLToFile(new URL("http://api.eedomus.com/get?action=periph.caract&periph_id=XXX&api_user=XXX&api_secret=XXX"), new File("../webapps/controller/eedomus.json"));
}

Interfacer eeDomus et OpenRemote - Rules

Petit point : pour l’instant l’API eedomus ne permet pas d’appeler d’une simple url 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://api.eedomus.com/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://api.eedomus.com/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 json path 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

Interfacer eeDomus et OpenRemote - Edit command

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

Et voilà, votre interface OpenRemote cause avec votre eedomus !

A propos de Erwan Guingand

Après avoir été directeur artistique dans de grandes agences de publicité parisiennes, je travaille aujourd’hui en indépendant sur tous types de sujets de communication. Parallèlement, je suis passionné par les nouvelles technologies et en particulier la domotique dont le plus gros enjeu est, à mon avis, l'interface avec l'utilisateur plus que la technologie.

4 commentaires

  1. Attention à ne pas interroger trop rapidement l’API de l’Eedomus.

    1 requête / seconde = 3600 requêtes par heure = 86400 requêtes par jour.

    Pour rappel, l’utilisation de l’API est limitée à 1000 requêtes / jour sans abonnement et 10000 par jour avec l’abonnement Premium.

    –> http://doc.eedomus.com/view/Formules

    Il vaut mieux utiliser l’API locale en remplaçant http://api.eedomus.com/ par http://IP_BOX_EEDOMUS/ dans les requêtes d’OpenRemote.

    http://doc.eedomus.com/view/API_eedomus#Local_API_.28LAN.29

    L’utilisation de l’API locale permettra aussi une meilleure réactivité.

  2. Hello Fabien

    Tu as bien raison, je devais faire la mise à jour du tuto.
    La limitation tient plus du serveur Connected Objects que des capacités de l’eedomus.

    Ceci dit : appeler l’API distante n’a pas d’intérêt puisque de toutes façons OpenRemote est forcément installé sur un serveur local.

    Donc mise à jour sur toutes les commandes http ! Merci !

  3. Je rectifie d’ailleurs que pour accéder à l’API localement il ne faut pas remplacer http://api.eedomus.com/ par http://IP_BOX_EEDOMUS/ mais par http://IP_BOX_EEDOMUS/api/

    ;)

  4. Bonjour,
    je trouve ce tuto très intéressant mais je me pose depuis quelques temps des questions sur ces solutions tierces d’accès à nos box domotiques par rapport à la sécurité, que je recherche parcequ’elles permettent une interface bien plus belle :
    Comme pour Imperihome que je voulais utiliser depuis mon galaxy, que risque-je de mettre mes identifiants de l’eedomus dans les url dans OpenRemote (ou dans les autres, je ne vis personne en particulier) ? Parceque ces solutions m’intéressent beaucoup mais pas si ça doit ouvrir grandes les portes de mon chez-moi à des gens que je ne connais pas. Merci de nous éclairer sur ce point.

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Revenir en haut de la page