En bref : Deux voies d'intégration existent. La Voie A (plateforme standard ESPHome
ac_dimmer) est simple mais provoque des conflits ISR/WiFi sur ESP32 double cœur. La Voie B (composant ESPHome DimmerLink) déporte la synchronisation TRIAC vers un contrôleur dédié — pas d'ISR, pas de conflits, fonctionne sur toute plateforme y compris ESP32-C3, Raspberry Pi et HA OS.
Quelle voie choisir ?
| Critère | Voie A : ESPHome standard | Voie B : DimmerLink |
|---|---|---|
| Carte | ESP8266 (sûr), ESP32 (risqué) | Tout ESP32, RPi, tout SBC |
| Complexité YAML | ~10 lignes | ~30 lignes |
| Stabilité WiFi | Peut scintiller sous charge WiFi | Aucun conflit (I2C uniquement) |
| ESP32 simple cœur | Non supporté | Supporté |
| Matériel supplémentaire | Aucun | Module DimmerLink |
| Qualité de variation | Bonne | Excellente (timing matériel) |
⚠️ Pourquoi l'ESP32 est risqué avec la Voie A : la plateforme standard
ac_dimmerutilise un ISR logiciel sur l'ESP32. Lorsque le WiFi ou l'API HA est actif, le timing de l'ISR est perturbé, ce qui provoque un scintillement visible ou un gel du variateur. Utilisez la Voie B pour éliminer entièrement l'ISR.
Choisissez la Voie A si vous utilisez un ESP8266 et souhaitez la configuration la plus simple.
Choisissez la Voie B si vous utilisez un ESP32 (toute variante), Raspberry Pi, HA OS sur x86, ou avez besoin d'une variation fiable avec WiFi/MQTT actif.
Voie A : Plateforme standard ESPHome ac_dimmer
Câblage (ESP8266 / ESP32)
Module variateur → ESP8266 (NodeMCU)
──────────────────────────────────────
ZC-OUT → D1 (GPIO5)
DIM → D2 (GPIO4)
VCC → 3.3V
GND → GNDPour l'ESP32, n'importe quel GPIO peut être utilisé pour ZC et DIM.
YAML ESPHome
esphome:
name: ac-dimmer
platform: ESP8266 # ou ESP32
board: nodemcuv2 # adapter à votre carte
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
api:
encryption:
key: !secret api_key
ota:
password: !secret ota_password
output:
- platform: ac_dimmer
id: dimmer_out
gate_pin: GPIO4
zero_cross_pin:
number: GPIO5
mode: INPUT
inverted: yes
method: leading_pulse # par défaut ; 'trailing' pour MOSFET
min_power: 0.01
light:
- platform: monochromatic
output: dimmer_out
name: "AC Dimmer"
gamma_correct: 0 # 0 = linéaire, 2.8 = perception LEDMéthodes de variation
| Méthode | Valeur method: |
Utilisation |
|---|---|---|
| Leading pulse (défaut) | leading_pulse |
Modules TRIAC |
| Leading (gâchette maintenue) | leading |
TRIAC — alternatif |
| Trailing | trailing |
Modules MOSFET uniquement |
Problème connu : ESP32 + WiFi
⚠️ La plateforme standard
ac_dimmerutilise un ISR logiciel sur l'ESP32. Lorsque le WiFi est actif (surtout avec l'API HA ou l'OTA), l'ISR peut être retardé, provoquant un scintillement visible ou un gel du variateur.This is the same root cause as crashes with the
RBDdimmerC++ library. See: ESP32 + AC Dimmer: IRAM_ATTR Causes and FixSolution : Utilisez la Voie B (DimmerLink) pour les installations HA sur ESP32.
Voie B : Composant ESPHome DimmerLink
DimmerLink est un contrôleur dédié avec processeur Cortex-M0+ qui gère la détection de passage par zéro et le timing de la gâchette TRIAC en interne. Votre ESP32 envoie une valeur de luminosité (0–100 %) par I2C — aucun ISR ne tourne sur le MCU.
Câblage
DimmerLink → ESP32
─────────────────────────
VCC → 3.3V
GND → GND
SDA → GPIO21
SCL → GPIO22DimmerLink → AC load wiring is identical to the standard module. See: Hardware Connection Guide
Installer le composant ESPHome
Ajoutez le composant externe à votre YAML :
external_components:
- source:
type: git
url: https://github.com/robotdyn-dimmer/DimmerLink
ref: main
components: [dimmerlink]Component source and docs: github.com/robotdyn-dimmer/DimmerLink/tree/main/components
YAML minimal (~30 lignes)
esphome:
name: dimmerlink-ha
platform: ESP32
board: esp32dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
api:
encryption:
key: !secret api_key
ota:
password: !secret ota_password
external_components:
- source:
type: git
url: https://github.com/robotdyn-dimmer/DimmerLink
ref: main
components: [dimmerlink]
i2c:
sda: GPIO21
scl: GPIO22
frequency: 100kHz
light:
- platform: dimmerlink
name: "Dimmer"
address: 0x50Flashez, ajoutez à HA, c'est fait.
YAML standard — avec capteurs et sélection de courbe
# (external_components + i2c comme ci-dessus)
light:
- platform: dimmerlink
name: "Dimmer"
address: 0x50
sensor:
- platform: dimmerlink
address: 0x50
frequency:
name: "AC Frequency"
brightness:
name: "Dimmer Brightness"
select:
- platform: dimmerlink
address: 0x50
dimming_curve:
name: "Dimming Curve"
# Options : LINEAR, RMS, LOGARITHMIC
binary_sensor:
- platform: dimmerlink
address: 0x50
status:
name: "Dimmer Status"Courbes de variation
| Courbe | Idéale pour |
|---|---|
LINEAR |
Éléments chauffants, charges résistives |
RMS |
Ampoules à incandescence et halogènes |
LOGARITHMIC |
Ampoules LED dimmables |
Vue de l'appareil dans Home Assistant
Après avoir flashé et ajouté l'appareil ESPHome à HA :
- La Voie A crée une entité
lightavec un curseur de luminosité (0–255 mappé sur 0–100 %) - La Voie B crée une entité
lightplus des entités capteurs optionnelles (fréquence AC, luminosité %, version firmware) et un sélecteur de courbe de variation — le tout affiché sur une seule carte d'appareil HA
Multi-canal avec DimmerLink
Chaque module DimmerLink gère une charge AC à une adresse I2C (définie par des cavaliers d'adresse sur la carte). Pour contrôler deux charges, connectez deux modules DimmerLink séparés sur le même bus I2C avec des adresses différentes :
light:
- platform: dimmerlink
name: "Channel 1"
address: 0x50
- platform: dimmerlink
name: "Channel 2"
address: 0x51Articles connexes
- ESPHome YAML details → ESPHome YAML for AC Dimmer
- MQTT alternative → AC Dimmer via MQTT with ESP32
- ESP32 WiFi ISR problem → IRAM_ATTR Causes and Fix
- Single-core ESP32 → ESP32-S2/C3/H2 Doesn't Work
- Which dimmer to buy → Complete Buyer's Guide
Encore des questions ?
Ask on forum.rbdimmer.com or open a GitHub Issue.