CODE YAML

Plongez dans l'univers Yet Another Markup Language

ECO-DOMO-22

Centrale Domotique DOMO22

Configuration complète pour la centrale ESP32 avec tous les périphériques et fonctionnalités.

⚙️ Configuration de base

ESPHome
# Configuration de base DOMO22
# Version: 1.0
# Date: 2025-10-31

esphome:
  name: domo22
  friendly_name: "Centrale DOMO22"
  platform: ESP32
  board: esp32dev

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
  # Point d'accès de secours
  ap:
    ssid: "DOMO22 Fallback"
    password: !secret ap_password

# Active le serveur web pour le diagnostic
web_server:
  port: 80

# API Home Assistant
api:
  encryption:
    key: !secret api_encryption_key

# OTA (mise à jour sans fil)
ota:
  password: !secret ota_password

# Logger
logger:
  level: DEBUG

# I2C pour capteurs
i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true
  frequency: 400kHz
📁 domo22-base-config.yaml 📏 47 lignes 🕒 Mis à jour: 31/10/2025

🔌 Sorties Relais (8 canaux)

Relais
# Sorties relais DOMO22
# 8 relais 10A - Sorties sécurisées

switch:
  # Relais 1 - Éclairage principal
  - platform: gpio
    pin: GPIO13
    name: "Relais 1 - Éclairage Principal"
    id: relay_1
    icon: "mdi:lightbulb"
    restore_mode: RESTORE_DEFAULT_OFF
    on_turn_on:
      - logger.log: "Relais 1 activé"
    on_turn_off:
      - logger.log: "Relais 1 désactivé"

  # Relais 2 - Éclairage secondaire
  - platform: gpio
    pin: GPIO12
    name: "Relais 2 - Éclairage Secondaire"
    id: relay_2
    icon: "mdi:lightbulb-outline"
    restore_mode: RESTORE_DEFAULT_OFF

  # Relais 3 - Prise salon
  - platform: gpio
    pin: GPIO14
    name: "Relais 3 - Prise Salon"
    id: relay_3
    icon: "mdi:power-socket-eu"
    restore_mode: RESTORE_DEFAULT_OFF

  # Relais 4 - Ventilation
  - platform: gpio
    pin: GPIO27
    name: "Relais 4 - Ventilation"
    id: relay_4
    icon: "mdi:fan"
    restore_mode: RESTORE_DEFAULT_OFF

  # Relais 5 - Chauffage
  - platform: gpio
    pin: GPIO26
    name: "Relais 5 - Chauffage"
    id: relay_5
    icon: "mdi:radiator"
    restore_mode: RESTORE_DEFAULT_OFF

  # Relais 6 - Pompe
  - platform: gpio
    pin: GPIO25
    name: "Relais 6 - Pompe"
    id: relay_6
    icon: "mdi:pump"
    restore_mode: RESTORE_DEFAULT_OFF

  # Relais 7 - Portail
  - platform: gpio
    pin: GPIO33
    name: "Relais 7 - Portail"
    id: relay_7
    icon: "mdi:gate"
    restore_mode: RESTORE_DEFAULT_OFF
    on_turn_on:
      - delay: 500ms
      - switch.turn_off: relay_7

  # Relais 8 - Spare
  - platform: gpio
    pin: GPIO32
    name: "Relais 8 - Réserve"
    id: relay_8
    icon: "mdi:power"
    restore_mode: RESTORE_DEFAULT_OFF
📁 domo22-relays.yaml 🔌 8 relais 10A

🎛️ Entrées Numériques (8 canaux)

GPIO
# Entrées numériques DOMO22
# 8 entrées avec protection

binary_sensor:
  # Entrée 1 - Bouton poussoir
  - platform: gpio
    pin:
      number: GPIO34
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 1 - Bouton Poussoir"
    id: input_1
    device_class: button
    filters:
      - delayed_on: 50ms
      - delayed_off: 50ms
    on_press:
      - switch.toggle: relay_1

  # Entrée 2 - Détecteur mouvement
  - platform: gpio
    pin:
      number: GPIO35
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 2 - Détecteur Mouvement"
    id: input_2
    device_class: motion
    filters:
      - delayed_on: 100ms

  # Entrée 3 - Contact porte
  - platform: gpio
    pin:
      number: GPIO36
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 3 - Contact Porte"
    id: input_3
    device_class: door

  # Entrée 4 - Contact fenêtre
  - platform: gpio
    pin:
      number: GPIO39
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 4 - Contact Fenêtre"
    id: input_4
    device_class: window

  # Entrées 5-8 - Personnalisables
  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 5"
    id: input_5
    filters:
      - delayed_on: 50ms

  - platform: gpio
    pin:
      number: GPIO16
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 6"
    id: input_6

  - platform: gpio
    pin:
      number: GPIO17
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 7"
    id: input_7

  - platform: gpio
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
      inverted: true
    name: "Entrée 8"
    id: input_8
📁 domo22-inputs.yaml 🎛️ 8 entrées avec anti-rebond

📊 Capteurs (Température, Humidité, Luminosité)

Sensors
# Capteurs DOMO22
# BME280, BH1750, DS18B20

sensor:
  # BME280 - Température, Humidité, Pression
  - platform: bme280
    temperature:
      name: "Température Ambiante"
      id: temp_ambient
      oversampling: 16x
      filters:
        - sliding_window_moving_average:
            window_size: 10
            send_every: 10
    humidity:
      name: "Humidité Ambiante"
      id: humidity_ambient
      filters:
        - sliding_window_moving_average:
            window_size: 10
            send_every: 10
    pressure:
      name: "Pression Atmosphérique"
      id: pressure
      filters:
        - sliding_window_moving_average:
            window_size: 10
            send_every: 10
    address: 0x76
    update_interval: 60s

  # BH1750 - Luminosité
  - platform: bh1750
    name: "Luminosité"
    id: light_sensor
    address: 0x23
    update_interval: 30s
    filters:
      - lambda: |-
          if (x < 10) return 0;
          else return x;

  # DS18B20 - Température précise
  - platform: dallas
    address: 0x1c0000031edd2a28
    name: "Température Précise"
    id: temp_precise
    resolution: 12
    filters:
      - offset: -0.5  # Calibration
      
  # Capteurs système
  - platform: wifi_signal
    name: "Signal WiFi"
    update_interval: 60s
    
  - platform: uptime
    name: "Uptime"
    update_interval: 60s
📁 domo22-sensors.yaml 🌡️ BME280 + BH1750 + DS18B20
📚

Besoin d'aide ?

Consultez notre documentation complète pour l'installation et la configuration.

Voir la documentation
💬

Support

Une question ? Notre équipe est là pour vous aider.

Nous contacter
🎓

Tutoriels

Apprenez pas à pas avec nos tutoriels vidéo et guides.

Voir les tutoriels
WiFi

Configuration WiFi

IP fixe, gestion de l'énergie, puissance d'émission et options avancées pour un réseau stable et fiable.

🌐 IP Fixe (Static IP)

manual_ip
# Configuration WiFi avec IP fixe
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # IP fixe - évite les conflits DHCP et permet l'accès direct
  manual_ip:
    static_ip: 192.168.1.100   # Adresse IP réservée sur le routeur
    gateway: 192.168.1.1       # Passerelle (IP du routeur)
    subnet: 255.255.255.0      # Masque de sous-réseau
    dns1: 192.168.1.1          # DNS primaire (routeur ou 8.8.8.8)
    dns2: 8.8.4.4              # DNS secondaire Google

  # Point d'accès de secours si le WiFi principal est inaccessible
  ap:
    ssid: "DOMO22 Fallback"
    password: !secret ap_password

  # Domaine DNS local pour la résolution de nom
  domain: .local
💡 Réserver l'IP sur le routeur par adresse MAC pour éviter les conflits

Économie d'énergie (power_save_mode)

power_save_mode
# Modes d'économie d'énergie WiFi ESP32
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # NONE     → Performances maximales, pas d'économie
  #            Recommandé pour domotique (latence ~1ms)
  # LIGHT    → Économie légère, le module peut dormir entre les trames
  #            Latence légèrement augmentée (~50ms)
  # MODEM    → Économie maximale, réveil périodique uniquement
  #            Latence élevée, pour appareils sur batterie
  power_save_mode: NONE

  # Puissance d'émission TX en dBm (8.5 à 20.5 dBm)
  # Valeur haute → meilleure portée, consommation plus élevée
  # Valeur basse → portée réduite, consommation minimisée
  output_power: 20dB          # Puissance maximale (défaut)
  # output_power: 17dBm       # Bon compromis portée/conso
  # output_power: 8.5dBm      # Pour appareils très proches du routeur
🔋 NONE recommandé pour une domotique réactive 📡 output_power 20dB = ~100mW de puissance d'émission

⚙️ Options avancées (fast_connect, priority, use_address…)

Avancé
# Options WiFi avancées
wifi:
  # Connexion rapide : évite le scan complet des canaux WiFi
  # Utile pour réduire le temps de démarrage (~2s de gain)
  # Nécessite que le SSID soit broadcasté (pas caché)
  fast_connect: false

  # Réseau WiFi principal
  networks:
    - ssid: !secret wifi_ssid
      password: !secret wifi_password
      priority: 10             # Priorité haute → réseau préféré

    # Réseau WiFi de secours (voisin, mobile, etc.)
    - ssid: "MonReseau_5GHz"
      password: !secret wifi_password_5g
      priority: 5              # Priorité basse → secours uniquement
      hidden: false            # true si SSID masqué

  # Adresse de l'hôte pour l'OTA et l'API (si différente de l'IP)
  # Utile derrière un proxy ou avec plusieurs interfaces réseau
  use_address: 192.168.1.100

  # Délai de connexion avant de basculer sur l'AP de secours (ms)
  reboot_timeout: 15min

  # Point d'accès de secours
  ap:
    ssid: "DOMO22 Fallback"
    password: !secret ap_password
    ap_timeout: 1min           # Durée de l'AP avant reboot
💡 Plusieurs réseaux : l'ESP32 choisit automatiquement le plus prioritaire disponible
Web Server

Serveur Web Embarqué

Interface web intégrée à l'ESP32 pour diagnostiquer, contrôler et mettre à jour l'appareil sans Home Assistant.

🌍 Configuration de base

web_server
# Serveur web embarqué ESPHome
web_server:
  port: 80              # Port HTTP (80 par défaut)
                        # Utiliser 8080 si conflit avec d'autres services

  # Version de l'interface utilisateur
  # version: 1 → Interface légère, compatible anciens appareils
  # version: 2 → Interface Material Design moderne (recommandé)
  version: 2

  # Activer/désactiver l'interface OTA depuis le navigateur
  ota: true

  # Accès local uniquement (sans téléchargement JS depuis le cloud)
  # true → Interface hébergée localement (fonctionne hors internet)
  # false → Interface chargée depuis le CDN ESPHome
  local: false
🌐 Accessible via http://192.168.1.100 ou http://domo22.local

🔐 Authentification (auth)

Sécurité
# Serveur web avec authentification HTTP Basic
web_server:
  port: 80
  version: 2
  ota: true

  # Protection par identifiant/mot de passe
  # Recommandé si l'appareil est accessible depuis Internet
  auth:
    username: !secret web_username
    password: !secret web_password

# Ajouter dans secrets.yaml :
# web_username: "admin"
# web_password: "MotDePasseSecurise123"
⚠️ HTTP Basic Auth : non chiffré sans HTTPS — à réserver au réseau local

🏠 Mode local (sans accès internet)

local: true
# Serveur web en mode 100% local
# Les fichiers JS/CSS sont servis depuis l'ESP32
# Fonctionne sans connexion internet (réseau isolé, installation technique)
web_server:
  port: 80
  version: 2
  local: true        # Inclut l'interface JS dans le firmware (~200 KB supplémentaires)
  ota: true

  auth:
    username: !secret web_username
    password: !secret web_password

# Notes importantes en mode local :
# - Augmente la taille du firmware (~200 KB)
# - Nécessite une partition flash suffisante (4 MB recommandé)
# - Idéal pour installations sans accès internet
💾 Partition recommandée : Default 4MB with SPIFFS 📡 Fonctionne hors internet
OTA

Mise à Jour Sans Fil (OTA)

Over The Air : flashez votre ESP32 via le réseau WiFi, sans câble USB. Configuration de la sécurité, du mode sans échec et des paramètres avancés.

📡 Configuration OTA de base

ota
# OTA ESPHome - Mise à jour sans fil
# Premier flash obligatoirement par USB, ensuite OTA disponible

ota:
  - platform: esphome
    password: !secret ota_password   # Mot de passe protégeant le flash OTA

# Ajouter dans secrets.yaml :
# ota_password: "MotDePasseOTA"

# Pour flasher via ESPHome CLI :
# esphome run domo22.yaml
#
# Pour flasher depuis Home Assistant :
# ESPHome Add-on → sélectionner l'appareil → INSTALL → Wirelessly
🔒 Ne jamais laisser l'OTA sans mot de passe en production

🛡️ Mode sans échec (safe_mode)

safe_mode
# OTA avec mode sans échec
# Si l'ESP32 redémarre trop souvent (firmware corrompu, boucle de crash),
# il passe automatiquement en safe_mode : WiFi + OTA uniquement
# → permet de reflasher un firmware correct sans accès physique

ota:
  - platform: esphome
    password: !secret ota_password

safe_mode:
  # Nombre de démarrages rapides avant de basculer en safe mode
  num_attempts: 10              # Défaut : 10 redémarrages consécutifs

  # Délai de reboot en safe mode (attend un flash OTA avant de redémarrer)
  reboot_timeout: 5min          # 0s = pas de timeout (reste en safe mode)

  # Restaure l'état des interrupteurs avant le reboot (recommandé)
  boot_is_good_after: 1min      # L'appareil est considéré stable après 1 min
💡 Safe mode = bouée de secours : le device reste flashable même avec un firmware défaillant

💻 OTA Arduino / C++ (ArduinoOTA)

Arduino IDE
// OTA Arduino pour ESP32 (hors ESPHome)
// Librairie : ArduinoOTA (incluse dans le core ESP32)

#include <WiFi.h>
#include <ArduinoOTA.h>

const char* ssid     = "VotreSSID";
const char* password = "VotreMotDePasse";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(500);

  // Nom mDNS de l'appareil (ex: domo22.local)
  ArduinoOTA.setHostname("domo22");

  // Mot de passe de protection du flash OTA
  ArduinoOTA.setPassword("MotDePasseOTA");

  // Callbacks optionnels
  ArduinoOTA.onStart([]() {
    Serial.println("OTA: Démarrage du flash...");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nOTA: Flash terminé. Redémarrage.");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("OTA: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("OTA Erreur [%u]\n", error);
  });

  ArduinoOTA.begin();
  Serial.print("OTA prêt - IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // Appel obligatoire dans la boucle principale
  ArduinoOTA.handle();

  // ... reste du code
}
📁 Flash via Arduino IDE : Croquis → Téléverser par OTA 📁 Flash via PlatformIO : upload_protocol = espota

📋 Récapitulatif des options OTA

Référence
Paramètre Valeurs Description
password chaîne Mot de passe requis pour flasher
num_attempts 10 (défaut) Redémarrages avant safe mode
reboot_timeout 5min (défaut) Durée en safe mode avant reboot
boot_is_good_after durée Délai pour valider le démarrage
platform esphome Protocole OTA utilisé
ECO-DOMO-30

Centralisateur DOMO30

Configuration pour le gestionnaire de fil pilote et E/S.

🚧

Bientôt disponible

Les fichiers YAML pour le DOMO30 seront disponibles prochainement.