Les Carnets de Byfeel domotique , Objets connectés , DIY , Programmation, Nouvelles Technologies ….

Envoyez des informations à Jeedom depuis votre module WEMOS ( ou compatible ESP8266 )

 

Suite à l’article de l’horloge avec notification , qui permet depuis Jeedom d’afficher des messages envoyés par votre BOX.

Certains me demande , comment depuis mon module , puis j’envoyer une info à Jeedom  ?

En effet jusqu’à présent , la communication ne se faisait que dans un sens  : Box vers horloge   , il est temps de se pencher aujourd’hui sur la réciproque , comment envoyer une info ou une action à jeedom .

Jeedom , permet depuis son API , de recevoir des informations depuis l’extérieur via une simple requête Http .

Toutes les informations sur la doc , officiel de Jeedom : https://jeedom.github.io/core/fr_FR/api_http

L’info qui nous intéresse dans cet article , est comment modifier une variable :

Voici l’URL à utiliser :

http://#IP_JEEDOM#/jeedom/core/api/jeeApi.php?apikey=#APIKEY#&type=variable&id=#ID#&value=VALUE

  • IP_jeedom : L’adresse ip de votre box Jeedom
  • APIKEY : La clef API de votre système  ( a récupéré dans l’onglet configuration / API et choisir la clé de l’API Virtuel.
  • ID : id de la variable dont on veut modifier la valeur
  • value  : si “value” est précisé alors la variable prendra cette valeur (écriture d’une valeur)

Si vous êtes intéressé par déclencher une action , comme ouvrir un volet par exemple , l’url à utiliser serait sous la forme :

http://#IP_JEEDOM#/jeedom/core/api/jeeApi.php?apikey=#APIKEY#&type=cmd&id=#ID#

Dans le cadre de cet article , je me contenterai d’expliquer comment modifier une variable . Il sera simple pour vous de modifier l’url envoyé , afin de correspondre à vos attente.

Afin de récupérer tous les éléments nécessaires à l’écriture de cette URL , il suffit de créer un « virtuel » .

Pour la suite de cet article , je vais me baser sur le script de notre horloge .

Etat horloge Virtuel

Une fois le virtuel créé , il suffit de récupérer l’id de la commande à modifier , ici 10821 .

Puis , ainsi de suite pour les autres infos à récupérer ( Luminosité , Secondes , Mode Auto-Manu , etc … )

Maintenant , que l’on connaît l’adresse ip de notre Jeedom , la clé API  du virtuel et les id des commandes à modifier , il nous reste plus qu’a renseigner tout cela dans notre sketch.

La bibliothèque , qui permet de lancer des requêtes HTTP , est la suivante : Esp8266httpclient.

l’envoie d’une requête se fera grâce à la fonction  .begin(url);

Pour l’utiliser .Il faut l’inclure cette bibliothèque à la suite de vos « include« :

#include <ESP8266HTTPClient.h>

J’ai défini une constante JEEDOM , afin de pouvoir utiliser l’horloge sans remontée d’info si on a pas de box jeedom . Par défaut , elle est positionnée sur false , afin d’éviter d’avoir des erreurs si les paramètres Jeedom ne sont pas en place.

Dans un premier temps , je définis les différentes variables nécessaires :

//**********************//
//interaction Jeedom
#define JEEDOM false                   // Activation interaction avec Jeedom ( veuillez renseigner tous les champs , avant de l'activer : true)
String ApiKey   = "Lxxxxxxxxxxxxx0HsCcrBCuXRxntJDO1kn"; // cle API Jeedom 
String IPJeedom = "xxx.xxx.xxx.xxx";
String PortJeedom = "80";
// ID equipement a modifier
String idEtatHorloge  = "10821";
String idLum ="10822";
String idSec = "10823";
String idAuto ="10834";

//base URL jeedom Virtuel
String BaseUrlJeedom ="http://"+IPJeedom+":"+PortJeedom+"/core/api/jeeApi.php?apikey=" + ApiKey + "&type=virtual&id=";

puis je crée une instance http ( qui nous servira à appeler , les différentes fonctions ) :

#if (JEEDOM)
HTTPClient http; // init client WEB
#endif

Je crée ensuite une fonction sendtojeedom() , qui me permettra d’envoyer la requête complète et ainsi mettre à jour , à chaque appel la bonne information dans Jeedom.

// Fonction envoie requete vers Jeedom
void sendToJeedom(String url , String id , String valeur){
  #if (JEEDOM)
        url +=id;
        url +="&value="+valeur;
  http.begin(url);
  httpCode = http.GET();
  http.end();
  #endif
}

Cette fonction a comme paramètre :

url : le chemin d’accès à jeedom

id : le numéro d’identification de la commande jeedom à modifier

valeur : La valeur que doit prendre cette commande.

La valeur httpCode , permet de récupérer un code d’erreur , dans le cas d’un problème de communication. ( code 200 si tout ok ) .

Exemple d’un test dans la fonction loop() , qui permet d’avertir si pb de communication ( ip incorrect , API incorrect , ou url mal construite ) .

 #if (JEEDOM)
  if (httpCode != 200 ) {
  message = " Erreur connexion Jeedom ";
  message.toCharArray(Notif,BUF_SIZE);
  Alert=true;
  httpCode=200;
  }
  #endif
[adsense]

Pour Appeler la fonction sendtojeedom , j’ai inclus les appels suivants dans la partie gestion des clics du sketch précédent :

...............

case 2: // double clic - ON / OFF horloge
      TimeOn =!TimeOn;
      if (TimeOn)  {
        P.print("On"); 
        sendToJeedom(BaseUrlJeedom , idEtatHorloge , "on");
      }
      else  {
        P.print("Off");
        sendToJeedom(BaseUrlJeedom , idEtatHorloge , "off");
      }
      delay(400);
      clic=0;
      break;
         case 3: // double clic - Affiche ou non les secondes
      DisSec =!DisSec;
      if (DisSec) sendToJeedom(BaseUrlJeedom , idSec,"on");
      else sendToJeedom(BaseUrlJeedom , idSec,"off");
      clic=0;
      break;

............

ceci est un extrait pour le double click et le triple click .

Il ne reste plus qu’à définir pour chaque interaction ( bouton , serveur WEB du module , mode auto lumière …. ) et d’ajouter cet appel.

J’ai modifié le script final sur mon ghitub en version : 2.40

Une fois configuré , voila un exemple de WIDGET Horloge qui réagit à tous les changements .

Tuile Horloge sous jeedom

Lors d’un double clic , sur le bouton de mon horloge , le bouton du widget basculera automatiquement de la position on a off . Idem pour les autres fonctionnalités .

En mode Auto ( le slider ) , se positionne automatiquement en fonction de la valeur Intensité.

Et ici extrait des commandes de cette tuile .

Pour la tuile j’ai utilisé les widget suivants : Tooltip slider , AutoManuSwitch et toggleSwitch , que vous pouvez trouver dans le market jeedom.

Sources sur le ghitub .

 

 

 

 

 

24 commentaires sur “Envoyez des informations à Jeedom depuis votre module WEMOS ( ou compatible ESP8266 )”

Les commentaires sont fermés.