Récupération Tag dans virtuel

Bonjour à tous,

Malgrès mes recherches, je n’arrive pas à trouver une solution à mon problème.

Mon besoin, récupérer des informations provenant d’une réponse JSON.

Suite à ce sujet [Résolu] Interpréter réponse d'une commande REST - #6 par cstan77 j’ai réussi à récupérer les informations et les ajouter dans plusieurs Tags.
Par contre je n’arrive pas à récupérer les informations dans un virtuel pour les afficher dans un widget.
Pouvez-vous m’aider à trouver ce qui manque ?
Voici mon code dans mon scénario:

$tags = $scenario->getTags();
// Step 1: Recuperation du contenu du fichier (JSON complet)
// les données sont actualisées toutes les 5 minutes sur leur site.

$heure_deb=date("H", strtotime('now -2 Hour')); 
$heure_fin=date("H", strtotime('now -1 Hour')); 
$api = "https://hydrometrie.wallonie.be/services/KiWIS/KiWIS?request=getTimeseriesValues&service=kisters&type=queryServices&datasource=0&format=json&maxquality=206&forceCacheHeaderTime=300&valuesasstring=false&ts_path=DGH%2F2952%2FH%2FCmd.Rel.Abs.Comp&metadata=true&md_returnfields=ts_id%2C+ts_path%2C+ts_spacing%2C+ts_name%2C+ts_shortname%2C+station_no%2C+station_id%2C+station_latitude%2C+station_longitude%2C+station_name%2C+ts_unitname%2C+ts_unitsymbol%2C+stationparameter_name%2C+ca_sta&ca_sta_returnfields=ISIN_LOCALITE&dateformat=UNIX&from=".date("Y-m-d")."T".$heure_deb."%3A".date("i")."%3A00.000Z&to=".date("Y-m-d")."T".$heure_fin."%3A".date("i")."%3A00.000Z&returnfields=Timestamp%2CValue%2CInterpolation+Type%2CQuality+Code%2CQuality+Code+Name";

$json = file_get_contents($api);
// Step 2: Decodage du JSON et recuperation des infos souhaitees
$jsonData = json_decode($json,true);
$nbr = count($jsonData[0][data])-1;

$time = substr($jsonData[0][data][$nbr][0], 0, -3);
$time_array= getdate($time);
$date_enr = date_create($time_array[mday]."-".$time_array[mon]."-".$time_array[year]." ".$time_array[hours].":".$time_array[minutes]);
  
$tags['#dendre_time#'] = $date_releve;
$tags['#dendre_hauteur#'] =$jsonData[0][data][$nbr][1];
$scenario->setTags($tags);

$date_print = date_format($date_enr, 'Y-m-d H:i:s');
$scenario->setlog("dendre_time :".$date_print);
$scenario->setlog("dendre_hauteur :".$jsonData[0][data][$nbr][1]);

ma configuration du scénario

et mon virtuel

et le widget:
image

D’avance Merci,

Bonne journée

Salut

Pour un json, pourquoi ne pas utiliser le plugin script?

Antoine

Puisque tu exportes les tags de ton bloc code, il suffit de créer un bloc action après ton bloc code.
Avec la fonction : event
Commande : ta commande info de ton virtuel
Valeur : tag(dendre_hauteur)

Norbert

Bonjour,

Et pour compléter ce qu’a dit ngratalou, ce que tu as fait dans ton virtuel utilise une variable (qui reste après l’exécution du scénario) alors que le tag ne reste pas en mémoire après l’exécution.

Dans le bloc code tu pouvais donc aussi enregistrer dans une variable de cette façon : $scenario->setData('dendre_hauteur', $dendre_hauteur);

1 « J'aime »

Merci à tous pour votre aide !!
Ca fonctionne parfaitement.