← Descripción general del controlador nativo | Contenido | Siguiente: Comandos →
Build & Flash — DimmerLink Native Tasmota Driver
Requisitos previos
Software
| Requisito | Detalles |
|---|---|
| PlatformIO | IDE o CLI. Instalar desde https://platformio.org o como extensión de VS Code |
| Código fuente de Tasmota | Clonar desde https://github.com/arendst/Tasmota o usar su fork existente |
| Python 3 | Requerido por el sistema de compilación de PlatformIO |
| Git | Para clonar y gestionar el código fuente |
Hardware
| Requisito | Detalles |
|---|---|
| Placa ESP32 o ESP8266 | Cualquier variante de ESP32 (tasmota32, tasmota32c3, tasmota32s3, etc.) o ESP8266 (tasmota, tasmota-sensors, etc.) |
| Dispositivo DimmerLink | Controlador de atenuador MCU TRIAC con interfaz I2C habilitada |
| Cableado I2C | Conexiones SDA, SCL, GND, VCC con resistencias pull-up apropiadas |
| Cable USB | Para flashear (o capacidad de actualización OTA si se vuelve a flashear) |
Modo I2C de DimmerLink
El dispositivo DimmerLink se entrega con la interfaz UART habilitada por defecto. Antes de conectarlo al bus I2C de Tasmota, el dispositivo debe cambiarse al modo I2C mediante el comando UART SWITCH_I2C (0x5B). Consulte la documentación de hardware de DimmerLink para este procedimiento. Después del cambio, el dispositivo arranca en modo I2C y el cambio se guarda en la memoria flash interna del dispositivo.
Habilitación del controlador
El controlador está protegido por dos guardas de preprocesador:
#ifdef USE_I2C
#ifdef USE_DIMMERLINKAmbos deben estar activos. USE_I2C generalmente está habilitado en la configuración predeterminada de su placa. USE_DIMMERLINK debe añadirse explícitamente.
Paso 1: Crear o abrir user_config_override.h
Este archivo se encuentra en:
tasmota/user_config_override.hSi no existe, créelo en esa ubicación.
Paso 2: Añadir la definición
#ifndef USE_DIMMERLINK
#define USE_DIMMERLINK
#endifPaso 3: Confirmar que I2C está habilitado
Verifique que USE_I2C esté definido en su entorno objetivo. Para tasmota32 (ESP32) y tasmota (ESP8266) está habilitado por defecto. Si está compilando un entorno reducido (ej. tasmota-lite), verifique en tasmota/tasmota_configurations.h que USE_I2C esté presente.
Registro del controlador
Una vez que ambas definiciones estén activas, el controlador se auto-registra en la tabla de despacho de Tasmota a través de la función Xdrv94 y ocupa el slot I2C XI2C_100 (ID de dispositivo 100). No se necesitan otros cambios a nivel de código fuente.
Opciones de configuración
Dos definiciones opcionales controlan el comportamiento en tiempo de ejecución. Colóquelas en user_config_override.h.
USE_DIMMERLINK_ADDR
Establece la expectativa de dirección de inicio de escaneo I2C. El controlador sigue escaneando el rango de direcciones I2C válido completo (0x08 a 0x77) e identifica los dispositivos leyendo el registro VERSION. El valor predeterminado es para propósitos de documentación.
// Default: 0x50 (factory default for DimmerLink)
#define USE_DIMMERLINK_ADDR 0x50USE_DIMMERLINK_CHANNELS
Establece el número de canales configurados por dispositivo detectado.
// Default: 4 (maximum)
#define USE_DIMMERLINK_CHANNELS 4Rango válido: 1 a 4. Establezca este valor según el número real de canales de carga físicamente cableados a su hardware DimmerLink.
// Example: single-channel installation
#define USE_DIMMERLINK_CHANNELS 1
// Example: two-channel installation
#define USE_DIMMERLINK_CHANNELS 2Límites en tiempo de compilación
Estos están fijos en el código fuente y no pueden cambiarse mediante user_config_override.h:
| Constante | Valor | Significado |
|---|---|---|
DL_MAX_DEVICES |
4 | Máximo de dispositivos detectados simultáneamente |
DL_MAX_CHANNELS |
4 | Máximo de canales por dispositivo |
DL_FW_VERSION |
0x01 | Huella de versión de firmware requerida |
Ejemplo completo de 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
#endifCableado de hardware I2C
Conexiones de pines
Pines predeterminados de ESP32:
| Pin DimmerLink | Pin ESP32 | Notas |
|---|---|---|
| VCC | 3.3V | DimmerLink acepta 1,8V, 3,3V o 5V — no se requiere convertidor de nivel |
| GND | GND | Tierra común |
| SDA | GPIO21 (predeterminado) | Cualquier GPIO configurado como I2C SDA en Tasmota |
| SCL | GPIO22 (predeterminado) | Cualquier GPIO configurado como I2C SCL en Tasmota |
Pines predeterminados de ESP8266:
| Pin DimmerLink | Pin ESP8266 | Notas |
|---|---|---|
| VCC | 3.3V | Igual que ESP32 |
| GND | GND | Tierra común |
| SDA | GPIO4 (D2) | I2C SDA predeterminado en la mayoría de las placas ESP8266 |
| SCL | GPIO5 (D1) | I2C SCL predeterminado en la mayoría de las placas ESP8266 |
En ambas plataformas, los pines I2C se pueden reasignar mediante la configuración del módulo (Configuration > Configure Module).
Esquema
3.3V
|
4.7k | 4.7k
| |
MCU | | DimmerLink
SDA ------+-----+---- SDA
SCL ------------+---- SCL
GND ---------------- GND
3.3V ---------------- VCCResistencias pull-up
Se requieren resistencias pull-up externas. Tanto ESP32 como ESP8266 tienen resistencias pull-up internas débiles (~45 kOhm) insuficientes para I2C.
| Longitud del cable | Valor de pull-up recomendado |
|---|---|
| Menos de 10 cm | 4,7 kOhm |
| 10 a 30 cm | 2,2 a 4,7 kOhm |
| Más de 30 cm | 1 a 2,2 kOhm (no recomendado; usar cables más cortos) |
Coloque las resistencias entre las líneas SDA/SCL y 3,3V. Un par de resistencias sirve para todo el bus — no añada pull-ups por dispositivo cuando varios dispositivos comparten el mismo bus.
Niveles de tensión
DimmerLink acepta VCC de 1,8V a 5V y sus niveles lógicos coinciden con VCC. A 3,3V (nivel estándar de ESP32/ESP8266) no se requiere convertidor de nivel.
Velocidad del bus I2C
El dispositivo DimmerLink opera a 100 kHz (modo estándar). La velocidad I2C predeterminada de Tasmota es adecuada. No configure el bus I2C por encima de 100 kHz para este dispositivo.
Segundo bus I2C (ESP32)
Tasmota soporta dos buses I2C en ESP32, ESP8266, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 y ESP32-S3. El controlador escanea ambos buses automáticamente. Si tiene otros dispositivos I2C en el Bus 1 y desea aislar DimmerLink en el Bus 2, configure el segundo par SDA/SCL en la configuración del módulo de Tasmota y conecte DimmerLink allí. No se necesita ningún cambio en el controlador.
Compilación con PlatformIO
Comando de compilación
# ESP8266 (standard Tasmota)
pio run -e tasmota
# ESP32 (standard)
pio run -e tasmota32
# ESP32-C3
pio run -e tasmota32c3
# ESP32-S3
pio run -e tasmota32s3Seleccione su entorno objetivo en platformio_override.ini bajo default_envs.
Confirmar que el controlador está compilado
Después de una compilación exitosa, verifique que el controlador esté incluido:
pio run -e tasmota32 2>&1 | grep -i dimmerlinkSi el controlador está compilado, verá referencias a los símbolos Xdrv94 o DimmerLink en la salida. Si no aparece nada, verifique nuevamente que USE_DIMMERLINK esté definido y que USE_I2C esté activo para el entorno seleccionado.
Impacto en la memoria
| Recurso | Uso |
|---|---|
| RAM (heap) | ~40 bytes por dispositivo; menos de 250 bytes para 4 dispositivos con 4 canales |
| Flash (código) | ~4 a 6 KB según la configuración de compilación |
Flashear el firmware
Via PlatformIO (USB)
Conecte la placa mediante USB y ejecute:
# ESP8266
pio run -e tasmota --target upload
# ESP32
pio run -e tasmota32 --target uploadPlatformIO detecta automáticamente el puerto serie. Si hay varios puertos disponibles, especifique explícitamente:
pio run -e tasmota32 --target upload --upload-port COM3Via OTA (interfaz web de Tasmota)
Si el dispositivo ya ejecuta Tasmota:
- Compilar el firmware (ej.
pio run -e tasmota32) - El binario de salida está en
.pio/build//firmware.bin - En la interfaz web de Tasmota: Firmware Upgrade > Upgrade by file upload
- Seleccionar
firmware.biny hacer clic en Start upgrade
Via esptool.py (manual)
# 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.binAjuste --chip, --port y la ruta del firmware para su entorno.
Verificación
Salida del registro serie
Conecte un terminal serie (115200 baudios, 8N1) y observe el registro de arranque. Una detección exitosa produce:
DLK: DimmerLink v1 at 0x50 bus1 (4ch, 50Hz, READY)Si no se encuentran dispositivos DimmerLink, no aparecen líneas DLK: en el registro de arranque.
Verificación por consola
Después del arranque, consultar el dispositivo:
DlStatusUn dispositivo conectado responde 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"}
}
}Si el comando devuelve {"Command":"Unknown"}, el controlador no está compilado.
Escaneo I2C
El comando de escaneo I2C integrado de Tasmota confirma que el dispositivo está en el bus:
I2CScanConfirmación en la interfaz web
Navegue a http://. Con DimmerLink detectado, la página muestra controles deslizantes de brillo y filas de datos de sensores. La ausencia de controles deslizantes indica que no se detectó ningún dispositivo.