Перейти к содержимому

← Команды | Содержание | Далее: Расширенные функции →

Web UI, MQTT & HTTP — DimmerLink Native Tasmota Driver

Использование веб-интерфейса

Панель управления

Слайдеры яркости

Когда обнаружено одно или несколько устройств DimmerLink, главная страница Tasmota (http:///) отображает слайдер яркости для каждого активного канала.

Расположение слайдеров:

  • Для одного устройства слайдеры обозначены DL Ch1, DL Ch2 и т.д.
  • Для нескольких устройств слайдеры обозначены DL1 Ch1, DL1 Ch2, DL2 Ch1 и т.д.

Слайдеры имеют диапазон от 0 (выкл) до 100 (полная яркость). Перетаскивание слайдера и его отпускание отправляет команду DlDim на соответствующий канал. Слайдер отражает текущий уровень яркости, хранящийся в драйвере, и обновляется при изменении уровня из любого источника (команда, MQTT и т.д.).

Отображение сенсора

Раздел сенсора на главной странице показывает таблицу состояния только для чтения для каждого устройства:

Метка строки Показываемое значение Пример
DimmerLink1 Ch1 Яркость и кривая 75% (LOG)
DimmerLink1 Ch2 Яркость и кривая 30% (RMS)
DimmerLink1 AC Обнаруженная частота сети 50 Hz
DimmerLink1 Fade Время затухания (исходное и в секундах) 10 (1.0s)
DimmerLink1 Temp Температура и тепловое состояние 42 C (NORMAL)

Строка Temp появляется только если функция температуры доступна на аппаратном обеспечении. Все строки обновляются при каждом обновлении веб-страницы; раздел сенсора не является живой лентой с push-обновлениями.


Телеметрия MQTT

Публикация телеметрии

Драйвер участвует в периодическом сообщении Tasmota tele//SENSOR (хук FUNC_JSON_APPEND). Интервал телеметрии управляется настройкой TelePeriod Tasmota (по умолчанию 300 секунд).

Структура JSON — одно устройство

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

Структура JSON — несколько устройств

Когда присутствует несколько устройств, все они отображаются как отдельные ключи в одном и том же сообщении 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"}
  }
}

Описание полей

Поле Тип Описание
Addr строка Адрес I2C в шестнадцатеричном формате, например "0x50"
ACFreq целое Обнаруженная частота сети, 50 или 60 Гц
Fade целое Текущая настройка времени затухания (0-255, единицы 100 мс)
Ch1 ... Ch4 объект Данные по каждому каналу
Ch1.Level целое Яркость в процентах (0-100)
Ch1.Curve строка Кривая диммирования: "LINEAR", "RMS" или "LOG"
Temp целое Температура в Цельсиях (только если аппаратное обеспечение поддерживает)
Thermal строка Состояние тепловой защиты (только с датчиком температуры)

Поля Temp и Thermal опускаются, если прошивка MCU не имеет включённого FEATURE_TEMPERATURE или если регистр температуры возвращает 0xFF.

Отправка команд через MQTT

Команды отправляются на cmnd// с полезной нагрузкой в качестве аргумента:

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

Ответы на команды публикуются в stat//RESULT:

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

HTTP API

Все команды Tasmota доступны через HTTP GET с использованием конечной точки /cm.

Синтаксис

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

Пробел между командой и аргументом должен быть закодирован как %20 в URL.

Примеры с 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"

Формат ответа

Все ответы в формате JSON, возвращаются с HTTP 200:

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

Ответ об ошибке (неверный номер устройства, аргумент вне диапазона и т.д.):

json
{"Command":"Error"}