Zum Inhalt springen

← Ü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:

c
#ifdef USE_I2C
#ifdef USE_DIMMERLINK

Beide 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:

plaintext
tasmota/user_config_override.h

Falls sie nicht existiert, erstellen Sie sie an diesem Speicherort.

Schritt 2: Define hinzufügen

c
#ifndef USE_DIMMERLINK
  #define USE_DIMMERLINK
#endif

Schritt 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.

c
// Default: 0x50 (factory default for DimmerLink)
#define USE_DIMMERLINK_ADDR  0x50

USE_DIMMERLINK_CHANNELS

Legt die Anzahl der pro erkanntem Gerät konfigurierten Kanäle fest.

c
// Default: 4 (maximum)
#define USE_DIMMERLINK_CHANNELS  4

Gültiger Bereich: 1 bis 4. Setzen Sie diesen Wert auf die tatsächliche Anzahl der physisch mit Ihrer DimmerLink-Hardware verdrahteten Lastkanäle.

c
// Example: single-channel installation
#define USE_DIMMERLINK_CHANNELS  1
// Example: two-channel installation
#define USE_DIMMERLINK_CHANNELS  2

Kompilierzeitgrenzen

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

c
// 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
#endif

I2C-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

plaintext
3.3V
           |
      4.7k | 4.7k
           |     |
MCU        |     |     DimmerLink
SDA  ------+-----+---- SDA
SCL  ------------+---- SCL
GND   ----------------  GND
3.3V  ----------------  VCC

Pull-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

bash
# ESP8266 (standard Tasmota)
pio run -e tasmota
# ESP32 (standard)
pio run -e tasmota32
# ESP32-C3
pio run -e tasmota32c3
# ESP32-S3
pio run -e tasmota32s3

Wä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:

bash
pio run -e tasmota32 2>&1 | grep -i dimmerlink

Wenn 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:

bash
# ESP8266
pio run -e tasmota --target upload
# ESP32
pio run -e tasmota32 --target upload

PlatformIO erkennt den seriellen Port automatisch. Wenn mehrere Ports verfügbar sind, geben Sie explizit an:

bash
pio run -e tasmota32 --target upload --upload-port COM3

Per OTA (Tasmota Web-UI)

Wenn das Gerät bereits Tasmota ausführt:

  1. Firmware erstellen (z. B. pio run -e tasmota32)
  2. Die Ausgabe-Binary befindet sich unter .pio/build//firmware.bin
  3. In der Tasmota Web-UI: Firmware Upgrade > Upgrade by file upload
  4. firmware.bin auswählen und Start upgrade klicken

Per esptool.py (manuell)

bash
# 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.bin

Passen 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:

plaintext
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:

plaintext
DlStatus

Ein verbundenes Gerät antwortet mit:

json
{
  "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:

plaintext
I2CScan

Web-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.