Extraction de variables avec homeyscript pour écocompteur Legrand 412000

Bonjour,
Nouveau sur Homey, j’ai acheté une Homey pro 2023 car je construit une maison en ce moment et je cherchais une solution ouverte sur le futur et “bidouillable” en toute simplicité.
J’ai créer un code homeycript (avec ChatGPT :smiley: ) pour extraire une donnée (en attente de réussite pour le reste) et créer une variable de valeur.
L’écocompteur legrand 412000 renvoie des données json sur 2 pages différentes (data.json pour les données globales et le relevé linky) et (inst.json pour les données instantanées des mesures des tor de conso).


J’ai une valeur correcte de relevé de compteur mais ne sais pas comment exporter cette donnée dans une variable exploitable dans homey.
je ne suis pas codeur, merci de votre aide :wink:

Bonjour,

Tu peux créer un tag comme ceci:

await tag('Nom du tag', valeur); 

Les tag peuvent être de type texte, nombre ou oui/non. Ils sont défini automatiquement suivant le type de donnée de la valeur transmise.

exemple:

let myBool = true;
let myNum = 23;
let myText = "Hello";
let myNumText = "54";
let myNum3 = 1;


await tag('tag1', myBool) //Sera un type oui non
await tag('tag2', myNum) //Sera un type nombre
await tag('tag3', myText) //Sera un type texte

// convertion de valeur:

let myBool2 = Boolean(myNum3); // convertir en type oui/non (Toute valeur différente de 0 est considérée comme vrai (true))
let myNum2 = Number(myNumText); //convertir un texte en nombre (à condition de n'avoir que des chiffres évidemment)
let myText2 = String(myNum); //convertir quelque chose en texte. String(myBool) fonctionnera aussi et aura une valeur "true" ou "false"


// supprimer un tag

await tag('NAME', null); // Remplacer NAME par le nom du tag à supprimer

Par ailleurs, je te conseille d’ajouter à ton code:

return false; //la carte renvoie faux dans les flows

aux endroits où ton code rencontre une erreur, tu peux remplacer ton return response.text() par log(response.text()); afin de pouvoir visualiser l’erreur dans la console et en dessous ajouter return false;

et aussi:

return true; //la carte renvoie vrai quand c'est ok

a l’endroit final où tout est ok pour le code à la suite des tag par exemple.

C’est ce qui condition la suite dans un flow. Si tu utilise les advanced flow, tu as du remarquer que la petite barre de progression sous chaque carte est bleue ou jaune. Quand elle est bleue jusqu’a la fin c’est que la carte est vrai si elle est jaune, est elle fausse.
Si tu ne renvoie pas de return true; ta carte sera toujours considérée comme fausse.

Bonjour,

Merci du retour.

J’ai essayer de comprendre la création du tag, mais ça doit bloquer quelque part car j’ai une erreur maintenant :smiley:

Je vous avoue que je ne comprends pas grand chose au codage, le reste des données est remonté facilement avec un advanced flow

Là où ça bloque, c’est à cause de 2 zéros en début de valeur à attraper sur le site généré par l’écocompteur Legrand et qui me permettrai d’avoir le relevé EDF en direct…

S’il existe une solution simple à ce problème de zéro et faire un advanced flow je suis preneur :smiley:

Tu as une accolade ouverte en ligne 22qui n’est pas fermée:

.then(data=>{ ...

Et si

var valeurConsoBase = data.conso_base;

Utilises la dans le tag:

await tag("LinkyCompteur", valeurConsoBase);

Pour tes 2 “00” utiilise parseInt() cela converti en entier et supprime les 0:

var valeurConsoBase = parseInt(data.conso_base);