🔄 Push d'une variable de Jeedom vers IPX800 V5

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 image 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 image 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 image
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

5 « J'aime »

Exemple 3 : push d’un booléen vers une IO

Le plugin « Phone Detection Â» permet de dĂ©tecter la prĂ©sence de nos smartphones en Bluetooth Ă  proximitĂ© de la box Jeedom. Il suffit de renseigner l’adresse BT de chaque tĂ©lĂ©phone.

Envoyons l’info booléenne vers l’ipx800, sur l’IO 65965.

création du scénario

Script adapté

$cmd = cmd::byString('#[CONSOMMATIONS GLOBALES][TEL1][Etat]#');
$ipx800='192.168.0.50'; //adresse IP et port si non 80
$apikey='wlAbCG6FZm2UH5w'; //apikey v5
$io=65965; //id de l'IO sur ipx

$value = $cmd->execCmd();
if ($value == 1) {
    $state = true;
} else if ($value == 0) {
    $state = false;
}
$url = 'http://' .$ipx800 . '/api/core/io/' . $io . '?ApiKey=' . $apikey;
$data = json_encode(array('_id' => $io, 'on' => $state));

$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 : ' . $io);
$scenario->setLog('Nouvelle valeur envoyée:' . $state);
$scenario->setLog('Réponse de l\'IPX800 :' . $response);

4 « J'aime »

Bonjour @fgtoul, ce post est exactement ce que je recherche - à ceci près - que j’ai besoin de mettre à jour un string.
J’ai tentĂ© de remplacer les $io par des $str et de dĂ©clarer un string32 sur V5, placer son id dans le bloc code, le scĂ©nario se lance correctement mais la rĂ©ponse de la V5 est « Invalid ID Â»â€¦

Bonjour Pat,

un peu de lecture utile…

Bonne journée

Bonjour,
attention avec les objets String, il n’y a pas de polling, Les dashboards ne se mettent pas à jour lors des changements de valeurs.
bonne journée

Merci grocrabe, je n’ai plus qu’à « gager Â»â€¦

Bonjour, disons qu’on a maintenant un « tuyau Â» de communication qui fonctionne pour les ana et les boolĂ©ens . Si je transforme un string en ana sur JEEDOM (si > « A Â» => 100, « B Â» => 20, … ), que je l’envoie sur V5 et que je dĂ©tricote cette « mesure Â» en lui affectant un string (si > 100 => « A Â», <20 => « B Â», … ), je devrais pouvoir m’en sortir.
Mon but étant de récupérer les couleurs du jour TEMPO afin de stopper des équipements en fonction de la couleur et des périodes HP/HC, pour le jour même et le lendemain. J’ai un EDV 1 et pas la possibilité de récupérer la couleur du lendemain, ce qu’un plugin de JEEDOM fait très bien.
En tout cas merci

bonjour,
des solutions 100% IPX V5 existent, sans avoir Ă  recourir Ă  Jeedom.

1 « J'aime »

Bonjour et merci pour l’info et la doc. Je scrute le forum régulièrement mais celle là je l’ai ratée.

Bonjour,
pour envoyer une variable textuelle de Jeedom vers l’IPX, vous pouvez consulter ce post :

Vous y trouverez le code du widget HTML que j’utilise pour réactualiser automatiquement le widget Texte sur un liveview
Bonne journée