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

Bonjour @sebyldino !

J’ai un petit souci avec le décompte des jours rouge au passage de la nouvelle année, il me donne 22 jours restants, comme si il avait fait un reset au 1er janvier, sans compter les jours rouge du 2 et du 3.

Auriez-vous une idée de l’origine du bug ?

Merci pour votre script qui est d’une très grande aide pour gérer les flows avec les jours Tempo !

Erreur de script
const currentYear = new Date().getFullYear();

var periode = ${currentYear}-${currentYear+1};
Depuis 01 jan 2025 currentYear = 2025 donc la période est 2025-2026

Pour RTE cette période ne démarrera que le 1er septembre 2025 et comportera 22j

CQFD

// script corrigé

let date1 = new Date();
const currentYear = new Date().getFullYear();

let date2 = new Date(currentYear,8,1);
if (date1 < date2) {
console.log(‘date1 is before 1er Septembre’);
var periode = ${currentYear-1}-${currentYear};
} else {
console.log(‘date1 is after 1er Septembre’);
var periode = ${currentYear}-${currentYear+1};
}

Ca fonctionne nickel ! Merci beaucoup !!!

Bonjour
je suis débutant dans le script, j’ai essayer copier le script tempo que j’ai trouvé dans la discussion, mais j’ai une erreur sur les jours restant, il indique 22 au lieu de 12 jours restant .
serait il possible de poster le script complet SVP ? Merci
Voici celui que j’utilise

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 t

Le script original de @sebyldino avec la correction de @Philippe_GAUMET pour le décompte des jours rouge.

Testé chez moi tout fonctionne.

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";

let date1 = new Date();
const currentYear = new Date().getFullYear();

let date2 = new Date(currentYear,8,1);
if (date1 < date2) {
console.log("date1 is before 1er Septembre");
var periode = `${currentYear-1}-${currentYear}`;
} else {
console.log("date1 is after 1er Septembre");
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("Jours 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;
1 Like

Bonjour,
Pour ceux qui ont un contrat Zen Flex, j’ai mis l’API dans le script de sebyldino.

-“RAS”. correspond à jour normal
-“ZENF_PM" à jour sobriété
-“ZENF_BONIF” pour jour bonus

let today = new Date()

let todayFormatted = today.toISOString().split(‘T’)[0]

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

if (!res.ok) {

throw new Error(res.statusText);

}

// Get the body JSON

const body = await res.json();

await tag(‘Jour J’, (${body.couleurJourJ}));

await tag(‘Jour J+1’, (${body.couleurJourJ1}));

return true;

Bonjour, Help

Quelqu’un peut-il m’expliquer pourquoi quand je lance un flow en automatique chaque jour à 12h00 qui appel le scritp de la couleur du lendemain ma variable ne se met pas à jour et quand je relance
le script en manuel depuis le PC cela fonctionne correctement ???

Bonjour

Le script fait appel a des fonctions asynchrones et pour s’assurer de laisser le temps a que les informations soient bien a jour avant le return qui est renvoyer au flow.
Pour régler ce dysfonctionnement il suffit de rajouter un petit delay avant le return.

}

getTempo(); // Appelle la fonction principale

await wait(2000) //tempo pour permettre fonction asynchrone de terminer
return true;

Bien cordialement

Merci pour votre retour

Ci-dessous les dernières ligne de code :

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

console.log(‘EDF_demain:’, color[tomorrow]);
await tag(tagName_tomorrow, color[tomorrow]);

}

getTempo(); // Appelle la fonction principale
await wait(2000) //tempo pour permettre fonction asynchrone de terminer
return true;

Cela vous emble conforme ?

Bonjour à tous !

Nouvel arrivant j’ai essayé de suivre le post … un grand merci à toi @sebyldino !!! J’ai utilisé ton code pour récupérer la valeur du jour EJP avec succès !
Maintenant il me reste à faire les flow qui vont bien pour piloter tout le monde.

@+

1 Like

Oui cela fonctionnera a tous les coup a présent. Personnellement au lieu d’attendre 11h, je lance le script toute les 1/2 heure tant que la couleur du lendemain est inconnu ainsi j’ai l’information le plus tôt possible.
Bien cordialement

Merci

Cordialement

Arnaud MOUGEL

[Moderator note: Personal information removed]

Bonjour à tous,

Je débute sur Homey et notamment les flows et je suis confrontée à un message d’erreur lorsque je veux ajouter une condition Logique du type “Jour J+1” contient “Rouge” alors >>>
Une idée pour régler çà ?
Merci beaucoup :folded_hands:

Bonjour Pauline

Pour utiliser la condition Logique du type “Jour J+1” contient “Rouge” alors il faut d’abord creer une variable texte par exemple Jour_J+1 qui sera mis a jour en utilsant la fonction <Definir Jour_J+1 à Jour J+1> . En effet Jour J+1est une variable HomeyScript donc pas utilisable directement dans les fonctions Logiques. Ensuite vous pourrez sans probleme faire la comparaison en utilisant la fonction Logique du type “Jour J+1” contient “Rouge” alors >>>.
Respectueusement.

Merci Christophe, tout fonctionne.

Pourriez-vous m’expliquer comment faites vous pour lancer le script toutes les 1/2 heure pour vous éviter d’attendre 11h ?

Merci à vous,

Bonne soirée

Bonjour Pauline

A 6h de matin de chaque journée je remet en position inconnu une variable que j’appelle EDF Couleur demain

C’est cette variable qui autorise ensuite chaque demi heure le lancement du script de récupération de la couleur tempo du lendemain.

Tant que la couleur du lendemain reste a inconnu, le script est relancé.

Lorsque ERDF a défini la couleur du lendemain ( Rouge ou Blanc ou bleu) le script est alors plus lancé car la variable EDF Couleur Demain a été mis a jour.

Bon courage

Christophe