Boitier de contrôle ventilation d'un baie

Hello la communauté !
Je viens ici pour partager un petit projet perso.

J’ai une baie 10” en 9U, avec ma Freebox / switch / NAS Synology / Raspbi4 x2.
En été, la baie monte très vite en température et le flux d’air était catastrophique.
J’ai donc voulu automatiser la ventilation via HASS.
J’ai découpé la tole de la baie pour mes ventilateurs :

J’ai fais une PCB avec ESP32 et relais.

Je vous mets tout ce que j’ai acheté (lien sans affiliation) :

Ventilateurs x4 : Noctua NF-A14 iPPC-3000 PWM, Ventilateur Haut Rendement, 4 Broches, 3000 tr./min (140 mm, Noir) : Amazon.fr: Informatique
ESP32 WT32-ETH01 : WT32-ETH01 Embedded Serial Port Networking Ethernet Bluetooth-Kompatibel WIFI Combo Gateway MCU ESP32 Wireless Modul Bord - AliExpress 502
Convertisseur 5v : Abwärtsregler 5 A, hocheffizient, schnelle Reaktion, synchroner Schritt 4,5–28 V auf 3 V, 3,3 V, 4 V, 5 V, 6 V, 9 V, 10 V, 12 V DC-DC-Abwärtswandler - AliExpress
Transfo 12v : AC DC 12V 1A 2A 3A 2000ma 3000MA Adapter Netzteil EU UK AU US STECKER 5,5*2,5mm Wandladegerät für DC männlich weiblich LED-Streifenlicht - AliExpress 13
Embouts : 10 Stück 5,5 x 2,1/2,5 mm DC-022B DC-Klinkenadapter 3 A 12 V 3,5 x 1,3 DC022B DC-Netzteil Ladebuchse weiblich Panel Mount Connector - AliExpress 13
Connecteur JST 2.54 et Connecteurs FAN (je n’ai plus les liens)
Boitier : 2 Pièces Boîtes de Jonction Etanche, Boîtier de Projet Etanche Electrique Exterieur, Boîte de Connexion de Câbe Plastique pour Bricolage Électronique - 100 x 68 x 50 mm/noir transparent : Amazon.fr: Bricolage
Relais 3v : Aihasd 3PCS 3V Isolement Module de relais Conduire Contrôle Haut niveau Plateau d'entraînement : Amazon.fr: Commerce, Industrie et Science

Voici mon code ESP :

esphome:

  name: wt32-baie

  friendly_name: wt32-baie

esp32:
  board: wt32-eth01

  framework:

    type: arduino
logger:

  level: DEBUG

  baud_rate: 115200
api:

  encryption:

    key: !secret api_pwd_esp_baie
ota:
  platform: esphome
ethernet:

  type: LAN8720

  mdc_pin: GPIO23

  mdio_pin: GPIO18

  phy_addr: 1

  power_pin: GPIO16

  clk:

    pin: GPIO0

    mode: CLK_EXT_IN

  manual_ip:

    static_ip: XXX.XXX.XXX.XXX

    gateway: XXX.XXX.XXX.XXX

    subnet: XXX.XXX.XXX.XXX

    dns1: XXX.XXX.XXX.XXX

web_server:

   port: 80

   auth:

     username: !secret user_pwd

     password: !secret http_pwd




# === RELAIS ===

switch:

   - platform: restart

     name: "ESP Reboot"




   - platform: gpio

     name: "Relais Ventilateur"

     pin: GPIO4

     id: relais

     restore_mode: RESTORE_DEFAULT_OFF

     inverted: false




# === FAN PWM ===

output:

   - platform: ledc

     pin: GPIO14

     id: fan_pwm_output

     frequency: 25000Hz




fan:

   - platform: speed

     output: fan_pwm_output

     name: "Fan Speed Control"

     speed_count: 6

     id: fan_speed_control




# === ETHERNET INFO ===

text_sensor:

   - platform: ethernet_info

     ip_address:

       name: "Ethernet IP"

     mac_address:

       name: "MAC Ethernet"

     dns_address:

       name: "DNS Ethernet"

sensor:

  # --- FAN RPM via pulse counter ---

  - platform: pulse_counter

    pin:

      number: GPIO35

    name: "Fan RPM"

    update_interval: 3s

    count_mode:

      rising_edge: INCREMENT

      falling_edge: DISABLE

      

binary_sensor:

   - platform: status

     name: "ESP Status"




# === VARIABLES & SCRIPT ===

globals:

   - id: boot_flag

     type: bool

     initial_value: 'true'

script:

   - id: turn_on_fan

     then:

       - fan.turn_on: fan_speed_control

interval:

   - interval: 5s  # délai pour laisser le réseau démarrer

     then:

       - if:

           condition:

             lambda: 'return id(boot_flag);'

           then:

             - script.execute: turn_on_fan

             - globals.set:

                 id: boot_flag

                 value: 'false'

Ma carte ESP est connecté via le RJ45, non en wifi car j’ai la clé zigbee à coté, et elle met le 2.4ghz inopérant.

Pour le PCB (EasyEda) je mets le .json : Free Transfert - Service d'envoi de fichiers

L’intégration HASS :

Par contre, je n’ai pas le pulse/min malheureusement.
Je pense que le PIN défini sur l’ESP est déja utilisé par un composant, pourtant j’ai lu le DataSheet et il me semblait que c’était ok. Mais ce n’est pas grave.

Si jamais ça intéresse d’autres personnes, pour l’améliorer, mettre des avis positifs/négatifs, le sujet est là.

Bonne journée à toutes et à tous !

3 « J'aime »

Bonsoir @SupaTom
par contre je ne vois pas de capteur de température dans le code ESP, ni de vitesse de ventilo, tu n’as pas tout mis dans le code de l’ESP ?

Bob

Ah oui, dans l’intégration il y a la température, c’est une sonde externe.
J’ai voulu intégrer une sonde sur la carte, mais en soit je n’ai jamais réussi à faire fonctionner car il y a peu de pin dispo pour interfacer la sonde. Ou alors je m’y prenait mal ! :sweat_smile:

Bonsoir,
Pourquoi en framework arduino au lieu de esp-idf ?

Citation
It is recommended for all ESP32 chips when possible. See the migration guide for help transitioning from Arduino.

esp32:
  board: wt32-eth01
  framework:
    type: esp-idf

Il me semble qu’a l’époque (mon projet date de début d’année) le type esp-idf me posait souci avec le module ethernet de la carte.
Il faudrait que je re-test.

1 « J'aime »

un exemple pour un bluetooth proxy en esp-idf

esphome:
  name: wt32-eth01
  friendly_name: Bluetooth Proxy
  min_version: 2025.11.0
  name_add_mac_suffix: true
  platformio_options:
    board_build.flash_mode: dio

esp32:
  variant: esp32
  framework:
    type: esp-idf

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk:
    pin: GPIO0
    mode: CLK_EXT_IN
  phy_addr: 1
  power_pin: GPIO16
2 « J'aime »