Ir al contenido

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

c
#ifdef USE_I2C
#ifdef USE_DIMMERLINK

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

plaintext
tasmota/user_config_override.h

Si no existe, créelo en esa ubicación.

Paso 2: Añadir la definición

c
#ifndef USE_DIMMERLINK
  #define USE_DIMMERLINK
#endif

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

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

USE_DIMMERLINK_CHANNELS

Establece el número de canales configurados por dispositivo detectado.

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

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

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

Lí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

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

Cableado 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

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

Resistencias 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

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

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

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

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

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

PlatformIO detecta automáticamente el puerto serie. Si hay varios puertos disponibles, especifique explícitamente:

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

Via OTA (interfaz web de Tasmota)

Si el dispositivo ya ejecuta Tasmota:

  1. Compilar el firmware (ej. pio run -e tasmota32)
  2. El binario de salida está en .pio/build//firmware.bin
  3. En la interfaz web de Tasmota: Firmware Upgrade > Upgrade by file upload
  4. Seleccionar firmware.bin y hacer clic en Start upgrade

Via esptool.py (manual)

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

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

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

plaintext
DlStatus

Un dispositivo conectado responde 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"}
  }
}

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:

plaintext
I2CScan

Confirmació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.