..:: Planète-Domotique : Le Blog ::..
Box Domotique eeDomus Tous les articles

eeDomus, une API simple et efficace

La box eeDomus et surement la box proposant l’API la plus simple a utiliser.

Une API moderne de type REST avec un retour json permettant de l’utiliser très facilement en Javascript.

L’ensemble de la documentation de l’API est disponible sur le wiki eeDomus : ICI

Je vous propose quelques articles pour découvrir cette fonctionnalité ainsi que des exemples d’utilisation.La première chose à faire pour utiliser l’API eedomus est de demander ses identifiants.

Pour cela, il faut se rendre dans la partie « Configuration », onglet « Mon compte » et cliquer sur le lien « Envoyer » en face de Identifiants pour l’API :

Vous recevez alors un mail contenant vos identifiants pour utiliser l’API, à savoir un api_user et un api_secret.

Il suffit ensuite d’appeler une url avec la fonction de l’API à utiliser, et les informations d’identification :

Le serveur renvoi alors une réponse au format json qui pourra être utilisée pour contrôler que la requête a bien été exécutée et pour mettre à jour des données dans une page html par exemple.

La plupart des requêtes de l’API nécessite le code API du périphérique.

Ce code API se trouve dans la page de configuration d’un périphérique :

Il suffit de déplier la zone Paramètres Expert pour pouvoir le voir apparaître.

Pour pouvoir obtenir rapidement plusieurs code API, vous pouvez aussi aller directement dans la liste des périphériques (Configuration, Périphériques). Puis en cliquant sur la petite flèche dans l’entête des colonnes, vous pouvez choisir les colonnes à afficher, et en particulier la colonne « Code API » :

 

Maintenant que toutes les bases ont été posées, voyons comment ça fonctionne !

On appelle donc une url avec les différents paramètres et la fonction de l’API :

https://api.eedomus.com/get?action=periph.caract&periph_id=4713&api_user=xxxxx&api_secret=yyyyyyyy

Le résultat est un fichier json :

{ « success »: 1, « body »: { « name »: « Température Salon RFXCOM », « last_value »: « 20.2 », « last_value_change »: « 2012-04-14 21:38:47 » } }

Le Json étant quelque chose de très facile à interpréter en javascript, voici un exemple d’utilisation pour mettre à jour simplement un afficheur sur une page web :

      var api_server = "https://api.eedomus.com";
      var eedomus_api_user = "xxxx";
      var eedomus_api_secret = "yyyy";

      var req = new XMLHttpRequest();
      req.open("GET", api_server + '/get?action=periph.caract&periph_id='+idPeriph+'&api_user='+eedomus_api_user+'&api_secret='+eedomus_api_secret, true); 

      req.onreadystatechange = function ()
      {
           if (req.readyState == 4) 
           { 
                var doc = eval("(" + req.responseText + ")"); 
            var mySensor = document.getElementById("sensor");

            var val = doc.body.last_value;                 

                if (fn!=undefined)
                    mySensor.innerHTML = fn(val);    
           }
      };

      req.send(null);

 

Grâce à ce bout de code, la valeur est récupérée par l’API puis l’élément « sensor » est mis à jour. Exemple <div id= »sensor »></div>

Je vous propose de créer un fichier Javascript eedomus.js contenant des fonctions qui créé une abstraction de l’API pour pouvoir facilement mettre à jour des valeurs dans une page HTML ou piloter des périphériques depuis des boutons dans une page HTML.

Le fichier est disponible en téléchargement ici :

Pour l’utilisation, c’est très simple, il suffit d’abord d’inclure le javascript, puis d’appeler la fonction d’initialisation des informations de connexion. Puis de définir les bloc à rafraichir avec l’id du périphérique associé :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Test eeDomus API</title>
        <script src="https://eedomus.ts-box.fr/eedomus.js"></script>

        <script language="Javascript">
          eedomus_setLoginInfo("p0456", "7mert898eRR5b");

          eedomus_autoUpdate("hp", 8678, 60,  1/1000, 1);
          eedomus_autoUpdate("hc", 8644, 60,  1/1000, 1);
          eedomus_autoUpdate("md", 8642, 60);
        </script>
    </head>
    <body>
         Valeur index HP : <span id="hp"></span><br>
         Valeur index HC : <span id="hc"></span><br>
         Valeur Mode : <span id="md"></span><br>
         Valider le changement : <button onclick="eedomus_setValue(9464, 110)">OK</button><br>
    </body>
</html>

Et voila, simple et efficace, les blocs hp, hc et md vont se mettre à jour automatiquement toutes les 60 secondes et en cliquant sur le bouton OK le périphérique 9464 prendra automatiquement la valeur 110.

ATTENTION ! Il faut bien noter que ce système est a utiliser uniquement à titre personnel sur un serveur qui n’est pas accessible au public.

Vos identifiants API sont accessibles en clair, et il est donc possible d’avoir accès à votre box en utilisant ces informations.

 

0
0
Mickael

Je suis passionné de Domotique depuis des années. J'ai fait du développement en informatique industrielle pendant 12 ans, et un jour ... je me suis lancé !<br /> J'ai créé ma boutique de vente en ligne : https://www.planete-domotique.com

Commentaires

  1. Je confirme l’API est super et facile d’intégration sans besoin de grosse connaissance surtout avec Jquery Mobile. Je suis en train de me faire une petite interface optimisé mobile (je trouve celle de base pas tip top) vous ferai suivre quelques retours dans les prochaines semaines.

  2. Super article qui offre beaucoup de possibilité.
    Je souhaiterais pouvoir faire un test sur une valeur remontée afin de lancer une routine du type:
    if(document.getElementById(« alarme »).value == « Etat 0 »)
    {
    routine 1;
    }
    else
    {
    routine 2;
    }
    Je n’arrive pas à faire fonctionner ce code, avez vous une suggestion.
    Merci par avance.

  3. Le fichiers n’est plus dispo, est-il possible de le remettre à dispo stp?

    Merci bien

  4. Idem pour la classe PHP depuis hier.

    Merci d’avance.

  5. Bonsoir ! Serait-ce possible de remettre à disposition le script eedomus.js ? Merci d’avance !

Laisser un commentaire

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

%d blogueurs aiment cette page :