Zum Inhalt springen

← Erweiterte Funktionen | Inhalt

Reference & Troubleshooting — DimmerLink Native Tasmota Driver

Fehlerbehebung

Gerät beim Start nicht erkannt

Symptom: Keine DLK:-Zeilen im seriellen Log. DlStatus gibt {"Command":"Unknown"} oder {"Command":"Error"} zurück.

Prüfung Lösung
I2C-Modus DimmerLink wird mit aktiviertem UART geliefert. Wechseln Sie mit dem UART-Befehl SWITCH_I2C (0x5B) in den I2C-Modus, bevor Sie an den I2C-Bus anschließen.
Physische Verkabelung Überprüfen Sie, ob SDA, SCL, GND und VCC angeschlossen sind. SDA und SCL werden direkt verbunden (nicht gekreuzt), anders als UART.
Pull-up-Widerstände Fügen Sie 4,7-kOhm-Widerstände von SDA nach 3,3 V und von SCL nach 3,3 V hinzu. Die internen Pull-ups des ESP32/ESP8266 sind unzureichend.
I2C-Pins in Tasmota Bestätigen Sie, dass GPIO-Pins als I2C SDA und I2C SCL in Configuration > Configure Module zugewiesen sind.
Einschaltzeit des Geräts Das Gerät benötigt ~2 Sekunden nach dem Einschalten für die AC-Frequenzkalibrierung. Starten Sie Tasmota neu, wenn es vor dem Gerät gestartet wurde.
USE_DIMMERLINK nicht definiert Bestätigen Sie, dass die Definition in user_config_override.h vorhanden ist und die Firmware neu gebaut wurde.
USE_I2C fehlt Fügen Sie #define USE_I2C zu user_config_override.h hinzu, wenn eine abgespeckte Umgebung erstellt wird.
Firmware-Versionskonflikt Der Treiber erfordert, dass Register 0x03 genau 0x01 zurückgibt. Andere Firmware-Versionen werden übersprungen.

Gerät erkannt, aber Befehle werden ignoriert

Symptom: DlStatus gibt Daten zurück, aber DlDim hat keinen sichtbaren Effekt.

Prüfung Lösung
READY-Zustand des Geräts Überprüfen Sie DlStatus — wenn "Ready": false, kalibriert das Gerät noch. Warten und erneut versuchen.
Fehlercode im Status Prüfen Sie das Feld LastError. 0xFE = Parameter außerhalb des Bereichs. 0xFC = EEPROM-Schreibfehler.
Thermische Abschaltung Wenn ThermalState SHUTDOWN ist, sind Ausgänge deaktiviert. Lassen Sie das Gerät abkühlen.
Lasverkabelung Bestätigen Sie, dass die Last korrekt mit dem TRIAC-Modul verbunden ist.

I2C-Fehler oder instabile Kommunikation

Symptom: Gerät erkannt, aber DlStatus zeigt veraltete Daten oder Fehler erscheinen im Log.

Prüfung Lösung
Leitungslänge Halten Sie I2C-Leitungen unter 30 cm. Längere Leitungen erfordern stärkere Pull-ups oder I2C-Puffer.
Pull-up-Wert Kürzere Leitungen mit starken Pull-ups (2,2 kOhm) verbessern die Signalintegrität. Verwenden Sie keine Werte unter 1 kOhm.
Stromversorgung Fügen Sie einen 100-nF-Entkopplungskondensator zwischen VCC und GND nahe am DimmerLink-Gerät hinzu.
Adresskonflikt Verwenden Sie I2CScan, um Geräte zu prüfen, die dieselbe Adresse teilen.
GPIO-Konflikte Platzieren Sie SDA oder SCL nicht auf GPIO-Pins, die für andere Zwecke verwendet werden (ADC, Touch, Strapping-Pins).

Kalibrierung dauert zu lange

Symptom: Gerät zeigt "Ready": false für einen längeren Zeitraum.

Prüfung Lösung
AC-Verbindung Die MCU erkennt die AC-Frequenz aus dem Netz. Wenn keine AC-Last angeschlossen ist, kann die Kalibrierung nicht abgeschlossen werden.
Frequenzerkennung Führen Sie DlStatus aus — wenn ACFreq 0 zeigt, hat das Gerät keine AC-Frequenz erkannt.
Neukalibrierung erzwingen Senden Sie DlRecalibrate, um den Kalibrierungszyklus neu zu starten.

Adressänderung schlägt fehl

Symptom: DlAddress 0x51 gibt einen Fehler zurück oder das Gerät verschwindet.

Prüfung Lösung
Verifizierungs-Timeout Der Treiber liest VERSION nach 50 ms von der neuen Adresse. Wenn das Gerät langsam ist, kann die Verifizierung fehlschlagen, obwohl die Adresse geändert wurde. Stromzyklus und Tasmota neu starten.
Konflikt an neuer Adresse Wenn ein anderes Gerät die Zieladresse belegt, treten Kollisionen auf. Scannen Sie den Bus zunächst mit I2CScan.
Gerät finden Führen Sie I2CScan aus oder starten Sie Tasmota neu (was einen erneuten Scan durchführt), um die tatsächliche aktuelle Adresse zu ermitteln.

Temperatur wird nicht angezeigt

Symptom: Keine Temperaturzeile in der Sensoranzeige. Kein Temp oder Thermal in MQTT.

Prüfung Lösung
Firmware-Funktion Die MCU-Firmware muss FEATURE_TEMPERATURE enthalten. Beim Gerätehersteller nachfragen.
Registerwert Beim Start liest der Treiber Register 0x40. Wert 0xFF bedeutet kein Sensor. Jeder andere Wert bedeutet, dass der Sensor vorhanden ist.

Build-Probleme

Symptom Lösung
Undefinierter Fehler USE_DIMMERLINK Prüfen Sie, ob user_config_override.h im Verzeichnis tasmota/ ist, nicht im Projektstamm.
Treiber nicht in der Binärdatei USE_I2C ist für die Umgebung nicht aktiviert.
Konfliktwarnung XI2C_100 Prüfen Sie I2CDEVICES.md — Slot 100 ist für DimmerLink reserviert.
Linker-Fehler bei I2cRead8 / I2cWrite8 USE_I2C fehlt.

Fehlercodes

Code Name Bedeutung
0x00 OK Kein Fehler
0xF9 ERR_SYNTAX Ungültige Registeradresse
0xFC ERR_NOT_READY EEPROM-Schreibfehler (Flash-Schreibvorgang fehlgeschlagen)
0xFD ERR_INDEX Ungültiger Dimmerkanal-Index
0xFE ERR_PARAM Parameter value out of range (level > 100, curve > 2, address outside 0x08-0x77)

Fehlercodes werden nach Schreiboperationen aus dem Geräteregister 0x02 gelesen. Der Befehl DlStatus zeigt den letzten Fehlercode an, wenn er nicht null ist, als "LastError":"0xFE". Fehlercodes werden automatisch gelöscht, wenn eine nachfolgende erfolgreiche Operation abgeschlossen wird.


I2C-Registerkarte

Adresse Register Zugriff Werte
0x00 STATUS R Bit 0 = READY, Bit 1 = ERROR
0x01 COMMAND W 0x00=NOP, 0x01=RESET, 0x02=RECALIBRATE
0x02 ERROR R 0x00=OK, 0xF9=SYNTAX, 0xFC=NOT_READY, 0xFD=INDEX, 0xFE=PARAM
0x03 VERSION R 0x01 (firmware version fingerprint)
0x10 DIM0_LEVEL R/W 0-100
0x11 DIM0_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x12 DIM1_LEVEL R/W 0-100
0x13 DIM1_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x14 DIM2_LEVEL R/W 0-100
0x15 DIM2_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x16 DIM3_LEVEL R/W 0-100
0x17 DIM3_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x18 FADE R/W 0-255 (x100ms)
0x20 AC_FREQ R 50 or 60
0x21 AC_PERIOD_L R Half-wave period low byte
0x22 AC_PERIOD_H R Half-wave period high byte
0x23 CALIBRATION R 0=busy, 1=complete
0x30 I2C_ADDRESS R/W 0x08-0x77
0x40 TEMP_CURRENT R raw-50 = Celsius; 0xFF = no sensor
0x41 TEMP_STATE R 0-5 (thermal state)

I2C-Lese-Eigenart (Dummy-Lese-Anforderung)

Die MCU-Firmware erfordert ein Dummy-Lesen vor jedem echten Lesen, um den internen Registerzeiger korrekt zu setzen. Der Treiber verarbeitet dies transparent:

c
uint8_t DL_Read8(uint8_t addr, uint8_t reg, uint8_t bus) {
    I2cRead8(addr, reg, bus);           // Dummy: sets register pointer
    return I2cRead8(addr, reg, bus);    // Real read
}

Dieses Verhalten ist eine Hardware-Anforderung der MCU und muss in jedem Code erhalten bleiben, der direkt mit dem Gerät kommuniziert.


Referenz für thermische Zustände

Zustand Registerwert Typische Temperatur Verhalten
NORMAL 0 Unter ~60 °C Voller Betrieb
WARNING 1 ~60-70 °C Nur Überwachung; keine Ausgangsänderung
DERATE 2 ~70-80 °C MCU reduziert Ausgang graduell
CRITICAL 3 ~80-85 °C MCU reduziert Ausgang aggressiv
SHUTDOWN 4 Über ~85 °C Alle Ausgänge deaktiviert
FAULT 5 N/A Temperatursensorfehler erkannt