Bonjour Ă tous,
Si vous avez sur Jeedom des capteurs divers comme du zigbee, zwave, des données Webservices, webhooks, vous voudrez sans doute remonter les valeurs sur IPX800 afin de les intégrer dans vos scénarios d’automatisation. Ce mini tutoriel montre comment envoyer une valeur stockée ou mesurée sur jeedom vers ipx800 V5.
Voici la démarche.
Exemple 1 : envoi d’une mesure
Dans IPX800 V5, créer une analogique virtuelle et retenir son ID. Régler les décimales si nécessaire.
Sur Jeedom, nous allons créer un scénario qui comprendra un script php envoyant la requête PUT à l’ipx afin de mettre la variable analogique à jour :
Dans le menu Outils, prendre l’option Scénario, cliquer sur pour créer un nouveau scénario.
- Nommer le scénario
- Déclenchement : provoqué
- Ajouter un déclencheur et sélectionner la commande. Dans mon exemple, je veux envoyer la température de l’eau, je sélectionne donc la température de l’eau comme trigger. A chaque changement de sa valeur, le scénario sera exécuté. Je n’ai pas de zigbee/zwave ou autres capteurs qui auraient pu constituer un meilleur exemple.
- activer le scénario
Ouvrir l’onglet scénario
cliquer sur le bouton et sélectionner Bloc de code.
Coller ce code :
$cmd = cmd::byString('#[IPX800 V5][Xpool][TEMP EAU]#'); //valeur Ă envoyer vers ipx
$ipx800='192.168.0.50'; //adresse IP et port si non 80
$apikey='wlAACG6FZm2UH5w'; //apikey v5
$ana=327753; //id de l'analogique sur ipx
$value = $cmd->execCmd();
$url = 'http://' .$ipx800 . '/api/core/ana/' . $ana . '?ApiKey=' . $apikey;
$data = json_encode(array('_id' => $ana, 'value' => $value));
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data)
));
$response = curl_exec($ch);
curl_close($ch);
$scenario->setLog('Requête PUT envoyée à l\'IPX800 : ' . $ipx800);
$scenario->setLog('Id de l\'analogique sur l\'IPX800 : ' . $ana);
$scenario->setLog('Nouvelle valeur envoyée:' . $value);
$scenario->setLog('Réponse de l\'IPX800 :' . $response);
Dans le code, adapter les 4 premières lignes.
Le résultat devrait ressembler à ceci:
Sauvegarder puis exécuter
La valeur jeedom doit remonter sur IPX.
Dans le cas contraire, vérifier dans les logs du scénario si des erreurs existent dans le script.
Exemple 2 : envoyer la température du processeur d’un synology.
Sur Jeedom, le plugin Monitoring permet de récupérer les caractéristiques d’un Synology via le SSH. Je ne vais pas expliquer la mise en place ici.
Création du scénario :
Script adapté :
$cmd = cmd::byString('#[CONSOMMATIONS GLOBALES][SYNO][Température CPU]#');
$ipx800='192.168.0.50'; //adresse IP et port si non 80
$apikey='wlAbCG6FZm2UH5w'; //apikey v5
$ana=327754; //id de l'analogique sur ipx
$value = $cmd->execCmd();
$url = 'http://' .$ipx800 . '/api/core/ana/' . $ana . '?ApiKey=' . $apikey;
$data = json_encode(array('_id' => $ana, 'value' => $value));
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data)
));
$response = curl_exec($ch);
curl_close($ch);
$scenario->setLog('Requête PUT envoyée à l\'IPX800 : ' . $ipx800);
$scenario->setLog('Id de l\'analogique sur l\'IPX800 : ' . $ana);
$scenario->setLog('Nouvelle valeur envoyée:' . $value);
$scenario->setLog('Réponse de l\'IPX800 :' . $response);
Bonne journée