← Web, MQTT & HTTP | Contenido | Siguiente: Referencia →
Funciones avanzadas — Controlador nativo DimmerLink para Tasmota
Curvas de atenuación explicadas
La curva de atenuación determina cómo el porcentaje de brillo se asigna al ángulo de disparo real del TRIAC y, por lo tanto, a la potencia entregada a la carga. Hay tres curvas disponibles, cada una adecuada para diferentes tipos de carga.
LINEAR (valor 0)
El ángulo de fase es proporcional al nivel de brillo solicitado. La relación entre el valor del comando y la potencia eléctrica es lineal.
Power delivered
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setCasos de uso: Cargas de uso general, calentadores resistivos, motores de escobillas, cualquier carga donde la potencia eléctrica deba seguir directamente el valor establecido. Adecuado como punto de partida cuando la curva óptima es desconocida.
No recomendado para: Bombillas LED o bombillas incandescentes donde el brillo percibido es importante.
RMS (valor 1)
El ángulo de fase se ajusta de modo que la tensión RMS (y por lo tanto la potencia RMS) sea proporcional al nivel establecido.
Perceived brightness (incandescent)
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setCasos de uso: Bombillas incandescentes y lámparas halógenas. Con la curva RMS, un ajuste de 50 produce aproximadamente la mitad del brillo percibido que 100.
No recomendado para: Bombillas LED — los controladores LED regulables regulan la corriente internamente y la relación entre el ángulo de fase y la salida de luz es más compleja.
LOG (valor 2)
El ángulo de fase sigue una curva logarítmica diseñada para producir pasos de brillo perceptualmente uniformes. El ojo humano responde logarítmicamente a la intensidad de la luz (ley de Weber-Fechner), por lo que incrementos iguales producen cambios perceptuales aproximadamente iguales.
Perceived brightness (LED)
100% | /
| /
50% | /
| /
0% | /
+------------------
0% 50% 100%
Level setCasos de uso: Bombillas LED regulables, iluminación ambiental, cualquier aplicación donde la atenuación suave a niveles bajos es importante. Evita la queja común de que los LED pasan de "apenas encendidos" a "muy brillantes" en un pequeño rango.
No recomendado para: Cargas resistivas o inductivas donde el seguimiento de potencia (no el brillo percibido) es el objetivo.
Seleccionar la curva correcta
| Carga | Curva recomendada | Comando |
|---|---|---|
| LED regulable | LOG | DlCurve 2 |
| Bombilla incandescente | RMS | DlCurve 1 |
| Lámpara halógena | RMS | DlCurve 1 |
| Calentador resistivo | LINEAR | DlCurve 0 |
| Motor de escobillas (ventilador, mezclador) | LINEAR | DlCurve 0 |
| Desconocida | Probar las tres | -- |
La curva puede cambiarse en cualquier momento sin afectar el nivel de brillo actual. La nueva curva se aplica a partir del siguiente comando de cambio de brillo.
Control de fundido (Fade)
Cómo funciona el fundido
El tiempo de fundido controla cuánto tiempo tarda el hardware del MCU en hacer la transición desde el nivel de brillo actual hasta un nivel recién ordenado. El fundido está implementado completamente en el firmware del MCU — una vez que se escribe un nuevo nivel por I2C, el dispositivo aumenta gradualmente de forma interna sin más interacción con Tasmota.
Cálculo de tiempo
Fade time (seconds) = value * 0.1| Valor | Tiempo de fundido |
|---|---|
| 0 | Instantáneo (sin fundido) |
| 1 | 100 ms |
| 5 | 500 ms |
| 10 | 1,0 segundo |
| 20 | 2,0 segundos |
| 50 | 5,0 segundos |
| 100 | 10,0 segundos |
| 255 | 25,5 segundos (máximo) |
El fundido es por dispositivo, no por canal
Todos los canales de un solo dispositivo comparten el mismo tiempo de fundido. Para tener diferentes velocidades de fundido en diferentes canales, deben estar en dispositivos separados.
Usar fundido con los controles deslizantes de la interfaz web
La configuración de fundido afecta a todos los comandos de cambio de nivel, incluidos los de los controles deslizantes de la interfaz web. Con un valor de fundido distinto de cero, mover el control deslizante envía un nuevo nivel objetivo y el dispositivo hace la transición suavemente. Mover el control deslizante nuevamente antes de que se complete el fundido inicia una nueva transición desde la posición actual.
Establecer y consultar el fundido
DlFade 10 # Set device 1 fade to 1.0 second
DlFade2 0 # Set device 2 fade to instant
DlFade # Query device 1 current fade valueMonitoreo de temperatura
Disponibilidad de la función
El monitoreo de temperatura está disponible cuando el firmware del MCU se compila con FEATURE_TEMPERATURE. El controlador lo detecta automáticamente al arrancar leyendo el registro TEMP_CURRENT (0x40). Si el registro devuelve 0xFF, la temperatura no está disponible y todos los campos de temperatura se suprimen.
Lectura de temperatura
La temperatura bruta se almacena en el registro 0x40 con un desplazamiento de 50:
Temperature (Celsius) = register_value - 50Esto permite un rango de -50 °C (valor de registro 0) a +205 °C (valor de registro 255). El rango de operación normal es de 20 °C a 100 °C.
Estados térmicos
El firmware del MCU gestiona la protección térmica de forma autónoma. Se definen seis estados:
| Estado | Valor | Descripción | Acción del controlador |
|---|---|---|---|
| NORMAL | 0 | Temperatura por debajo del umbral de advertencia | Ninguna |
| WARNING | 1 | Temperatura por encima del umbral de advertencia | Registrado en nivel DEBUG |
| DERATE | 2 | Reducción activa de salida para bajar la temperatura | Ninguna — el hardware gestiona la salida |
| CRITICAL | 3 | Reducción agresiva de salida | Registrado en nivel ERROR |
| SHUTDOWN | 4 | Todas las salidas deshabilitadas por seguridad | Registrado en nivel ERROR |
| FAULT | 5 | Fallo del sensor de temperatura | Registrado en nivel ERROR |
Los estados CRITICAL, SHUTDOWN y FAULT desencadenan una entrada de registro de nivel ERROR:
DLK: Dev 0x50 thermal CRITICALLa protección térmica es gestionada por hardware
El MCU gestiona la reducción y el apagado de forma autónoma. Tasmota no puede anular la protección térmica — si el dispositivo está en estado SHUTDOWN, escribir un valor de brillo no tiene efecto hasta que el dispositivo se enfríe y salga del apagado.
Monitoreo via MQTT
Con la temperatura habilitada, cada mensaje SENSOR incluye la temperatura actual y el estado:
{
"DimmerLink1": {
"Addr": "0x50",
"ACFreq": 50,
"Fade": 0,
"Ch1": {"Level": 75, "Curve": "LOG"},
"Temp": 42,
"Thermal": "NORMAL"
}
}Use las reglas de Tasmota o un sistema externo para responder a los cambios de estado térmico.
Direccionamiento de múltiples dispositivos
El controlador admite hasta cuatro dispositivos DimmerLink en el mismo bus I2C (o distribuidos en dos buses). Los dispositivos se numeran del 1 al 4 en el orden detectado durante el escaneo de arranque — en orden ascendente por dirección (0x08 a 0x77).
Numeración de dispositivos
| Dirección I2C | Orden de detección | Número de dispositivo |
|---|---|---|
| 0x50 | 1.° encontrado | Dispositivo 1 (sufijo 1 o sin sufijo) |
| 0x51 | 2.° encontrado | Dispositivo 2 (sufijo 2) |
| 0x52 | 3.° encontrado | Dispositivo 3 (sufijo 3) |
Asignar direcciones únicas
Todos los dispositivos DimmerLink se envían con la dirección I2C 0x50. Para usar múltiples dispositivos, a cada uno se le debe asignar una dirección única uno a la vez antes de conectarlos juntos.
Paso a paso para tres dispositivos:
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, 0x52Verificación de dirección
El controlador verifica el cambio de dirección volviendo a leer el registro VERSION desde la nueva dirección:
if (DL_ValidRead8(&ver, new_addr, DL_REG_VERSION, dev->bus) && ver == DL_FW_VERSION) {
dev->addr = new_addr;
// success
}Si la verificación falla, el comando devuelve un error. Es posible que el dispositivo físico ya haya cambiado — ejecute DlStatus para confirmar.
Rango de direcciones válido
Las direcciones deben estar en el rango 0x08 a 0x77 (inclusive). Las direcciones reservadas 0x00-0x07 y 0x78-0x7F son rechazadas.
Notas sobre conflictos de dirección I2C
La dirección predeterminada 0x50 entra en conflicto con dispositivos EEPROM/FRAM comunes (FM24CXX, AT24Cxx, 24C256, 24LC256). El controlador identifica los dispositivos DimmerLink específicamente por el byte de versión del firmware en el registro 0x03, por lo que los dispositivos que no son DimmerLink en la dirección 0x50 se omiten silenciosamente. Sin embargo, para evitar transacciones de bus no deseadas, cambie la dirección de DimmerLink si los dispositivos EEPROM comparten el bus.
0x10 to 0x4F are typically free of conflicts in standard Tasmota builds.Orden de escaneo entre buses
Si hay dos buses I2C activos, el escaneo procesa el bus 0 antes del bus 1. Un dispositivo en el bus 0 con dirección 0x51 se encontrará antes que un dispositivo en el bus 1 con dirección 0x50.
Migración desde el controlador Berry
Si ha estado usando el controlador Berry DimmerLink.be y está cambiando al controlador nativo, tenga en cuenta las siguientes diferencias.
Qué cambia
| Aspecto | Controlador Berry | Controlador nativo |
|---|---|---|
| Prefijo de comando | DimmerLink, DimmerLink_Kitchen, etc. |
Dl |
| Selección de dispositivo | Por etiqueta (nombre) | Por orden detectado (sufijo numérico) |
| Direccionamiento de canales | Dígito final: DimmerLink_Kitchen2 |
Sintaxis ch,level: DlDim 2,50 |
| Comando de curva | DimmerLink_KitchenCurve 2 |
DlCurve 2 |
| Comando de fundido | DimmerLink_KitchenFade 10 |
DlFade 10 |
| Relé virtual | Sí — Power |
No proporcionado |
| Preajustes | DimmerLinkPreset night |
No proporcionado |
| Escáner de bus | DimmerLink.scan() en la consola Berry |
No proporcionado; usar I2CScan |
| Instancias con nombre | Sí — etiquetas en dimmerlink.json |
No proporcionado — dispositivos numerados |
| Configuración | /dimmerlink.json en el sistema de archivos |
user_config_override.h en tiempo de compilación |
| Clave de telemetría MQTT | Etiqueta del dispositivo (p. ej., "Kitchen") |
DimmerLink1, DimmerLink2, etc. |
Pasos de migración
- Flashear el nuevo firmware que incluye
USE_DIMMERLINK. - Eliminar los archivos del controlador Berry del sistema de archivos (
DimmerLink.be,dimmerlink_loader.be) o eliminar la líneaload('dimmerlink_loader.be')deautoexec.be. El controlador Berry y el controlador nativo pueden coexistir, pero ambos responderán al mismo dispositivo y generarán telemetría duplicada. - Actualizar las automatizaciones MQTT — cambiar los nombres de comandos
DimmerLink_aDlDim,DlCurve,DlFade. - Actualizar las suscripciones MQTT — cambiar las claves de dispositivos con nombre (p. ej.,
"Kitchen") a claves numeradas ("DimmerLink1","DimmerLink2"). - Actualizar las llamadas HTTP API — cambiar
DimmerLink_Kitchen%2075aDlDim%2075(oDlDim2%2075para el segundo dispositivo). - Relés virtuales — si dependía de
Powerpara alternar dispositivos, implemente la lógica equivalente usando reglas de Tasmota y comandosDlDim. - Preajustes — si usaba
DimmerLinkPreset, cree reglas de Tasmota equivalentes o scripts Berry que emitan comandosDlDim.