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é ?

1 Like

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

1 Like

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

1 Like