Afficheur météo, couleur tempo, conso élec, production solaire, etc

Roland,

Merci pour ta réponse.
Le lien https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant=AAAA-MM-JJ ne permet pas de récupérer les infos HP HC, cela est peut être un autre lien ?

Pour les fontes, c'est effectivement pas très simple mai vaut la peine d'essayer !

L'Arsène.

Bonjour !

Pour les infos HP/HC il n'y a rien à récupérer, en tarif Tempo c'est HP de 6h à 22h et HC de 22h à 6h le lendemain, quel que soit l'endroit !
La journée tempo va de 6h du matin à 6h le lendemain.

Roland

Merci Roland.
L'Arsène.

Super travail bravo ! C'est inspirant !

Bonjour,

Un grand merci a @rollmops67 .

Je cherchais comment afficher la couleur de l'option tempo sur un écran.
Et je suis tombé sur ce forum.

Ça fait très longtemps que je veux me lancer sur de la programmation avec Arduino.

Ça a donc été l'occasion. Et ta création ma largement donné l'envie de passer a l'acte.

J'ai donc commandé Lilygo T-display-s3.

Je me suis inspiré de ton code pour l'arranger a ma façon. Ca a été plus facile que de partir d'une feuille blanche.

J'ai juste une remarque sur la gestion de l'heure.
J'ai vu sur un forum, qu'il n'était pas nécessaire de charger une bibliothèque. NTP était déjà géré sur les esp32.

Voici un extrait du code: 
// NTP
const char* ntpServer = "pool.ntp.org";           // Serveur NTP
#define MAX_SIZE 80

// ******** Valeurs pour la gestion de l'heure et de la date
time_t timestamp_actu, timestamp_edf;             // Timestamp de la derniere mise a jour Tempo et Get EDF
char heure[MAX_SIZE];                             // Heure actuel => Format 17:28
char date[MAX_SIZE];                              // Date actuel => Format 30/06/2024
char dateUpdateEdf[MAX_SIZE];                     // Date actuel au format GET pour EDF
time_t timestamp = time (NULL );                  // Timestamp actuel

// Fonction pour traduire les jours en français
String jourEnFrancais(const char* day) {
  if (strcmp(day, "Monday") == 0) return "Lundi";
  if (strcmp(day, "Tuesday") == 0) return "Mardi";
  if (strcmp(day, "Wednesday") == 0) return "Mercredi";
  if (strcmp(day, "Thursday") == 0) return "Jeudi";
  if (strcmp(day, "Friday") == 0) return "Vendredi";
  if (strcmp(day, "Saturday") == 0) return "Samedi";
  if (strcmp(day, "Sunday") == 0) return "Dimanche";
  return "";
}
String moisEnFrancais(int month) {
  switch (month) {
    case 0: return "Janvier";
    case 1: return "Février";
    case 2: return "Mars";
    case 3: return "Avril";
    case 4: return "Mai";
    case 5: return "Juin";
    case 6: return "Juillet";
    case 7: return "Août";
    case 8: return "Septembre";
    case 9: return "Octobre";
    case 10: return "Novembre";
    case 11: return "Décembre";
    default: return "";
  }
}

void setup()
{
  configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", ntpServer);
}

void loop()
{
  updateDateTime();
}

void updateDateTime() {
  timestamp = time(NULL);
  struct tm* pTime = localtime(&timestamp);
  strftime(heure, MAX_SIZE, "%H:%M", pTime);

  // Obtenez le jour de la semaine en anglais
  char day[10];
  strftime(day, sizeof(day), "%A", pTime);
  String dayInFrench = jourEnFrancais(day);

  // Obtenez le mois en anglais
  int month = pTime->tm_mon;
  String monthInFrench = moisEnFrancais(month);

  // Formatez la date en français
  snprintf(date, MAX_SIZE, "%s %d %s", dayInFrench.c_str(), pTime->tm_mday, monthInFrench.c_str());

  // Formatez la date pour la requête EDF
  strftime(dateUpdateEdf, MAX_SIZE, "%Y-%m-%d", pTime);
}

Ça fonctionne super bien.

J'ai pour idée de passer a l'étape supérieure en commandant un écran 7 pouce sur esp-s3.
J'ai envie de pouvoir commander l'alarme, les lumières, .... Et aussi remonter les productions et consommations solaire.

En parallèle, j'ai un ancien projet en pause que je vais réactiver. Créer un robot tondeuse.

Encore merci a toi :heart:

Bonjour @Jaskend !

Heureux que mon projet ai pu t'inspirer !!!

Roland

pourquoi passer par des String en dupliquant du contenu alors que vous avez partout des cStrings

Gagnez de la mémoire en faisant

const char * jourEnFrancais(const char* day) {
  if (strcmp(day, "Monday") == 0) return "Lundi";
  if (strcmp(day, "Tuesday") == 0) return "Mardi";
  if (strcmp(day, "Wednesday") == 0) return "Mercredi";
  if (strcmp(day, "Thursday") == 0) return "Jeudi";
  if (strcmp(day, "Friday") == 0) return "Vendredi";
  if (strcmp(day, "Saturday") == 0) return "Samedi";
  if (strcmp(day, "Sunday") == 0) return "Dimanche";
  return "";
}
const char * moisEnFrancais(int month) {
  switch (month) {
    case 0: return "Janvier";
    case 1: return "Février";
    case 2: return "Mars";
    case 3: return "Avril";
    case 4: return "Mai";
    case 5: return "Juin";
    case 6: return "Juillet";
    case 7: return "Août";
    case 8: return "Septembre";
    case 9: return "Octobre";
    case 10: return "Novembre";
    case 11: return "Décembre";
    default: return "";
  }
}

et bien sûr dans la fonction updateDateTime()

  const char * dayInFrench = jourEnFrancais(day);
...
  const char * monthInFrench = moisEnFrancais(month);
...
  snprintf(date, MAX_SIZE, "%s %d %s", dayInFrench, pTime->tm_mday, monthInFrench);

sinon pour ESP32 j'ai un bout de code dans les tutos avec une gestion asynchrone de l'obtention de la date et aussi gestion du WiFi avec ses callbacks.

Bonjour @J-M-L

Un grand merci pour ce retour. Je vais étudier cela en détail et lire vos tutos :pray: