Advertisement
Makertronic

EDF TEMPO

Nov 3rd, 2024
892
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.55 KB | Source Code | 0 0
  1. /*
  2. *****************************************************************************
  3. *
  4. * Tempo EDF ESP32 LED version 2024
  5. *
  6. *****************************************************************************
  7.  
  8. Il vous faut : 6 led pour le projet (2 bleu, 2 blanches, 2 rouges),
  9. 2 résistances de 220 ohms,
  10. 1 ESP32 S1,
  11. 1 breadboard,
  12. des fils de connexion.
  13.  
  14. Change ton mot de passe wifi et ton ssid dans le code( ligne 34 et 35).
  15. API : https://www.api-couleur-tempo.fr/api
  16.  
  17. Vous pouvez aussi passer par un écran LCD pour afficher la couleur du jour et de demain.
  18. Deux leds RGB ca ferais aussi bien le job.
  19. Merci de regarder ma petite chaine =)
  20.  
  21. * Web : https://www.makertronic-yt.com
  22. * version : 2.0
  23. * Copyright 2024
  24. */
  25.  
  26. // include des librairies
  27. #include <Arduino.h>
  28. #include <WiFi.h>
  29. #include "time.h"
  30. #include <HTTPClient.h>
  31. #include <ArduinoJson.h>
  32.  
  33. // connexion wifi
  34. const char* ssid = "xxxxxxxxxxxxxxxx";
  35. const char* password = "xxxxxxxxxxxxxx";
  36.  
  37. // leds
  38. const int ledJourBleu = 4;
  39. const int ledJourBlanc = 16;
  40. const int ledJourRouge = 17;
  41. const int ledDemainBleu = 25;
  42. const int ledDemainBlanc = 26;
  43. const int ledDemainRouge = 27;
  44.  
  45. void setup(){
  46. Serial.begin(9600);
  47. delay(1000);
  48.  
  49. WiFi.mode(WIFI_STA); //Optional
  50. WiFi.begin(ssid, password);
  51. Serial.println("\nConnection Wifi ...");
  52.  
  53. while(WiFi.status() != WL_CONNECTED){
  54. Serial.print(".");
  55. delay(100);
  56. }
  57.  
  58. Serial.println("\nConnecté au réseau Wifi !");
  59. Serial.print("IP locale: ");
  60. Serial.println(WiFi.localIP());
  61.  
  62. // leds en sortie
  63. pinMode(ledJourBleu, OUTPUT);
  64. pinMode(ledJourBlanc, OUTPUT);
  65. pinMode(ledJourRouge, OUTPUT);
  66. pinMode(ledDemainBleu, OUTPUT);
  67. pinMode(ledDemainBlanc, OUTPUT);
  68. pinMode(ledDemainRouge, OUTPUT);
  69. }
  70.  
  71.  
  72. void loop() {
  73.  
  74. // On coupe les leds avant de les allumer
  75. digitalWrite(ledJourBleu, LOW);
  76. digitalWrite(ledJourBlanc, LOW);
  77. digitalWrite(ledJourRouge, LOW);
  78. digitalWrite(ledDemainBleu, LOW);
  79. digitalWrite(ledDemainBlanc, LOW);
  80. digitalWrite(ledDemainRouge, LOW);
  81.  
  82. // URL JSON
  83. String urlToDay = "https://www.api-couleur-tempo.fr/api/jourTempo/today";
  84. //Serial.println(urlToDay); // debug url
  85. String urlTomorrow = "https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow";
  86. //Serial.println(urlTomorrow); // debug url
  87.  
  88. // reponse :
  89. //{
  90. // "dateJour": "2024-09-03",
  91. // "codeJour": 1,
  92. // "periode": "2024-2025"
  93. //}
  94.  
  95. // Effectuer la requête HTTP
  96. HTTPClient http;
  97. http.begin(urlToDay);
  98.  
  99. int httpCode = http.GET();
  100. if (httpCode > 0) {
  101. if (httpCode == HTTP_CODE_OK) {
  102. String payload = http.getString();
  103.  
  104. // Parse JSON avec ArduinoJSON
  105. const size_t capacity = JSON_OBJECT_SIZE(3) + 100;
  106. DynamicJsonDocument doc(capacity);
  107. DeserializationError error = deserializeJson(doc, payload);
  108.  
  109. if (error) {
  110. Serial.print("deserializeJson() failed: ");
  111. Serial.println(error.c_str());
  112. return;
  113. }
  114.  
  115. // Extraire les valeurs
  116. int codeJour = doc["codeJour"];
  117.  
  118. // Afficher la couleur en fonction du code
  119. //Code couleur du tarif Tempo applicable:
  120. // - 0: tarif inconnu (pas encore communiqué par RTE)
  121. // - 1: tarif bleu
  122. // - 2: tarif blanc
  123. // - 3: tarif rouge
  124. String couleur;
  125. switch(codeJour) {
  126. case 0:
  127. couleur = "INCONNU";
  128. break;
  129. case 1:
  130. couleur = "BLEU";
  131. digitalWrite(ledJourBleu, HIGH);
  132. digitalWrite(ledJourBlanc, LOW);
  133. digitalWrite(ledJourRouge, LOW);
  134. break;
  135. case 2:
  136. couleur = "BLANC";
  137. digitalWrite(ledJourBleu, LOW);
  138. digitalWrite(ledJourBlanc, HIGH);
  139. digitalWrite(ledJourRouge, LOW);
  140. break;
  141. case 3:
  142. couleur = "ROUGE";
  143. digitalWrite(ledJourBleu, LOW);
  144. digitalWrite(ledJourBlanc, LOW);
  145. digitalWrite(ledJourRouge, HIGH);
  146. break;
  147. default:
  148. couleur = "INCONNU";
  149. }
  150.  
  151. // Afficher le résultat debug
  152. Serial.print("Couleur du jour : ");
  153. Serial.println(couleur);
  154. }
  155. } else {
  156. Serial.println("Erreur lors de la requête HTTP");
  157. }
  158.  
  159. http.end(); // Libérer les ressources
  160.  
  161.  
  162. http.begin(urlTomorrow);
  163.  
  164. int httpCodeDemain = http.GET();
  165. if (httpCodeDemain > 0) {
  166. if (httpCodeDemain == HTTP_CODE_OK) {
  167. String payload = http.getString();
  168.  
  169. // Parse JSON avec ArduinoJSON
  170. const size_t capacity = JSON_OBJECT_SIZE(3) + 100;
  171. DynamicJsonDocument doc(capacity);
  172. DeserializationError error = deserializeJson(doc, payload);
  173.  
  174. if (error) {
  175. Serial.print("deserializeJson() failed: ");
  176. Serial.println(error.c_str());
  177. return;
  178. }
  179.  
  180. // Extraire les valeurs
  181. int codeJour = doc["codeJour"];
  182.  
  183. // Afficher la couleur en fonction du code
  184. //Code couleur du tarif Tempo applicable:
  185. // - 0: tarif inconnu (pas encore communiqué par RTE)
  186. // - 1: tarif bleu
  187. // - 2: tarif blanc
  188. // - 3: tarif rouge
  189. String couleur;
  190. switch(codeJour) {
  191. case 0:
  192. couleur = "INCONNU";
  193. break;
  194. case 1:
  195. couleur = "BLEU";
  196. digitalWrite(ledDemainBleu, HIGH);
  197. digitalWrite(ledDemainBlanc, LOW);
  198. digitalWrite(ledDemainRouge, LOW);
  199. break;
  200. case 2:
  201. couleur = "BLANC";
  202. digitalWrite(ledDemainBleu, LOW);
  203. digitalWrite(ledDemainBlanc, HIGH);
  204. digitalWrite(ledDemainRouge, LOW);
  205. break;
  206. case 3:
  207. couleur = "ROUGE";
  208. digitalWrite(ledDemainBleu, LOW);
  209. digitalWrite(ledDemainBlanc, LOW);
  210. digitalWrite(ledDemainRouge, HIGH);
  211. break;
  212. default:
  213. couleur = "INCONNU";
  214. }
  215.  
  216. // Afficher le résultat debug
  217. Serial.print("Couleur de demain : ");
  218. Serial.println(couleur);
  219. }
  220. } else {
  221. Serial.println("Erreur lors de la requête HTTP");
  222. }
  223.  
  224. http.end(); // Libérer les ressources
  225.  
  226. delay(600000); // Attendre 5 minutes avant de recommencer
  227. //delay(10000); // Attendre 10 secondes avant de recommencer (pour debug)
  228.  
  229. }
  230.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement