← - Lambda Reference | Sommaire | Suivant : FAQ & Dépannage →
Intégration ESPHome — Home Assistant, Dépannage, Prochaines étapes
Intégration avec Home Assistant, dépannage et plans de développement.
Sommaire
5.1 Intégration Home Assistant
Découverte automatique
Après le flashage de l'ESP32, l'appareil apparaît automatiquement dans Home Assistant.
Vérification :
- Paramètres -> Appareils & Services
- Find the "New devices discovered" notification
- Ou : ESPHome -> sélectionner l'appareil
Entités dans Home Assistant
Avec l' exemple standard, les entités suivantes sont créées :
| Entité | Type | Description |
|---|---|---|
light.dimmerlink_light |
Light | Variateur principal |
sensor.dimmerlink_ac_frequency |
Sensor | Fréquence secteur (50/60 Hz) |
sensor.dimmerlink_level |
Sensor | Niveau actuel (%) |
select.dimmerlink_curve |
Select | Courbe de variation |
binary_sensor.dimmerlink_ready |
Binary Sensor | Statut de disponibilité |
button.dimmerlink_restart_esp |
Button | Redémarrage ESP |
Cartes Lovelace
Carte simple
type: light
entity: light.dimmerlink_light
name: Living Room
Carte étendue
type: vertical-stack
cards:
- type: light
entity: light.dimmerlink_light
name: Dimmer
- type: entities
entities:
- entity: select.dimmerlink_curve
name: Curve
- entity: sensor.dimmerlink_ac_frequency
name: Mains Frequency
- entity: binary_sensor.dimmerlink_ready
name: Status
Carte avec curseur (custom:slider-entity-row)
type: entities
entities:
- entity: light.dimmerlink_light
type: custom:slider-entity-row
name: Brightness
toggle: true
Automatisations
Allumage sur détection de mouvement
automation:
- alias: "Light on Motion"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
to: "on"
condition:
- condition: sun
after: sunset
action:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 70
transition: 2
Extinction après 5 minutes
automation:
- alias: "Auto Turn Off"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
to: "off"
for:
minutes: 5
action:
- service: light.turn_off
target:
entity_id: light.dimmerlink_light
data:
transition: 5
Mode nuit (lumière tamisée)
automation:
- alias: "Night Mode"
trigger:
- platform: time
at: "23:00:00"
condition:
- condition: state
entity_id: light.dimmerlink_light
state: "on"
action:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 20
transition: 10
Changer la courbe selon le type de charge
automation:
- alias: "Curve for LED"
trigger:
- platform: state
entity_id: input_select.lamp_type
to: "LED"
action:
- service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "LOG"
- alias: "Curve for Incandescent"
trigger:
- platform: state
entity_id: input_select.lamp_type
to: "Incandescent"
action:
- service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "RMS"
Scripts
Allumage progressif du matin
script:
morning_light:
alias: "Morning Light"
sequence:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 10
- delay:
seconds: 30
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 50
transition: 120 # 2 minutes
Simulation de présence
script:
presence_simulation:
alias: "Presence Simulation"
sequence:
- repeat:
count: 10
sequence:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: "{{ range(30, 80) | random }}"
- delay:
minutes: "{{ range(5, 20) | random }}"
- service: light.turn_off
target:
entity_id: light.dimmerlink_light
- delay:
minutes: "{{ range(10, 30) | random }}"
Scènes
scene:
- name: "Movie"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 15
- name: "Reading"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 80
- name: "Romantic"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 30
Groupes
light:
- platform: group
name: "All Dimmers"
entities:
- light.dimmerlink_living_room
- light.dimmerlink_bedroom
- light.dimmerlink_kitchen
Capteur de puissance par template
Si la puissance de la lampe est connue :
sensor:
- platform: template
sensors:
dimmer_power:
friendly_name: "Dimmer Power"
unit_of_measurement: "W"
value_template: >
{% set brightness = state_attr('light.dimmerlink_light', 'brightness') | default(0) %}
{% set max_power = 100 %}
{{ (brightness / 255 * max_power) | round(1) }}
Historique et statistiques
Ajouter à configuration.yaml :
recorder:
include:
entities:
- light.dimmerlink_light
- sensor.dimmerlink_level
- sensor.dimmerlink_ac_frequency
history:
include:
entities:
- light.dimmerlink_light
5.2 Dépannage
Problèmes I2C
Appareil introuvable (0x50)
Symptom: Logs don't show "Found i2c device at address 0x50"
Vérification :
| Vérification | Solution |
|---|---|
| DimmerLink en mode I2C ? | Basculer via UART : 02 5B |
| Alimentation connectée ? | VCC -> 3,3V, GND -> GND |
| Câblage correct ? | SDA -> SDA, SCL -> SCL (sans croisement !) |
| Résistances de tirage ? | Ajouter 4,7 kΩ sur SDA et SCL vers 3,3V |
| Câbles suffisamment courts ? | I2C fonctionne jusqu'à 30 cm |
Diagnostic :
# Add to configuration for debugging
i2c:
sda: GPIO21
scl: GPIO22
scan: true # Enable scanning
id: bus_a
logger:
level: DEBUG
logs:
i2c: DEBUG
Erreurs I2C intermittentes
Symptom: "I2C communication failed" from time to time
Solutions :
- Réduire la fréquence :
yaml
i2c:
frequency: 50kHz # Au lieu de 100kHz
- Ajouter des délais :
yaml
output:
- platform: template
write_action:
- delay: 1ms # Avant l'écriture
- lambda: |-
// ... code
- Vérifier l'alimentation — une alimentation instable provoque des erreurs I2C
Problèmes WiFi
ESP32 Doesn't Connect to WiFi
Vérification :
- SSID et mot de passe corrects dans
secrets.yaml - WiFi on 2.4 GHz (ESP32 doesn't support 5 GHz)
- Le routeur ne bloque pas les nouveaux appareils
Solution — AP de secours :
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "dimmerlink-fallback"
password: "12345678"
captive_portal:
If it doesn't connect to WiFi — it will create an access point for configuration.
Déconnexions fréquentes
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: NONE # Disable power saving
Problèmes Home Assistant
Device Doesn't Appear in HA
- Vérifier que l'add-on ESPHome est en cours d'exécution
- Vérifier la clé API dans la configuration
- Redémarrer Home Assistant
- Ajouter manuellement : Paramètres -> Intégrations -> Ajouter -> ESPHome
"Entity unavailable"
Causes:
- ESP32 offline
- WiFi issues
- API key mismatch
Vérification :
ping dimmerlink.local
Problèmes de variation
La lampe scintille
Causes et solutions :
| Cause | Solution |
|---|---|
| LED non dimmable | Use lamps marked "dimmable" |
| Charge trop faible | Minimum 10–25 W pour un fonctionnement stable |
| Mauvaise courbe | Essayer LOG pour LED |
| Interférences secteur | Ajouter un snubber RC en sortie du variateur |
Lamp Doesn't Turn Off Completely
DimmerLink coupe complètement le TRIAC au niveau level=0. Si la lampe brille encore :
- Problème dans le variateur ou le câblage
- Certains drivers LED ont un courant de fuite
Plage de luminosité trop étroite
Essayer d'autres courbes :
# In Home Assistant Developer Tools
service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "RMS" # or "LOG"
Problèmes ESPHome
Erreur de compilation
« lambda function not allowed »
Vérifier l'indentation dans YAML — lambda doit être correctement indenté :
# Correct
write_action:
- lambda: |-
uint8_t data[2] = {0x10, 50};
id(bus_a).write(0x50, data, 2, true);
# Incorrect (missing "|-")
write_action:
- lambda:
uint8_t data[2] = {0x10, 50};
« id not found »
S'assurer que id: bus_a est déclaré dans la section i2c:.
OTA ne fonctionne pas
- Vérifier que l'ESP32 est sur le même réseau
- Utiliser l'IP à la place du nom d'hôte :
bash
esphome run dimmerlink.yaml --device 192.168.1.100
Commandes de diagnostic
Vérification I2C depuis ESPHome
Ajouter un bouton de diagnostic :
button:
- platform: template
name: "I2C Diagnostic"
on_press:
- lambda: |-
ESP_LOGI("diag", "=== I2C Diagnostic ===");
// Check connection
uint8_t reg = 0x00;
uint8_t status = 0;
auto err = id(bus_a).write(0x50, ®, 1, false);
ESP_LOGI("diag", "Write result: %d", err);
err = id(bus_a).read(0x50, &status, 1);
ESP_LOGI("diag", "Read result: %d, status: 0x%02X", err, status);
// Read version
reg = 0x03;
uint8_t version = 0;
id(bus_a).write(0x50, ®, 1, false);
id(bus_a).read(0x50, &version, 1);
ESP_LOGI("diag", "Firmware: %d", version);
// Read frequency
reg = 0x20;
uint8_t freq = 0;
id(bus_a).write(0x50, ®, 1, false);
id(bus_a).read(0x50, &freq, 1);
ESP_LOGI("diag", "AC Frequency: %d Hz", freq);
ESP_LOGI("diag", "=== Done ===");
Journalisation de toutes les opérations
logger:
level: DEBUG
logs:
i2c: DEBUG
api: DEBUG
sensor: DEBUG
Réinitialisation d'usine
ESP32
- Effacer la mémoire flash :
bash
esptool.py --port COM3 erase_flash
- Reflasher le firmware
DimmerLink
Envoyer la commande RESET :
button:
- platform: template
name: "Factory Reset DimmerLink"
on_press:
- lambda: |-
uint8_t data[2] = {0x01, 0x01};
id(bus_a).write(0x50, data, 2, true);
- delay: 3s
Tableau des codes d'erreur
| Code | Nom | Cause | Solution |
|---|---|---|---|
| 0x00 | OK | — | — |
| 0xF9 | ERR_SYNTAX | Registre invalide | Vérifier l'adresse du registre |
| 0xFC | ERR_NOT_READY | Non calibré ou erreur FLASH | Attendre 2 sec après la mise sous tension |
| 0xFD | ERR_INDEX | Index de variateur invalide | Utiliser 0 |
| 0xFE | ERR_PARAM | Paramètre invalide | level <= 100, curve <= 2 |
5.3 Prochaines étapes
État actuel
DimmerLink v1.0:
- I2C interface
- UART interface
- Basic dimming (0-100%)
- Three curves (LINEAR, RMS, LOG)
- Auto-detection of mains frequency
- I2C address change
ESPHome Integration v1.0:
- Light entity
- All sensors
- Curve selection
- Diagnostics
- Multi-device
Plans de développement
DimmerLink v2.0 (en développement)
| Fonctionnalité | Statut | Description |
|---|---|---|
| Protection thermique | En développement | Surveillance NTC, ventilateur PWM |
| FADE progressif | En développement | Fondu matériel par commande |
| Multi-canal | Prévu | Jusqu'à 4 canaux par module |
| Paramètres EEPROM | Prévu | Sauvegarde du niveau et de la courbe |
Intégration ESPHome v2.0
| Fonctionnalité | Statut | Description |
|---|---|---|
| Composant natif | Disponible | External Component |
| Surveillance de température | En développement | Capteur de température |
| Contrôle du ventilateur | En développement | Gestion du refroidissement |
| Surveillance de la consommation | Prévu | Intégration avec ACS712/CT |
Composant natif ESPHome
Un composant externe natif ESPHome est désormais disponible. Il offre une configuration YAML propre sans code lambda :
external_components:
- source: github://robotdyn-dimmer/DimmerLink@main
components: [dimmerlink]
dimmerlink:
id: dimmer1
address: 0x50
light:
- platform: dimmerlink
dimmerlink_id: dimmer1
name: "Light"
sensor:
- platform: dimmerlink
dimmerlink_id: dimmer1
ac_frequency:
name: "AC Frequency"
Projets avancés
Routeur solaire
Utiliser DimmerLink pour router l'énergie solaire excédentaire :
+---------------+ +---------------+ +---------------+
| Solar Panel |---->| CT Sensor |---->| ESP32 |
+---------------+ +---------------+ | + ESPHome |
| |
+---------------+ +---------------+ | |
| Heater |<----| DimmerLink |<----| |
+---------------+ +---------------+ +---------------+
Système multi-pièces
# Central controller for the whole house
substitutions:
# Dimmer addresses
living_room: "0x50"
bedroom: "0x51"
kitchen: "0x52"
bathroom: "0x53"
# 4 dimmers on one ESP32
Réveil intelligent
# Gradual light turn on for waking up
automation:
- alias: "Sunrise Alarm"
trigger:
- platform: time
at: "07:00:00"
action:
- service: light.turn_on
target:
entity_id: light.bedroom_dimmer
data:
brightness_pct: 1
- repeat:
count: 30
sequence:
- delay: 60
- service: light.turn_on
target:
entity_id: light.bedroom_dimmer
data:
brightness_pct: "{{ repeat.index * 3 }}"
transition: 60
Retours
Vous avez trouvé un bug ou avez une suggestion ?
- GitHub Issues : DimmerLink Repository
- Documentation : rbdimmer.com/docs
Vous souhaitez contribuer au développement ?
- Tester les nouvelles versions
- Documentation et traductions
- Exemples d'utilisation
Liens utiles
| Ressource | Lien |
|---|---|
| Documentation DimmerLink | rbdimmer.com/docs |
| ESPHome | esphome.io |
| Home Assistant | home-assistant.io |
| ESPHome I2C | esphome.io/components/i2c |
| ESPHome Light | esphome.io/components/light |
| HACS | hacs.xyz |
Historique des modifications
| Version | Date | Modifications |
|---|---|---|
| 1.0 | 2026-02 | Version initiale |
← - Lambda Reference | Sommaire | Suivant : FAQ & Dépannage →