Kurzfassung: Tasmota kann einen TRIAC-Phasenanschnitt-Dimmer nicht nativ ansteuern. Verwenden Sie DimmerLink als I2C/UART-Slave. Auf ESP32 Tasmota: Schreiben Sie ein 5-zeiliges Berry-Script, das jeden Regel-Trigger auf einen I2C-Registerschreibvorgang an Adresse 0x50 abbildet. Auf ESP8266: Verwenden Sie
SerialSend5mit dem binären Paketformat von DimmerLink. Home Assistant erkennt das Gerät automatisch über Tasmota MQTT.
Warum Tasmota keinen TRIAC direkt ansteuern kann
Der Dimmer-Befehl in Tasmota steuert einen internen PWM-Ausgang oder
ein SWITCH-Relais. Er unterstützt keine Phasenanschnitt-Steuerung
(Phasenanschnitt-TRIAC), da dafür ein Hardware-Interrupt bei jedem AC-
Nulldurchgang (alle 10 ms bei 50 Hz) mit sub-Millisekunden-
Zündpräzision erforderlich ist.
Tasmota führt eine Ereignisschleife und den WiFi-Stack auf demselben Kern aus. Es kann keine ISR-Latenz < 1 ms unter WiFi-Last garantieren. Das direkte Anschließen eines rbdimmer-TRIAC-Moduls und der Versuch, Gate-Impulse von Tasmota aus zu steuern, führt zu Flimmern oder keinerlei Dimmung.
Die Lösung: Timing an DimmerLink auslagern. DimmerLink ist ein dedizierter Cortex-M0+-Controller, der Nulldurchgangserkennung und TRIAC-Zündung autonom verwaltet. Tasmota sendet nur einmal pro Benutzerbefehl den Ziel-Helligkeitswert (0–100) — keinerlei Timing-Anforderungen.
Benötigte Hardware
- ESP32- oder ESP8266-Platine mit Tasmota-Firmware
- DimmerLink-Modul
- rbdimmer AC-Dimmer-Modul (beliebiger Nennstrom)
- 4,7-kΩ-Widerstände × 2 (für I2C-Pull-ups, bei Verwendung des I2C-Modus)
Schritt 1 — DimmerLink in den I2C-Modus umschalten
DimmerLink wird standardmäßig im UART-Modus ausgeliefert. Für den Berry-I2C-Ansatz (ESP32) müssen Sie ihn zuerst in den I2C-Modus umschalten.
Verbinden Sie DimmerLink mit einem USB-UART-Adapter (TX → RX, RX → TX, GND → GND, VCC → 3.3V), dann senden Sie den SWITCH_I2C-Befehl bei 115200 Baud:
Byte sequence: 02 5BIn einem beliebigen Serial-Terminal (RealTerm, picocom):
- Öffnen Sie den Port bei 115200, 8N1.
- Senden Sie Roh-Bytes:
02 5B. - Erwartete Antwort:
00(OK). DimmerLink startet nun nach jedem Einschalten im I2C-Modus.
Nach dem Umschalten vom UART-Adapter trennen und für I2C verdrahten.
Wenn Sie DimmerLink im UART-Modus belassen möchten (einfacher für ESP8266), überspringen Sie diesen Schritt und gehen Sie direkt zu Schritt 3.
Schritt 2 — Verdrahtung
I2C-Verbindung (ESP32 — empfohlen)
| Jeder ESP32 | ESP32-Pin | Hinweise |
|---|---|---|
| VCC | 3,3V | Logikspannung des MCU anpassen |
| GND | GND | — |
| SDA (TX/SDA) | GPIO21 | 4,7-kΩ-Pull-up zu 3.3V hinzufügen |
| SCL (RX/SCL) | GPIO22 | 4,7-kΩ-Pull-up zu 3.3V hinzufügen |
Pull-up-Widerstände von SDA und SCL zu 3.3V anschließen. Ohne sie funktioniert der I2C-Bus nicht zuverlässig.
3.3V ──┬──────────────┬──
4.7k 4.7k
│ │
ESP32 SDA ──── DL SDA │
ESP32 SCL ──────────── DL SCL
GND ────────────────── DL GND
3.3V ───────────────── DL VCCUART-Verbindung (ESP8266 oder ESP32)
| Jeder ESP32 | ESP8266 | ❌ nein | Hinweise |
|---|---|---|---|
| VCC | 3,3V | 3,3V | — |
| GND | GND | GND | — |
| RX (TX/SDA) | GPIO1 TX* | GPIO17 TX2 | DL RX ← MCU TX |
| TX (RX/SCL) | GPIO3 RX* | GPIO16 RX2 | DL TX → MCU RX |
* GPIO1/3 auf ESP8266 werden mit USB geteilt. Verwenden Sie
Serial.swap() zum Umleiten auf GPIO15/GPIO13, oder verwenden
Sie stattdessen I2C.
// ESP8266: Serial auf GPIO15 (TX) / GPIO13 (RX) umleiten
Serial.begin(115200);
Serial.swap(); // TX → GPIO15, RX → GPIO13DimmerLink → AC-Dimmer-Modul
| Jeder ESP32 | Dimmer-Modul |
|---|---|
| VCC | VCC |
| GND | GND |
| Z-C | Z-C |
| Dim | DIM |
The dimmer module connects to mains AC and the load as described in the Hardware Connection Guide.
Schritt 3A — Tasmota-Berry-Script (ESP32, I2C-Modus)
Berry-Scripting ist nur auf ESP32-Tasmota verfügbar. Es bietet volle programmatische Kontrolle über I2C.
Öffnen Sie die Tasmota-Webkonsole und fügen Sie ein:
# Datei: dimmer_i2c.be — DimmerLink-Steuerung über I2C
# Register 0x10 (DIM0_LEVEL): 0–100 Prozent
import wire
wire.begin() # I2C-Bus einmal beim Laden des Scripts initialisieren
def set_dimmer(level)
var l = int(level)
if l < 0 then l = 0 end
if l > 100 then l = 100 end
wire.beginTransmission(0x50)
wire.write(0x10) # Register DIM0_LEVEL
wire.write(l)
wire.endTransmission()
end
# Tasmota-Dimmer-Befehl (0–100) auf DimmerLink abbilden
tasmota.add_rule("Dimmer#State",
def(value) set_dimmer(value) end)
# Tasmota-Power-Befehl (ein/aus) auf volle oder null Helligkeit abbilden
tasmota.add_rule("Power#State",
def(value)
if value == 1 then set_dimmer(100)
else set_dimmer(0) end
end)Zum automatischen Laden beim Booten als autoexec.be über den
Tasmota-Dateimanager speichern (Tools → Manage File System).
So funktioniert es:
wire.begin()wird einmal beim Laden des Scripts aufgerufen, um den I2C-Bus zu initialisieren — nicht bei jedem Befehl.wire.beginTransmission(0x50)adressiert DimmerLink an der Standard-I2C-Adresse.wire.write(0x10)wählt das DIM0_LEVEL-Register.wire.write(l)setzt die Helligkeit 0–100%.- Die Regel wird ausgelöst, wenn Tasmota einen
Dimmer-Befehl von der Konsole, über MQTT oder von Home Assistant empfängt.
Test über die Tasmota-Konsole
Dimmer 50 → set_dimmer(50) → I2C-Schreibvorgang 50 an 0x10
Dimmer 0 → set_dimmer(0) → Lampe aus
Power 0 → set_dimmer(0)Schritt 3B — Tasmota UART über SerialSend (ESP8266 und ESP32)
Wenn Berry nicht verfügbar ist (ESP8266) oder Sie keine Scripts
schreiben möchten, verwenden Sie SerialSend5 zum Senden von binären
Rohpaketen an DimmerLink über UART.
DimmerLink-UART-Paketformat für SET-Helligkeit:
02 53 00 LEVEL
│ │ │ └── Helligkeit 0–100 (dezimal)
│ │ └────── Kanalindex (immer 00)
│ └────────── Befehl SET (0x53)
└────────────── Startbyte (immer 0x02)In der Tasmota-Konsole:
# Helligkeit auf 50% setzen (0x32 hex = 50 dezimal)
SerialSend5 02530032
# Helligkeit auf 75% setzen (0x4B hex = 75 dezimal)
SerialSend5 0253004B
# Ausschalten (0x00 = 0%)
SerialSend5 02530000
# Volle Helligkeit einschalten (0x64 hex = 100 dezimal)
SerialSend5 02530064Hex conversion:
Dimmer 50→ 50 decimal → 0x32 hex → packet02 53 00 32. Use any hex calculator or the table in the DimmerLink UART docs.
SerialSend mit Tasmota-Regeln automatisieren
Bilden Sie Tasmota's internen Dimmer-Wert auf einen SerialSend-Befehl
ab, indem Sie Mem-Variablen und den WebCmd-Hack verwenden — oder
schreiben Sie ein Berry-Script für saubere Konvertierung auf ESP32.
Für ESP8266 ist ein einfacherer Ansatz die Verwendung fester Level
über Tasmota-Regeln:
Rule1
ON Dimmer#State<20 DO SerialSend5 02530000 ENDON
ON Dimmer#State>=20 DO SerialSend5 02530032 ENDONFür stufenlose Steuerung beliebiger Level auf ESP8266 wird der Berry-Ansatz auf ESP32 empfohlen.
Schritt 4 — Home-Assistant-Integration
Sobald Tasmota DimmerLink steuert, sieht Home Assistant das ESP-Gerät als Standard-Tasmota-Knoten über MQTT-Autodiscovery.
MQTT-Autodiscovery in Tasmota aktivieren:
SetOption19 1 # Home Assistant MQTT-Erkennung aktivierenHome Assistant erstellt automatisch eine light-Entität mit
Helligkeitssteuerung. Der HA-Helligkeitsregler (0–255) wird auf
Tasmota's Dimmer-Befehl (0–100) abgebildet, der die Berry-Regel
auslöst, die an DimmerLink schreibt.
Für manuelle HA-Konfiguration (wenn Autodiscovery deaktiviert ist):
mqtt:
light:
- name: "AC Dimmer"
command_topic: "cmnd/tasmota_dimmer/Dimmer"
brightness_command_topic: "cmnd/tasmota_dimmer/Dimmer"
brightness_scale: 100
payload_on: "100"
payload_off: "0"
state_topic: "stat/tasmota_dimmer/RESULT"
brightness_state_topic: "stat/tasmota_dimmer/RESULT"
brightness_value_template: >
{{ value_json.Dimmer | default(0) }}Häufige Fehler
| Problem | Ursache | Lösung |
|---|---|---|
| Berry nicht verfügbar auf dem Gerät | Tasmota auf ESP8266 | UART + SerialSend5-Ansatz verwenden |
Dimmer-Befehl hat keine Wirkung |
Regel nicht geladen oder Tippfehler | tasmota.add_rule-Syntax prüfen; Berry neu laden |
| DimmerLink antwortet nicht auf I2C | Falscher Modus (noch UART) | Zuerst 02 5B über UART senden |
| I2C unzuverlässig bei WiFi | Fehlende Pull-up-Widerstände | 4,7 kΩ an SDA und SCL hinzufügen |
SerialSend5 sendet falschen Level |
Hex-Umrechnungsfehler | 50% = 0x32, 75% = 0x4B, 100% = 0x64 |
| HA zeigt Dimmer, aber Level wird ignoriert | on_command_type-Abweichung |
brightness_scale: 100 in der MQTT-Light-Konfiguration verwenden |
Alternative — ESPHome statt Tasmota
Wenn der Berry-Scripting-Ansatz in Tasmota zu komplex erscheint, bietet ESPHome eine native DimmerLink-Integration in 5 Zeilen YAML und übernimmt die gesamte I2C-Kommunikation automatisch.
See: ESPHome YAML for AC Dimmer and DimmerLink
Schnell-Checkliste
Verwandte Artikel
- ESPHome alternative → ESPHome YAML for AC Dimmer and DimmerLink
- Home Assistant guide → AC Dimmer with Home Assistant and ESPHome
- DimmerLink I2C not detected → DimmerLink Not Detected: I2C vs UART Mode
- Raspberry Pi control → Raspberry Pi AC Dimmer via DimmerLink
Noch Fragen?
Ask on forum.rbdimmer.com or open a GitHub Issue.