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

Bonjour a tous,
Le script (qui fonctionnait a merveille depuis des mois) ne fonctionne plus depuis qques jours… Une idée ?


Merci d’avance
Alex

Idem depuis que l’app HomeyScript a son propre code Javascript, je n’arrive plus à le faire fonctionner (je ne suis pas un adepte à la programmation). Si quelqu’un peut reécrire le script à partir de l’ancienne version (voir site pour changement : Tutorial: Migrating deprecated scripts - HomeyScript)

Ci-dessous le premier fichier code que j’ai écrit pour connaître la couleur d’aujourd’hui et de demain (à partir de 11h) :

let today = new Date()
let todayFormatted = today.toISOString().split('T')[0]

const res = await fetch('https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant='+ todayFormatted)

if (!res.ok) {
  throw new Error(res.statusText);
}

// Get the body JSON
const body = await res.json();

var EDFCouleurJour = (`${body.couleurJourJ}`)
var EDFCouleurDemain = (`${body.couleurJourJ1}`)

console.log(EDFCouleurJour)
console.log(EDFCouleurDemain)

await tag('Jour Tempo Today',EDFCouleurJour);
await tag('Jour Tempo Tomorrow', EDFCouleurDemain);

return true;

Et mon deuxième fichier pour les jours restants :

var res = await fetch('https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays');

if (!res.ok) {
  throw new Error(res.statusText);
}

// Get the body JSON
var body = await res.json();

var blanc = parseFloat(`${body.PARAM_NB_J_BLANC}`)
var rouge = parseFloat(`${body.PARAM_NB_J_ROUGE}`)
var bleu = parseFloat(`${body.PARAM_NB_J_BLEU}`)

console.log(body)

await tag('EDF reste Jour Blanc', Number(blanc));
await tag('EDF reste Jour Rouge ', Number(rouge));
await tag('EDF reste Jour Bleu', Number(bleu));

return true;

Merci de votre service

Bonjour,
L’API a changée effectivement.
J’en ai trouvée une autre en attendant que EDF en republie une valide (si c’est dans leur idées) et je partagerai.

Bonsoir,

Ce script fonctionne:

var color = ["PAS ENCORE DEFINI", "TEMPO_BLEU", "TEMPO_BLANC", "TEMPO_ROUGE"];
var tagName_today = "JourJ";
var tagName_tomorrow = "JourJ+1";


var today = "Non défini";
var tomorrow = "Non défini";

//Aujourd'hui
async function getToday() {
  try {
    const response = await fetch('https://www.api-couleur-tempo.fr/api/jourTempo/today', {
      method: 'GET',
      headers: {
        'Accept': 'application/json'
      }
    });

    if (!response.ok) {
      throw new Error(`Erreur réseau : ${response.status}`);
    }

    const data = await response.json();
    console.log(data);
    today = data.codeJour; // codeJour: 0 = pas encore défini, 1 = bleu, 2 = blanc, 3 = rouge
    return today;
  } catch (error) {
    console.error('Il y a eu un problème avec la requête fetch:', error);
  }
}

//Demain
async function getTomorrow() {
  try {
    const response = await fetch('https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow', {
      method: 'GET',
      headers: {
        'Accept': 'application/json'
      }
    });

    if (!response.ok) {
      throw new Error(`Erreur réseau : ${response.status}`);
    }

    const data = await response.json();
    console.log(data);
    return data.codeJour; // codeJour: 0 = pas encore défini, 1 = bleu, 2 = blanc, 3 = rouge
  } catch (error) {
    console.error('Il y a eu un problème avec la requête fetch:', error);
  }
}

// Obtenir tempo + créer tag
async function getTempo() {
  today = await getToday();
  tomorrow = await getTomorrow();

  console.log('Aujourd\'hui:', color[today]);
  console.log('Demain:', color[tomorrow]);
  await tag(tagName_today, color[today]);
  await tag(tagName_tomorrow, color[tomorrow]);

}

getTempo(); // Appelle la fonction principale
return true;

Vous pouvez modifier le nom des valeur des tags dans :

var color = ["PAS ENCORE DEFINI", "TEMPO_BLEU", "TEMPO_BLANC", "TEMPO_ROUGE"];

(Si par exemple vous utilisiez “BLEU” comme valeur plutôt que “TEMPO_BLEU”)

Vous pouvez modifier le nom des tags dans:

var tagName_today = "JourJ";
var tagName_tomorrow = "JourJ+1";

(Si par exemple vous utilisiez “Demain” au lieu de “JourJ+1”)

Bonne soirée

Merci Seb !

Ça marche super .Merci beaucoup :hugs:

Merci pour le nouveau script :+1:
dommage pour les jours restants de chaque couleur mais c’est moindre mal.

TOP, tout refonctionne.
Merci beaucoup !

Voici le code avec l’ajout de cette fonctionnalité:

var color = ["PAS ENCORE DEFINI", "TEMPO_BLEU", "TEMPO_BLANC", "TEMPO_ROUGE"];

var tagName_today = "JourJ";
var tagName_tomorrow = "JourJ+1";
var tagName_jourRougeRestant = "JourRougeRestant";

var jourRougeRestant = 22;

var today = "Non défini";
var tomorrow = "Non défini";

const currentYear = new Date().getFullYear();
var periode = `${currentYear}-${currentYear+1}`;



//======  Aujourd'hui
async function getToday() {
  try {
    const response = await fetch('https://www.api-couleur-tempo.fr/api/jourTempo/today', {
      method: 'GET',
      headers: {
        'Accept': 'application/json'
      }
    });

    if (!response.ok) {
      throw new Error(`Erreur réseau : ${response.status}`);
    }

    const data = await response.json();
    //console.log(data);
    today = data.codeJour; // codeJour: 0 = pas encore défini, 1 = bleu, 2 = blanc, 3 = rouge
    return today;
  } catch (error) {
    console.error('Il y a eu un problème avec la requête fetch:', error);
  }
}



//======  Demain
async function getTomorrow() {
  try {
    const response = await fetch('https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow', {
      method: 'GET',
      headers: {
        'Accept': 'application/json'
      }
    });

    if (!response.ok) {
      throw new Error(`Erreur réseau : ${response.status}`);
    }

    const data = await response.json();
    //console.log(data);
    return data.codeJour; // codeJour: 0 = pas encore défini, 1 = bleu, 2 = blanc, 3 = rouge
  } catch (error) {
    console.error('Il y a eu un problème avec la requête fetch:', error);
  }
}



//===== Jours Rouge
async function getJoursRouge() {
  try {
    const response = await fetch('https://www.api-couleur-tempo.fr/api/joursTempo?periode=' + periode, { 
      method: 'GET',
      headers: {
        'Accept': 'application/json'
      }
    });

    if (!response.ok) {
      throw new Error(`Erreur réseau : ${response.status}`);
    }

    const data = await response.json();
    //console.log(data);

    data.forEach((jour) => {
      if (jour.codeJour === 3) {
        jourRougeRestant--;
      }
    });

    //console.log(`Jour Rouge Restant: ${jourRougeRestant}`);
    return jourRougeRestant; 
  } catch (error) {
    console.error('Il y a eu un problème avec la requête fetch:', error);
  }
}





//===== Obtenir tempo + créer tag
async function getTempo() {
  today = await getToday();
  tomorrow = await getTomorrow();
  jourRouge = await getJoursRouge();

  console.log("Jour rouge restant: ", jourRouge);
  console.log('Aujourd\'hui:', color[today]);
  console.log('Demain:', color[tomorrow]);
  await tag(tagName_today, color[today]);
  await tag(tagName_tomorrow, color[tomorrow]);
  await tag(tagName_jourRougeRestant, jourRouge);
}

getTempo(); // Appelle la fonction principale
return true;

Il est également possible de changer le nom du tag “JourRougeRestant” en haut du code en remplaçant var tagName_jourRougeRestant = "JourRougeRestant";.

image

Merci pour ce nouveau script qui marche nickel,petite question a propos des jours rouge restants:ils devraient pas être a 22 au lieu de 0?Et descendre au fur et a mesure qu’un jour rouge est passé ?

Oui effectivement je me suis trompé sur la période.
J’ai modifié le code dans mon précédent post.

Merci cela marche nickel j’ai modifier ton script pour rajouter les jours blancs.

merci pour la maj du script

Merci beaucoup pour votre aide…
Je viens de tester et ça marche bien !
Bien cordialement

Bonjour à tous,
J’ai tenté de reproduire vos scripts sans succès… ca me fait des erreurs…

J’ai merdé où?


Toujours une erreur de mon côté … n’étant pas programmeur…je suis largué….
Merci pour votre retour
Charles-Edouard

Bonjour,

Je pense que c’est un problème de copier/coller car le script fonctionne.

Bonjour
Une version “allégée” utilisant l’acces OpenData RTE
https://www.services-rte.com/cms/open_data/v1/tempo?season=2024-2025
avec
Better Logic LIbrary
JSON Handler
et
SANS Homey Script

A rajouter pour les puristes : calcul de la période

Philippe

Le script fonctionne…j’ai oublié une , dans une parenthèse…
Par contre comment faire appel à ce script dans un flow?

Comment arrives tu a faire cette notificationpush ? JE ne trouve pas les tags bleus quand je clique sur le petit drapeau dans la carte notification push …
Je débute c’est un peu galère…