Récupération d'une valeur dans un Json

Bonjour à tous,
je commence en vous expliquant que je n’ai aucune connaissance en programmation .
je possède un routeur solaire et je souhaite via son API récupérer une variable retournée dans un Json.
Mon but est dans un scénario faire une condition en fonction de cette valeur.
Je pensait utiliser du code dans un scénario afin de faire la commande pour récupérer le Json, extraire la variable, associer cette valeur à une variable jeedom et faire mon test de condition .

j’ai trouvé via le forum comment lancer la commande via du code , je l’ai testé sur une autre fonction ( on/off) et cela fonctionne ( voir ci dessous)

$req  = "curl --digest -u "mon login:"mon password" -H 'accept: application/json' -H 'content-type: application/json' --compressed 'https://director.myenergi.net/cgi-eddi-mode-EXXXXXXX-0'";
$scenario->setLog('DEBUG REQUETTE : '.$req);
$output0 = shell_exec($req);
$scenario->setLog('DEBUG RETOUR : '.$output0);

La commande qui permet de récupérer le JSON « statut » est
/cgi-jstatus-E

elle retourne :

{
	"eddi": [{
                "bsm": 1,		
		"che": 1,		
		"cmt": 254,		
		"dat": "07-06-2019",	
		"div": 928,		
		"dst": 1		
		"ectp1": -7,		
		"ectp2": 6,		
		"ectt1": "Grid",	/
		"ectt2": "Generation",	
		"frq": 50.07,		
		"fwv": 1234,		
		"gen": 2054,		
		"grd": 969,		
		"hno": 1,		
		"ht1": "Tank 1",	
		"ht2": "Tank 2",	
		"pha": 3,		
		"pri": 2,		
		"r1a": 1,		
		"r2a": 1,		
		"r2b": 1,		/
                "rbt": 3600,		
		"sno": 10088888,	
		"sta": 3,		/
		"tim": "07:28:45",	
		"tp": 50,		
		"tp2": -1,		
		"vol": 2395,		
	}]
}

la valeur que je souhaite avoir est « Che ».

J’ai testé la commande curl est console et j’obtiens bien le Json
curl --digest -u « mon login:« mon password » -H ‹ accept: application/json › -H ‹ content-type: application/json › --compressed ‹ https://director.myenergi.net/cgi-jstatus-E › »;

Quelqu’un peut-il m’aider à rediger le cde PHP pour lancer la commande Curl pour avoir le JSom, y extraire la valeur de la variable « Che », et l’affecter à une variable Jeedom

merci d’avance de votre aide

Salut

Pourquoi ne pas passer par lenplugin script?
Tu ne donnes pas d’indication sur le routeur, il y a peut-etre déjà des solutions existantes de disponible.

Perso, pour ce type d’usage je me tournerais vers node-red.

Antoine

Salut sur le principe je ne suis pas fermé au plugin script mais cela ne change rien au fait que je ne maitrise pas la programmation PHP et les webservice et Json.
Après oui il existe un plugin non officiel mais qui ne fonctionne qu’avec la V4.4 en alpha ,là je passe mon tour
Mon but est de voir si quelqu’un peut m’aider à écrire le code , je maitrise comment avoir mon info mais je ne sais pas le traduire en code

Pour le plugin script pas besoin de coder justement.

Antoine

ok merci je vais regarder

tu sais si l’url est en HTTPS on peut faire un script Json avec le plugin ?

testez j’ai envie de dire :wink:

mais oui, http ou https ne change rien

Après reformatage du json que vous avez fourni pour y corriger les erreurs,

$json = '{
  "eddi": [{
    "bsm": 1, "che": 1, "cmt": 254, "dat": "07-06-2019", "div": 928,
    "dst": 1, "ectp1": -7, "ectp2": 6, "ectt1": "Grid", "ectt2": "Generation",
    "frq": 50.07, "fwv": 1234, "gen": 2054, "grd": 969, "hno": 1,
    "ht1": "Tank 1", "ht2": "Tank 2", "pha": 3, "pri": 2, "r1a": 1,
    "r2a": 1, "r2b": 1, "rbt": 3600, "sno": 10088888, "sta": 3, "tim": "07:28:45",
    "tp": 50, "tp2": -1, "vol": 2395
  }]
}';

La structure du json est:
image

Les instructions PHP pour récupérer « che » sont alors:

$dec = json_decode($json,true);
$scenario->setLog('che : '.$dec['eddi'][0]['che']);

image

3 « J'aime »

Bonjour tout le monde, je souhaite récupérer une valeur précise sur mon eddi.
Je souhaité pouvoir récupérer la valeur en KWH envoyée vers ma sortie 1 (ballon ECS) et ma sortie 2 (radiateur) pour faire quelques calculs dans jeedom. Est ce que vous avez une idée ??
On a bien cette valeur dans l’app sur téléphone, iphone par exemple mais comment l’avoir par le fichier json ???
merci à tous