Pb rafraichissement valeur json

Hello,

Je récupère l’état des speakers B (on ou off)

Je souhaite le faire via le plugin script:

Cela fonctionne sauf que je suis obligé de rafraichir pour avoir les bonnes valeurs :frowning:

Merci

Bonsoir,

Obligé de rafraîchir, c’est à dire ?

Le plugin script requête l’adresse que tu lui donnes pour la traiter il est donc normal qu’il soit nécessaire de rafraîchir.
As-tu définir un cron d’auto-actualisation ?

Hello Bison,

Un screen sera plus explicite, je me suis sans doute mal exprimé:

Lorsque j’appuie sur l’action Power On je devrais avoir un 1 dans l’état Power je pense mais ce n’est pas le cas.
Lorsque je mets l’url dans un web browser:

J’ai bien « on ». Si je change le type en autre meme pb.

Merci

Je n’ai pas essayé mais je pense qu’il manque la valeur de l’information donc 1 pour la commande on et 0 pour la commande off

Merci Bison.

Je teste ceci:

Cela fonctionne mais j’ai l’impression que l’état change en fonction de l’appui sur le bouton et non de l’info provenant de l’équipement lui meme en prenant le résultat json

Oui, ce n’est pas en appelant la commande action que la commande info va s’exécuter et donc se rafraichir avec l’état réel. C’est normal.

Donc effectivement ici c’est un retour d’état virtuel.

La solution pour avoir l’état réel lors de l’appui sur on ou off est de le gérer dans votre script: appeler l’url ou analyser la réponse reçue s’il y en a une et mettre à jour la commande info en conséquence.

1 « J'aime »

Merci Mips :slight_smile:

Ma commande action est:

<?php
$output = shell_exec('curl -X PUT http://192.168.1.10:3333/nad/c368/v1.0/Main/Power/Off');
?>

Donc après je dois ajouter ceci:

$state = shell_exec('curl -X GET http://192.168.1.10:3333/nad/c368/v1.0/Main/speakera')

Par contre comment faire le lien pour envoyer l’etat dans mon info dans Etat_a?

merci

Déjà faut voir si c’est vraiment nécessaire de faire un second appel. Il y a quoi dans output?

Merci Mips.

La j’allume l’ampli:

➜  ~ curl -X PUT http://192.168.1.10:3333/nad/c368/v1.0/Main/Power/On
{"command":"main.power","error":0,"value":"on"}
➜  ~ 

Ensuite je voudrais interroger l’ampli pour m’assurer qu’il est allumé:

➜  ~ curl -X GET http://192.168.1.10:3333/nad/c368/v1.0/Main/Power 
{"command":"main.power","error":0,"value":"on"}
➜  ~ 



faut il faire 2 appels ? :grin:

Re salut,

je pensais avoir répondu ici désolé.

Donc avec la réponse reçue j’ai l’impression que tu as déjà l’info voulue, la réponse reçue est la même que si tu fait le GET.

my 2 cents, ca sera plus facile dans un scénario bloc code que dans un script externe car tu pourras utiliser directement les fonctions du core.

donc parse la réponse comme ce que tu fait après le GET, ensuite récupère ta commande info (dans le même script) et met là à jour avec ce genre de code (j’ai juste écrit ca sur community, je n’ai pas validé):

$cmd = cmd::byId(xxx);
$cmd->event($value);

Merci pour avoir pris le temps de répondre. J’avoue tester mais pas comprendre. En cherchant sur le forum j’ai trouvé ceci:

De ce que j’ai compris cela va chercher l’état de mon ampli et le mettre dans la variable info power

Tu n’as pas besoin du dernier bloc « event » tu peux le faire en bloc code puisqu’il y a de toute façon le bloc code pour le reste.
Tu supprimes la fin rapport aux tags et tu remplaces par le bout de code quz j’ai mis plus haut en sélectionnant la bonne commande.

Je suis sur téléphone donc je ne sais pas écrire le code maintenant

Merci pour ton temps.
J’en suis la coté scénario avec comme déclencheur l’état power en autre car c’est on ou off l’état:

Coté script j’ai ceci :

dans les 2 actions j’ai volontairement pas mis de valeur car celle ci doit venir de mon scénario et j’ai bien indiqué l’id de la cde info.

Je teste en appuyant sur off_Power ou on_power , le scénario se déclenche mais valeur toujours à O :frowning:

Ah oui c’est sur il n’y a rien dans $value là. Tu dois y mettre la valeur qui vient du json

je dois pas être très malin mais la je suis perdu.
Le scénario rempli bien le role d’aller chercher l’état de l’ampli et de la mettre dans la cde info Power ?

Salut,

Non pas tout à fait car il en manque un bout. Je décode dans les grandes lignes :

Ligne 1 : ne sert à rien c’est pour récupérer les tag d’un scénario et tu ne l’utiliseras pas
Ligne 2 & 3 : défini un objet $request_http avec l’url à appeler et des paramètres
Ligne 4 : stock dans une variable $json ce qui est retourné après décodage
Ligne 5 : stock dans une variable $json ce qui est retourné après décodage (parce qu’il doit y avoir en gros 2 json imbriqués)
Ligne 6 : défini un objet $cmd contenant la commande que tu dois mettre à jour (n°10210)
Ligne 7 : met à jour la commande 10210 avec le contenu de la variable $value

Et c’est donc entre la la ligne 6 et 7 qu’il manque quelque chose. La variable $value n’ayant aucune valeur, la commande 10210 reste à 0.

Il faut ajouter entre la ligne 6 et 7 :
$value = $json["value"] qui va stocker dans la variable $value une partie du json (la partie qui contient « value » c’est à dire ce que tu veux récupérer)

Merci.
je commence a comprendre. donc suite à tes commentaires:

$request_http = new com_http('http://192.168.1.10:3333/nad/c368/v1.0/Main/Power');
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$json=json_decode(trim($request_http->exec()), true);
$json=json_decode($json, true);
$cmd = cmd::byId(10210);
$value = $json["value"]
$cmd->event($value);

Encore un p’tit souci: :slight_smile:

------------------------------------
[2023-06-28 22:35:08][SCENARIO] -- Start : Scenario lance manuellement.
[2023-06-28 22:35:08][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-06-28 22:35:08][SCENARIO] Exécution d'un bloc code 
[2023-06-28 22:35:08][SCENARIO] syntax error, unexpected '$cmd' (T_VARIABLE)
[2023-06-28 22:35:08][SCENARIO] Fin correcte du scénario

mais qu’est ce le T_VARIABLE ?

Merci Bison

J’ai oublié de mettre un ; à cette ligne :

$value = $json["value"];

Merci j’ai retesté plus de message d’erreur mais la valeur est toujours à 0
Quand j’allume l’ampli je vérifie en mettant cette URL dans un navigateur:

http://192.168.1.10:3333/nad/c368/v1.0/Main/Power

J’ai bien « on »

{"command":"main.power","error":0,"value":"on"}

Peut etre la conversion On/off en binaire ?