API + BOT = RTE_color_bot (@RTE_color@piaille.fr)

Parfois, un post en entraîne un autre... Ainsi, tu t'es mis à coder un BOT presque par inadvertance - avec les difficultés qu'on connaît - et tu le partages parce qu'il n'y a pas de raison que l'auteur soit le seul à pleurer... pis t'as un copain qui te lit et qui prend le truc au sérieux... en tout cas suffisamment pour te proposer d'en faire un autre !

Non, c'est vrai ?!    T'AS TROUVÉ ÇA BIEN ?!

Donc, me v'la reparti pour un tour...

Objectif de la demande: récupérer les données de l'API RTE tempo ( https://data.rte-france.com/catalog/-/api/consumption/Tempo-Like-Supply-Contract/v1.1 ) pour dire la couleur du jour et celle du lendemain et les poster sur un bot mastodon (mais pouvoir appeler le script comme une API aussi)

Je suis donc parti pour tester ladite API: pour la faire courte, ça m'a permis - après les galères d'usage - de comprendre comment tout ça fonctionnait (en particulier la demande d'un token, l'appel d'une api en php etc)

J'en suis arrivé à un script qui produit un texte donnant la couleur du jour et celle du lendemain.

«Oui, mais ce serait cool...»

Le texte c'est bien, mais ce serait mieux si on pouvait récup les données en HTML et intégrer ça avec une Iframe, comme un code d'intégration.

Pis éventuellement en RSS aussi...

Bon, tant que j'y étais, j'ai aussi fait un mode json, au cas où on voudrait ça dans un frontend à soi...

Du coup, mon API s'appelle de plusieurs façons différentes:

  • URL seule ➜ retour en texte RAW (prêt à poster)
  • URL?html ➜ retourne le code HTML
  • URL?json ➜ renvoie les données en JSON
  • URL?rss ➜ le flux RSS de l'API
  • (cadeau bonux) URL?embed_code ➜ retourne le code pour mettre ça sur son site avec une iframe.

Pour faire bonne mesure

Le script produit un fichier pour chaque type de retour et ne le régénère qu'une fois par jour afin d'éviter de se faire «hammerer» comme dit @parigotmanchot

Jusque là, tout va à peu près dans un monde couci, couça

À ce stade, le script fonctionne même si le code est un peu sale et pas bien rangé... il fait ce qu'on lui demande. A part que parfois, il ne donne pas la couleur du lendemain... mais pas en local... juste en distant. Je n'ai pas encore vraiment cherché pourquoi, mais je pense que c'est dû au moment où l'on appelle l'API de RTE.

Pourquoi s'en tenir là ?

Tant que j'y étais, j'ai regardé l'API ECOWATT ( https://data.rte-france.com/catalog/-/api/consumption/Ecowatt/v4.0 ) qui donne une couleur et un message décrivant le niveau de stress du réseau.

Du coup, le script appelle les deux API et retourne les données cumulées des deux.

ce qui donne ça

Capture du 2022-12-11 10-47-34.png

Capture du 2022-12-11 10-49-23.png

J'en veux j'en veux...

Si ça vous intéresse, le zip est là : RTETempo.zip et il est distribué sous stricte licence faites-en ce que vous voulez. 😅

Les constantes au début permettent de configurer un peu:

  • TOKEN_BASE64 : pour mettre votre propre jeton si vous voulez vous inscrire sur RTE (qui accepte les emails jetables type yopmail, je dis ça je dis rien 😬)
  • TEMPO_BEFORE_TODAY, TEMPO_BEFORE_TOMORROW, ECOWATT_BEFORE_TODAY, ECOWATT_BEFORE_TOMORROW : pour définir le texte renvoyé avant la couleur.
  • HTML_STYLE : pour changer le style du HTML généré
  • TEMPO_HTML_TEMPLATE, ECOWATT_HTML_TEMPLATE : pour changer le code HTML à utiliser en cas de retour HTML
  • ECOWATT, TEMPO : deux booléens permettant de débrayer l'un ou l'autre des appels (si vous ne voulez que ECOWATT ou que TEMPO)

Et le BOT ?!

Ben j'ai fait un autre BOT pour poster les couleurs du réseau une fois par jour... https://piaille.fr/@RTE_color ( @RTE_color@piaille.fr )

Capture du 2022-12-11 11-01-14.png

❝ 9 commentaires ❞

1  jerry wham le

C'est super, mais ça sert à quoi ?
Ces couleurs nous informent de quoi ézatement ?

 
2  Bronco le

Tempo:«Signal donnant les caractéristiques des jours de type TEMPO. Ce signal définit les jours de couleur identifiés dans le tarif réglementé de vente TEMPO, il est consitué de 40 jours blancs et de 20 jours rouges. Les autres jours sont bleus. Il est publié la veille. »


Ecowatt: https://www.monecowatt.fr/

 
3  Gilles le

Merci coupaing :)
Pour préciser pour #LesGens : le tarif "Tempo" EDF (https://particulier.edf.fr/fr/accueil/gestion-contrat/options/tempo/details.html) se base sur le tarif réglementé de l'Etat (un truc que l'Europe n'a pas encore détruit) et découpe l'année en jour selon trois couleurs Rouge, Blanc, Bleu.
En gros, le tarif de base blanc est le tarif réglementé de base, le tarif bleu c'est le blanc 20% et le rouge c'est "t'as pas les moyens de consommer car c'est presque blanc x3".
Le tarif court sur la journée de 6h du matin à 6h le lendemain et les heures creuses sont à 22h donc en gros, les journées rouges, de 6h du matin à 22h, tu ne chauffes pas à l'électrique (tant mieux si tu as autre chose, dans mon cas, j'ai la maison en tout électrique :D), pas de lave-vaisselle/linge, pas de console de jeu, etc.
Le but pour EDF : faire baisser la conso lors des grosses demandes (les jours rouges bizarrement, il fait très froid).
Heureusement, les jours rouges sont limités à 22 par an, les blancs à 43 par an (une année EDF = 1er septembre au 31 août).
Et jusque là, les seuls moyens de récupérer l'info (on est prévenu la veille genre vers midi pour prévoir l'utilisation avant) c'était via une appli en béta bien cachée mais stable pour Android, via les notifs SMS/Email (non UTF-8, aléatoires) d'EDF ou via le site web EDF.
Bref voilà :D

 
4  Bronco le

Merci à toi pour les explications

 
5  Jerry wham le

Merci pour ces explications. On comprend que ce soit caché. C'est pas dans l'intérêt d'edf de trop dévoiler ce genre d'info sinon tout le monde surchargerait les moments les moins chers, ce qui aurait l'effet inverse du but recherché.


Mais grâce à Bronco

 
6  Bronco le

Je crois que ce meme n'avait jamais été aussi bien placé !


 
7  didjoss le

Concernant ta remarque sur l'appel de l'API RTE tempo, que cela marchait N fois sur m ....
EN fait depuis quelques jours, l'API renvoie soit des données au format JSON soit des données au format XML...
Donc il faut parfois décoder en JSON et parfois en XML . De plus, en XML, la couleur est en français BLEU,BLANC ,ROUGE... Je n'ai pas encore trouvé comment forcer le retour de données en JSON ou en XML . Bonnes fêtes.

 
8  richard le

je voulais vous dire un énorme merci. je cherche depuis ce matin, j'ai posé aussi une question hier au support de rte mais pas de réponse. fait des tests sur postman (mais comme je ne maîtrise pas du tout le truc..) , bref, je tombe sur votre site, votre code mis gracieusement à disposition et ça fonctionne tout de suite ! bluffé et plein de gratitude je suis

 
9  Bronco le

Je vous en prie ! C'est très agréable de voir qu'un petit bout de code posté un peu vite fait s'avère malgré tout utile !
C'est cadeau ;-)

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le cinquième caractère du mot y97tuaqs ?
Caching time 0.002252 s