Accès à la couleur du jour Tempo EDF (électricité de France)

Il faut au préalable avoir lancer au moins une fois le script pour que les tags soient créés.

C’est good ca fonctionne merci

Bonjour Philippe,
Merci de ton post.
Ta méthode m’intéresse mais je n’y connais pas grand chose.
J’ai installé JSON Handler et Better Logic Library.

J’ai saisi ton flow. Quand je lance le mode test, ça bloque sur l’instruction où il y a la variable “Résultat” (c’est la 3ème instruction). J’ai créé cette variable en appuyant sur le bouton “Variables” dans l’éditeur Homey. C’est comme ça qu’il faut faire ou pas ?

Je pense que je vais avoir d’autres questions avant d’arriver au bout :grin:

Merci de ton aide.

1 Like

Bonjour Damien

  • Après le test, en te positionnant sur la ligne bleu de l’étape “traiter reponse” tu dois voir le contenu de “résultat” .
    (les données jour par jour depuis le 1er sept), sinon :slight_smile:
  • il doit y avoir une erreur de frappe en amont
  • Le lien vers le site RTE ne fonctionne pas
  • Etape suivante : formatage de la date du jour (ici 2021-11-14)
  • Etape suivante : analyse de la chaine de caractères “resultat” par la fonction Read JSON
  • Cette fonction recherche la date au format yyy-mm-jj (2024-11-14)et restitue dans la variable text1 (white)

Suite :
La variable [(a)réponse] est générée automatiquement par la carte “faire une requête http…”
le (a) signifie que c’est une chaine de caractères
La variable [(a)résultat] est une variable générée automatiquement par la carte traiter “réponse”
comme l’indique l’icone d’aide sur la 1ere ligne de la carte


lorsque cette carte démarre…

Tu dois supprimer la variable ayant le même nom car il y a confusion

Bonjour Philippe,
Merci beaucoup du retour.
Maintenant ça fonctionne pour le jour J.
Par contre pour le lendemain, la date calculée reste au jour J:


Je ne vois pas ce que j’ai mal fait.
Aussi, je vois qu’il y a plusieurs SET dans Better Logic Library. C’est lequel qu’il faut prendre (j’en ai essayé plusieurs mais ça fait pas ce que je veux) ?
(J’ai créé une variable numérique DateDemain dans l’éditeur de variables mais je ne sais pas si c’est comme ça qu’il faut faire).
Merci de ton aide.

Bonjour Damien

  1. Il faut effectivement créer la variable DateDemain

  2. Il faut calculer la date du lendemain (je n’ai pas trouvé plus simple) avec un script
    qui ajoute 1 a la date du jour

  3. le résultat de ce calcule est stocké dans la variable ExpressionValue

  4. il faut formater cette date [Expression value(number)] dans la cartre suivante
    C’est là que tu a fait une erreur en ne précisant pas la variable qui doit etre utilisée en entrée;
    La carte a donc utilisé la date du jour

Ca y est, tout est bon :exploding_head:
C’était juste qu’il fallait que je prenne la bonne instruction Execute “BLL Expression” (et non “Text”).

Merci beaucoup de ton aide.
Bonne journée

Bonjour à tous,
Mon homey à cessé de fonctionner et la restauration de ma sauvegarde ne fonctionne pas et le remets en panne. Je suis donc obligé de repartir sur une installation vierge en recommençant tout de zero… Ravi…

Toujours est il que je ne remets la main sur aucun script fonctionnel pour la couleur du jour TEMPO…

J’utilisais ce script qui interrogeait la couleur du jour à 6h le matin et déclencher un scénario en fonction de la réponse.

Pouvez vous m’aider SVP ?

Voila le retour du script :
:white_check_mark: Script Success
:leftwards_arrow_with_hook: Returned: true
Il y a eu un problème avec la requête fetch: FetchError: request to https://www.api-couleur-tempo.fr/api/jourTempo/today failed, reason: getaddrinfo EAI_AGAIN www.api-couleur-tempo.fr
at ClientRequest. (/app/node_modules/node-fetch/lib/index.js:1501:11)
at ClientRequest.emit (node:events:517:28)
at TLSSocket.socketErrorListener (node:_http_client:501:9)
at TLSSocket.emit (node:events:517:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
type: ‘system’,
errno: ‘EAI_AGAIN’,
code: ‘EAI_AGAIN’
}
Il y a eu un problème avec la requête fetch: FetchError: request to https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow failed, reason: getaddrinfo EAI_AGAIN www.api-couleur-tempo.fr
at ClientRequest. (/app/node_modules/node-fetch/lib/index.js:1501:11)
at ClientRequest.emit (node:events:517:28)
at TLSSocket.socketErrorListener (node:_http_client:501:9)
at TLSSocket.emit (node:events:517:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
type: ‘system’,
errno: ‘EAI_AGAIN’,
code: ‘EAI_AGAIN’
}
Aujourd’hui: undefined
Demain: undefined

Grand merci par avance,

@lex

Bonjour Alex,
Le script de sebyldino du 6 sep dans cette conversation est nickel.

Jacques

Merci beaucoup !
@lex

Bonjour Jacques,

Voici le retour que le script me donne :
:white_check_mark: Script Success
:leftwards_arrow_with_hook: Returned: true
Il y a eu un problème avec la requête fetch: FetchError: request to https://www.api-couleur-tempo.fr/api/jourTempo/today failed, reason: connect ETIMEDOUT 109.234.165.177:443
at ClientRequest. (/app/node_modules/node-fetch/lib/index.js:1501:11)
at ClientRequest.emit (node:events:517:28)
at TLSSocket.socketErrorListener (node:_http_client:501:9)
at TLSSocket.emit (node:events:517:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
type: ‘system’,
errno: ‘ETIMEDOUT’,
code: ‘ETIMEDOUT’
}

Bonjour à tous, je déterre ce sujet car j’ai essayé plusieurs procédés et je me retrouve bloqué.

Le code JS fonctionne :

// Mapping des codes aux couleurs
const colorMap = {
  1: "Bleu",
  2: "Blanc",
  3: "Rouge"
};

// ==========================
// Couleur du jour et du lendemain
// ==========================

try {
  // Récupérer la couleur du jour
  var res = await fetch('https://www.api-couleur-tempo.fr/api/jourTempo/today');

  if (!res.ok) {
    throw new Error(`La requête a échoué avec le statut ${res.status} : ${res.statusText}`);
  }

  var body = await res.json();
  console.log('Réponse pour aujourd\'hui :', body); // Journaliser la réponse complète pour aujourd'hui

  var EDFCouleurJour = colorMap[body.codeJour] || "Inconnu";

  // Récupérer la couleur du lendemain
  res = await fetch('https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow');

  if (!res.ok) {
    throw new Error(`La requête a échoué avec le statut ${res.status} : ${res.statusText}`);
  }

  body = await res.json();
  console.log('Réponse pour demain :', body); // Journaliser la réponse complète pour demain

  var EDFCouleurDemain = colorMap[body.codeJour] || "Inconnu";

  // Afficher les couleurs
  console.log('Couleur du jour :', EDFCouleurJour);
  console.log('Couleur du lendemain :', EDFCouleurDemain);

  // Ajouter des tags Homey
  await tag('EDF Couleur Jour', EDFCouleurJour);
  await tag('EDF Couleur Demain', EDFCouleurDemain);

  return true;
} catch (error) {
  console.error('Erreur lors de la récupération des couleurs :', error);
  return false;
}

Je suis maintenant bloqué car je souhaite fixer la couleur de l’anneau de la Homey sur la couleur Tempo du lendemain.

Cependant, cette fonction ne dure qu’une seule fois. J’ai donc installer l’application Led-Ring collection. Mais la encore un échec, Appli Ok, mais pas de carte flow, pas d’explication, bref je sèche. auriez vous une solution?

Merci.

Bonsoir Bryan,
Dans ton flow, tu dois commencer par Quand > Date et Heure > Il est xx:xx
Attention :

  • la couleur du lendemain n’est garantie qu’à partir de 11:00
  • la requête dans EDFTempo est asynchrone, j’ajouterais dans les premières lignes du script
    await tag(‘EDF Couleur Jour’, “Erreur”);
    await tag(‘EDF Couleur Demain’, “Erreur”);
    et ajouter aussi un délai de quelques secondes entre l’appel du script et le test de la variable

Merci pour tes conseils, je prend note.
Pour le moment tout fonctionne presque bien, juste l’anneau led qui ne reste rouge qu’une petite seconde. je ne sais pas comment le forcer au rouge.

Avec “Anneau Led” > Mettre l’animation de veille …

Salut Alex,
Tu as toujours le problème ?

Jacques

Bonjour Jacques,

Depuis la réinitialisation de mon Homey, il fonctionne quand il veut bien…

Avant il interrogeait le script a 6h et en fonction du retour de la couleur il activait un flow correspondant a un scénario type.

Maintenant c’est au petit bonheur la chance…

Ce jour je viens de corriger en interrogeant le script a J+1 le soir a 23h45 et en lui demandant d’activer le scénario correspondant… Je verrai si c’est plus concluant…

Merci de l’aide en tout cas.

Bonsoir Alex,
J’ai constaté, cru comprendre, que la requête était asynchrone et que le flow passait parfois à l’étape suivante alors que le requête http n’avait pas encore donné sa réponse et donc que les variables n’avaient pas encore les bonnes valeurs du jour quand je les testais dans le flow.

J’ai rajouté dans le flow un délai de 5 secondes après l’exécution du script et depuis tout marche nickel.

Bonne continuation, bonne fin d’année.

Jacques

Effectivement avec ma correction du jour, j’ai ajouté un délai de 20 secondes après exécution du script avant d’interroger la variable de couleur. J’espère que tout sera ok.

Merci Jacques.

Belle fin d’année.