Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Je dispose d'une HCL et d'une alarme MyFox.

J'ai écrit quelques cripts simples, dont un qui active le mode alarme des périphériques Zwave quand j'active l'alarme MyFox.

 

Je souhaite faire un truc un peu peu plus compliqué et je ne dois pas m'y prendre comme il faut : ça ne marche pas.

Et malgré mes recherches, je ne trouve pas mon bonheur, ce qui me fait penser que je ne cherche pas dans la bonne direction.

 

Quand je vais sur http://adresse_de_ma_hcl/docs/ je trouve le nécessaire pour afficher l'état d'une scène.

Et je parviens sans problème à  l'activer ou à  l'activer, via le paramètre "enabled".

 

Je voudrais faire la même chose en PHP.

J'ai écrit le code suivant :

	$api_url_sirene = "http://".$username.":".$password."@".$ip_fibaro."/api/scenes/".$scene_a_controler;
	$curl_sirene = curl_init($api_url_sirene);
	curl_setopt($curl_sirene, CURLOPT_RETURNTRANSFER, 1);
	$return = curl_exec($curl_sirene);

	$requete_sirene = @file_get_contents($return);
	$json_result_sirene = json_decode($requete_sirene,true);
	$statut_scene = $json_result_sirene["body"]["enabled"];
	ecrire_log($statut_scene,"log_sirene.txt");
	
	curl_close($curl_sirene); 

Hélas, je ne dois pas appeler la commande comme il faut car $statut_scene ne renvoie aucun résultat.

Toute aide est la bienvenue :)

 

Posté(e)

Tu fais F12 sur Firefox ou Chrome juste avant de changer le statut activé/désactivé d'une scène, et tu regardes quelle est l'URL la méthode HTTP, et le Payload envoyé.

Après tu n'aurais plus qu'àtraduire ça dans curl.

  • 2 semaines après...
Posté(e)

Merci pour ce retour, je ne connaissais pas la méthode et cela m'a en effet aidé pour faire ce que je voulais.

Pour ceux qui chercheraient des infos, ci-dessous le code pour faire un PUT avec php et curl :

$data = array(enabled=>false);
$data_json = json_encode($data);
$api_url_sirene = "http://".$username.":".$password."@".$ip_fibaro."/api/scenes/".$scene_a_controler;
$curl_sirene = curl_init($api_url_sirene);
curl_setopt($curl_sirene, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_json)));
curl_setopt($curl_sirene, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl_sirene, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($curl_sirene, CURLOPT_RETURNTRANSFER, true);
$return = curl_exec($curl_sirene);
curl_close($curl_sirene);
  • Upvote 1
×
×
  • Créer...