Ir al contenido

← Comandos | Contenido | Siguiente: Funciones avanzadas →

Web UI, MQTT & HTTP — DimmerLink Native Tasmota Driver

Uso de la interfaz web

Panel de control

Controles deslizantes de brillo

Cuando se detectan uno o más dispositivos DimmerLink, la página principal de Tasmota (http:///) muestra un control deslizante de brillo para cada canal activo.

El diseño del control deslizante es:

  • Para un único dispositivo, los controles deslizantes están etiquetados como DL Ch1, DL Ch2, etc.
  • Para múltiples dispositivos, los controles deslizantes están etiquetados como DL1 Ch1, DL1 Ch2, DL2 Ch1, etc.

Los controles deslizantes van de 0 (apagado) a 100 (brillo máximo). Arrastrar el control deslizante y soltarlo envía un comando DlDim al canal correspondiente. El control deslizante refleja el nivel de brillo actual almacenado en el controlador y se actualiza cuando el nivel cambia desde cualquier fuente (comando, MQTT, etc.).

Visualización del sensor

La sección de sensores de la página principal muestra una tabla de estado de solo lectura para cada dispositivo:

Etiqueta de fila Valor mostrado Ejemplo
DimmerLink1 Ch1 Brillo y curva 75% (LOG)
DimmerLink1 Ch2 Brillo y curva 30% (RMS)
DimmerLink1 AC Frecuencia de red detectada 50 Hz
DimmerLink1 Fade Tiempo de fundido (valor bruto y segundos) 10 (1.0s)
DimmerLink1 Temp Temperatura y estado térmico 42 C (NORMAL)

La fila Temp aparece solo si la función de temperatura está disponible en el hardware. Todas las filas se actualizan en cada recarga de la página web; la sección de sensores no es un flujo push en tiempo real.


Telemetría MQTT

Publicación de telemetría

El controlador contribuye al mensaje periódico tele//SENSOR de Tasmota (el hook FUNC_JSON_APPEND). El intervalo de telemetría está controlado por el ajuste TelePeriod de Tasmota (predeterminado: 300 segundos).

Estructura JSON — dispositivo único

json
{
  "Time": "2026-04-16T12:00:00",
  "DimmerLink1": {
    "Addr": "0x50",
    "ACFreq": 50,
    "Fade": 10,
    "Ch1": {"Level": 75, "Curve": "LOG"},
    "Ch2": {"Level": 30, "Curve": "RMS"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"},
    "Temp": 42,
    "Thermal": "NORMAL"
  }
}

Estructura JSON — múltiples dispositivos

Cuando hay varios dispositivos presentes, todos aparecen como claves separadas en el mismo mensaje SENSOR:

json
{
  "Time": "2026-04-16T12:00:00",
  "DimmerLink1": {
    "Addr": "0x50",
    "ACFreq": 50,
    "Fade": 0,
    "Ch1": {"Level": 75, "Curve": "LINEAR"},
    "Ch2": {"Level": 0, "Curve": "LINEAR"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"}
  },
  "DimmerLink2": {
    "Addr": "0x51",
    "ACFreq": 50,
    "Fade": 5,
    "Ch1": {"Level": 50, "Curve": "LOG"},
    "Ch2": {"Level": 0, "Curve": "LINEAR"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"}
  }
}

Descripción de los campos

Campo Tipo Descripción
Addr cadena Dirección I2C en hex, p. ej. "0x50"
ACFreq entero Frecuencia de red detectada, 50 o 60 Hz
Fade entero Configuración del tiempo de fundido actual (0-255, unidades de 100 ms)
Ch1 ... Ch4 objeto Datos por canal
Ch1.Level entero Brillo en porcentaje (0-100)
Ch1.Curve cadena Curva de regulación: "LINEAR", "RMS" o "LOG"
Temp entero Temperatura en Celsius (solo si el hardware lo admite)
Thermal cadena Estado de protección térmica (solo con sensor de temperatura)

Los campos Temp y Thermal se omiten si el firmware MCU no tiene FEATURE_TEMPERATURE habilitado, o si el registro de temperatura devuelve 0xFF.

Envío de comandos vía MQTT

Los comandos se envían a cmnd// con la carga útil como argumento:

plaintext
Topic:   cmnd/my-device/DlDim
Payload: 75
Topic:   cmnd/my-device/DlDim
Payload: 2,30
Topic:   cmnd/my-device/DlCurve
Payload: 2
Topic:   cmnd/my-device/DlFade
Payload: 10

Las respuestas a los comandos se publican en stat//RESULT:

json
{"DlDim1":{"Ch1":75,"Ch2":30,"Ch3":0,"Ch4":0}}

API HTTP

Todos los comandos de Tasmota son accesibles a través de HTTP GET usando el punto de acceso /cm.

Sintaxis

plaintext
http:///cm?cmnd=%20

El espacio entre el comando y el argumento debe estar codificado en URL como %20.

Ejemplos con curl

bash
# Set device 1, channel 1 to 75%
curl "http://192.168.1.100/cm?cmnd=DlDim%2075"
# Set device 1, channel 2 to 30%
curl "http://192.168.1.100/cm?cmnd=DlDim%202,30"
# Set device 2, channel 1 to 50%
curl "http://192.168.1.100/cm?cmnd=DlDim2%2050"
# Set dimming curve to LOG on channel 1
curl "http://192.168.1.100/cm?cmnd=DlCurve%202"
# Set fade time to 1 second (value 10)
curl "http://192.168.1.100/cm?cmnd=DlFade%2010"
# Query full status of device 1
curl "http://192.168.1.100/cm?cmnd=DlStatus"
# Query full status of device 2
curl "http://192.168.1.100/cm?cmnd=DlStatus2"
# Recalibrate AC frequency on device 1
curl "http://192.168.1.100/cm?cmnd=DlRecalibrate"
# Change device 1 I2C address to 0x51
curl "http://192.168.1.100/cm?cmnd=DlAddress%200x51"

Formato de respuesta

Todas las respuestas son JSON, devueltas con HTTP 200:

json
{"DlDim1":{"Ch1":75,"Ch2":30,"Ch3":0,"Ch4":0}}

Respuesta de error (número de dispositivo inválido, argumento fuera de rango, etc.):

json
{"Command":"Error"}