# Installation Esphome sur Waveshare ESP32-S3-POE-ETH-8DI-8RO

**URL:** <https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447>\
**Category:** Entraide Home Assistant\
**Tags:** esphome\
**Created:** [Juillet 3, 2025, 4:43 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447 "2025-07-03T04:43:10Z")\
**Posts on this page:** 20\
**Page:** 4

<div class="post-metadata">

**Author:** ![Forhorse](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/f/ebca7d/32.png) [@Forhorse](https://forum.hacf.fr/u/Forhorse)\
**Post date:** [Juillet 7, 2025, 7:27 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/61 "2025-07-07T19:27:11Z")

</div>

> [@Neoseb38](#):
>
> pas compris

Tu comprendras quand tu voudras lire l’état des entrées de la carte.

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 7, 2025, 7:44 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/62 "2025-07-07T19:44:10Z")

</div>

Bien vu 😉

En faite, je venais tout juste de terminé la restauration HA sur mon pi5 et j’ai fait un test rapidement pour voir.

Les gpio des entrées digitales ne passent pas en effet par l’extender.  
Je modifierai.

Pour l’écran, je pense que ça devrai le faire non? Puisqu’il passera par scl et sda.  
Par contre les pin à l’intérieur du boîtier pour la sonde de température, j’espère qu’ils sont bien répertoriés.

En tout cas merci beaucoup.  
Tes explication m’ont grandement aidé.  
J’ai télécharger les .bin puis passé en usb et installer directement en manuel pour la première installation.  
Ensuite, pour la correction, directement en ota.  
Merci encore pour tes explications

---

<div class="post-metadata">

**Author:** ![hackdiy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/hackdiy/32/95785_2.png) [@hackdiy](https://forum.hacf.fr/u/hackdiy)\
**Post date:** [Juillet 7, 2025, 8:02 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/63 "2025-07-07T20:02:46Z")

</div>

Tu as maintenant une base solide , bravo 💪

oui les sda , scl GPIO , était inverser depuis le debut , une remarque , valide bien ton fichier une fois ta config terminer pour éviter les erreurs de compile a chaque ajout d'élément .

Ton ESP32-S3 communique **parfaitement** avec le **PCA9554** via I²C :

> :white_check_mark: `Found device at address 0x20`  
> :white_check_mark: Les relais et capteurs sont détectés (`Pin: x via PCA9554`)  
> :white_check_mark: Aucun message d’erreur `marked failed`  
> :white_check_mark: Ethernet W5500 opérationnel à 100 Mb/s  
> :white_check_mark: OTA actif et API connectée

l’appareil à l’adresse `0x51`

C’est très probablement une horloge RTC (WS\_PCF85063), comme mentionnée dans les fichiers Arduino d’origine de la carte . L'horloge gardera l'heure même sans internet .

voila si tu veut ajouter la sonde dallas et l'écran 😉

```auto
dallas:
  - pin: GPIO4
    update_interval: 30s

sensor:
  - platform: dallas
    id: temp_eau
    index: 0
    name: "Température Eau Piscine"
    accuracy_decimals: 1
########################################
font:
  - file: "fonts/OpenSans-Regular.ttf"
    id: font
    size: 10

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    lambda: |-
      it.printf(0, 0, id(font), "Filtration: %s", id(relais_filtration).state ? "ON" : "OFF");
      it.printf(0, 10, id(font), "PAC: %s", id(relais_pac).state ? "ON" : "OFF");
      it.printf(0, 20, id(font), "Temp: %.1f°C", id(temp_eau).state);

```

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 7, 2025, 8:21 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/64 "2025-07-07T20:21:47Z")

</div>

Tu es sur pour le gpio 4 et la sonde de température ?  
Il s’agit d’une entrée digitale (capteur, interrupteurs etc…)  
Il me semble devoir passé par les pin à l’intérieur non?

---

<div class="post-metadata">

**Author:** ![hackdiy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/hackdiy/32/95785_2.png) [@hackdiy](https://forum.hacf.fr/u/hackdiy)\
**Post date:** [Juillet 7, 2025, 8:32 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/65 "2025-07-07T20:32:44Z")

</div>

Oui, tu as raison de poser la question. Sur ta carte , les broches GPIO4 et GPIO5 sont bien accessibles via les headers externes, ce ne sont pas des broches internes uniquement.

La broche GPIO4 externe n’est pas réservée à une fonction critique. Elle est parfaitement adaptée à un capteur 1‑wire comme le DS18B20 .

Points à garder en tête en cas de mise en place de celle ci , place une résistance de pull‑up 4.7 kΩ entre le fil de données et le 3.3 V

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 7, 2025, 8:40 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/66 "2025-07-07T20:40:53Z")

</div>

Pour la résistance de 4,7k, oui pas de soucis je savais.  
Mais je comprend pas la borne gpio4 qui semble être filtré et isolé via un optocoupleur.  
Elle n’est pas conçu pour un signal binaire tel bouton, capteurs etc…?  
Sur ces 8 entrées digitales, je pensais y relier mes optocoupleurs ou pourquoi pas deux transfo 230/5v (puisqu’elles acceptent jusqu’à 36v) pour les retours d’états.

 ![IMG_6824](https://forum.hacf.fr/uploads/default/original/3X/9/4/94a3b3a35ec7e4354157a96536c60c9b8f6ad5a6.jpeg)

 ![IMG_6826](https://forum.hacf.fr/uploads/default/original/3X/9/5/956d83f79cfc6576235fecbf8c2ebdff5fc39fb2.jpeg)  
 ![IMG_6825](https://forum.hacf.fr/uploads/default/original/3X/2/6/26aeafeb995371743713cbf2662bed17d60c5591.jpeg)

Je pensais aux gpio0,1,2,3,21,47 ou 48

---

<div class="post-metadata">

**Author:** ![hackdiy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/hackdiy/32/95785_2.png) [@hackdiy](https://forum.hacf.fr/u/hackdiy)\
**Post date:** [Juillet 7, 2025, 8:55 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/67 "2025-07-07T20:55:25Z")

</div>

Exactement, tu as bien cerné la situation : sur ta carte, les 8 entrées digitales sont en effet établies via des optocoupleurs dédiés, et non connectées directement aux GPIO de l’ESP32.

Connecté directement à un pin du microcontrôleur (non filtré), donc parfait pour le protocole **Dallas**.

Les 8 entrées digitales (DI1–DI8) ce sont de vrais entrées optocouplées , isolées électriquement de l’ESP par opto‑coupleur.

- Chaque entrée va sur un pin du TCA9554, derrière le bus I²C.

- Utilise les entrées DIx → numéros internes TCA9554 pin 0 à 7.

- Par exemple, `pin: 3` et `pin: 4` utilisés pour "Retour Filtration" et "Retour PAC" dans ton YAML.

- Tu pilotes la tension d'entrée (8 à 36 V) via optocoupleur → TCA9554 lit l’état → ESPHome gère le binaire.

:white_check_mark: GPIO 4 → DS18B20, est parfait ici pour capteur de température.

---

<div class="post-metadata">

**Author:** ![Forhorse](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/f/ebca7d/32.png) [@Forhorse](https://forum.hacf.fr/u/Forhorse)\
**Post date:** [Juillet 7, 2025, 9:15 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/68 "2025-07-07T21:15:07Z")

</div>

Je doute que ça fonctionne avec le GPIO4… l’étage d’entrée à optocoupleur vas imposer un niveau qui ne sera pas compatible avec du One-Wire. Il faudrait que cet étage d’entrée puisse être mis en mode haute impédance (sortie tri-states) et je doute que ce soit le cas.  
Il serait plus sage d’utiliser un GPIO libre (surtout pas le 0 déjà) moi je partirais sur le 21 qui en plus n’est pas affecté par des glitchs au boot (contrairement au 1, 2 et 3)

---

<div class="post-metadata">

**Author:** ![Forhorse](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/f/ebca7d/32.png) [@Forhorse](https://forum.hacf.fr/u/Forhorse)\
**Post date:** [Juillet 7, 2025, 9:19 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/69 "2025-07-07T21:19:15Z")

</div>

> [@hackdiy](#):
>
> Chaque entrée va sur un pin du TCA9554, derrière le bus I²C.

Non… il y a un seul TCA et il ne gère que les sorties relais.  
Les entrées sont câblées sur les GPIO de l’ESP (GPIO4 à GPIO11) sans doute pour pouvoir utiliser les interruptions.  
La doc est pourtant claire.

---

<div class="post-metadata">

**Author:** ![hackdiy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/hackdiy/32/95785_2.png) [@hackdiy](https://forum.hacf.fr/u/hackdiy)\
**Post date:** [Juillet 8, 2025, 10:07 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/70 "2025-07-08T10:07:19Z")

</div>

Tu as parfaitement raison , mon raisonnement initial c’est ma lecture des fichiers Arduino et mauvaise supposition : j’ai cru que les entrées digitales (DI1–DI8) passaient aussi par ce composant I²C, comme les relais, je n’ai pas revérifier le schéma , Je suis donc parti sur cette base pour modéliser les entrées et sorties , pensant qu’elles étaient toutes regroupées via un expander commun. Raisonnement correct pour les relais, «&nbsp;faux pour les entrées&nbsp;».

comme tu le préconise , le **GPIO21** est totalement libre pour y ajouter la sonde.

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 8, 2025, 5:17 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/71 "2025-07-08T17:17:30Z")

</div>

J'ai réussi à faire fonctionner la sonde de température mais pas sans peine.

> [@hackdiy](#):
>
> voila si tu veut ajouter la sonde dallas et l’écran

Les deux codes pour écran et sondes étaient non fonctionnel (erreur dans validate)

J'ai donc tester plusieurs choses, demander à chatGPT (au secours que des erreurs) à Grok 3 (idem) et bingo, premier coup pour Claude AI.

Par contre, pour l'écran, j'ai un écran blanc avec des points noir.  
j'ai essayé plusieurs texte pour test mais rien ne change (également tester au autre écran OLED SSD1306 mais idem.

Mon code:

```auto
esphome:
  name: esp32-piscine
  friendly_name: ESP32 Piscine

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  - platform: esphome

#Configuration wifi (desactivé pour connexion Ethernet)
#wifi:
# ssid: !secret wifi_ssid
# password: !secret wifi_password
#
# # Enable fallback hotspot (captive portal) in case wifi connection fails
# ap:
# ssid: "Waveshare-Esp32S3-Eth-8Di-8Ro"
# password: "WaveshareESP32"

#captive_portal: # uniquement pour connexion wifi

ethernet:
  type: W5500
  mosi_pin: GPIO13
  miso_pin: GPIO14
  clk_pin: GPIO15
  cs_pin: GPIO16
  interrupt_pin: GPIO12
  reset_pin: GPIO39
  manual_ip:
    static_ip: 192.168.1.59
    gateway: 192.168.1.1
    subnet: 255.255.255.0

i2c:
  sda: GPIO42
  scl: GPIO41
  scan: true

pca9554:
  - id: expander
    address: 0x20

# Sorties (relais)
switch:
  - platform: gpio
    pin:
      pca9554: expander
      number: 0
    id: relais_filtration
    name: "Filtration"
  - platform: gpio
    pin:
      pca9554: expander
      number: 1
    id: relais_eclairage
    name: "Éclairage Piscine"
  - platform: gpio
    pin:
      pca9554: expander
      number: 2
    id: relais_pac
    name: "PAC Piscine"

# Entrées digitales
binary_sensor:
  - platform: gpio
    name: "Etat Filtration"
    pin:
      number: GPIO4

  - platform: gpio
    name: "Etat PAC"
    pin:
      number: GPIO5

# Sondes températures
one_wire:
  - platform: gpio
    pin: GPIO21
    id: bus_temp_eau

# Capteur de température
sensor:
  - platform: dallas_temp
    one_wire_id: bus_temp_eau
    id: temp_eau
    name: "Température Eau"
    accuracy_decimals: 1
    update_interval: 30s
    resolution: 12 # Optionnel : résolution maximale pour DS18B20

# Écran OLED
# Configuration des polices pour l'écran OLED
font:
  - file: "gfonts://Roboto"
    id: font_default
    size: 12

# Configuration de l'écran OLED SSD1306
display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    id: oled_display
    update_interval: 5s
    lambda: |-
      // Test simple
      it.print(0, 0, id(font_default), "Hello World!");
      it.print(0, 20, id(font_default), "Test ESP32");
      it.printf(0, 40, id(font_default), "Time: %u", millis());

```

PS: J'avais un état ON pour la filtration avec des fois des ON/OFF/ON sans arrêt avec la ligne:  
inverted: true  
Partie Entrées digitales.  
J'ai retiré cette ligne et ca a l'air d'aller mieux mais pas sur.

```auto
INFO ESPHome 2025.6.3
INFO Reading configuration /config/esphome/esp32-piscine.yaml...
INFO Starting log output from 192.168.1.59 using esphome API
INFO Successfully resolved esp32-piscine @ 192.168.1.59 in 0.000s
INFO Successfully connected to esp32-piscine @ 192.168.1.59 in 0.007s
INFO Successful handshake with esp32-piscine @ 192.168.1.59 in 0.175s
[19:14:36][I][app:137]: ESPHome version 2025.6.3 compiled on Jul 8 2025, 19:07:28
[19:14:36][C][pca9554:048]: PCA9554:
[19:14:36][C][pca9554:048]: I/O Pins: 8
[19:14:36][C][pca9554:052]: Address: 0x20
[19:14:36][C][logger:211]: Logger:
[19:14:36][C][logger:211]: Max Level: DEBUG
[19:14:36][C][logger:211]: Initial Level: DEBUG
[19:14:36][C][logger:217]: Log Baud Rate: 115200
[19:14:36][C][logger:217]: Hardware UART: USB_SERIAL_JTAG
[19:14:36][C][logger:224]: Task Log Buffer Size: 768
[19:14:36][C][i2c.idf:083]: I2C Bus:
[19:14:36][C][i2c.idf:084]: SDA Pin: GPIO42
[19:14:36][C][i2c.idf:084]: SCL Pin: GPIO41
[19:14:36][C][i2c.idf:084]: Frequency: 50000 Hz
[19:14:36][C][i2c.idf:094]: Recovery: bus successfully recovered
[19:14:36][I][i2c.idf:104]: Results from bus scan:
[19:14:36][I][i2c.idf:110]: Found device at address 0x20
[19:14:36][I][i2c.idf:110]: Found device at address 0x3C
[19:14:36][I][i2c.idf:110]: Found device at address 0x51
[19:14:36][C][gpio.one_wire:022]: GPIO 1-wire bus:
[19:14:36][C][gpio.one_wire:023]: Pin: GPIO21
[19:14:36][C][gpio.one_wire:084]: Found devices:
[19:14:36][C][gpio.one_wire:086]: 0xe731f8b10a646128 (DS18B20)
[19:14:36][C][switch.gpio:079]: GPIO Switch 'Filtration'
[19:14:36][C][switch.gpio:079]: Restore Mode: always OFF
[19:14:36][C][switch.gpio:031]: Pin: 0 via PCA9554
[19:14:36][C][switch.gpio:079]: GPIO Switch 'Éclairage Piscine'
[19:14:36][C][switch.gpio:079]: Restore Mode: always OFF
[19:14:36][C][switch.gpio:031]: Pin: 1 via PCA9554
[19:14:36][C][switch.gpio:079]: GPIO Switch 'PAC Piscine'
[19:14:36][C][switch.gpio:079]: Restore Mode: always OFF
[19:14:36][C][switch.gpio:031]: Pin: 2 via PCA9554
[19:14:36][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Etat Filtration'
[19:14:36][C][gpio.binary_sensor:016]: Pin: GPIO4
[19:14:36][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Etat PAC'
[19:14:36][C][gpio.binary_sensor:016]: Pin: GPIO5
[19:14:36][C][dallas.temp.sensor:029]: Dallas Temperature Sensor:
[19:14:36][C][dallas.temp.sensor:034]: Address: 0xe731f8b10a646128 (DS18B20)
[19:14:36][C][dallas.temp.sensor:035]: Resolution: 12 bits
[19:14:36][C][dallas.temp.sensor:036]: Update Interval: 30.0s
[19:14:36][C][ssd1306_i2c:023]: I2C SSD1306
[19:14:36][C][ssd1306_i2c:023]: Rotations: 0 °
[19:14:36][C][ssd1306_i2c:023]: Dimensions: 128px x 64px
[19:14:36][C][ssd1306_i2c:024]: Address: 0x3C
[19:14:36][C][ssd1306_i2c:025]: Model: SSD1306 128x64
[19:14:36][C][ssd1306_i2c:027]: External VCC: NO
[19:14:36][C][ssd1306_i2c:027]: Flip X: YES
[19:14:36][C][ssd1306_i2c:027]: Flip Y: YES
[19:14:36][C][ssd1306_i2c:027]: Offset X: 0
[19:14:36][C][ssd1306_i2c:027]: Offset Y: 0
[19:14:36][C][ssd1306_i2c:027]: Inverted Color: NO
[19:14:36][C][ssd1306_i2c:036]: Update Interval: 5.0s
[19:14:36][D][binary_sensor:036]: 'Etat Filtration': Sending state ON
[19:14:36][C][ethernet:326]: Ethernet:
[19:14:36][C][ethernet:524]: IP Address: 192.168.1.59
[19:14:36][C][ethernet:524]: Hostname: 'esp32-piscine'
[19:14:36][C][ethernet:524]: Subnet: 255.255.255.0
[19:14:36][C][ethernet:524]: Gateway: 192.168.1.1
[19:14:36][C][ethernet:524]: DNS1: 0.0.0.0
[19:14:36][C][ethernet:524]: DNS2: 0.0.0.0
[19:14:36][C][ethernet:545]: MAC Address: 94:A9:90:23:04:7B
[19:14:36][C][ethernet:545]: Is Full Duplex: YES
[19:14:36][C][ethernet:545]: Link Speed: 100
[19:14:36][C][ethernet:329]: CLK Pin: 15
[19:14:36][C][ethernet:329]: MISO Pin: 14
[19:14:36][C][ethernet:329]: MOSI Pin: 13
[19:14:36][C][ethernet:329]: CS Pin: 16
[19:14:36][C][ethernet:341]: IRQ Pin: 12
[19:14:36][C][ethernet:343]: Reset Pin: 39
[19:14:36][C][ethernet:343]: Clock Speed: 26 MHz
[19:14:36][C][ethernet:357]: Type: W5500
[19:14:36][C][esphome.ota:073]: Over-The-Air updates:
[19:14:36][C][esphome.ota:073]: Address: 192.168.1.59:3232
[19:14:36][C][esphome.ota:073]: Version: 2
[19:14:37][C][safe_mode:018]: Safe Mode:
[19:14:37][C][safe_mode:019]: Boot considered successful after 60 seconds
[19:14:37][C][safe_mode:019]: Invoke after 10 boot attempts
[19:14:37][C][safe_mode:019]: Remain for 300 seconds
[19:14:37][C][api:182]: API Server:
[19:14:37][C][api:182]: Address: 192.168.1.59:6053
[19:14:37][C][api:192]: Using noise encryption: NO
[19:14:37][C][mdns:122]: mDNS:
[19:14:37][C][mdns:122]: Hostname: esp32-piscine
[19:14:37][D][binary_sensor:036]: 'Etat Filtration': Sending state OFF
[19:14:44][D][dallas.temp.sensor:054]: 'Température Eau': Got Temperature=27.2°C
[19:14:44][D][sensor:098]: 'Température Eau': Sending state 27.18750 °C with 1 decimals of accuracy

```

 ![IMG_6830](https://forum.hacf.fr/uploads/default/original/3X/9/c/9cdc468a7d6809132667947e899af994ad23fa83.jpeg)

Un petit texte défile en partie haute de l'écran mais impossible a lire

 ![Capture d’écran 2025-07-08 à 19.16.30](https://forum.hacf.fr/uploads/default/original/3X/2/3/23d7d8ed40754d5809b355b8dfe41b273437594e.png)

Bizarre pour l'Etat Filtration et Etat PAC car rien n'est branché sur l'espace pour le moment.

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 8, 2025, 5:49 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/72 "2025-07-08T17:49:25Z")

</div>

J'ai simulé un inter à l'aide d'in fil entre DGND et les bornes I1, I2 etc...

 ![Capture d’écran 2025-07-08 à 19.48.51](https://forum.hacf.fr/uploads/default/original/3X/7/5/750ad83d1c1cb15669f455723c61ef1a5ec37dcf.jpeg)

L'entrée digitale gpio4 ne fonctionne pas.  
La gpio5 fonctionne.  
La 6 fonctionne pas. Pas essayé plus loin.

J'ai décallé les gpio et rajouter la ligne (inverted: true) mais toujours seul le gpio5 fonctionne mais pas le 6.  
Pourtant les LED sur le circuit imprimé s'éclaire bien lorsqu'il y a contact.

```auto
# Entrées digitales
binary_sensor:
  - platform: gpio
    name: "Etat Filtration"
    pin:
      number: GPIO5
      inverted: true

  - platform: gpio
    name: "Etat PAC"
    pin:
      number: GPIO6
      inverted: true

```

Édit: j’ai essayé également avec une alim 5v entre gnd et gpio4 et gpio5 (j’ai remis les gpio dans le bon ordre)  
Le gpio 5 fonctionne bien mais le gpio4 rest aléatoire.  
5v il fonctionne, 0v il s’éteint puis se rallume après.  
Bref, c’est vraiment pas ça. Dégoûté…

Donc soucis sur les entrées digitales et l’écran pour le moment.

---

<div class="post-metadata">

**Author:** ![hackdiy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/hackdiy/32/95785_2.png) [@hackdiy](https://forum.hacf.fr/u/hackdiy)\
**Post date:** [Juillet 8, 2025, 6:45 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/73 "2025-07-08T18:45:11Z")

</div>

Ajoute filters et /ou inverted. Ou bien précise `mode: INPUT_PULLDOWN` si ton optocoupleur pousse vers HIGH à l’activation.

```auto
    inverted: true
    filters:
      - delayed_on: 10ms
      - delayed_off: 10ms

```

Pour l’écran un mauvais branchement ,ou mauvaise connection . Vérifie les connexions  
GND → GND, VCC → 3.3 V (pas 5 V !)

essaye comme ça , si l’écran montre “TEST” correctement, le problème est résolu.

```auto
display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    update_interval: 2s
    lambda: |-
      it.clear();
      it.printf(0, 0, id(font_default), "Écran OK !");
      it.printf(0, 20, id(font_default), "Temp: %.1f°C", id(temp_eau).state);

font:
  - file: "gfonts://Roboto"
    id: font_default
    size: 16

```

si tu a des erreur de validation poste les

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 8, 2025, 7:00 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/74 "2025-07-08T19:00:00Z")

</div>

```auto
esphome:
  name: esp32-piscine
  friendly_name: ESP32 Piscine

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  - platform: esphome

#Configuration wifi (desactivé pour connexion Ethernet)
#wifi:
# ssid: !secret wifi_ssid
# password: !secret wifi_password
#
# # Enable fallback hotspot (captive portal) in case wifi connection fails
# ap:
# ssid: "Waveshare-Esp32S3-Eth-8Di-8Ro"
# password: "WaveshareESP32"

#captive_portal: # uniquement pour connexion wifi

ethernet:
  type: W5500
  mosi_pin: GPIO13
  miso_pin: GPIO14
  clk_pin: GPIO15
  cs_pin: GPIO16
  interrupt_pin: GPIO12
  reset_pin: GPIO39
  manual_ip:
    static_ip: 192.168.1.59
    gateway: 192.168.1.1
    subnet: 255.255.255.0

i2c:
  sda: GPIO42
  scl: GPIO41
  scan: true

pca9554:
  - id: expander
    address: 0x20

# Sorties (relais)
switch:
  - platform: gpio
    pin:
      pca9554: expander
      number: 0
    id: relais_filtration
    name: "Filtration"
  - platform: gpio
    pin:
      pca9554: expander
      number: 1
    id: relais_eclairage
    name: "Éclairage Piscine"
  - platform: gpio
    pin:
      pca9554: expander
      number: 2
    id: relais_pac
    name: "PAC Piscine"

# Entrées digitales
binary_sensor:
  - platform: gpio
    name: "Etat Filtration"
    pin:
      number: GPIO4
      inverted: true
      mode: INPUT_PULLDOWN

  - platform: gpio
    name: "Etat PAC"
    pin:
      number: GPIO5
      inverted: true
      mode: INPUT_PULLDOWN

# Sondes températures
one_wire:
  - platform: gpio
    pin: GPIO21
    id: bus_temp_eau

# Capteur de température
sensor:
  - platform: dallas_temp
    one_wire_id: bus_temp_eau
    id: temp_eau
    name: "Température Eau"
    accuracy_decimals: 1
    update_interval: 30s
    resolution: 12 # Optionnel : résolution maximale pour DS18B20

# Écran OLED
# Configuration des polices pour l'écran OLED
font:
  - file: "gfonts://Roboto"
    id: font_default
    size: 16

# Configuration de l'écran OLED SSD1306
display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    update_interval: 2s
    lambda: |-
      it.clear();
      it.printf(0, 0, id(font_default), "Écran OK !");
      it.printf(0, 20, id(font_default), "Temp: %.1f°C", id(temp_eau).state);

```

```auto
INFO Upload took 2.07 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from 192.168.1.59 using esphome API
INFO Successfully resolved esp32-piscine @ 192.168.1.59 in 0.000s
WARNING Can't connect to ESPHome API for esp32-piscine @ 192.168.1.59: Error connecting to [AddrInfo(family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, proto=6, sockaddr=IPv4Sockaddr(address='192.168.1.59', port=6053))]: [Errno 111] Connect call failed ('192.168.1.59', 6053) (SocketAPIError)
INFO Trying to connect to esp32-piscine @ 192.168.1.59 in the background
INFO Successfully resolved esp32-piscine @ 192.168.1.59 in 0.000s
INFO Successfully connected to esp32-piscine @ 192.168.1.59 in 0.007s
INFO Successful handshake with esp32-piscine @ 192.168.1.59 in 0.019s
[20:54:48][I][app:137]: ESPHome version 2025.6.3 compiled on Jul 8 2025, 20:54:33
[20:54:48][C][pca9554:048]: PCA9554:
[20:54:48][C][pca9554:048]: I/O Pins: 8
[20:54:48][C][pca9554:052]: Address: 0x20
[20:54:48][C][logger:211]: Logger:
[20:54:48][C][logger:211]: Max Level: DEBUG
[20:54:48][C][logger:211]: Initial Level: DEBUG
[20:54:48][C][logger:217]: Log Baud Rate: 115200
[20:54:48][C][logger:217]: Hardware UART: USB_SERIAL_JTAG
[20:54:48][C][logger:224]: Task Log Buffer Size: 768
[20:54:48][C][i2c.idf:083]: I2C Bus:
[20:54:48][C][i2c.idf:084]: SDA Pin: GPIO42
[20:54:48][C][i2c.idf:084]: SCL Pin: GPIO41
[20:54:48][C][i2c.idf:084]: Frequency: 50000 Hz
[20:54:48][C][i2c.idf:094]: Recovery: bus successfully recovered
[20:54:48][I][i2c.idf:104]: Results from bus scan:
[20:54:48][I][i2c.idf:110]: Found device at address 0x20
[20:54:48][I][i2c.idf:110]: Found device at address 0x3C
[20:54:48][I][i2c.idf:110]: Found device at address 0x51
[20:54:48][C][gpio.one_wire:022]: GPIO 1-wire bus:
[20:54:48][C][gpio.one_wire:023]: Pin: GPIO21
[20:54:48][C][gpio.one_wire:084]: Found devices:
[20:54:48][C][gpio.one_wire:086]: 0xe731f8b10a646128 (DS18B20)
[20:54:48][C][switch.gpio:079]: GPIO Switch 'Filtration'
[20:54:48][C][switch.gpio:079]: Restore Mode: always OFF
[20:54:48][C][switch.gpio:031]: Pin: 0 via PCA9554
[20:54:48][C][switch.gpio:079]: GPIO Switch 'Éclairage Piscine'
[20:54:48][C][switch.gpio:079]: Restore Mode: always OFF
[20:54:48][C][switch.gpio:031]: Pin: 1 via PCA9554
[20:54:48][C][switch.gpio:079]: GPIO Switch 'PAC Piscine'
[20:54:48][C][switch.gpio:079]: Restore Mode: always OFF
[20:54:48][C][switch.gpio:031]: Pin: 2 via PCA9554
[20:54:48][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Etat Filtration'
[20:54:48][C][gpio.binary_sensor:016]: Pin: GPIO4
[20:54:48][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Etat PAC'
[20:54:48][C][gpio.binary_sensor:016]: Pin: GPIO5
[20:54:48][C][dallas.temp.sensor:029]: Dallas Temperature Sensor:
[20:54:48][C][dallas.temp.sensor:034]: Address: 0xe731f8b10a646128 (DS18B20)
[20:54:48][C][dallas.temp.sensor:035]: Resolution: 12 bits
[20:54:48][C][dallas.temp.sensor:036]: Update Interval: 30.0s
[20:54:48][C][ssd1306_i2c:023]: I2C SSD1306
[20:54:48][C][ssd1306_i2c:023]: Rotations: 0 °
[20:54:48][C][ssd1306_i2c:023]: Dimensions: 128px x 64px
[20:54:48][C][ssd1306_i2c:024]: Address: 0x3C
[20:54:48][C][ssd1306_i2c:025]: Model: SSD1306 128x64
[20:54:48][C][ssd1306_i2c:027]: External VCC: NO
[20:54:48][C][ssd1306_i2c:027]: Flip X: YES
[20:54:48][C][ssd1306_i2c:027]: Flip Y: YES
[20:54:48][C][ssd1306_i2c:027]: Offset X: 0
[20:54:48][C][ssd1306_i2c:027]: Offset Y: 0
[20:54:48][C][ssd1306_i2c:027]: Inverted Color: NO
[20:54:48][C][ssd1306_i2c:036]: Update Interval: 2.0s
[20:54:48][C][ethernet:326]: Ethernet:
[20:54:48][C][ethernet:524]: IP Address: 192.168.1.59
[20:54:48][C][ethernet:524]: Hostname: 'esp32-piscine'
[20:54:48][C][ethernet:524]: Subnet: 255.255.255.0
[20:54:48][C][ethernet:524]: Gateway: 192.168.1.1
[20:54:48][C][ethernet:524]: DNS1: 0.0.0.0
[20:54:48][C][ethernet:524]: DNS2: 0.0.0.0
[20:54:48][C][ethernet:545]: MAC Address: 94:A9:90:23:04:7B
[20:54:48][C][ethernet:545]: Is Full Duplex: YES
[20:54:48][C][ethernet:545]: Link Speed: 100
[20:54:48][C][ethernet:329]: CLK Pin: 15
[20:54:48][C][ethernet:329]: MISO Pin: 14
[20:54:48][C][ethernet:329]: MOSI Pin: 13
[20:54:48][C][ethernet:329]: CS Pin: 16
[20:54:48][C][ethernet:341]: IRQ Pin: 12
[20:54:48][C][ethernet:343]: Reset Pin: 39
[20:54:48][C][ethernet:343]: Clock Speed: 26 MHz
[20:54:48][C][ethernet:357]: Type: W5500
[20:54:48][C][esphome.ota:073]: Over-The-Air updates:
[20:54:48][C][esphome.ota:073]: Address: 192.168.1.59:3232
[20:54:48][C][esphome.ota:073]: Version: 2
[20:54:48][C][safe_mode:018]: Safe Mode:
[20:54:48][C][safe_mode:019]: Boot considered successful after 60 seconds
[20:54:48][C][safe_mode:019]: Invoke after 10 boot attempts
[20:54:48][C][safe_mode:019]: Remain for 300 seconds
[20:54:48][C][api:182]: API Server:
[20:54:48][C][api:182]: Address: 192.168.1.59:6053
[20:54:48][C][api:192]: Using noise encryption: NO
[20:54:48][C][mdns:122]: mDNS:
[20:54:48][C][mdns:122]: Hostname: esp32-piscine
[20:54:48][D][api:133]: Accepted 192.168.1.34
[20:54:48][D][api.connection:1570]: Home Assistant 2025.7.1 (192.168.1.34) connected
[20:54:48][W][font:112]: Encountered character without representation in font: '\xc3'
[20:54:48][W][font:112]: Encountered character without representation in font: '\x89'
[20:54:48][D][dallas.temp.sensor:054]: 'Température Eau': Got Temperature=24.0°C
[20:54:48][D][sensor:098]: 'Température Eau': Sending state 24.00000 °C with 1 decimals of accuracy
[20:54:50][W][font:112]: Encountered character without representation in font: '\xc3'
[20:54:50][W][font:112]: Encountered character without representation in font: '\x89'
[20:54:52][W][font:112]: Encountered character without representation in font: '\xc3'
[20:54:52][W][font:112]: Encountered character without representation in font: '\x89'
[20:54:54][W][font:112]: Encountered character without representation in font: '\xc3'
[20:54:54][W][font:112]: Encountered character without representation in font: '\x89'
[20:54:56][W][font:112]: Encountered character without representation in font: '\xc3'
[20:54:56][W][font:112]: Encountered character without representation in font: '\x89'
[20:54:58][W][font:112]: Encountered character without representation in font: '\xc3'
[20:54:58][W][font:112]: Encountered character without representation in font: '\x89'
[20:55:00][W][font:112]: Encountered character without representation in font: '\xc3'
[20:55:00][W][font:112]: Encountered character without representation in font: '\x89'
[20:55:02][W][font:112]: Encountered character without representation in font: '\xc3'
[20:55:02][W][font:112]: Encountered character without representation in font: '\x89'
[20:55:04][W][font:112]: Encountered character without representation in font: '\xc3'
[20:55:04][W][font:112]: Encountered character without representation in font: '\x89'
[20:55:06][W][font:112]: Encountered character without representation in font: '\xc3'
[20:55:06][W][font:112]: Encountered character without representation in font: '\x89'
[20:55:08][W][font:112]: Encountered character without representation in font: '\xc3'
[20:55:08][W][font:112]: Encountered character without representation in font: '\x89'

```

```auto
filters:
      - delayed_on: 10ms
      - delayed_off: 10ms

```

ca me donne une erreur dans validate.

---

<div class="post-metadata">

**Author:** ![hackdiy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/hackdiy/32/95785_2.png) [@hackdiy](https://forum.hacf.fr/u/hackdiy)\
**Post date:** [Juillet 8, 2025, 7:16 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/75 "2025-07-08T19:16:29Z")

</div>

Tu as placé ce bloc à la fin de ton fichier, hors de tout bloc `binary_sensor`. D’où l’erreur.  
Astuce : `inverted` doit être **dans `pin:`** , pas au même niveau que `name:` (sinon ce sera ignoré).

```auto
binary_sensor:
  - platform: gpio
    name: "Etat Filtration"
    pin:
      number: GPIO4
      mode: INPUT_PULLUP #Remplace INPUT_PULLUP par INPUT_PULLDOWN si ton schéma le demande.
      inverted: true
    filters:
      - delayed_on: 10ms
      - delayed_off: 10ms

```

Utilise `gpio.dump()` dans le logger pour voir la configuration actuelle du GPIO.

écran: Font : `'\xc3'` non reconnu

1. Soit tu changes `"Écran"` en `"Ecran"`
2. Soit tu remplaces la police par un fichier `.ttf` local avec les caractères accentués

```auto
it.printf(0, 0, id(font_default), "Ecran OK !");

```

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 9, 2025, 4:36 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/76 "2025-07-09T04:36:38Z")

</div>

Je viens de faire les motifs excepté car je n’ai pas compris.

> [@hackdiy](#):
>
> Soit tu remplaces la police par un fichier `.ttf` local avec les caractères accentués

L’ecran reste blanc avec point noir et petite partie qui défile mais illisible.  
J’ai pourtant tester avec 2 écran différents (ssd1306) et branchement normaux:  
sda - sda  
scl - scl  
GND - G  
VCC - 3,3v

Je comprend pas.

Pour les retour d’états, j’ai pas eu le temps de tester avec les nouvelles lignes.

Pas compris la ligne:  
mode: INPUT\_PULLUP #Remplace INPUT\_PULLUP par INPUT\_PULLDOWN si ton schéma le demande.

Est ce que c’est normal que mon entrée digitales Gpio4 restaient activées, puis s’éteignaient etc… toute seule.  
Un comportement aléatoire.

---

<div class="post-metadata">

**Author:** ![Forhorse](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/f/ebca7d/32.png) [@Forhorse](https://forum.hacf.fr/u/Forhorse)\
**Post date:** [Juillet 9, 2025, 5:55 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/77 "2025-07-09T05:55:25Z")

</div>

> [@Neoseb38](#):
>
> Est ce que c’est normal que mon entrée digitales Gpio4 restaient activées, puis s’éteignaient etc… toute seule.  
> Un comportement aléatoire.

ça peut être le comportement d’une entrée qui est «&nbsp;en l’air&nbsp;» donc dont le niveau logique n’est pas clairement défini. Elle capte du «&nbsp;bruit&nbsp;» d’où le comportement aléatoire.  
c’est pour ça que @hackdiy te propose d’essayer d’activer les résistances internes de pullup ou pulldown pour voir si ça a un effet.  
Pour bien faire il faudrait avoir le schéma de la carte, ça aiderait bien à comprendre comment tout ça est cablé. (et au passage comprendre certaines appellations un peu fantaisistes genre les «&nbsp;optocoupleurs bidirectionnel&nbsp;» sur les entrées, perso je comprend pas ce que c’est)

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 9, 2025, 6:09 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/78 "2025-07-09T06:09:31Z")

</div>

Ok, j’essaierai avec résistance pulldown puisque ce sera un transfo 220/5v sur rail din qui me donnera le retour d’état.  
Si 5v, alors filtration en fonctionnement.

J’espère que ça fonctionnera.

Reste également ce satané écran (pour rappel, même soucis sur 2 écrans identique)  
Au pire, j’ai également à dispo 1 écran LED 2 lignes et un avec 4 lignes si c’est plus simple.

---

<div class="post-metadata">

**Author:** ![hackdiy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/hackdiy/32/95785_2.png) [@hackdiy](https://forum.hacf.fr/u/hackdiy)\
**Post date:** [Juillet 9, 2025, 9:52 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/79 "2025-07-09T09:52:25Z")

</div>

En gros, `INPUT_PULLUP` ou `INPUT_PULLDOWN` configure la broche du microcontrôleur pour :

- `INPUT_PULLUP` : considérer le signal comme «&nbsp;allumé&nbsp;» (1) par défaut, et «&nbsp;éteint&nbsp;» (0) quand le capteur est activé.

- `INPUT_PULLDOWN` : considérer le signal comme «&nbsp;éteint&nbsp;» (0) par défaut, et «&nbsp;allumé&nbsp;» (1) quand le capteur est activé.

L’option à choisir dépend du fonctionnement de ton capteur et de ton circuit. Le paramètre `inverted: true` / `inverted: false` inverse simplement ces états

```auto
      mode: INPUT_PULLUP 
      inverted: true

```

Généralement et le plus souvent c’est la logique utiliser

tu peut changer la police de l’écran comme ce ci ou récupère la police au format `ttf `et place le fichier dans un dossier (par exemple `fonts` ) à côté de ton fichier de configuration Esphome

```auto
font:
  - file: "fonts/arial.ttf"
    id: arial
    size: 17

```

---

<div class="post-metadata">

**Author:** ![Neoseb38](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/n/bc8723/32.png) [@Neoseb38](https://forum.hacf.fr/u/Neoseb38)\
**Post date:** [Juillet 9, 2025, 10:16 UTC](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447/80 "2025-07-09T10:16:04Z")

</div>

Merci pour tes explications:

Donc:

mode: INPUT\_PULLUP  
inverted: true

Ça serai équivalent à:

mode: INPUT\_PULLDOWN

C’est bien ça?

Pour l’écran, tu penses que mon écran blanc (sur 2 écrans OLED SSD1306 peux provenir de ça?  
Tout ce que j’ai pu tester jusqu’à présent ne change pas le soucis (avec IA)  
N’étant pas chez moi, j’ai pas pu encore essayer.

[Page précédente](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447.md?page=3)

[Page suivante](https://forum.hacf.fr/t/installation-esphome-sur-waveshare-esp32-s3-poe-eth-8di-8ro/64447.md?page=5)
