Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *****************************************************************************
- *
- * Tempo EDF ESP32 LED version 2024
- *
- *****************************************************************************
- Il vous faut : 6 led pour le projet (2 bleu, 2 blanches, 2 rouges),
- 2 résistances de 220 ohms,
- 1 ESP32 S1,
- 1 breadboard,
- des fils de connexion.
- Change ton mot de passe wifi et ton ssid dans le code( ligne 34 et 35).
- API : https://www.api-couleur-tempo.fr/api
- Vous pouvez aussi passer par un écran LCD pour afficher la couleur du jour et de demain.
- Deux leds RGB ca ferais aussi bien le job.
- Merci de regarder ma petite chaine =)
- * Web : https://www.makertronic-yt.com
- * version : 2.0
- * Copyright 2024
- */
- // include des librairies
- #include <Arduino.h>
- #include <WiFi.h>
- #include "time.h"
- #include <HTTPClient.h>
- #include <ArduinoJson.h>
- // connexion wifi
- const char* ssid = "xxxxxxxxxxxxxxxx";
- const char* password = "xxxxxxxxxxxxxx";
- // leds
- const int ledJourBleu = 4;
- const int ledJourBlanc = 16;
- const int ledJourRouge = 17;
- const int ledDemainBleu = 25;
- const int ledDemainBlanc = 26;
- const int ledDemainRouge = 27;
- void setup(){
- Serial.begin(9600);
- delay(1000);
- WiFi.mode(WIFI_STA); //Optional
- WiFi.begin(ssid, password);
- Serial.println("\nConnection Wifi ...");
- while(WiFi.status() != WL_CONNECTED){
- Serial.print(".");
- delay(100);
- }
- Serial.println("\nConnecté au réseau Wifi !");
- Serial.print("IP locale: ");
- Serial.println(WiFi.localIP());
- // leds en sortie
- pinMode(ledJourBleu, OUTPUT);
- pinMode(ledJourBlanc, OUTPUT);
- pinMode(ledJourRouge, OUTPUT);
- pinMode(ledDemainBleu, OUTPUT);
- pinMode(ledDemainBlanc, OUTPUT);
- pinMode(ledDemainRouge, OUTPUT);
- }
- void loop() {
- // On coupe les leds avant de les allumer
- digitalWrite(ledJourBleu, LOW);
- digitalWrite(ledJourBlanc, LOW);
- digitalWrite(ledJourRouge, LOW);
- digitalWrite(ledDemainBleu, LOW);
- digitalWrite(ledDemainBlanc, LOW);
- digitalWrite(ledDemainRouge, LOW);
- // URL JSON
- String urlToDay = "https://www.api-couleur-tempo.fr/api/jourTempo/today";
- //Serial.println(urlToDay); // debug url
- String urlTomorrow = "https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow";
- //Serial.println(urlTomorrow); // debug url
- // reponse :
- //{
- // "dateJour": "2024-09-03",
- // "codeJour": 1,
- // "periode": "2024-2025"
- //}
- // Effectuer la requête HTTP
- HTTPClient http;
- http.begin(urlToDay);
- int httpCode = http.GET();
- if (httpCode > 0) {
- if (httpCode == HTTP_CODE_OK) {
- String payload = http.getString();
- // Parse JSON avec ArduinoJSON
- const size_t capacity = JSON_OBJECT_SIZE(3) + 100;
- DynamicJsonDocument doc(capacity);
- DeserializationError error = deserializeJson(doc, payload);
- if (error) {
- Serial.print("deserializeJson() failed: ");
- Serial.println(error.c_str());
- return;
- }
- // Extraire les valeurs
- int codeJour = doc["codeJour"];
- // Afficher la couleur en fonction du code
- //Code couleur du tarif Tempo applicable:
- // - 0: tarif inconnu (pas encore communiqué par RTE)
- // - 1: tarif bleu
- // - 2: tarif blanc
- // - 3: tarif rouge
- String couleur;
- switch(codeJour) {
- case 0:
- couleur = "INCONNU";
- break;
- case 1:
- couleur = "BLEU";
- digitalWrite(ledJourBleu, HIGH);
- digitalWrite(ledJourBlanc, LOW);
- digitalWrite(ledJourRouge, LOW);
- break;
- case 2:
- couleur = "BLANC";
- digitalWrite(ledJourBleu, LOW);
- digitalWrite(ledJourBlanc, HIGH);
- digitalWrite(ledJourRouge, LOW);
- break;
- case 3:
- couleur = "ROUGE";
- digitalWrite(ledJourBleu, LOW);
- digitalWrite(ledJourBlanc, LOW);
- digitalWrite(ledJourRouge, HIGH);
- break;
- default:
- couleur = "INCONNU";
- }
- // Afficher le résultat debug
- Serial.print("Couleur du jour : ");
- Serial.println(couleur);
- }
- } else {
- Serial.println("Erreur lors de la requête HTTP");
- }
- http.end(); // Libérer les ressources
- http.begin(urlTomorrow);
- int httpCodeDemain = http.GET();
- if (httpCodeDemain > 0) {
- if (httpCodeDemain == HTTP_CODE_OK) {
- String payload = http.getString();
- // Parse JSON avec ArduinoJSON
- const size_t capacity = JSON_OBJECT_SIZE(3) + 100;
- DynamicJsonDocument doc(capacity);
- DeserializationError error = deserializeJson(doc, payload);
- if (error) {
- Serial.print("deserializeJson() failed: ");
- Serial.println(error.c_str());
- return;
- }
- // Extraire les valeurs
- int codeJour = doc["codeJour"];
- // Afficher la couleur en fonction du code
- //Code couleur du tarif Tempo applicable:
- // - 0: tarif inconnu (pas encore communiqué par RTE)
- // - 1: tarif bleu
- // - 2: tarif blanc
- // - 3: tarif rouge
- String couleur;
- switch(codeJour) {
- case 0:
- couleur = "INCONNU";
- break;
- case 1:
- couleur = "BLEU";
- digitalWrite(ledDemainBleu, HIGH);
- digitalWrite(ledDemainBlanc, LOW);
- digitalWrite(ledDemainRouge, LOW);
- break;
- case 2:
- couleur = "BLANC";
- digitalWrite(ledDemainBleu, LOW);
- digitalWrite(ledDemainBlanc, HIGH);
- digitalWrite(ledDemainRouge, LOW);
- break;
- case 3:
- couleur = "ROUGE";
- digitalWrite(ledDemainBleu, LOW);
- digitalWrite(ledDemainBlanc, LOW);
- digitalWrite(ledDemainRouge, HIGH);
- break;
- default:
- couleur = "INCONNU";
- }
- // Afficher le résultat debug
- Serial.print("Couleur de demain : ");
- Serial.println(couleur);
- }
- } else {
- Serial.println("Erreur lors de la requête HTTP");
- }
- http.end(); // Libérer les ressources
- delay(600000); // Attendre 5 minutes avant de recommencer
- //delay(10000); // Attendre 10 secondes avant de recommencer (pour debug)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement