In breve: Esistono due percorsi di integrazione. Il Percorso A (piattaforma standard ESPHome
ac_dimmer) è semplice ma causa conflitti ISR/WiFi su ESP32 dual-core. Il Percorso B (componente ESPHome DimmerLink) scarica la temporizzazione TRIAC su un controller dedicato — nessun ISR, nessun conflitto, funziona su qualsiasi piattaforma inclusi ESP32-C3, Raspberry Pi e HA OS.
Quale percorso scegliere?
| Criterio | Percorso A: ESPHome standard | Percorso B: DimmerLink |
|---|---|---|
| Scheda | ESP8266 (sicuro), ESP32 (rischioso) | Qualsiasi ESP32, RPi, qualsiasi SBC |
| Complessità YAML | ~10 righe | ~30 righe |
| Stabilità WiFi | Possibile sfarfallio con carico WiFi | Nessun conflitto (solo I2C) |
| ESP32 single-core | Non supportato | Supportato |
| Hardware aggiuntivo | Nessuno | Modulo DimmerLink |
| Qualità dimmerizzazione | Buona | Eccellente (temporizzazione hardware) |
⚠️ Perché ESP32 è rischioso con il Percorso A: la piattaforma standard
ac_dimmerusa un ISR software su ESP32. Quando il WiFi o l'API HA sono attivi, la temporizzazione dell'ISR viene disturbata, causando sfarfallio visibile o blocco del dimmer. Usa il Percorso B per eliminare completamente l'ISR.
Scegli il Percorso A se usi ESP8266 e vuoi la configurazione più semplice.
Scegli il Percorso B se usi ESP32 (qualsiasi variante), Raspberry Pi, HA OS su x86, o hai bisogno di dimmerizzazione affidabile con WiFi/MQTT attivo.
Percorso A: Piattaforma standard ESPHome ac_dimmer
Cablaggio (ESP8266 / ESP32)
Modulo dimmer → ESP8266 (NodeMCU)
──────────────────────────────────────
ZC-OUT → D1 (GPIO5)
DIM → D2 (GPIO4)
VCC → 3.3V
GND → GNDPer ESP32, qualsiasi GPIO può essere usato per ZC e DIM.
YAML ESPHome
esphome:
name: ac-dimmer
platform: ESP8266 # o ESP32
board: nodemcuv2 # adattare alla tua scheda
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 # predefinito; 'trailing' per MOSFET
min_power: 0.01
light:
- platform: monochromatic
output: dimmer_out
name: "AC Dimmer"
gamma_correct: 0 # 0 = lineare, 2.8 = percezione LEDMetodi di dimmerizzazione
| Metodo | Valore method: |
Uso con |
|---|---|---|
| Leading pulse (predefinito) | leading_pulse |
Moduli TRIAC |
| Leading (gate mantenuto) | leading |
TRIAC — alternativo |
| Trailing | trailing |
Solo moduli MOSFET |
Problema noto: ESP32 + WiFi
⚠️ La piattaforma standard
ac_dimmerusa un ISR software sull'ESP32. Quando il WiFi è attivo (specialmente con l'API HA o OTA), l'ISR può essere ritardato, causando sfarfallio visibile o blocco del dimmer.This is the same root cause as crashes with the
RBDdimmerC++ library. See: ESP32 + AC Dimmer: IRAM_ATTR Causes and FixSoluzione: Usa il Percorso B (DimmerLink) per installazioni HA basate su ESP32.
Percorso B: Componente ESPHome DimmerLink
DimmerLink è un controller dedicato con processore Cortex-M0+ che gestisce il rilevamento passaggio per lo zero e la temporizzazione del gate TRIAC internamente. Il tuo ESP32 invia un valore di luminosità (0–100 %) via I2C — nessun ISR viene eseguito sul MCU.
Cablaggio
DimmerLink → ESP32
─────────────────────────
VCC → 3.3V
GND → GND
SDA → GPIO21
SCL → GPIO22DimmerLink → AC load wiring is identical to the standard module. See: Hardware Connection Guide
Installare il componente ESPHome
Aggiungi il componente esterno al tuo 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 minimo (~30 righe)
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: 0x50Programma, aggiungi a HA, fatto.
YAML standard — con sensori e selettore di curva
# (external_components + i2c come sopra)
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"
# Opzioni: LINEAR, RMS, LOGARITHMIC
binary_sensor:
- platform: dimmerlink
address: 0x50
status:
name: "Dimmer Status"Curve di dimmerizzazione
| Curva | Ideale per |
|---|---|
LINEAR |
Elementi riscaldanti, carichi resistivi |
RMS |
Lampade a incandescenza e alogene |
LOGARITHMIC |
Lampadine LED dimmerabili |
Vista dispositivo in Home Assistant
Dopo la programmazione e l'aggiunta del dispositivo ESPHome a HA:
- Il Percorso A crea un'entità
lightcon slider di luminosità (0–255 mappato su 0–100 %) - Il Percorso B crea un'entità
lightpiù entità sensore opzionali (frequenza AC, luminosità %, versione firmware) e un selettore di curva di dimmerizzazione — tutto mostrato su un'unica scheda dispositivo HA
Multi-canale con DimmerLink
Ogni modulo DimmerLink gestisce un carico AC a un indirizzo I2C (impostato tramite jumper di indirizzo sulla scheda). Per controllare due carichi, collega due moduli DimmerLink separati sullo stesso bus I2C con indirizzi diversi:
light:
- platform: dimmerlink
name: "Channel 1"
address: 0x50
- platform: dimmerlink
name: "Channel 2"
address: 0x51Articoli correlati
- 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
Hai ancora domande?
Ask on forum.rbdimmer.com or open a GitHub Issue.