Soucis compilation suite update ESP 2025.7.0 vers 2025.7.1

Bonjour,

J’ai une grosse incompréhension suite à cette mise à jour.

En 2025.7.0, j’ai fait la mise à jour du serveur, et la mise à jour des devices sans aucun soucis.
Mes trucs sont maintenant stable, donc je ne modifie pas les configurations, je met juste à jour de temps en temps pour ne pas avoir un trop gros saut à faire, et louper des breaking change.

Donc la je vais pour updater vers la .1 comme j’avais fait la .0 quelques heures avant… Le lxc ok, mais j’ai un device qui ne veut pas.

RAM:   [==        ]  18.9% (used 62064 bytes from 327680 bytes)
Flash: [==========]  107.9% (used 1979204 bytes from 1835008 bytes)
Error: The program size (1979204 bytes) is greater than maximum allowed (1835008 bytes)

💡 TIP: Your ESP32 with Arduino framework has run out of flash space.

To fix this, switch to the ESP-IDF framework which is more memory efficient:

1. In your YAML configuration, modify the framework section:

   esp32:
     framework:
       type: esp-idf

2. Clean build files and compile again

Note: ESP-IDF uses less flash space and provides better performance.
Some Arduino-specific libraries may need alternatives.

Ok, donc pas de soucis de flash en 7.0, la 7.1 prends plus de place. Pourquoi pas.
Je fais ce qu’on me dit, je change dans framework mon « arduino » par « esp-idf », et clean, compile again.

Et j’ai des erreurs en pagaille…

/root/.platformio/packages/toolchain-xtensa-esp-elf/xtensa-esp-elf/include/c++/13.2.0/bits/basic_string.h:176:7: note:   candidate expects 2 arguments, 1 provided
/root/config/esp-conso-chauffage.yaml:221:113: error: could not convert '{<expression error>}' from '<brace-enclosed initializer list>' to 'esphome::optional<std::__cxx11::basic_string<char> >'
  221 |       return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
      |                                                                                                                 ^
      |                                                                                                                 |
      |                                                                                                                 <brace-enclosed initializer list>

C’est visiblement lié à cette partie la du yaml

# Transformation des secondes en jours
text_sensor:
  - platform: template
    name: "Allumé depuis (j)"
    lambda: |-
      int seconds = (id(uptime_sec).state);
      if (seconds == 0) {
        seconds = 1;
      }
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };          
    icon: mdi:clock-start
    update_interval: 300s

Ca se compile sur Arduino, pas sur esp-idf. Donc je suis un peu perdu…
Au delà de ça, le seul intéret est que ça me permettait de mettre simplement l’info dans un button-card.

Mais je récupère aussi l’uptime en secondes dans une autre entité. J’avais fait ça parce que je n’avais pas trouvé comment la formater dans mon button card, mais peut-être que ça serai plus simple de faire comme ça.

Salut,
pour arduino :

return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() }; 

pour ESP-IDF:

return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };

j’utilise ce code:

text_sensor:
  - platform: template
    id: lite_uptime
    name: Uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( hours ) {
        return { (to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( minutes ) {
        return { (to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else {
        return { (to_string(seconds) +"s ").c_str() };
      }
    icon: mdi:clock-start
    update_interval: 60s
    entity_category: "diagnostic"

Moi aussi j’ai eu un souci avec un esp32 en arduino, il faut que je le passe en esp-idf avec esphome 2025.7.1. Alors que je n’ai eu aucun soucis jusqu’à cette nouvelle version de ESPhome.

J’ai eu cette erreur:

fatal error: pins_arduino.h: No such file or directory
1 « J'aime »

Quel talent !

Merci.

1 « J'aime »

Bonjour,
j’ai aussi quelques soucis, par exemple avec une mise à jour d’ESPCAM.
Erreur de validation YAML donc passage de arduino à esp-idf.

esp32_camera_web_server:
  - port: 8080
    mode: stream
  - port: 8081
    mode: snapshot
[11:32:44][E][esp32_camera_web_server:099]:   Setup Failed
[11:32:44][E][component:141]:   esp32_camera_web_server is marked FAILED: unspecified

Bon ça fonctionne quand même mais pas certain de mettre à jour tous mes ESP si à chaque fois il faut reprendre le code…

Bob

regade c’est issue, une solution est indiqué:

Ce sujet a été automatiquement fermé après 2 jours. Aucune réponse n’est permise dorénavant.