← Übersicht nativer Treiber | Inhalt | Weiter: Befehle →
Build & Flash — DimmerLink Native Tasmota Driver
Voraussetzungen
Software
| Anforderung | Details |
|---|---|
| PlatformIO | IDE oder CLI. Installation von https://platformio.org oder als VS Code-Erweiterung |
| Tasmota-Quellcode | Klonen von https://github.com/arendst/Tasmota oder eigenen Fork verwenden |
| Python 3 | Vom PlatformIO-Build-System benötigt |
| Git | Zum Klonen und Verwalten von Quellcode |
Hardware
| Anforderung | Details |
|---|---|
| ESP32- oder ESP8266-Platine | Beliebige ESP32-Variante (tasmota32, tasmota32c3, tasmota32s3 usw.) oder ESP8266 (tasmota, tasmota-sensors usw.) |
| DimmerLink-Gerät | MCU TRIAC-Dimmer-Controller mit aktivierter I2C-Schnittstelle |
| I2C-Verkabelung | SDA, SCL, GND, VCC Verbindungen mit geeigneten Pull-up-Widerständen |
| USB-Kabel | Zum Flashen (oder OTA-Update-Fähigkeit beim erneuten Flashen) |
DimmerLink I2C-Modus
Das DimmerLink-Gerät wird standardmäßig mit aktivierter UART-Schnittstelle geliefert. Vor dem Anschluss an den I2C-Bus von Tasmota muss das Gerät mit dem UART-Befehl SWITCH_I2C (0x5B) in den I2C-Modus gewechselt werden. Weitere Informationen zu diesem Vorgang finden Sie in der DimmerLink-Hardware-Dokumentation . Nach dem Wechsel startet das Gerät im I2C-Modus und die Änderung wird im internen Flash des Geräts gespeichert.
Treiber aktivieren
Der Treiber wird durch zwei Präprozessor-Guards geschützt:
#ifdef USE_I2C
#ifdef USE_DIMMERLINKBeide müssen aktiv sein. USE_I2C ist in der Standardkonfiguration Ihrer Platine typischerweise aktiviert. USE_DIMMERLINK muss explizit hinzugefügt werden.
Schritt 1: user_config_override.h erstellen oder öffnen
Diese Datei befindet sich unter:
tasmota/user_config_override.hFalls sie nicht existiert, erstellen Sie sie an diesem Speicherort.
Schritt 2: Define hinzufügen
#ifndef USE_DIMMERLINK
#define USE_DIMMERLINK
#endifSchritt 3: I2C-Aktivierung bestätigen
Stellen Sie sicher, dass USE_I2C in Ihrer Zielumgebung definiert ist. Für tasmota32 (ESP32) und tasmota (ESP8266) ist dies standardmäßig aktiviert. Wenn Sie eine abgespeckte Umgebung erstellen (z. B. tasmota-lite), überprüfen Sie in tasmota/tasmota_configurations.h, ob USE_I2C vorhanden ist.
Treiber-Registrierung
Sobald beide Defines aktiv sind, registriert sich der Treiber über die Funktion Xdrv94 selbst in der Dispatch-Tabelle von Tasmota und belegt I2C-Slot XI2C_100 (Geräte-ID 100). Keine weiteren Änderungen auf Quellcodeebene sind erforderlich.
Konfigurationsoptionen
Zwei optionale Defines steuern das Laufzeitverhalten. Platzieren Sie sie in user_config_override.h.
USE_DIMMERLINK_ADDR
Legt die erwartete Start-Scan-Adresse für I2C fest. Der Treiber scannt dennoch den vollständigen gültigen I2C-Adressbereich (0x08 bis 0x77) und identifiziert Geräte durch Auslesen des VERSION-Registers. Der Standardwert dient Dokumentationszwecken.
// Default: 0x50 (factory default for DimmerLink)
#define USE_DIMMERLINK_ADDR 0x50USE_DIMMERLINK_CHANNELS
Legt die Anzahl der pro erkanntem Gerät konfigurierten Kanäle fest.
// Default: 4 (maximum)
#define USE_DIMMERLINK_CHANNELS 4Gültiger Bereich: 1 bis 4. Setzen Sie diesen Wert auf die tatsächliche Anzahl der physisch mit Ihrer DimmerLink-Hardware verdrahteten Lastkanäle.
// Example: single-channel installation
#define USE_DIMMERLINK_CHANNELS 1
// Example: two-channel installation
#define USE_DIMMERLINK_CHANNELS 2Kompilierzeitgrenzen
Diese sind im Quellcode festgelegt und können nicht über user_config_override.h geändert werden:
| Konstante | Wert | Bedeutung |
|---|---|---|
DL_MAX_DEVICES |
4 | Maximale gleichzeitig erkannte Geräte |
DL_MAX_CHANNELS |
4 | Maximale Kanäle pro Gerät |
DL_FW_VERSION |
0x01 | Erforderlicher Firmware-Versions-Fingerabdruck |
Vollständiges user_config_override.h-Beispiel
// user_config_override.h — DimmerLink native driver configuration
// Enable DimmerLink native I2C driver (requires USE_I2C)
#ifndef USE_DIMMERLINK
#define USE_DIMMERLINK
#endif
// Default I2C address (informational — driver scans full bus range)
#ifndef USE_DIMMERLINK_ADDR
#define USE_DIMMERLINK_ADDR 0x50
#endif
// Number of channels per device (1-4)
// Set to match the physical wiring of your DimmerLink hardware
#ifndef USE_DIMMERLINK_CHANNELS
#define USE_DIMMERLINK_CHANNELS 4
#endifI2C-Hardware-Verkabelung
Pin-Verbindungen
ESP32-Standard-Pins:
| DimmerLink-Pin | ESP32-Pin | Hinweise |
|---|---|---|
| VCC | 3.3V | DimmerLink akzeptiert 1,8V, 3,3V oder 5V — kein Pegelwandler erforderlich |
| GND | GND | Gemeinsame Masse |
| SDA | GPIO21 (Standard) | Beliebiger als I2C SDA in Tasmota konfigurierter GPIO |
| SCL | GPIO22 (Standard) | Beliebiger als I2C SCL in Tasmota konfigurierter GPIO |
ESP8266-Standard-Pins:
| DimmerLink-Pin | ESP8266-Pin | Hinweise |
|---|---|---|
| VCC | 3.3V | Gleich wie ESP32 |
| GND | GND | Gemeinsame Masse |
| SDA | GPIO4 (D2) | Standard-I2C SDA auf den meisten ESP8266-Platinen |
| SCL | GPIO5 (D1) | Standard-I2C SCL auf den meisten ESP8266-Platinen |
Auf beiden Plattformen können I2C-Pins über die Modulkonfiguration (Configuration > Configure Module) neu zugewiesen werden.
Schaltplan
3.3V
|
4.7k | 4.7k
| |
MCU | | DimmerLink
SDA ------+-----+---- SDA
SCL ------------+---- SCL
GND ---------------- GND
3.3V ---------------- VCCPull-up-Widerstände
Externe Pull-ups sind erforderlich. Sowohl ESP32 als auch ESP8266 haben schwache interne Pull-ups (~45 kOhm), die für I2C unzureichend sind.
| Leitungslänge | Empfohlener Pull-up-Wert |
|---|---|
| Unter 10 cm | 4,7 kOhm |
| 10 bis 30 cm | 2,2 bis 4,7 kOhm |
| Über 30 cm | 1 bis 2,2 kOhm (nicht empfohlen; kürzere Leitungen verwenden) |
Platzieren Sie die Widerstände zwischen den SDA/SCL-Leitungen und 3,3V. Ein Widerstandspaar dient dem gesamten Bus — fügen Sie keine Pull-ups pro Gerät hinzu, wenn mehrere Geräte denselben Bus teilen.
Spannungspegel
DimmerLink akzeptiert VCC von 1,8V bis 5V und seine Logikpegel entsprechen VCC. Bei 3,3V (Standard-ESP32/ESP8266-Pegel) ist kein Pegelwandler erforderlich.
I2C-Bus-Geschwindigkeit
Das DimmerLink-Gerät arbeitet mit 100 kHz (Standard-Modus). Die Standard-I2C-Geschwindigkeit von Tasmota ist geeignet. Konfigurieren Sie den I2C-Bus für dieses Gerät nicht über 100 kHz.
Zweiter I2C-Bus (ESP32)
Tasmota unterstützt zwei I2C-Busse auf ESP32, ESP8266, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 und ESP32-S3. Der Treiber scannt beide Busse automatisch. Wenn Sie andere I2C-Geräte auf Bus 1 haben und DimmerLink auf Bus 2 isolieren möchten, konfigurieren Sie das zweite SDA/SCL-Paar in der Modulkonfiguration von Tasmota und schließen Sie DimmerLink dort an. Keine treiberseitige Änderung ist erforderlich.
Erstellen mit PlatformIO
Build-Befehl
# ESP8266 (standard Tasmota)
pio run -e tasmota
# ESP32 (standard)
pio run -e tasmota32
# ESP32-C3
pio run -e tasmota32c3
# ESP32-S3
pio run -e tasmota32s3Wählen Sie Ihre Zielumgebung in platformio_override.ini unter default_envs.
Treiber-Kompilierung bestätigen
Nach einem erfolgreichen Build überprüfen Sie, ob der Treiber enthalten ist:
pio run -e tasmota32 2>&1 | grep -i dimmerlinkWenn der Treiber kompiliert wurde, sehen Sie Verweise auf Xdrv94- oder DimmerLink-Symbole in der Ausgabe. Wenn nichts erscheint, überprüfen Sie erneut, ob USE_DIMMERLINK definiert und USE_I2C für die gewählte Umgebung aktiv ist.
Speicherbedarf
| Ressource | Nutzung |
|---|---|
| RAM (Heap) | ~40 Byte pro Gerät; unter 250 Byte für 4 Geräte mit 4 Kanälen |
| Flash (Code) | ~4 bis 6 KB je nach Build-Konfiguration |
Firmware flashen
Per PlatformIO (USB)
Verbinden Sie die Platine per USB und führen Sie aus:
# ESP8266
pio run -e tasmota --target upload
# ESP32
pio run -e tasmota32 --target uploadPlatformIO erkennt den seriellen Port automatisch. Wenn mehrere Ports verfügbar sind, geben Sie explizit an:
pio run -e tasmota32 --target upload --upload-port COM3Per OTA (Tasmota Web-UI)
Wenn das Gerät bereits Tasmota ausführt:
- Firmware erstellen (z. B.
pio run -e tasmota32) - Die Ausgabe-Binary befindet sich unter
.pio/build//firmware.bin - In der Tasmota Web-UI: Firmware Upgrade > Upgrade by file upload
firmware.binauswählen und Start upgrade klicken
Per esptool.py (manuell)
# ESP32
esptool.py --chip esp32 --port COM3 --baud 921600 \
write_flash -z 0x0 .pio/build/tasmota32/firmware.bin
# ESP8266
esptool.py --chip esp8266 --port COM3 --baud 921600 \
write_flash -z 0x0 .pio/build/tasmota/firmware.binPassen Sie --chip, --port und den Firmware-Pfad für Ihre Umgebung an.
Überprüfung
Serieller Protokollausgang
Verbinden Sie ein serielles Terminal (115200 Baud, 8N1) und beobachten Sie das Boot-Protokoll. Eine erfolgreiche Erkennung erzeugt:
DLK: DimmerLink v1 at 0x50 bus1 (4ch, 50Hz, READY)Wenn keine DimmerLink-Geräte gefunden werden, erscheinen keine DLK:-Zeilen im Boot-Protokoll.
Konsolen-Überprüfung
Nach dem Start das Gerät abfragen:
DlStatusEin verbundenes Gerät antwortet mit:
{
"DimmerLink1": {
"Addr": "0x50",
"Bus": 1,
"Ready": true,
"FW": 1,
"ACFreq": 50,
"Fade": 0,
"Ch1": {"Level": 0, "Curve": "LINEAR"},
"Ch2": {"Level": 0, "Curve": "LINEAR"},
"Ch3": {"Level": 0, "Curve": "LINEAR"},
"Ch4": {"Level": 0, "Curve": "LINEAR"}
}
}Wenn der Befehl {"Command":"Unknown"} zurückgibt, ist der Treiber nicht kompiliert.
I2C-Scan
Der eingebaute I2C-Scan-Befehl von Tasmota bestätigt, dass das Gerät am Bus vorhanden ist:
I2CScanWeb-UI-Bestätigung
Navigieren Sie zu http://. Wenn DimmerLink erkannt wurde, zeigt die Seite Helligkeits-Schieberegler und Sensordaten-Zeilen. Das Fehlen von Schiebereglern zeigt an, dass kein Gerät erkannt wurde.