Bonjour,
J’ai besoin d’un petit coup de main, je tourne en rond depuis un moment.
J’ai un système de chauffage qui peut à la demande renvoyer des infos utiles sous format Json. Il propose plusieurs categories de données qui peuvent être interrogées séparément.
Je me suis dit que l’approche sera aisée avec le plugin Script. Cependant Script ne fonctionne que pour une seule catégorie alors que le format Json est le même pour toutes !
Sur un browser j’obtiens avec l’adresse : 192.168.1.137:4321/monpsw/system
{
"system":{
"L_ambient":165,
"L_errors":0,
"L_usb_stick":0,
"L_existing_boiler":0
}
}
Avec le plugin-Script je lance une requête sur L_Ambient et j’obtiens bien 165. Parfait !
(requête system>L_ambient).
Mon souci se situe pour la catégorie qui contient les infos désirées. Sur un browser j’obtiens toujours les infos avec l’adresse : 192.168.1.137:4321/monpsw/hk1 (validé à l’aide de https://jsonformatter.curiousconcept.com)
{
"hk1":{
"L_roomtemp_act":163,
"L_roomtemp_set":80,
"L_flowtemp_act":161,
"L_flowtemp_set":80,
"L_comfort":0,
"L_state":8,
"L_statetext":"Mode arrêt",
"L_pump":0,
"remote_override":0,
"mode_auto":1,
"time_prg":0,
"temp_setback":180,
"temp_heat":200,
"temp_vacation":150,
"name":"",
"oekomode":0,
"autocomfort":-1,
"autocomfort_sunset":0,
"autocomfort_sunrise":0
}
}
La requête dans le plugin script me renvoie une erreur m’indiquant ‹ Unexpected end in Json INPUT ›.
J’ai parcouru les sujets de la communauté sans pouvoir régler mon souci. J’ai même tenté en suivant les conseils de certains posts, un json decode dans un bloc code de scenario. Tout fonctionne pour le json system mais pas pour le second. je joins les logs du second ci-dessous ainsi que le bloc code à l’origine:
[2022-05-05 15:54:22][SCENARIO] -- Start : Scenario lance manuellement.
[2022-05-05 15:54:22][SCENARIO] - Exécution du sous-élément de type [action] : code
[2022-05-05 15:54:22][SCENARIO] Exécution d'un bloc code
[2022-05-05 15:54:22][SCENARIO] -----RAW----------
[2022-05-05 15:54:22][SCENARIO] {
"hk1":{
"L_roomtemp_act":163,
"L_roomtemp_set":80,
"L_flowtemp_act":162,
"L_flowtemp_set":80,
"L_comfort":0,
"L_state":8,
"L_statetext":"Mode arr?t",
"L_pump":0,
"remote_override":0,
"mode_auto":1,
"time_prg":0,
"temp_setback":180,
"temp_heat":200,
"temp_vacation":150,
"name":"",
"oekomode":0,
"autocomfort":-1,
"autocomfort_sunset":0,
"autocomfort_sunrise":0
}
}
[2022-05-05 15:54:22][SCENARIO]
[2022-05-05 15:54:22][SCENARIO] -------DECODE----------
[2022-05-05 15:54:22][SCENARIO]
[2022-05-05 15:54:22][SCENARIO]
[2022-05-05 15:54:22][SCENARIO] temp Value :
[2022-05-05 15:54:22][SCENARIO] state Value :
[2022-05-05 15:54:22][SCENARIO] cons Value :
[2022-05-05 15:54:22][SCENARIO] Fin correcte du scénario
le bloc code :
$api = "http://192.168.1.137:4321/monpsw/hk1";
$json = file_get_contents($api);
$scenario->setlog('-----RAW----------');
$scenario->setlog($json);
$scenario->setlog('');
$jsonData = json_decode($json,true);
$scenario->setlog('-------DECODE----------');
$scenario->setlog($jsonData);
$scenario->setlog('');
$temp=$jsonData['hk1']['L_roomtemp_act'];
$state=$jsonData['hk1']['L_statetext'];
$cons=$jsonData['hk1']['L_roomtemp_set'];
$scenario->setlog('temp Value : ' . $temp);
$scenario->setlog('state Value : ' . $state);
$scenario->setlog('cons Value : ' . $cons);
l’accent circonflexe indique peut-être un souci de ce côté, je ne sais plus par où chercher… :-/
merci d’avance pour votre écoute
mike


