Aller au contenu

Problème de syntaxe


ManuTJ

Messages recommandés

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
Lien vers le commentaire
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

 

Lien vers le commentaire
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";

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...