j’ai un fichier Json ou je voudrais extraire des données.
le probleme c’est que le fichier est mis a jour chaques fois que mon aquarium fait une mesure de mon eau avec un glisement des valeur sur 7 jours. donc je ne peut pas faire du style 0 > Value car cette valeure peut etre un dkh ou un po4 …
je souhaiterai extraire a chaques fois les dernieres valeur des parametres « dkh » « oli » « po4 » « ca ».
je ne suis pas un spécialiste du plugin-script mais j’ai de bonnes notions en programmation. Je pense que c’est largement faisable.
Peux-tu partager ce que tu as essayé pour le moment ? De cette manière je me colle dessus et adapte en fonction de ce dont tu as besoin.
Un script et 4 commandes du plugin-virtual feront l’affaire, je pense. On ne va quand même pas lui faire installer node-red pour 4 variables. Enfin, pour moi, je ne le ferais pas non plus.
Alors tu peux faire un scénario, sans le plugin script. Déclenchement programmé selon la fréquence de rafraichissement que tu veux. Le scénario ne doit contenir qu’un bloc code dont le code est :
$json = file_get_contents('/var/www/html/plugins/script/data .... Chemin d accès au fichier json en local');
$valeurs = json_decode($json, true);
$dkh = $oli = $po4 = $ca = [null, null];
foreach ($valeurs as $val) {
switch ($val['Parameter']) {
case 'dkh':
if ($val['Time'] > $dkh[0]) {
$dkh[0] = $val['Time'];
$dkh[1] = floatval($val['Value']);
}
break;
case 'oli':
if ($val['Time'] > $oli[0]) {
$oli[0] = $val['Time'];
$oli[1] = floatval($val['Value']);
}
break;
case 'po4':
if ($val['Time'] > $po4[0]) {
$po4[0] = $val['Time'];
$po4[1] = floatval($val['Value']);
}
break;
case 'ca':
if ($val['Time'] > $ca[0]) {
$ca[0] = $val['Time'];
$ca[1] = floatval($val['Value']);
}
break;
}
}
cmd::byString('#[Le nom][de ta][commande dkh]#')->event(strval($dkh[1]));
cmd::byString('#[Le nom][de ta][commande oli]#')->event(strval($oli[1]));
cmd::byString('#[Le nom][de ta][commande po4]#')->event(strval($po4[1]));
cmd::byString('#[Le nom][de ta][commande ca]#')->event(strval($ca[1]));
Il faut préciser dans ce code :
le chemin d’accès au fichier json au début du script
les commandes info du virtuel correspondant aux différentes mesures
Avec le json que tu as fourni, ça a fonctionné pour moi.