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

← Build & Flash | Содержание | Next: Web, MQTT & HTTP →

Справочник команд — нативный драйвер DimmerLink для Tasmota

Все команды следуют стандартным соглашениям Tasmota:

  • Команды нечувствительны к регистру.
  • Необязательный суффикс номера устройства (от 1 до 4) выбирает, к какому обнаруженному устройству обращаться. Без суффикса или с суффиксом 0 по умолчанию используется устройство 1.
  • Отправка команды без аргумента возвращает текущее состояние без каких-либо изменений.
  • Все команды возвращают ответы в формате JSON.

Нативный драйвер использует префикс Dl для всех команд (в отличие от префикса DimmerLink у Berry-драйвера).


DlDim — Установить яркость канала

Синтаксис:

plaintext
DlDim[] [,]
Параметр Тип Диапазон Описание
dev целое 1-4 Номер устройства (необязательно; по умолчанию = 1)
ch целое 1-4 Номер канала (необязательно; по умолчанию = 1)
level целое 0-100 Яркость в процентах

Примеры:

plaintext
DlDim 50            # Device 1, channel 1 to 50%
DlDim 75            # Device 1, channel 1 to 75%
DlDim 2,30          # Device 1, channel 2 to 30%
DlDim2 100          # Device 2, channel 1 to 100%
DlDim2 3,0          # Device 2, channel 3 to 0% (off)
DlDim               # Query — returns all channel levels for device 1

Ответ:

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

Ответ всегда включает все каналы адресуемого устройства.

Примечания:

  • Уровень 0 выключает канал. Устройство не сохраняет память о предыдущем уровне — для повторного включения необходимо отправить новый ненулевой уровень.
  • Значения уровня выше 100 тихо ограничиваются до 100 драйвером.
  • Если устройство возвращает ненулевой код ошибки после записи, драйвер фиксирует это на уровне DEBUG, но не возвращает ошибку вызывающей стороне.

DlCurve — Установить кривую диммирования

Синтаксис:

plaintext
DlCurve[] [,]
Параметр Тип Диапазон Описание
dev целое 1-4 Номер устройства (необязательно; по умолчанию = 1)
ch целое 1-4 Номер канала (необязательно; по умолчанию = 1)
curve целое 0-2 Кривая: 0 = LINEAR, 1 = RMS, 2 = LOG

Примеры:

plaintext
DlCurve 0           # Device 1, channel 1 to LINEAR
DlCurve 2           # Device 1, channel 1 to LOG
DlCurve 2,1         # Device 1, channel 2 to RMS
DlCurve2 1          # Device 2, channel 1 to RMS
DlCurve             # Query — returns all channel curves for device 1

Ответ:

json
{"DlCurve1":{"Ch1":"LINEAR","Ch2":"LOG","Ch3":"LINEAR","Ch4":"LINEAR"}}

Примечания:

  • Настройка кривой применяется для каждого канала отдельно и не зависит от других каналов на том же устройстве.
  • Значения кривой вне диапазона 0-2 отклоняются; команда не имеет эффекта и возвращает текущее состояние.
  • Изменения кривой вступают в силу при следующей команде яркости. Установка кривой сама по себе не изменяет уровень выходного сигнала.

Смотрите Пояснение по кривым диммирования для подробного описания каждой кривой и рекомендаций по типам нагрузки.


DlFade — Установить время переходного затухания

Синтаксис:

plaintext
DlFade[] 
Параметр Тип Диапазон Описание
dev целое 1-4 Номер устройства (необязательно; по умолчанию = 1)
value целое 0-255 Длительность затухания в единицах 100 мс

Примеры:

plaintext
DlFade 0            # Instant change (no fade)
DlFade 10           # 1.0 second fade
DlFade 50           # 5.0 second fade
DlFade 255          # 25.5 second fade (maximum)
DlFade2 20          # Device 2: 2.0 second fade
DlFade              # Query — returns current fade value for device 1

Ответ:

json
{"DlFade":0}

Примечания:

  • Затухание — это настройка уровня устройства, а не отдельного канала. Все каналы устройства используют одно и то же время затухания.
  • Затухание реализовано аппаратно в MCU. После записи изменения яркости через I2C устройство внутренне плавно переходит к новому уровню за настроенное время.
  • Время затухания 0 означает мгновенное изменение. Затухание применяется ко всем записям яркости, включая те, что поступают от слайдеров веб-интерфейса.

DlStatus — Показать полный статус устройства

Синтаксис:

plaintext
DlStatus[]
Параметр Тип Диапазон Описание
dev целое 1-4 Номер устройства (необязательно; по умолчанию = 1)

Примеры:

plaintext
DlStatus            # Status of device 1
DlStatus2           # Status of device 2

Ответ:

json
{
  "DimmerLink1": {
    "Addr": "0x50",
    "Bus": 1,
    "Ready": true,
    "FW": 1,
    "ACFreq": 50,
    "Fade": 10,
    "Ch1": {"Level": 75, "Curve": "LOG"},
    "Ch2": {"Level": 30, "Curve": "RMS"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"},
    "Temperature": 42,
    "ThermalState": "NORMAL"
  }
}

Поля Temperature и ThermalState появляются только если в прошивке MCU включена функция температуры. Поле LastError появляется только если последняя операция I2C вернула ненулевой код ошибки:

json
{
  "DimmerLink1": {
    "Addr": "0x50",
    "Bus": 1,
    "Ready": true,
    "FW": 1,
    "ACFreq": 50,
    "Fade": 0,
    "Ch1": {"Level": 0, "Curve": "LINEAR"},
    "LastError": "0xFE"
  }
}

DlReset — Программный сброс

Синтаксис:

plaintext
DlReset[]
Параметр Тип Диапазон Описание
dev целое 1-4 Номер устройства (необязательно; по умолчанию = 1)

Примеры:

plaintext
DlReset             # Reset device 1
DlReset2            # Reset device 2

Ответ:

json
{"Command":"Done"}

Примечания:

  • Записывает 0x01 в регистр COMMAND (0x01).
  • После сброса флаг ready устройства устанавливается в false. Он восстанавливается автоматически при следующем опросе по таймеру, как только устройство сообщает о состоянии READY.
  • Сброс повторно инициализирует прошивку MCU, включая запуск нового цикла калибровки частоты AC. Во время калибровки команды яркости могут игнорироваться или давать непоследовательные результаты.

DlRecalibrate — Повторная калибровка частоты AC

Синтаксис:

plaintext
DlRecalibrate[]
Параметр Тип Диапазон Описание
dev целое 1-4 Номер устройства (необязательно; по умолчанию = 1)

Примеры:

plaintext
DlRecalibrate       # Recalibrate device 1
DlRecalibrate2      # Recalibrate device 2

Ответ:

json
{"Command":"Done"}

Примечания:

  • Записывает 0x02 в регистр COMMAND.
  • Запускает новый цикл измерения частоты AC. Полезно, если частота сети сообщается некорректно или после перемещения устройства на другую сеть AC.
  • Устройство устанавливает READY = 0 во время калибровки. Нормальная работа возобновляется автоматически после завершения калибровки (обычно 1-2 секунды).
  • В отличие от DlReset, рекалибровка не сбрасывает уровни каналов или настройки кривых.

DlAddress — Изменить или запросить адрес I2C

Синтаксис:

plaintext
DlAddress[] []
Параметр Тип Диапазон Описание
dev целое 1-4 Номер устройства (необязательно; по умолчанию = 1)
new_addr шестнадцатеричный или десятичный 0x08-0x77 Новый адрес I2C (необязательно; без аргумента — запрос)

Примеры:

plaintext
DlAddress           # Query current address of device 1
DlAddress 0x51      # Change device 1 address to 0x51
DlAddress2 0x52     # Change device 2 address to 0x52
DlAddress 81        # Change device 1 to decimal 81 (= 0x51)

Ответ (запрос):

json
{"DlAddress":"0x50"}

Ответ (после успешного изменения):

json
{"DlAddress":"0x51"}

Примечания:

  • Адрес принимается в шестнадцатеричном (с префиксом 0x или 0X) или десятичном формате.
  • После записи драйвер ждёт 50 мс и считывает регистр VERSION по новому адресу для проверки изменения. Если проверка не пройдена, команда возвращает ошибку, но аппаратная часть устройства может уже измениться — используйте DlStatus для проверки.
  • Новый адрес сохраняется во внутренней флэш-памяти MCU и сохраняется после циклов питания.
  • Старый адрес становится недействительным сразу после успешного выполнения команды.
  • Адреса 0x00-0x07 и 0x78-0x7F отклоняются как зарезервированные адреса I2C.

Полная таблица команд

Команда Аргумент Устройство Канал Возвращает
DlDim[N] [ch,]level Необязательно Необязательно Уровни всех каналов
DlCurve[N] [ch,]curve Необязательно Необязательно Кривые всех каналов
DlFade[N] value Необязательно -- Текущее значение затухания
DlStatus[N] -- Необязательно -- Полный статус устройства
DlReset[N] -- Необязательно -- Done
DlRecalibrate[N] -- Необязательно -- Done
DlAddress[N] [new_addr] Необязательно -- Текущий или новый адрес