[RESOLU] Question toute simple sur API dans PHP

L'utilisation de api.eedomus.com et de l'eedomus toolbox

[RESOLU] Question toute simple sur API dans PHP

Messagepar lesyl20 » 15 Nov 2020 18:28

Bonjour,

Malgré les nombreux exemples de code PHP trouvés sur le net, je n'arrive pas à récupérer une valeur d'un périphérique eedomus et l'afficher en php.

J'ai soit rien, soit des erreurs de type api_user.

Est-ce qu'une bonne volonté pourrait me coller ici un bout de code PHP qui fonctionne de son côté?

Je souhaite juste le code tout simple, avec définition api_user, api_secret.

LA construction de l'URL, la requete avec le last_value

Et l'affichage de la valeur.

Merci infiniment d'avance.
Dernière édition par lesyl20 le 16 Nov 2020 16:30, édité 1 fois.
lesyl20
 
Messages : 17
Inscription : 06 Juil 2020

Re: Question toute simple sur API dans PHP

Messagepar rover820i » 15 Nov 2020 20:25

Salut,

C'est un script exécuté sur ta box ou sur un serveur externe ?
rover820i
 
Messages : 3363
Inscription : 23 Juil 2016

Re: Question toute simple sur API dans PHP

Messagepar KikiFUNstyle » 15 Nov 2020 20:44

Si c'est un script php exécuter depuis une Eedomus :

Code : Tout sélectionner
<?

    // periph_id pour afficher le last_value
    $periph_id = "123456";
   
    // contruction de l'url pour appeler l'API Eedomus
    // pas besoin de user_api et api_secret
    $url = "http://localhost/api/get?&action=periph.caract&periph_id=".$periph_id."&format=xml";
   
    // appel à l'API
    $responseXml = httpQuery($url);
   
    // parsing du XML pour chercher le last value
    $last_value = xpath($responseXml, "//last_value");

    echo "last_value=".$last_value;

?>


API Eedomus

Si c'est hors Eedomus mais dans ton LAN alors l'url sera :
Code : Tout sélectionner
http://[ipEedomus]/api/get?api_user=XXX&api_secret=XXX&action=periph.caract&periph_id=XXX&format=xml


Si c'est hors LAN :
Code : Tout sélectionner
http://http://api.eedomus.com/api/get?api_user=XXX&api_secret=XXX&action=periph.caract&periph_id=XXX&format=xml


Il te reste plus qu'a faire du xpath
Code : Tout sélectionner
//last_value
sur le XML de retour
ZWave / RFXCom / broadlink RM /Google Mini / Yeelight / Xiaomi Vacuum V1 / Shelly <3 / Node-RED <3 <3
[Store] Shelly
KikiFUNstyle
 
Messages : 908
Inscription : 24 Avr 2014
Localisation : Toulouse

Re: Question toute simple sur API dans PHP

Messagepar KikiFUNstyle » 15 Nov 2020 20:54

Si tu souhaites 'juste' afficher le last_value tu peux passer par un Capteur HTTP, soit faire du polling ou faire une règle qui fais la requête à la demande.

Capture.PNG
Capture.PNG (64.24 Kio) Consulté 8242 fois
ZWave / RFXCom / broadlink RM /Google Mini / Yeelight / Xiaomi Vacuum V1 / Shelly <3 / Node-RED <3 <3
[Store] Shelly
KikiFUNstyle
 
Messages : 908
Inscription : 24 Avr 2014
Localisation : Toulouse

Re: Question toute simple sur API dans PHP

Messagepar lesyl20 » 16 Nov 2020 09:56

Merci de vos réponses,

Mais toujours pas.

Je précise que j'essaie d'ajouter ce code sur une page Wordpress, en utilisant soit un plugin permettant d'insérer du php dans une page, soit en utilisant des shortcodes.

J'ai même essayé de mettre le fichier PHP à la racine du site, mais erreur 500.

Voici mon code :

Code : Tout sélectionner
<?php

    // periph_id pour afficher le last_value
    $periph_id = "2024991";
   
    // contruction de l'url pour appeler l'API Eedomus
    // pas besoin de user_api et api_secret
    $url = "http://api.eedomus.com/api/get?api_user=XXX&api_secret=XXX&action=periph.caract&periph_id=2024991&format=xml";
   
    // appel à l'API
    $responseXml = httpQuery($url);
   
    // parsing du XML pour chercher le last value
    $last_value = xpath($responseXml, "//last_value");

    echo "last_value=".$last_value;

?>


Je précise donc que c'est un appel externe à la box;

Cela me parait tellement basique pourtant...
lesyl20
 
Messages : 17
Inscription : 06 Juil 2020

Re: Question toute simple sur API dans PHP

Messagepar KikiFUNstyle » 16 Nov 2020 10:33

C'est normal je t'ai donné du code pour du PHP à la sauce Eedomus :?

Je n'ai pas d'environnement php désolé je ne vais pas pouvoir t'en dire plus ...
ZWave / RFXCom / broadlink RM /Google Mini / Yeelight / Xiaomi Vacuum V1 / Shelly <3 / Node-RED <3 <3
[Store] Shelly
KikiFUNstyle
 
Messages : 908
Inscription : 24 Avr 2014
Localisation : Toulouse

Re: Question toute simple sur API dans PHP

Messagepar merguez07 » 16 Nov 2020 10:41

si le code php est lu par un interpréteur autre que celui de l'Eedomus, il faut utiliser du code php classique et non du code php Eedomus

Par exemple le code php classique ne peut pas comprendre le code
$responseXml = httpQuery($url);

en effet httpQuery est propre à l'Eedomus. Dans le php classique il faut utiliser le code curl
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: Question toute simple sur API dans PHP

Messagepar lesyl20 » 16 Nov 2020 10:54

Dac, je comprends mieux et parfaitement.

Un petit coup de main pour transforme ce code en PHP classique?
lesyl20
 
Messages : 17
Inscription : 06 Juil 2020

Re: Question toute simple sur API dans PHP

Messagepar merguez07 » 16 Nov 2020 14:13

Code : Tout sélectionner
<?php

// periph_id pour afficher le last_value
$periph_id = "xxxxxx";
$api_secret = "yyyyyyy";
$api_user="zzzzzzz";
$url = "https://api.eedomus.com/get?api_user=".$api_user."&api_secret=".$api_secret."&action=periph.value&periph_id=".$periph_id;

$cURLConnection = curl_init();

curl_setopt($cURLConnection, CURLOPT_URL, $url);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($cURLConnection);
curl_close($cURLConnection);

$resultatJson = json_decode($data);
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: Question toute simple sur API dans PHP

Messagepar lesyl20 » 16 Nov 2020 15:17

Merci beaucoup Merguez07...

Mais je dois être un boulet car rien ne s'affiche...

Et si je fais un var_dump de la variable $resultatJson, j'ai un NULL

EDIT : je viens de rajouter l'argument "true" au json decode, et cela m'affiche :

Code : Tout sélectionner
array(2) { ["success"]=> int(1) ["body"]=> array(1) { ["last_value"]=> float(18.4) } }


On n'est pas loin, mais il me faut juste le last_value".
lesyl20
 
Messages : 17
Inscription : 06 Juil 2020

Re: Question toute simple sur API dans PHP

Messagepar merguez07 » 16 Nov 2020 16:15

lesyl20 a écrit:EDIT : je viens de rajouter l'argument "true" au json decode, et cela m'affiche :


je t'avoue ne pas avoir de serveur php et je n'ai donc pas pu tester le code que je t'ai envoyé mais, si avec true ça te donne ça, tant mieux

$value=$resultatJson ["body"]["last_value"];
echo $value;
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: Question toute simple sur API dans PHP

Messagepar lesyl20 » 16 Nov 2020 16:28

Yess Man :)

Nickel...

Et merci beaucoup Merguez07... Surtout sans le serveur PHP sous la main...

Je mets le code qui fonctionne donc pour choper la last_value d'un périphérique sur une page PHP externe à la box :
Code : Tout sélectionner
<?php

// periph_id pour afficher le last_value
$periph_id = "XXX";
$api_secret = "XXX";
$api_user="XXX";
$url = "http://api.eedomus.com/get?api_user=".$api_user."&api_secret=".$api_secret."&action=periph.value&periph_id=".$periph_id;

$cURLConnection = curl_init();

curl_setopt($cURLConnection, CURLOPT_URL, $url);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($cURLConnection);
curl_close($cURLConnection);

$resultatJson = json_decode($data,true);

$value=$resultatJson ["body"]["last_value"];
echo $value;
?>


Je pense que cela en intéressera plus d'un vu le temps que j'ai pu chercher, et les bouts de code essayés à droite et à gauche.

Je passe en résolu...
lesyl20
 
Messages : 17
Inscription : 06 Juil 2020


Retour vers API eedomus & eedomus toolbox

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)