← Web, MQTT & HTTP | Inhalt | Weiter: Referenz →
Erweiterte Funktionen — Nativer DimmerLink-Treiber für Tasmota
Dimmkurven erklärt
Die Dimmkurve bestimmt, wie der Helligkeitsprozentsatz dem tatsächlichen TRIAC-Zündwinkel und damit der an die Last abgegebenen Leistung zugeordnet wird. Es stehen drei Kurven zur Verfügung, die jeweils für verschiedene Lasttypen geeignet sind.
LINEAR (Wert 0)
Der Phasenwinkel ist proportional zum angeforderten Helligkeitsniveau. Die Beziehung zwischen dem Befehlswert und der elektrischen Leistung ist linear.
Power delivered
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setAnwendungsfälle: Allzwecklasten, Widerstandsheizungen, Kollektormotoren, jede Last, bei der die elektrische Leistung direkt dem eingestellten Wert folgen soll. Geeignet als Ausgangspunkt, wenn die optimale Kurve unbekannt ist.
Nicht empfohlen für: LED-Lampen oder Glühlampen, bei denen die wahrgenommene Helligkeit wichtig ist.
RMS (Wert 1)
Der Phasenwinkel wird so eingestellt, dass die Effektivspannung (und damit die RMS-Leistung) proportional zum eingestellten Niveau ist.
Perceived brightness (incandescent)
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setAnwendungsfälle: Glühlampen und Halogenlampen. Mit der RMS-Kurve erzeugt ein Wert von 50 ungefähr die halbe wahrgenommene Helligkeit gegenüber einem Wert von 100.
Nicht empfohlen für: LED-Lampen — dimmbare LED-Treiber regeln den Strom intern, und die Beziehung zwischen Phasenwinkel und Lichtabgabe ist komplexer.
LOG (Wert 2)
Der Phasenwinkel folgt einer logarithmischen Kurve, die gleichmäßig wahrgenommene Helligkeitsstufen erzeugen soll. Das menschliche Auge reagiert logarithmisch auf Lichtintensität (Weber-Fechner-Gesetz), sodass gleiche Schritte annähernd gleiche Wahrnehmungsänderungen erzeugen.
Perceived brightness (LED)
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setAnwendungsfälle: Dimmbare LED-Lampen, Stimmungsbeleuchtung, jede Anwendung, bei der sanftes Dimmen bei niedrigen Niveaus wichtig ist. Verhindert die häufige Beschwerde, dass LEDs in einem kleinen Bereich von „kaum an" zu „sehr hell" springen.
Nicht empfohlen für: Resistive oder induktive Lasten, bei denen die Leistungsregelung (nicht die wahrgenommene Helligkeit) das Ziel ist.
Auswahl der richtigen Kurve
| Last | Empfohlene Kurve | Befehl |
|---|---|---|
| Dimmbare LED | LOG | DlCurve 2 |
| Glühlampe | RMS | DlCurve 1 |
| Halogenlampe | RMS | DlCurve 1 |
| Widerstandsheizung | LINEAR | DlCurve 0 |
| Kollektormotor (Lüfter, Mixer) | LINEAR | DlCurve 0 |
| Unbekannt | Alle drei ausprobieren | -- |
Die Kurve kann jederzeit geändert werden, ohne das aktuelle Helligkeitsniveau zu beeinflussen. Die neue Kurve gilt ab dem nächsten Helligkeitsänderungsbefehl.
Fade-Steuerung
Funktionsweise
Die Fade-Zeit steuert, wie lange die MCU-Hardware für den Übergang vom aktuellen Helligkeitsniveau zum neu befohlenen Niveau benötigt. Das Fade wird vollständig in der MCU-Firmware implementiert — sobald ein neues Niveau über I2C geschrieben wird, rampt das Gerät intern ohne weitere Interaktion mit Tasmota.
Zeitberechnung
Fade time (seconds) = value * 0.1| Wert | Fade-Zeit |
|---|---|
| 0 | Sofort (kein Fade) |
| 1 | 100 ms |
| 5 | 500 ms |
| 10 | 1,0 Sekunde |
| 20 | 2,0 Sekunden |
| 50 | 5,0 Sekunden |
| 100 | 10,0 Sekunden |
| 255 | 25,5 Sekunden (Maximum) |
Fade gilt pro Gerät, nicht pro Kanal
Alle Kanäle eines einzelnen Geräts teilen dieselbe Fade-Zeit. Um unterschiedliche Fade-Geschwindigkeiten auf verschiedenen Kanälen zu haben, müssen diese auf separaten Geräten sein.
Fade mit Web-UI-Schiebereglern verwenden
Die Fade-Einstellung beeinflusst alle Pegeländerungsbefehle, einschließlich derjenigen von Web-UI-Schiebereglern. Bei einem Fade-Wert ungleich null sendet das Bewegen des Schiebereglers ein neues Zielniveau, und das Gerät wechselt sanft dorthin. Erneutes Bewegen des Schiebereglers vor Abschluss des Fades startet einen neuen Übergang von der aktuellen Position.
Fade einstellen und abfragen
DlFade 10 # Set device 1 fade to 1.0 second
DlFade2 0 # Set device 2 fade to instant
DlFade # Query device 1 current fade valueTemperaturüberwachung
Verfügbarkeit der Funktion
Die Temperaturüberwachung ist verfügbar, wenn die MCU-Firmware mit FEATURE_TEMPERATURE kompiliert wurde. Der Treiber erkennt dies automatisch beim Start durch Lesen des Registers TEMP_CURRENT (0x40). Wenn das Register 0xFF zurückgibt, ist kein Temperatursensor vorhanden und alle Temperaturfelder werden unterdrückt.
Temperaturmessung
Die Rohtemperatur wird in Register 0x40 mit einem Offset von 50 gespeichert:
Temperature (Celsius) = register_value - 50Dies ermöglicht einen Bereich von -50 °C (Registerwert 0) bis +205 °C (Registerwert 255). Der normale Betriebsbereich liegt zwischen 20 °C und 100 °C.
Thermische Zustände
Die MCU-Firmware verwaltet den thermischen Schutz autonom. Sechs Zustände sind definiert:
| Zustand | Wert | Beschreibung | Treiber-Aktion |
|---|---|---|---|
| NORMAL | 0 | Temperatur unter Warnschwelle | Keine |
| WARNING | 1 | Temperatur über Warnschwelle | Protokollierung auf DEBUG-Ebene |
| DERATE | 2 | Aktive Ausgangsreduzierung zur Temperatursenkung | Keine — Hardware steuert Ausgang |
| CRITICAL | 3 | Aggressive Ausgangsreduzierung | Protokollierung auf ERROR-Ebene |
| SHUTDOWN | 4 | Alle Ausgänge aus Sicherheitsgründen deaktiviert | Protokollierung auf ERROR-Ebene |
| FAULT | 5 | Temperatursensorfehler | Protokollierung auf ERROR-Ebene |
Zustände CRITICAL, SHUTDOWN und FAULT lösen einen ERROR-Protokolleintrag aus:
DLK: Dev 0x50 thermal CRITICALThermischer Schutz wird hardwareseitig verwaltet
Die MCU verwaltet Drosselung und Abschaltung autonom. Tasmota kann den thermischen Schutz nicht überschreiben — wenn sich das Gerät im SHUTDOWN-Zustand befindet, hat das Schreiben eines Helligkeitswerts keinen Effekt, bis das Gerät abkühlt und den Abschaltzustand verlässt.
Überwachung via MQTT
Bei aktivierter Temperatur enthält jede SENSOR-Nachricht die aktuelle Temperatur und den Zustand:
{
"DimmerLink1": {
"Addr": "0x50",
"ACFreq": 50,
"Fade": 0,
"Ch1": {"Level": 75, "Curve": "LOG"},
"Temp": 42,
"Thermal": "NORMAL"
}
}Verwenden Sie Tasmota-Regeln oder ein externes System, um auf Änderungen des thermischen Zustands zu reagieren.
Multi-Geräte-Adressierung
Der Treiber unterstützt bis zu vier DimmerLink-Geräte auf demselben I2C-Bus (oder auf zwei Bussen verteilt). Geräte werden in der Reihenfolge, in der sie beim Boot-Scan erkannt werden — aufsteigend nach Adresse (0x08 bis 0x77) — von 1 bis 4 nummeriert.
Gerätenummerierung
| I2C-Adresse | Erkennungsreihenfolge | Gerätenummer |
|---|---|---|
| 0x50 | 1. gefunden | Gerät 1 (Suffix 1 oder kein Suffix) |
| 0x51 | 2. gefunden | Gerät 2 (Suffix 2) |
| 0x52 | 3. gefunden | Gerät 3 (Suffix 3) |
Eindeutige Adressen zuweisen
Alle DimmerLink-Geräte werden mit I2C-Adresse 0x50 geliefert. Um mehrere Geräte zu verwenden, muss jedem einzeln eine eindeutige Adresse zugewiesen werden, bevor sie zusammen angeschlossen werden.
Schritt-für-Schritt für drei Geräte:
Step 1: Connect Device A only (boots at 0x50)
Console: DlAddress 0x51
Result: Device A is now at 0x51
Step 2: Power off. Connect Device B only (boots at 0x50)
Console: DlAddress 0x52
Result: Device B is now at 0x52
Step 3: Power off. Connect Device C (keep at 0x50)
Power on all three together.
Three devices detected: 0x50, 0x51, 0x52Adressverifizierung
Der Treiber verifiziert die Adressänderung durch erneutes Lesen des VERSION-Registers von der neuen Adresse:
if (DL_ValidRead8(&ver, new_addr, DL_REG_VERSION, dev->bus) && ver == DL_FW_VERSION) {
dev->addr = new_addr;
// success
}Wenn die Verifizierung fehlschlägt, gibt der Befehl einen Fehler zurück. Das physische Gerät hat möglicherweise bereits die Adresse geändert — führen Sie DlStatus aus, um dies zu bestätigen.
Gültiger Adressbereich
Adressen müssen im Bereich 0x08 bis 0x77 (einschließlich) liegen. Reservierte Adressen 0x00-0x07 und 0x78-0x7F werden abgelehnt.
Hinweise zu I2C-Adresskonflikten
Die Standardadresse 0x50 kollidiert mit gängigen EEPROM/FRAM-Geräten (FM24CXX, AT24Cxx, 24C256, 24LC256). Der Treiber identifiziert DimmerLink-Geräte speziell anhand des Firmware-Versionsbytes in Register 0x03, sodass Nicht-DimmerLink-Geräte an Adresse 0x50 stillschweigend übersprungen werden. Um jedoch unerwünschte Bus-Transaktionen zu vermeiden, ändern Sie die DimmerLink-Adresse, wenn EEPROM-Geräte denselben Bus teilen.
0x10 to 0x4F are typically free of conflicts in standard Tasmota builds.Scanreihenfolge über Busse hinweg
Wenn zwei I2C-Busse aktiv sind, verarbeitet der Scan zuerst Bus 0 und dann Bus 1. Ein Gerät an Bus 0 mit Adresse 0x51 wird vor einem Gerät an Bus 1 mit Adresse 0x50 gefunden.
Migration vom Berry-Treiber
Wenn Sie den Berry-Treiber DimmerLink.be verwendet haben und zum nativen Treiber wechseln, beachten Sie die folgenden Unterschiede.
Was sich ändert
| Aspekt | Berry-Treiber | Nativer Treiber |
|---|---|---|
| Befehlspräfix | DimmerLink, DimmerLink_Kitchen usw. |
Dl |
| Geräteauswahl | Nach Bezeichnung (Name) | Nach Erkennungsreihenfolge (Zahlensuffix) |
| Kanaladressierung | Abschließende Ziffer: DimmerLink_Kitchen2 |
ch,level-Syntax: DlDim 2,50 |
| Kurvenbefehl | DimmerLink_KitchenCurve 2 |
DlCurve 2 |
| Fade-Befehl | DimmerLink_KitchenFade 10 |
DlFade 10 |
| Virtuelles Relais | Ja — Power |
Nicht vorhanden |
| Voreinstellungen | DimmerLinkPreset night |
Nicht vorhanden |
| Bus-Scanner | DimmerLink.scan() in der Berry-Konsole |
Nicht vorhanden; I2CScan verwenden |
| Benannte Instanzen | Ja — Bezeichnungen in dimmerlink.json |
Nicht vorhanden — Geräte nummeriert |
| Konfiguration | /dimmerlink.json im Dateisystem |
user_config_override.h zur Kompilierzeit |
| MQTT-Telemetrieschlüssel | Gerätebezeichnung (z. B. "Kitchen") |
DimmerLink1, DimmerLink2 usw. |
Migrationsschritte
- Firmware flashen, die
USE_DIMMERLINKenthält. - Berry-Treiberdateien entfernen aus dem Dateisystem (
DimmerLink.be,dimmerlink_loader.be) oder die Zeileload('dimmerlink_loader.be')ausautoexec.beentfernen. Der Berry-Treiber und der native Treiber können koexistieren, reagieren aber beide auf dasselbe Gerät und erzeugen doppelte Telemetriedaten. - MQTT-Automatisierungen aktualisieren —
DimmerLink_-Befehlsnamen durchDlDim,DlCurve,DlFadeersetzen. - MQTT-Abonnements aktualisieren — benannte Geräteschlüssel (z. B.
"Kitchen") durch nummerierte Schlüssel ("DimmerLink1","DimmerLink2") ersetzen. - HTTP-API-Aufrufe aktualisieren —
DimmerLink_Kitchen%2075durchDlDim%2075(oderDlDim2%2075für das zweite Gerät) ersetzen. - Virtuelle Relais — wenn Sie
Powerzum Umschalten von Geräten verwendet haben, implementieren Sie die entsprechende Logik mit Tasmota-Regeln undDlDim-Befehlen. - Voreinstellungen — wenn Sie
DimmerLinkPresetverwendet haben, erstellen Sie entsprechende Tasmota-Regeln oder Berry-Skripte, dieDlDim-Befehle ausgeben.