Passa al contenuto

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

c
#ifdef USE_I2C
#ifdef USE_DIMMERLINK

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

plaintext
tasmota/user_config_override.h

Se non esiste, crearlo in quella posizione.

Passo 2: Aggiungere la definizione

c
#ifndef USE_DIMMERLINK
  #define USE_DIMMERLINK
#endif

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

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

USE_DIMMERLINK_CHANNELS

Imposta il numero di canali configurati per dispositivo rilevato.

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

Intervallo valido: da 1 a 4. Impostare sul numero effettivo di canali di carico fisicamente collegati all'hardware DimmerLink.

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

Limiti 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

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

Cablaggio 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

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

Resistenze 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

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

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

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

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

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

PlatformIO rileva automaticamente la porta seriale. Se sono disponibili più porte, specificare esplicitamente:

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

Via OTA (interfaccia web di Tasmota)

Se il dispositivo esegue già Tasmota:

  1. Compilare il firmware (es. pio run -e tasmota32)
  2. Il binario di output si trova in .pio/build//firmware.bin
  3. Nell'interfaccia web di Tasmota: Firmware Upgrade > Upgrade by file upload
  4. Selezionare firmware.bin e fare clic su Start upgrade

Via esptool.py (manuale)

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

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

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

plaintext
DlStatus

Un dispositivo connesso risponde con:

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"}
  }
}

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:

plaintext
I2CScan

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