Demande conseils utilisation ESPHome pour projet ESP32

Je suis désolé, mais je n’ai pas tout bien compris ce que tu as fais …

Si j’ai bien compris, tu as réussi à téléverser un programme de base dans ton microcontrôleur ESP32-S3FN8 (qui se trouve dans ton module AtomS3 Lite) via le cordon USB (Donc convertisseur série / port « COM X »).

Ton ESP32 est maintenant en mesure de se connecter au réseau wifi, et tu peux maintenant téléverser un nouveau programme de manière « sans fil » sans avoir besoin du cordon USB, du moment que le module AtomS3 Lite est bien alimenté.

C’est un bon progrès ! :smiley:

Quand tu dis « La led rouge du départ qui montrait qu’il était branché n’est toutefois pas réapparue » tu parle de la led RGB type « WS2812 » ? Si oui, c’est normal.

Cette led « intelligente » se pilote avec un signal modulé sur une broche Data qui est relié physiquement au GPIO35 de ton ESP32-S3FN8 présent sur ton module AtomS3 Lite.

Dans ton YAML, tu indiques que le module utilisé est un « esp32-s3-devkitc-1 ». Ce module embarque un ESP32-S3N8R8.
Si tu regardes mon message plus haut, tu verras que tout les ESP32-S3 avec une référence en « R2 » ou « R8 » embarque une PSRAM qui est physiquement relié aux broches GPIO32, 33, 34, 35, 36 et GPIO37.

Dans cette configuration, tu te fais jeter car tu demandes à ESPHome de compiler un programme qui commande une led RVB par la broche GPIO35 alors qu’il devrait utiliser la broche GPIO35 pour le PSRAM qui n’est pas présente dans ta version de ESP32.

Pour la suite, tu m’as un peu perdu…

Je crois comprendre que tu essaies de trouver une manière non officielle d’indiquer à ESPHome qu’il compile sur un ESP32-S3FN8 (qui ne possède pas de PSRAM)dont la broche GPIO35 n’est pas réservé et disponible pour y affectés la commande de ta led RGB ? Mais que ton micro-contrôleur affiche les logs d’erreurs que tu as mentionné ?

Dans tes logs, ça c’est pas bon et ça peut signifier pleins de choses :
[22:40:06]SHA-256 comparison failed:
[22:40:06]Calculated: fca1cbb391da7f4d7661d5787b624dc9695df43c992a00aca3d283d499b60386
[22:40:06]Expected: 9da1c86b0485e272ea16333da1ab92bbca2448e52690b89a7fa07a3a201b697d

Il y a aussi : [22:40:06]rst:0x7 (TG0WDT_SYS_RST)

rst:0x7 signifie que ton ESP32 à redémarré via l’ordre d’un watchdog timer.

TG0 signifie que le watchdog est déclenché par le Groupe 0 (le Groupe 1 aurait été un watchdog programmé par la personne qui a écrit le code). Le Groupe 0 signifie une erreur critique.

En gros, ton esp démarre, plante, et redémarre car plantage, re-plante à nouveau, etc, etc, etc …

Et ça, pour tout un tas de causes différentes ! Ça pourrait être une mauvaise configue dans la manière de préparer le programme avant televersement.

Peux-tu donner ton code YALM, en poste 13, ou tu dis avoir un pb avec : WARNING GPIO35 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
Failed config

light.esp32_rmt_led_strip: [source boards/m5stack-atoms3.yml:36]
platform: esp32_rmt_led_strip
rgb_order: GRB
pin: 35
num_leds: 4

This feature is not available for the IDF framework version 5.
rmt_channel: 1
chipset: ws2812
id: led
name: Led
entity_category: diagnostic" ?

En fait, pour résumer je dois injecter le programme ESP trouvé sur le github mais pour se faire je dois le compiler pour en récupérer un fichier Firmware.bin à injecter dans ma carte Atom S3 Lite.

Pour le compiler, je ne peux pas utiliser ESPHome installé sur mon HA car cela fait appel à plusieurs fichiers récupérés sur le github en question et sur HA je pense qu’on ne peut que mettre du code dans le fichier config. J’ai donc trouvé la manière de le faire en local par lignes de commande. Seulement, il y a une erreur à la compilation qui est bien celle-ci :

WARNING GPIO35 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
Failed config

light.esp32_rmt_led_strip: [source boards/m5stack-atoms3.yml:36]
  platform: esp32_rmt_led_strip
  rgb_order: GRB
  pin: 35
  num_leds: 4

  This feature is not available for the IDF framework version 5.
  rmt_channel: 1
  chipset: ws2812
  id: led
  name: Led
  entity_category: diagnostic

Après recherche su internet, il apparait que le IDF Framework ne demande plus de définir rmt_channel car il est défini automatiquement dans le nouveau framework. Il faut donc retirer cette ligne, ce que j’ai fait. Si je retire cette ligne, le programme compile bien (message de réussite à la fin) malgré quelques warnings au début.

Ensuite, je vais sur web.esphome.io pour injecter le firmeware, j’y arrive sans problème en USB (ça me met Congratulations) mais ensuite ça ne va pas j’ai les logs que j’ai communiqué ci-dessus.

J’ai essayé d’expliquer au mieux :slight_smile:

1 « J'aime »

Ok !

Donc, compiler un binaire, c’est ok. Installer le binaire, c’est ok pour toi aussi !

Ma spé, c’est plutôt l’électronique.
En attendant l’intervention de personnes bien meilleures que moi dans la programmation, pour que je comprenne le problème, il faudrait que tu m’expliques, étape par étape, ce que tu as fait et quels programme/fichiers tu as utilisé pour en arriver à un binaire.bin que tu téléverse dans ton micro-contrôleur :wink:

Pour « rmt_channel », on est d’accord que le périphérique RMT gére la modulation pour des signaux IR ou de commande pour des LEDs « intelligentes » comme les WS2812.

Que disent les warning ?

Bonjour @Le_S3b,

Je viens de survoler rapidement ton sujet, je n’ai pas d’Atom S3 Lite mais des ESP32-S3 N16R8.
As-tu regarder le post que j’avais initié ?
ESP32-S3 N16R8 pilotage LED RGB - Entraide Home Assistant - Home Assistant Communauté Francophone
Tu y trouveras quelques infos.
Bob

Alors, pour compiler, j’ai utilisé soit le programme Visual studio code, soit Git CMD (qui était conseillé dans les ‹ issues › du dépôt Git). Au final, que ce soit avec l’un ou l’autre j’ai exactement la même chose.

J’avais installé esphome sur mon ordi pour l’utiliser en lignes de commande : Installing ESPHome Manually — ESPHome

Ensuite, je lance Visual Studio code, je vais dans le répertoire où j’ai les fichiers récupérés du github, je modifie le fichier secrets.yaml avec mes identifiants wifi, j’ai renommé le fichier zehnder-comfoair-q-m5stack-atoms3.yml en zehnder-comfoair-q-m5stack-atoms3.yaml comme expliqué dans l’issue du github et ensuite je fais la commande : esphome compile zehnder-comfoair-q-m5stack-atoms3.yaml

J’avais la fameuse erreur que je n’ai plus en ayant retiré la ligne rmt_channel du fichier boards/m5stack-atoms3.yml
Voici une photo où on voit qu’elle n’y est plus

Donc quand je lance la commande esphome compile zehnder-comfoair-q-m5stack-atoms3.yaml ca fonctionne mais j’ai ces warnings :

Voici les logs entiers :

PS C:\Users\jcmesters\Downloads\esphome-zehnder-comfoair> esphome compile zehnder-comfoair-q-m5stack-atoms3.yaml
INFO ESPHome 2025.2.2
INFO Reading configuration zehnder-comfoair-q-m5stack-atoms3.yaml...
WARNING The selected ESP-IDF framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
WARNING The selected ESP-IDF framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
INFO Detected timezone 'Europe/Berlin'
WARNING GPIO35 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
INFO Generating C++ source...
INFO Updating https://github.com/espressif/esp-protocols.git@mdns-v1.5.1
INFO Compiling app...
Processing zehnder-comfoair-q (board: esp32-s3-devkitc-1; framework: espidf; platform: platformio/espressif32@6.8.1)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-s3-devkitc-1.html
PLATFORM: Espressif 32 (6.8.1) > Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (esp-builtin) On-board (esp-builtin) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-espidf @ 3.50300.0 (5.3.0) 
 - tool-cmake @ 3.16.4 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - tool-idf @ 1.0.1 
 - tool-mconf @ 1.4060000.20190628 (406.0.0) 
 - tool-ninja @ 1.9.0
 - tool-riscv32-esp-elf-gdb @ 11.2.0+20220823
 - tool-xtensa-esp-elf-gdb @ 11.2.0+20230208
 - toolchain-esp32ulp @ 2.35.0-20220830
 - toolchain-riscv32-esp @ 13.2.0+20240530
 - toolchain-xtensa-esp-elf @ 13.2.0+20240530
Reading CMake configuration...
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ off, Compatibility ~ soft
Found 4 compatible libraries
Scanning dependencies...
Dependency Graph
|-- noise-c @ 0.1.6
|-- ArduinoJson @ 6.18.5
|-- Improv @ 1.2.4
Building in release mode
Compiling .pioenvs\zehnder-comfoair-q\src\main.cpp.o
Linking .pioenvs\zehnder-comfoair-q\firmware.elf
Retrieving maximum program size .pioenvs\zehnder-comfoair-q\firmware.elf
Checking size .pioenvs\zehnder-comfoair-q\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]  11.3% (used 37032 bytes from 327680 bytes)
Flash: [===       ]  29.1% (used 1143292 bytes from 3932160 bytes)
Building .pioenvs\zehnder-comfoair-q\firmware.bin
esptool.py v4.5.1
Creating esp32s3 image...
Merged 2 ELF sections
Successfully created esp32s3 image.
esp32_create_combined_bin([".pioenvs\zehnder-comfoair-q\firmware.bin"], [".pioenvs\zehnder-comfoair-q\firmware.elf"])
esptool.py v4.7.0
Wrote 0x127370 bytes to file C:\Users\jcmesters\Downloads\esphome-zehnder-comfoair\.esphome\build\zehnder-comfoair-q\.pioenvs\zehnder-comfoair-q/firmware.factory.bin, ready to flash to offset 0x0
esp32_copy_ota_bin([".pioenvs\zehnder-comfoair-q\firmware.bin"], [".pioenvs\zehnder-comfoair-q\firmware.elf"])
========================================================================================= [SUCCESS] Took 24.56 seconds =========================================================================================
INFO Successfully compiled program.
PS C:\Users\jcmesters\Downloads\esphome-zehnder-comfoair> 

J’ai refait toute la manip que je viens de te décrire sous Visual studio code pour avoir les logs ci-dessus et donc te les montrer. Je le téléverserai à nouveau en rentrant chez moi ce soir car je suis au bureau et donc ce n’est pas le bon wifi :slight_smile:

Bon malgré que j’ai recompilé ça ne va pas. Même problème que précédemment alors que si je vais par « ESPHome » de HA et que je fais la procédure pour un nouveau device et que je mets la config de base, tout est bon et il est détecté normalement …

Si j’essaie de comprendre, c’est le fichier « base.yaml » qui est ton fichier principal ? Et qui inclut :

binary_sensors.yaml
board.yaml
button.yaml
canbus.yaml
climate.yaml
common.yaml
fan.yaml
select.yaml
sensors.yaml
switch.yaml
text_sensors.yaml
secret.yaml

Tu n’as donc besoin que de ces fichiers pour créé le binaire à installer dans ton esp ?

@Jicay
J’ai sans doute lu un peu vite mais si ça fonctionne avec ESPHome, pourquoi faire autrement ?
Tous mes ESP32 (différents modèles) fonctionnent via ESPHome :wink:

Bob

1 « J'aime »

Bonjour,
regarder ce PR

latest:

    external_components:
      - source: github://pr#7770
        components: [ remote_base, remote_receiver, remote_transmitter, esp32_rmt, esp32_rmt_led_strip ]
        refresh: 5min

if you are not on the lastest dev and get c6 config errors:

    external_components:
      - source: github://esphome/esphome@94befe126bc952785994ddf8dcfd15e9c3c3ff23
        components: [ remote_base, remote_receiver, remote_transmitter, esp32_rmt, esp32_rmt_led_strip ]
        refresh: 5min
1 « J'aime »

Oui tu as lu un peu vite.
Avec EspHome j’arrive à faire la configuration de base mais c’est quand j’essaie d’injecter le firmware que j’ai compilé par lignes de commande suivant les instructions et les fichiers récupérés sur le github que ça ne va pas

Je vais aller voir ce soir pour voir si j’y trouve quelque chose d’intéressant pour moi.

Merci :slight_smile:

EDIT : purée c’est du chinois pour moi :confused:

oui mais il y a aussi les fichiers du dossier components et boards, peut-être d’autres

Okep, je pense que Bob demandait pourquoi ne pas faire comme ce qui est dit en deuxième message ici : OTA Update · Issue #17 · yoziru/esphome-zehnder-comfoair · GitHub

ah oui ok !!! Bien vu !!!
Je vais regarder comment faire pour copier les dossiers dans ESPHome

EDIT : avec Studio code server dans HA on sait ajouter des dossiers et uploader des fichiers ! je pensais que ce n’était que de la modification de code YAML ! Top !

Bon j’essaie et vous tiens au courant

EDIT2 : Je vous passe les modifs que j’ai du faire pour arriver à ce que les chemins soient bons pour lancer l’installation par ESPHome sur HA avec les différents dossiers et fichiers. Une fois cela réussi, voici l’erreur qui apparait directement. Perso, je ne comprends aboslument pas

INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/zehnder-comfoair-q.yaml...
ERROR Unexpected exception while reading configuration:
Traceback (most recent call last):
  File "/usr/local/bin/esphome", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/esphome/esphome/__main__.py", line 1049, in main
    return run_esphome(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1027, in run_esphome
    config = read_config(dict(args.substitution) if args.substitution else {})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 1095, in read_config
    res = load_config(command_line_substitutions)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 949, in load_config
    return _load_config(command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 939, in _load_config
    return validate_config(config, command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 835, in validate_config
    target_platform = core_config.preload_core_config(config, result)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 222, in preload_core_config
    if _is_target_platform(domain):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 184, in _is_target_platform
    if get_component(name, True).is_target_platform:
       ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 205, in get_component
    return _lookup_module(domain, exception)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 181, in _lookup_module
    module = importlib.import_module(f"esphome.components.{domain}")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'esphome.components.zehnder_comfoair_q'

C’est précisément ce qu’il faudrait que tu nous expliques :wink:

« ModuleNotFoundError : aucun module nommé ‹ esphome.components.zehnder_comfoair_q › »

Ça ressemble à un oublie de fichier ou de chemin de fichier mal re définie dans un YAML :wink:


EDIT: Si je ne dis pas trop de bêtises, tu dois ajouter un composant personnalisé a ESPHome.
Ça devrait s’ajouter dans : « esphome/components/zehnder_comfoair_q » et ou tu devrais retrouver : « __ init__.py », « zehnder_comfoair_q.cpp » et « zehnder_comfoair_q.h »

Et on me semble que c’est justement le fichier en python qui gère les composants personnalisés ?

Ahahah dire précisément ce que j’ai modifié est compliqué car je t’avoue que je ne m’en souviens plus.

C’etait plus de la syntaxe qui n’allait pas.
j’avais copié le code YAML dans le fichier de configuration de ESPHome de Home assistant et il y avait ceci : external_components: !include packages/external_components.yml que j’ai transformé en

external_components:
  - source:
      type: local
      path: packages

j’ai également supprimé des bouts de code dans un fichier car il reprenait les mêmes infos que celles du fichier de configuation de ESPHome : api, ota, etc …

Suite à ces modifs, les erreurs ont disparues mais forcément, il y en a eu de nouvelles pour lesquelles tu as répondu :slight_smile:

J’ajoute donc le dossier et les fichiers et je retente ma chance !

En tout cas grand grand merci pour ton aide !

EDIT : toujours la même erreur

INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/zehnder-comfoair-q.yaml...
ERROR Unexpected exception while reading configuration:
Traceback (most recent call last):
  File "/usr/local/bin/esphome", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/esphome/esphome/__main__.py", line 1049, in main
    return run_esphome(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1027, in run_esphome
    config = read_config(dict(args.substitution) if args.substitution else {})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 1095, in read_config
    res = load_config(command_line_substitutions)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 949, in load_config
    return _load_config(command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 939, in _load_config
    return validate_config(config, command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 835, in validate_config
    target_platform = core_config.preload_core_config(config, result)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 222, in preload_core_config
    if _is_target_platform(domain):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 184, in _is_target_platform
    if get_component(name, True).is_target_platform:
       ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 205, in get_component
    return _lookup_module(domain, exception)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 181, in _lookup_module
    module = importlib.import_module(f"esphome.components.{domain}")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'esphome.components.zehnder_comfoair_q'

Avec plaisir :slight_smile:

Je pense que l’on est plus très loins de la vérité :wink:

C’est parfait, normalement, tu dois avoir le contenu du fichier « base.yaml » avec tes propres paramètres pour api, ota, etc …

Il est probable que le problème vienne de la ?
Pourquoi avoir fais cette modif ?

Dans le fichier « external_components.yaml » du dépôt, il y a :

- components: [ zehnder_comfoair_q ]
  source: components

j’avais fait cette modif car Esphome me signalait une erreur et en allant sur External Components — ESPHome

j’ai vu qu’il fallait l’écrire ainsi :

external_components:
  # use rtttl and dfplayer from ESPHome's dev branch in GitHub
  - source:
      type: git
      url: https://github.com/esphome/esphome
      ref: dev
    components: [ rtttl, dfplayer ]

  # equivalent shorthand for GitHub
  - source: github://esphome/esphome@dev
    components: [ rtttl ]

  # equivalent shorthand for GitHub pull request
  - source: github://pr#2639
    components: [ rtttl ]

  # use all components from a local folder
  - source:
      type: local
      path: my_components

  # use a component from a local git repository
  - source:
      type: git
      url: file:///Users/user/path_to_repo
      ref: my_awesome_branch
    components: [my_awesome_component]

en fonction de ce que tu as dit voici mon fichier config où j’ai ajouté components avec ce qu’il me semble être la manière de l’inclure. Je teste …

esphome:
  name: zehnder-comfoair-q
  friendly_name: zehnder-comfoair-q

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "On8vgsYXbw61ihrOmQbr9W6vBtBcD4egKK6H8DZsbGI="

ota:
  - platform: esphome
    password: "f3db2b1169a1b7a3214aa6062a20adcf"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Zehnder-Comfoair-Q"
    password: "vr9O9pshfKT2"

captive_portal:

external_components:
  - source:
      type: local
      path: packages

components:
  - source: 
      type: local
      path: components/zehnder_comfoair_q

packages:
  base: !include packages/base.yml
  device_base: !include boards/m5stack-atoms3.yml

voici ce que ca donne quand j’essaie de faire validation :

INFO ESPHome 2025.3.0
INFO Reading configuration /config/esphome/zehnder-comfoair-q.yaml...
WARNING The selected Arduino framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
INFO Unable to import component zehnder_comfoair_q: No module named 'esphome.components.zehnder_comfoair_q'
Failed config

zehnder_comfoair_q: [source /config/esphome/packages/base.yml:34]
  
  Component not found: zehnder_comfoair_q.
  id: comfoair
  request_ids: 
    - 16
    - 49
    - 54
    - 55
    - 65
    - 66
    - 67
    - 81
    - 82
    - 117

EDIT : j’y ai cru !!!

voici ma config qui a été validée en cliquant sur le bouton esphome Validate

esphome:
  name: zehnder-comfoair-q
  friendly_name: zehnder-comfoair-q

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "On8vgsYXbw61ihrOmQbr9W6vBtBcD4egKK6H8DZsbGI="

ota:
  - platform: esphome
    password: "f3db2b1169a1b7a3214aa6062a20adcf"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Zehnder-Comfoair-Q"
    password: "vr9O9pshfKT2"

captive_portal:

external_components:
  - source:
      type: local
      path: packages
  
  - source:
      type: local
      path: components

packages:
  base: !include packages/base.yml
  device_base: !include boards/m5stack-atoms3.yml

Voici la fin tellement j’ai vu passer de bouts de code dans la validation :
image

Mais quand j’essaie de l’injecter sur le module, voici l’erreur :

INFO ESPHome 2025.3.0
INFO Reading configuration /config/esphome/zehnder-comfoair-q.yaml...
WARNING The selected Arduino framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
WARNING The selected Arduino framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
INFO Detected timezone 'Europe/Berlin'
WARNING GPIO35 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
WARNING RMT_LED_STRIP support for IDF version < 5 is deprecated and will be removed soon.
INFO Generating C++ source...
INFO Compiling app...
Processing zehnder-comfoair-q (board: esp32-s3-devkitc-1; framework: arduino; platform: platformio/espressif32@6.8.1)
--------------------------------------------------------------------------------
Tool Manager: Installing platformio/framework-arduinoespressif32 @ ~3.50300.0
INFO Installing platformio/framework-arduinoespressif32 @ ~3.50300.0
UnknownPackageError: Could not find the package with 'platformio/framework-arduinoespressif32 @ ~3.50300.0' requirements for your system 'linux_x86_64'