Bonjour à tous,
J’ai un opensprinkler pour lequel j’aimerais connaitre le status de chacune des valves.
Dans script/Json j’ai bien un retour mais pour toutes les valves :
http://opensprinkler/js?pw=XXXXXXXX donne {« sn »:[0,0,0,0,0,0,0,0],« nstations »:8}
Voici en image quand je « parse? » les sn :
J’aimerais cependant l’état des valves de manière unitaire.
Valve1 => 1° caractère
Valve2 => 2° caractère etc…
Commet faire svp
Merci pour votre aide
jpty
Avril 13, 2020, 9:43
2
Pour avoir la requête qu’il faut faire, il faut nous montrer la structure du json
En fait, il n’y a malheureusement rien de plus que ce que j’ai montré plus haut :
Arnox
Avril 13, 2020, 2:33
4
Il faut « décoder » le message Json. Tu peux faire ca avec un bloc code dans un scénario:
Je m’en suis créé un il y a peu de temps, je ne peux pas tester le tien mais ca ressemblerait a ca:
// Step 1: Recuperation du contenu du fichier (JSON complet)
$api = http://opensprinkler/js?pw=XXXXXXXX;
$json = file_get_contents($api);
// Step 2: Decodage du JSON et recuperation des infos souhaitees
$jsonData = json_decode($json,true);
foreach ($jsonData['sn'] as $valve) {
$scenario->setlog($valve);
}
Normalement ca devrait retourner tes 8 valeurs unitairement dans le log de ton scenario. Ensuite a toi de l’adapter pour ton besoin.
Thanks @Arnox , je viens de tester mais dans les logs j’ai une erreur de syntaxe :
[2020-04-13 16:43:06][SCENARIO] Start : Scenario lance manuellement.
[2020-04-13 16:43:06][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-04-13 16:43:06][SCENARIO] Exécution d'un bloc code
[2020-04-13 16:43:06][SCENARIO] syntax error, unexpected ':'
[2020-04-13 16:43:06][SCENARIO] Fin correcte du scénario
Merci @Arnox !
Il fallait mettre en guillemet
$api = "http://opensprinkler/js?pw=XXXXXXXX";
Du coup j’ai bien les valves de manière unitaires dans les logs
[2020-04-13 16:52:48][SCENARIO] Start : Scenario lance manuellement.
[2020-04-13 16:52:48][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-04-13 16:52:48][SCENARIO] Exécution d'un bloc code
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] 0
[2020-04-13 16:52:51][SCENARIO] Fin correcte du scénario
Par contre comment je peux les récupérer dans des virtuels svp ?
Arnox
Avril 13, 2020, 3:22
7
Desole pour les guillemets, j’ai copier/coller/remplacer un peu vite…
Remplace le setlog par un setdata et tu recuperas tes infos dans des variables…
$scenario->setData($key, $value); : Sauvegarde une donnée (variable)
@Arnox
PAr contre comment je lui dis de mettre ca dans 8 variable différentes ?
par ce que avec ce code ca ne me change que la variable « valve »
// Step 1: Recuperation du contenu du fichier (JSON complet)
$api = "http://opensprinkler/js?pw= XXXXXXXX";
$json = file_get_contents($api);
// Step 2: Decodage du JSON et recuperation des infos souhaitees
$jsonData = json_decode($json,true);
foreach ($jsonData['sn'] as $valve) {
// $scenario->setlog($valve);
$scenario->setData('valve', $valve);
}
Y a une commande pour faire valve+1 ?
Arnox
Avril 13, 2020, 4:25
9
Essaie ca…
// Step 1: Recuperation du contenu du fichier (JSON complet)
$api = "http://opensprinkler/js?pw= XXXXXXXX";
$json = file_get_contents($api);
// Step 2: Decodage du JSON et recuperation des infos souhaitees
$jsonData = json_decode($json,true);
$index=1;
foreach ($jsonData['sn'] as $valve) {
// $scenario->setlog($valve);
$scenario->setData('valve'.$index, $valve);
$index++;
}
jpty
Avril 13, 2020, 4:41
10
Pour la récup dans un virtuel, c’est avec variable(valve1)
:
Désolé pour ma 1ère réponse, j’avais lu un peu trop en diagonale.
Merci à vous 2, ca marche nickel !
En prime, j’ai ajouté une variable arrosage_en_cours en cas de valve ouvert :
$api = "http://opensprinkler/js?pw=XXXXXXXXXXXXXXXXXXX";
$json = file_get_contents($api);
// Step 2: Decodage du JSON et recuperation des infos souhaitees
$jsonData = json_decode($json,true);
$index=1;
$scenario->setData('arrosage_en_cours',0);
foreach ($jsonData['sn'] as $valve) {
$scenario->setData('valve'.$index, $valve);
//$scenario->setlog("valve$index $valve");
$index++;
if ($valve==1) {
$scenario->setlog("valve$index arrosage_en_cours: oui");
$scenario->setData('arrosage_en_cours',1);
}
}
MERCI !
1 « J'aime »
system
A fermé ce sujet ()
Avril 14, 2020, 5:40
12
Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.