← Web, MQTT & HTTP | Sommario | Avanti: Riferimento →
Funzionalità avanzate — Driver nativo DimmerLink per Tasmota
Curve di attenuazione spiegate
La curva di attenuazione determina come la percentuale di luminosità viene mappata all'angolo di innesco effettivo del TRIAC e quindi alla potenza erogata al carico. Sono disponibili tre curve, ciascuna adatta a diversi tipi di carico.
LINEAR (valore 0)
L'angolo di fase è proporzionale al livello di luminosità richiesto. La relazione tra il valore del comando e la potenza elettrica è lineare.
Power delivered
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setCasi d'uso: Carichi per uso generale, riscaldatori resistivi, motori a spazzole, qualsiasi carico in cui la potenza elettrica deve seguire direttamente il valore impostato. Adatto come punto di partenza quando la curva ottimale è sconosciuta.
Non raccomandato per: Lampadine LED o lampadine a incandescenza dove la luminosità percepita è importante.
RMS (valore 1)
L'angolo di fase viene regolato in modo che la tensione RMS (e quindi la potenza RMS) sia proporzionale al livello impostato.
Perceived brightness (incandescent)
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setCasi d'uso: Lampadine a incandescenza e lampade alogene. Con la curva RMS, un'impostazione di 50 produce circa la metà della luminosità percepita rispetto a 100.
Non raccomandato per: Lampadine LED — i driver LED dimmerabili regolano la corrente internamente e la relazione tra angolo di fase e uscita luminosa è più complessa.
LOG (valore 2)
L'angolo di fase segue una curva logaritmica progettata per produrre gradini di luminosità percettivamente uniformi. L'occhio umano risponde logaritmicamente all'intensità della luce (legge di Weber-Fechner), quindi incrementi uguali producono variazioni percettive approssimativamente uguali.
Perceived brightness (LED)
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setCasi d'uso: Lampadine LED dimmerabili, illuminazione d'atmosfera, qualsiasi applicazione in cui la regolazione graduale a bassi livelli è importante. Evita il problema comune che i LED passino da "appena accesi" a "molto luminosi" in un piccolo intervallo.
Non raccomandato per: Carichi resistivi o induttivi dove il tracciamento della potenza (non la luminosità percepita) è l'obiettivo.
Selezione della curva corretta
| Carico | Curva raccomandata | Comando |
|---|---|---|
| LED dimmerabile | LOG | DlCurve 2 |
| Lampadina a incandescenza | RMS | DlCurve 1 |
| Lampada alogena | RMS | DlCurve 1 |
| Riscaldatore resistivo | LINEAR | DlCurve 0 |
| Motore a spazzole (ventilatore, mixer) | LINEAR | DlCurve 0 |
| Sconosciuto | Provare tutte e tre | -- |
La curva può essere modificata in qualsiasi momento senza influire sul livello di luminosità corrente. La nuova curva si applica a partire dal successivo comando di cambio luminosità.
Controllo dissolvenza (Fade)
Come funziona la dissolvenza
Il tempo di dissolvenza controlla quanto tempo impiega l'hardware MCU per passare dal livello di luminosità corrente a un livello appena comandato. La dissolvenza è implementata interamente nel firmware MCU — una volta scritto un nuovo livello tramite I2C, il dispositivo sale gradualmente internamente senza ulteriore interazione con Tasmota.
Calcolo del tempo
Fade time (seconds) = value * 0.1| Valore | Tempo di dissolvenza |
|---|---|
| 0 | Istantaneo (senza dissolvenza) |
| 1 | 100 ms |
| 5 | 500 ms |
| 10 | 1,0 secondo |
| 20 | 2,0 secondi |
| 50 | 5,0 secondi |
| 100 | 10,0 secondi |
| 255 | 25,5 secondi (massimo) |
La dissolvenza è per dispositivo, non per canale
Tutti i canali di un singolo dispositivo condividono lo stesso tempo di dissolvenza. Per avere velocità di dissolvenza diverse su canali diversi, devono essere su dispositivi separati.
Utilizzo della dissolvenza con i cursori dell'interfaccia web
L'impostazione della dissolvenza influisce su tutti i comandi di cambio livello, inclusi quelli dai cursori dell'interfaccia web. Con un valore di dissolvenza diverso da zero, spostare il cursore invia un nuovo livello target e il dispositivo effettua la transizione in modo fluido. Spostare nuovamente il cursore prima che la dissolvenza sia completata avvia una nuova transizione dalla posizione corrente.
Impostare e interrogare la dissolvenza
DlFade 10 # Set device 1 fade to 1.0 second
DlFade2 0 # Set device 2 fade to instant
DlFade # Query device 1 current fade valueMonitoraggio della temperatura
Disponibilità della funzione
Il monitoraggio della temperatura è disponibile quando il firmware MCU viene compilato con FEATURE_TEMPERATURE. Il driver lo rileva automaticamente all'avvio leggendo il registro TEMP_CURRENT (0x40). Se il registro restituisce 0xFF, la temperatura non è disponibile e tutti i campi della temperatura vengono soppressi.
Lettura della temperatura
La temperatura grezza è memorizzata nel registro 0x40 con un offset di 50:
Temperature (Celsius) = register_value - 50Questo consente un intervallo da -50 °C (valore di registro 0) a +205 °C (valore di registro 255). L'intervallo di funzionamento normale è da 20 °C a 100 °C.
Stati termici
Il firmware MCU gestisce la protezione termica in modo autonomo. Sono definiti sei stati:
| Stato | Valore | Descrizione | Azione del driver |
|---|---|---|---|
| NORMAL | 0 | Temperatura al di sotto della soglia di avviso | Nessuna |
| WARNING | 1 | Temperatura al di sopra della soglia di avviso | Registrato al livello DEBUG |
| DERATE | 2 | Riduzione attiva dell'uscita per abbassare la temperatura | Nessuna — l'hardware gestisce l'uscita |
| CRITICAL | 3 | Riduzione aggressiva dell'uscita | Registrato al livello ERROR |
| SHUTDOWN | 4 | Tutte le uscite disabilitate per sicurezza | Registrato al livello ERROR |
| FAULT | 5 | Guasto del sensore di temperatura | Registrato al livello ERROR |
Gli stati CRITICAL, SHUTDOWN e FAULT attivano una voce di registro a livello ERROR:
DLK: Dev 0x50 thermal CRITICALLa protezione termica è gestita dall'hardware
L'MCU gestisce la riduzione e lo spegnimento in modo autonomo. Tasmota non può ignorare la protezione termica — se il dispositivo è nello stato SHUTDOWN, la scrittura di un valore di luminosità non ha effetto finché il dispositivo non si raffredda e non esce dallo spegnimento.
Monitoraggio via MQTT
Con la temperatura abilitata, ogni messaggio SENSOR include la temperatura corrente e lo stato:
{
"DimmerLink1": {
"Addr": "0x50",
"ACFreq": 50,
"Fade": 0,
"Ch1": {"Level": 75, "Curve": "LOG"},
"Temp": 42,
"Thermal": "NORMAL"
}
}Utilizzare le regole di Tasmota o un sistema esterno per rispondere ai cambiamenti di stato termico.
Indirizzamento multi-dispositivo
Il driver supporta fino a quattro dispositivi DimmerLink sullo stesso bus I2C (o distribuiti su due bus). I dispositivi sono numerati da 1 a 4 nell'ordine rilevato durante la scansione all'avvio — in ordine crescente per indirizzo (da 0x08 a 0x77).
Numerazione dei dispositivi
| Indirizzo I2C | Ordine di rilevamento | Numero dispositivo |
|---|---|---|
| 0x50 | 1° trovato | Dispositivo 1 (suffisso 1 o nessun suffisso) |
| 0x51 | 2° trovato | Dispositivo 2 (suffisso 2) |
| 0x52 | 3° trovato | Dispositivo 3 (suffisso 3) |
Assegnazione di indirizzi univoci
Tutti i dispositivi DimmerLink vengono forniti con indirizzo I2C 0x50. Per utilizzare più dispositivi, a ciascuno deve essere assegnato un indirizzo univoco uno alla volta prima di collegarli insieme.
Passo dopo passo per tre dispositivi:
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, 0x52Verifica dell'indirizzo
Il driver verifica il cambio di indirizzo rileggendo il registro VERSION dal nuovo indirizzo:
if (DL_ValidRead8(&ver, new_addr, DL_REG_VERSION, dev->bus) && ver == DL_FW_VERSION) {
dev->addr = new_addr;
// success
}Se la verifica fallisce, il comando restituisce un errore. Il dispositivo fisico potrebbe aver già cambiato indirizzo — eseguire DlStatus per confermare.
Intervallo di indirizzi valido
Gli indirizzi devono essere nell'intervallo da 0x08 a 0x77 (inclusi). Gli indirizzi riservati 0x00-0x07 e 0x78-0x7F vengono rifiutati.
Note sui conflitti di indirizzi I2C
L'indirizzo predefinito 0x50 è in conflitto con i comuni dispositivi EEPROM/FRAM (FM24CXX, AT24Cxx, 24C256, 24LC256). Il driver identifica i dispositivi DimmerLink specificamente tramite il byte della versione del firmware nel registro 0x03, quindi i dispositivi non-DimmerLink all'indirizzo 0x50 vengono ignorati silenziosamente. Tuttavia, per evitare transazioni di bus indesiderate, cambiare l'indirizzo di DimmerLink se i dispositivi EEPROM condividono il bus.
0x10 to 0x4F are typically free of conflicts in standard Tasmota builds.Ordine di scansione tra i bus
Se sono attivi due bus I2C, la scansione elabora prima il bus 0 e poi il bus 1. Un dispositivo sul bus 0 all'indirizzo 0x51 verrà trovato prima di un dispositivo sul bus 1 all'indirizzo 0x50.
Migrazione dal driver Berry
Se si stava utilizzando il driver Berry DimmerLink.be e si passa al driver nativo, tenere conto delle seguenti differenze.
Cosa cambia
| Aspetto | Driver Berry | Driver nativo |
|---|---|---|
| Prefisso del comando | DimmerLink, DimmerLink_Kitchen, ecc. |
Dl |
| Selezione del dispositivo | Per etichetta (nome) | Per ordine di rilevamento (suffisso numerico) |
| Indirizzamento dei canali | Cifra finale: DimmerLink_Kitchen2 |
Sintassi ch,level: DlDim 2,50 |
| Comando curva | DimmerLink_KitchenCurve 2 |
DlCurve 2 |
| Comando dissolvenza | DimmerLink_KitchenFade 10 |
DlFade 10 |
| Relè virtuale | Sì — Power |
Non fornito |
| Preimpostazioni | DimmerLinkPreset night |
Non fornito |
| Scanner bus | DimmerLink.scan() nella console Berry |
Non fornito; usare I2CScan |
| Istanze con nome | Sì — etichette in dimmerlink.json |
Non fornito — dispositivi numerati |
| Configurazione | /dimmerlink.json nel filesystem |
user_config_override.h in fase di compilazione |
| Chiave telemetria MQTT | Etichetta dispositivo (es. "Kitchen") |
DimmerLink1, DimmerLink2, ecc. |
Passaggi di migrazione
- Flashare il nuovo firmware che include
USE_DIMMERLINK. - Rimuovere i file del driver Berry dal filesystem (
DimmerLink.be,dimmerlink_loader.be) o rimuovere la rigaload('dimmerlink_loader.be')daautoexec.be. Il driver Berry e il driver nativo possono coesistere ma risponderanno entrambi allo stesso dispositivo e genereranno telemetria duplicata. - Aggiornare le automazioni MQTT — sostituire i nomi dei comandi
DimmerLink_conDlDim,DlCurve,DlFade. - Aggiornare le sottoscrizioni MQTT — sostituire le chiavi dei dispositivi con nome (es.
"Kitchen") con chiavi numerate ("DimmerLink1","DimmerLink2"). - Aggiornare le chiamate HTTP API — sostituire
DimmerLink_Kitchen%2075conDlDim%2075(oDlDim2%2075per il secondo dispositivo). - Relè virtuali — se si faceva affidamento su
Powerper attivare/disattivare i dispositivi, implementare la logica equivalente usando le regole Tasmota e i comandiDlDim. - Preimpostazioni — se si utilizzava
DimmerLinkPreset, creare regole Tasmota equivalenti o script Berry che emettono comandiDlDim.