← Panoramica del driver nativo | Sommario | Successivo: Comandi →
Build & Flash — DimmerLink Native Tasmota Driver
Prerequisiti
Software
| Requisito | Dettagli |
|---|---|
| PlatformIO | IDE o CLI. Installare da https://platformio.org o come estensione VS Code |
| Codice sorgente Tasmota | Clonare da https://github.com/arendst/Tasmota o usare il proprio fork |
| Python 3 | Richiesto dal sistema di compilazione PlatformIO |
| Git | Per clonare e gestire il codice sorgente |
Hardware
| Requisito | Dettagli |
|---|---|
| Scheda ESP32 o ESP8266 | Qualsiasi variante ESP32 (tasmota32, tasmota32c3, tasmota32s3, ecc.) o ESP8266 (tasmota, tasmota-sensors, ecc.) |
| Dispositivo DimmerLink | Controller dimmer MCU TRIAC con interfaccia I2C abilitata |
| Cablaggio I2C | Connessioni SDA, SCL, GND, VCC con resistenze di pull-up appropriate |
| Cavo USB | Per il flash (o capacità di aggiornamento OTA se si esegue il re-flash) |
Modalità I2C di DimmerLink
Il dispositivo DimmerLink viene fornito con l'interfaccia UART abilitata per impostazione predefinita. Prima di connetterlo al bus I2C di Tasmota, il dispositivo deve essere commutato in modalità I2C utilizzando il comando UART SWITCH_I2C (0x5B). Fare riferimento alla documentazione hardware di DimmerLink per questa procedura. Dopo la commutazione, il dispositivo si avvia in modalità I2C e la modifica viene salvata nella memoria flash interna del dispositivo.
Abilitazione del driver
Il driver è protetto da due guardie del preprocessore:
#ifdef USE_I2C
#ifdef USE_DIMMERLINKEntrambe devono essere attive. USE_I2C è tipicamente abilitato nella configurazione predefinita della scheda. USE_DIMMERLINK deve essere aggiunto esplicitamente.
Passo 1: Creare o aprire user_config_override.h
Questo file si trova in:
tasmota/user_config_override.hSe non esiste, crearlo in quella posizione.
Passo 2: Aggiungere la definizione
#ifndef USE_DIMMERLINK
#define USE_DIMMERLINK
#endifPasso 3: Confermare che I2C è abilitato
Verificare che USE_I2C sia definito nell'ambiente di destinazione. Per tasmota32 (ESP32) e tasmota (ESP8266) è abilitato per impostazione predefinita. Se si sta compilando un ambiente ridotto (es. tasmota-lite), verificare in tasmota/tasmota_configurations.h che USE_I2C sia presente.
Registrazione del driver
Una volta che entrambe le definizioni sono attive, il driver si auto-registra nella tabella di dispatch di Tasmota tramite la funzione Xdrv94 e occupa lo slot I2C XI2C_100 (ID dispositivo 100). Non sono necessarie altre modifiche a livello del codice sorgente.
Opzioni di configurazione
Due definizioni opzionali controllano il comportamento in fase di esecuzione. Inserirle in user_config_override.h.
USE_DIMMERLINK_ADDR
Imposta l'aspettativa dell'indirizzo di partenza per la scansione I2C. Il driver esegue comunque la scansione dell'intero intervallo di indirizzi I2C validi (da 0x08 a 0x77) e identifica i dispositivi leggendo il registro VERSION. Il valore predefinito è fornito a scopo documentale.
// Default: 0x50 (factory default for DimmerLink)
#define USE_DIMMERLINK_ADDR 0x50USE_DIMMERLINK_CHANNELS
Imposta il numero di canali configurati per dispositivo rilevato.
// Default: 4 (maximum)
#define USE_DIMMERLINK_CHANNELS 4Intervallo valido: da 1 a 4. Impostare sul numero effettivo di canali di carico fisicamente collegati all'hardware DimmerLink.
// Example: single-channel installation
#define USE_DIMMERLINK_CHANNELS 1
// Example: two-channel installation
#define USE_DIMMERLINK_CHANNELS 2Limiti in fase di compilazione
Questi sono fissi nel codice sorgente e non possono essere modificati tramite user_config_override.h:
| Costante | Valore | Significato |
|---|---|---|
DL_MAX_DEVICES |
4 | Numero massimo di dispositivi rilevati simultaneamente |
DL_MAX_CHANNELS |
4 | Numero massimo di canali per dispositivo |
DL_FW_VERSION |
0x01 | Impronta della versione firmware richiesta |
Esempio completo di user_config_override.h
// 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
#endifCablaggio hardware I2C
Connessioni dei pin
Pin predefiniti ESP32:
| Pin DimmerLink | Pin ESP32 | Note |
|---|---|---|
| VCC | 3.3V | DimmerLink accetta 1,8V, 3,3V o 5V — nessun convertitore di livello necessario |
| GND | GND | Massa comune |
| SDA | GPIO21 (predefinito) | Qualsiasi GPIO configurato come I2C SDA in Tasmota |
| SCL | GPIO22 (predefinito) | Qualsiasi GPIO configurato come I2C SCL in Tasmota |
Pin predefiniti ESP8266:
| Pin DimmerLink | Pin ESP8266 | Note |
|---|---|---|
| VCC | 3.3V | Uguale a ESP32 |
| GND | GND | Massa comune |
| SDA | GPIO4 (D2) | I2C SDA predefinito sulla maggior parte delle schede ESP8266 |
| SCL | GPIO5 (D1) | I2C SCL predefinito sulla maggior parte delle schede ESP8266 |
Su entrambe le piattaforme, i pin I2C possono essere rimappati tramite la configurazione del modulo (Configuration > Configure Module).
Schema
3.3V
|
4.7k | 4.7k
| |
MCU | | DimmerLink
SDA ------+-----+---- SDA
SCL ------------+---- SCL
GND ---------------- GND
3.3V ---------------- VCCResistenze di pull-up
Le resistenze di pull-up esterne sono obbligatorie. Sia ESP32 che ESP8266 hanno deboli resistenze di pull-up interne (~45 kOhm) insufficienti per I2C.
| Lunghezza del cavo | Valore di pull-up consigliato |
|---|---|
| Meno di 10 cm | 4,7 kOhm |
| Da 10 a 30 cm | da 2,2 a 4,7 kOhm |
| Oltre 30 cm | da 1 a 2,2 kOhm (non consigliato; usare cavi più corti) |
Posizionare le resistenze tra le linee SDA/SCL e 3,3V. Una coppia di resistenze serve l'intero bus — non aggiungere pull-up per dispositivo quando più dispositivi condividono lo stesso bus.
Livelli di tensione
DimmerLink accetta VCC da 1,8V a 5V e i suoi livelli logici corrispondono a VCC. A 3,3V (livello standard ESP32/ESP8266) non è necessario alcun convertitore di livello.
Velocità del bus I2C
Il dispositivo DimmerLink opera a 100 kHz (modalità standard). La velocità I2C predefinita di Tasmota è adeguata. Non configurare il bus I2C al di sopra di 100 kHz per questo dispositivo.
Secondo bus I2C (ESP32)
Tasmota supporta due bus I2C su ESP32, ESP8266, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 e ESP32-S3. Il driver scansiona entrambi i bus automaticamente. Se si hanno altri dispositivi I2C sul Bus 1 e si desidera isolare DimmerLink sul Bus 2, configurare la seconda coppia SDA/SCL nella configurazione del modulo di Tasmota e collegare DimmerLink lì. Non è necessaria alcuna modifica lato driver.
Compilazione con PlatformIO
Comando di compilazione
# ESP8266 (standard Tasmota)
pio run -e tasmota
# ESP32 (standard)
pio run -e tasmota32
# ESP32-C3
pio run -e tasmota32c3
# ESP32-S3
pio run -e tasmota32s3Selezionare l'ambiente di destinazione in platformio_override.ini sotto default_envs.
Confermare che il driver è compilato
Dopo una compilazione riuscita, verificare che il driver sia incluso:
pio run -e tasmota32 2>&1 | grep -i dimmerlinkSe il driver è compilato, si vedranno riferimenti ai simboli Xdrv94 o DimmerLink nell'output. Se non appare nulla, verificare nuovamente che USE_DIMMERLINK sia definito e che USE_I2C sia attivo per l'ambiente selezionato.
Impatto sulla memoria
| Risorsa | Utilizzo |
|---|---|
| RAM (heap) | ~40 byte per dispositivo; meno di 250 byte per 4 dispositivi con 4 canali |
| Flash (codice) | ~4–6 KB a seconda della configurazione di compilazione |
Flash del firmware
Via PlatformIO (USB)
Collegare la scheda tramite USB ed eseguire:
# ESP8266
pio run -e tasmota --target upload
# ESP32
pio run -e tasmota32 --target uploadPlatformIO rileva automaticamente la porta seriale. Se sono disponibili più porte, specificare esplicitamente:
pio run -e tasmota32 --target upload --upload-port COM3Via OTA (interfaccia web di Tasmota)
Se il dispositivo esegue già Tasmota:
- Compilare il firmware (es.
pio run -e tasmota32) - Il binario di output si trova in
.pio/build//firmware.bin - Nell'interfaccia web di Tasmota: Firmware Upgrade > Upgrade by file upload
- Selezionare
firmware.bine fare clic su Start upgrade
Via esptool.py (manuale)
# 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.binAdattare --chip, --port e il percorso del firmware per il proprio ambiente.
Verifica
Output del log seriale
Collegare un terminale seriale (115200 baud, 8N1) e osservare il log di avvio. Un rilevamento riuscito produce:
DLK: DimmerLink v1 at 0x50 bus1 (4ch, 50Hz, READY)Se non vengono trovati dispositivi DimmerLink, non appaiono righe DLK: nel log di avvio.
Verifica tramite console
Dopo l'avvio, interrogare il dispositivo:
DlStatusUn dispositivo connesso risponde con:
{
"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"}
}
}Se il comando restituisce {"Command":"Unknown"}, il driver non è compilato.
Scansione I2C
Il comando di scansione I2C integrato di Tasmota conferma che il dispositivo è sul bus:
I2CScanConferma nell'interfaccia web
Navigare verso http://. Con DimmerLink rilevato, la pagina mostra cursori di luminosità e righe di dati dei sensori. L'assenza di cursori indica che nessun dispositivo è stato rilevato.