Voila je rencontre un petit problème avec mon code. J'utilise le cours "Utiliser une API avec cURL" afin de m'aider mais j'ai un problème vers la fin de la vidéo il y a un foreach pour récupérer les valeurs souhaitées et je veux en faire de même mais rien ne fonctionne..
{
"attributes": {
"friendly_name": "Applique Salon",
"max_mireds": 370,
"min_mireds": 153,
"supported_features": 43
},
"context": {
"id": "ca94630f8dc0431caf70f7a97f943cba",
"user_id": null
},
"entity_id": "light.applique_salon",
"last_changed": "2019-03-31T10:13:32.795918+00:00",
"last_updated": "2019-03-31T10:13:32.795918+00:00",
"state": "off"
}
C'est récupéré le "friendly_name" ainsi que "state"
homeassistant.php :
class HomeAssistant{
private $apiKey;
public function __construct(string $apiKey){
$this->apiKey = $apiKey;
}
public function getTemperature(string $entity): ?array{
$curl = curl_init("http://hassio.local:8123/api/states/{$entity}");
$headers = array(
"Authorization: Bearer {$this->apiKey}",
"Content-Type: application/json",
);
curl_setopt_array($curl, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => false,
CURLOPT_TIMEOUT => 1
]);
$data = curl_exec($curl);
if($data === false || curl_getinfo($curl, CURLINFO_HTTP_CODE) !== 200){
return null;
}
$results = [];
$data = json_decode($data, true);
return $results;
}
}
index.php
ini_set('display_errors', 'On');
require_once 'HomeAssistant.php';
$hassio = new HomeAssistant("xxxxCléAPIxxx");
$temperature = $hassio->getTemperature('light.applique_salon');
merci d'avance !
Bonsoir.
Il y a un problème dans ta fonction getTemperature
de la classe HomeAssistant.
Tu définis la variable $results
que tu ne remplies à aucun moment et tu retourne celle-ci, sauf du coup tu te retrouve avec un tableau vide en retour de ta fonction.
Il te faudrait donc modifier par :
$results = json_decode($data, true);
return $results;
Ou directement :
return json_decode($data, true);
Dans le tutoriel il remplit la variable results à l'aide d'un foreach mais dans mon cas cela ne fonctionne pas, j'aimerais retourner uniquement 'state' et 'friendly_name' comment puis-je faire ?
Dans le tutoriel il remplit la variable results à l'aide d'un foreach mais dans mon cas cela ne fonctionne pas, j'aimerais retourner uniquement 'state' et 'friendly_name' comment puis-je faire ?
Vu que tu ne récupère qu'un seul enregistrement, il t'es inutile de faire une boucle, il te suffit par exemple de faire :
$data = json_decode($data, true);
$result = [
'state' => $data['state'],
'friendly_name' => $data['attributes']['friendly_name']
];
return $result;
sa me retourne NULL... voici l'affichage dans le navigateur :
{"attributes": {"friendly_name": "Applique Salon", "max_mireds": 370, "min_mireds": 153, "supported_features": 43}, "context": {"id": "716cff9017d34598b3675e5b98115309", "user_id": null}, "entity_id": "light.applique_salon", "last_changed": "2019-04-01T05:45:06.123132+00:00", "last_updated": "2019-04-01T05:45:06.123132+00:00", "state": "off"}array(2) {
["state"]=>
NULL
["friendly_name"]=>
NULL
}
Pourquoi le json est affiché également ?
le fichier qui affiche :
ini_set('display_errors', 'On');
require_once 'HomeAssistant.php';
$hassio = new HomeAssistant("myKeyAPI");
$temperature = $hassio->getTemperature('light.applique_salon');
var_dump($temperature);