ManuTJ Posté(e) le 12 septembre 2021 Signaler Partager Posté(e) le 12 septembre 2021 (modifié) 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" Modifié le 12 septembre 2021 par ManuTJ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 12 septembre 2021 Signaler Partager Posté(e) le 12 septembre 2021 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" ); Lien vers le commentaire Partager sur d’autres sites More sharing options...
ManuTJ Posté(e) le 12 septembre 2021 Auteur Signaler Partager Posté(e) le 12 septembre 2021 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 More sharing options...
Lazer Posté(e) le 12 septembre 2021 Signaler Partager Posté(e) le 12 septembre 2021 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 : Et tu auras bien accès à tous les langage LUA, PHP, etc : echo "Hello World"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés