Kurzfassung: Zwei Integrationswege existieren. Weg A (Standard-ESPHome-Plattform
ac_dimmer) ist einfach, verursacht aber ISR/WiFi-Konflikte auf Dual-Core-ESP32. Weg B (DimmerLink- ESPHome-Komponente) verlagert die TRIAC-Steuerung auf einen dedizierten Controller — kein ISR, keine Konflikte, funktioniert auf jeder Plattform einschließlich ESP32-C3, Raspberry Pi und HA OS.
Welchen Weg sollten Sie wählen?
| Kriterium | Weg A: Standard-ESPHome | Weg B: DimmerLink |
|---|---|---|
| Platine | ESP8266 (sicher), ESP32 (riskant) | Jeder ESP32, RPi, jeder SBC |
| YAML-Komplexität | ~10 Zeilen | ~30 Zeilen |
| WiFi-Stabilität | Kann bei WiFi-Last flimmern | Kein Konflikt (nur I2C) |
| Single-Core-ESP32 | Nicht unterstützt | Unterstützt |
| Zusätzliche Hardware | Keine | DimmerLink-Modul |
| Dimm-Qualität | Gut | Hervorragend (Hardware-Timing) |
⚠️ Warum ESP32 mit Weg A riskant ist: Die Standard-Plattform
ac_dimmerverwendet einen Software-ISR auf ESP32. Bei aktivem WiFi oder HA-API wird das ISR-Timing gestört, was zu sichtbarem Flimmern oder Einfrieren des Dimmers führt. Verwenden Sie Weg B, um den ISR vollständig zu eliminieren.
Wählen Sie Weg A, wenn Sie ESP8266 verwenden und die einfachste Einrichtung wünschen.
Wählen Sie Weg B, wenn Sie ESP32 (jede Variante), Raspberry Pi, HA OS auf x86 verwenden oder zuverlässiges Dimmen bei aktivem WiFi/MQTT benötigen.
Weg A: Standard-ESPHome-Plattform ac_dimmer
Verdrahtung (ESP8266 / ESP32)
Dimmer-Modul → ESP8266 (NodeMCU)
──────────────────────────────────────
ZC-OUT → D1 (GPIO5)
DIM → D2 (GPIO4)
VCC → 3.3V
GND → GNDFür ESP32 kann jeder GPIO für ZC und DIM verwendet werden.
ESPHome-YAML
esphome:
name: ac-dimmer
platform: ESP8266 # oder ESP32
board: nodemcuv2 # an Ihre Platine anpassen
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 # Standard; 'trailing' für MOSFET
min_power: 0.01
light:
- platform: monochromatic
output: dimmer_out
name: "AC Dimmer"
gamma_correct: 0 # 0 = linear, 2.8 = wahrgenommen für LEDDimm-Methoden
| Methode | method:-Wert |
Verwendung mit |
|---|---|---|
| Leading Pulse (Standard) | leading_pulse |
TRIAC-Module |
| Leading (Gate gehalten) | leading |
TRIAC — alternativ |
| Trailing | trailing |
Nur MOSFET-Module |
Bekanntes Problem: ESP32 + WiFi
⚠️ Die Standard-Plattform
ac_dimmerverwendet einen Software-ISR auf dem ESP32. Bei aktivem WiFi (insbesondere mit HA-API oder OTA) kann der ISR verzögert werden, was zu sichtbarem Flimmern oder Einfrieren des Dimmers führt.This is the same root cause as crashes with the
RBDdimmerC++ library. See: ESP32 + AC Dimmer: IRAM_ATTR Causes and FixLösung: Verwenden Sie Weg B (DimmerLink) für ESP32-basierte HA-Installationen.
Weg B: DimmerLink-ESPHome-Komponente
DimmerLink ist ein dedizierter Controller mit Cortex-M0+-Prozessor, der die Nulldurchgangserkennung und TRIAC-Gate-Steuerung intern verarbeitet. Ihr ESP32 sendet einen Helligkeitswert (0–100 %) per I2C — kein ISR auf dem MCU.
Verdrahtung
DimmerLink → ESP32
─────────────────────────
VCC → 3.3V
GND → GND
SDA → GPIO21
SCL → GPIO22DimmerLink → AC load wiring is identical to the standard module. See: Hardware Connection Guide
ESPHome-Komponente installieren
Fügen Sie die externe Komponente zu Ihrem YAML hinzu:
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
Minimales YAML (~30 Zeilen)
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: 0x50Flashen, zu HA hinzufügen, fertig.
Standard-YAML — mit Sensoren und Kurvenauswahl
# (external_components + i2c wie oben)
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"
# Optionen: LINEAR, RMS, LOGARITHMIC
binary_sensor:
- platform: dimmerlink
address: 0x50
status:
name: "Dimmer Status"Dimmkurven
| Kurve | Geeignet für |
|---|---|
LINEAR |
Heizelemente, resistive Lasten |
RMS |
Glüh- und Halogenlampen |
LOGARITHMIC |
Dimmbare LED-Lampen |
Geräteansicht in Home Assistant
Nach dem Flashen und Hinzufügen des ESPHome-Geräts zu HA:
- Weg A erstellt eine
light-Entität mit Helligkeitsregler (0–255, gemappt auf 0–100 %) - Weg B erstellt eine
light-Entität plus optionale Sensor- Entitäten (AC-Frequenz, Helligkeit %, Firmware-Version) und einen Dimmkurven-Selektor — alles auf einer HA-Gerätekarte
Mehrkanalsteuerung mit DimmerLink
Jedes DimmerLink-Modul steuert eine AC-Last an einer I2C-Adresse (eingestellt über Adress-Jumper auf der Platine). Um zwei Lasten zu steuern, verbinden Sie zwei separate DimmerLink-Module auf demselben I2C-Bus mit unterschiedlichen Adressen:
light:
- platform: dimmerlink
name: "Channel 1"
address: 0x50
- platform: dimmerlink
name: "Channel 2"
address: 0x51Verwandte Artikel
- 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
Noch Fragen?
Ask on forum.rbdimmer.com or open a GitHub Issue.