Aller au contenu
ManuTJ

Problème de syntaxe

Recommended Posts

Bonjour,

 

Pour différentes raisons, j'ai besoin d'envoyer un ordre à ma HCL3 pour déclencher une sirène.

Pour cela, j'utilise un script hébergé sur mon NAS Synology.

J'ai utilisé le Swagger fourni dans la HCL3 et je dispose des éléments suivants :

- l'URL appelée

https://ip_hcl3/api/devices/81/action/turnOff

- la fonction CURL

curl -X POST "https://ip_hcl3/api/devices/81/action/turnOff" -H  "accept: */*" -H  "Content-Type: application/json" -H  "X-Fibaro-Version: 2" -H  "Accept-language: fr" -H  "Authorization: Basic XXXX" -d "{\"args\":[\"{}\",\"{}\"],\"delay\":0}"

- les arguments du "body"

{
  "args": [
    "{}",
    "{}"
  ],
  "delay": 0
}

 

J'ai un souci de syntaxe quand je veux convertir les arguments du body en PHP.

Je fais un truc comme ça :

// Paramètres
$id_sirene = 81;
$data = array(
    "args:{}, {}",
    "delay: 0"
);
$api_url_sirene = "https://".$ip_fibaro."/api/devices/".$id_sirene."/action/turnOff";

// Active la sirène
$curl_sirene = curl_init($api_url_sirene);

curl_setopt($curl_sirene, CURLOPT_HTTPHEADER, $data_header);

curl_setopt($curl_sirene, CURLOPT_POST, true);
curl_setopt($curl_sirene, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl_sirene, CURLOPT_RETURNTRANSFER, true);

$return = curl_exec($curl_sirene);


 

J'obtiens toujours une erreur 400, indiquant que ma requête est mal formatée.

J'ai lu en long et en large ce sujet et celui-là, sans trouver mon bonheur.

 

Qui peut m'aider à trouver la bonne syntaxe pour alimenter mon tableau $data ?

 

 

[EDIT] Désolé les modos, je pense que mon sujet serait mieux dans la rubrique "Support" que "Tutoriels" :ph34r:

Modifié par ManuTJ

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne suis pas certain, mais je pense que la syntaxe de ton tableau $data en PHP n'est pas bonne, particulièrement la ligne args, il doit manquer des crochets ou accolades :

$data = array(
    "args:{}, {}",
    "delay: 0"
);

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour cette piste.

J'ai viré le tableau et j'ai codé la ligne comme ci-dessous :

$data = '{"args":["{}", "{}"], "delay": 0}';

 

Le code est opérationnel, même si je récupère un code 202 (et non 200).

 

[HS] Impossible d'utiliser la balise Code en indiquant que c'est du PHP

 

Partager ce message


Lien à poster
Partager sur d’autres sites

202 c'est aussi un code indiquant que l'action s'est bien passée.

Probablement une erreur dans la doc du Swagger.

 

Pour le code, il faut utiliser la balise :

image.png.a31ebe72e67ebd3c3d69e28d46551fec.png

 

Et tu auras bien accès à tous les langage LUA, PHP, etc :

image.thumb.png.f0f977c2baf140a4ef8621cba1512470.png

 

 

echo "Hello World";

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×