← Build & Flash | Содержание | Next: Web, MQTT & HTTP →
Справочник команд — нативный драйвер DimmerLink для Tasmota
Все команды следуют стандартным соглашениям Tasmota:
- Команды нечувствительны к регистру.
- Необязательный суффикс номера устройства (от 1 до 4) выбирает, к какому обнаруженному устройству обращаться. Без суффикса или с суффиксом
0по умолчанию используется устройство 1. - Отправка команды без аргумента возвращает текущее состояние без каких-либо изменений.
- Все команды возвращают ответы в формате JSON.
Нативный драйвер использует префикс Dl для всех команд (в отличие от префикса DimmerLink у Berry-драйвера).
DlDim — Установить яркость канала
Синтаксис:
DlDim[] [,] | Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
dev |
целое | 1-4 | Номер устройства (необязательно; по умолчанию = 1) |
ch |
целое | 1-4 | Номер канала (необязательно; по умолчанию = 1) |
level |
целое | 0-100 | Яркость в процентах |
Примеры:
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Ответ:
{"DlDim1":{"Ch1":50,"Ch2":30,"Ch3":0,"Ch4":0}}Ответ всегда включает все каналы адресуемого устройства.
Примечания:
- Уровень
0выключает канал. Устройство не сохраняет память о предыдущем уровне — для повторного включения необходимо отправить новый ненулевой уровень. - Значения уровня выше 100 тихо ограничиваются до 100 драйвером.
- Если устройство возвращает ненулевой код ошибки после записи, драйвер фиксирует это на уровне DEBUG, но не возвращает ошибку вызывающей стороне.
DlCurve — Установить кривую диммирования
Синтаксис:
DlCurve[] [,] | Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
dev |
целое | 1-4 | Номер устройства (необязательно; по умолчанию = 1) |
ch |
целое | 1-4 | Номер канала (необязательно; по умолчанию = 1) |
curve |
целое | 0-2 | Кривая: 0 = LINEAR, 1 = RMS, 2 = LOG |
Примеры:
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Ответ:
{"DlCurve1":{"Ch1":"LINEAR","Ch2":"LOG","Ch3":"LINEAR","Ch4":"LINEAR"}}Примечания:
- Настройка кривой применяется для каждого канала отдельно и не зависит от других каналов на том же устройстве.
- Значения кривой вне диапазона 0-2 отклоняются; команда не имеет эффекта и возвращает текущее состояние.
- Изменения кривой вступают в силу при следующей команде яркости. Установка кривой сама по себе не изменяет уровень выходного сигнала.
Смотрите Пояснение по кривым диммирования для подробного описания каждой кривой и рекомендаций по типам нагрузки.
DlFade — Установить время переходного затухания
Синтаксис:
DlFade[] | Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
dev |
целое | 1-4 | Номер устройства (необязательно; по умолчанию = 1) |
value |
целое | 0-255 | Длительность затухания в единицах 100 мс |
Примеры:
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Ответ:
{"DlFade":0}Примечания:
- Затухание — это настройка уровня устройства, а не отдельного канала. Все каналы устройства используют одно и то же время затухания.
- Затухание реализовано аппаратно в MCU. После записи изменения яркости через I2C устройство внутренне плавно переходит к новому уровню за настроенное время.
- Время затухания
0означает мгновенное изменение. Затухание применяется ко всем записям яркости, включая те, что поступают от слайдеров веб-интерфейса.
DlStatus — Показать полный статус устройства
Синтаксис:
DlStatus[] | Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
dev |
целое | 1-4 | Номер устройства (необязательно; по умолчанию = 1) |
Примеры:
DlStatus # Status of device 1
DlStatus2 # Status of device 2Ответ:
{
"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 вернула ненулевой код ошибки:
{
"DimmerLink1": {
"Addr": "0x50",
"Bus": 1,
"Ready": true,
"FW": 1,
"ACFreq": 50,
"Fade": 0,
"Ch1": {"Level": 0, "Curve": "LINEAR"},
"LastError": "0xFE"
}
}DlReset — Программный сброс
Синтаксис:
DlReset[] | Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
dev |
целое | 1-4 | Номер устройства (необязательно; по умолчанию = 1) |
Примеры:
DlReset # Reset device 1
DlReset2 # Reset device 2Ответ:
{"Command":"Done"}Примечания:
- Записывает
0x01в регистр COMMAND (0x01). - После сброса флаг
readyустройства устанавливается вfalse. Он восстанавливается автоматически при следующем опросе по таймеру, как только устройство сообщает о состоянии READY. - Сброс повторно инициализирует прошивку MCU, включая запуск нового цикла калибровки частоты AC. Во время калибровки команды яркости могут игнорироваться или давать непоследовательные результаты.
DlRecalibrate — Повторная калибровка частоты AC
Синтаксис:
DlRecalibrate[] | Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
dev |
целое | 1-4 | Номер устройства (необязательно; по умолчанию = 1) |
Примеры:
DlRecalibrate # Recalibrate device 1
DlRecalibrate2 # Recalibrate device 2Ответ:
{"Command":"Done"}Примечания:
- Записывает
0x02в регистр COMMAND. - Запускает новый цикл измерения частоты AC. Полезно, если частота сети сообщается некорректно или после перемещения устройства на другую сеть AC.
- Устройство устанавливает READY = 0 во время калибровки. Нормальная работа возобновляется автоматически после завершения калибровки (обычно 1-2 секунды).
- В отличие от
DlReset, рекалибровка не сбрасывает уровни каналов или настройки кривых.
DlAddress — Изменить или запросить адрес I2C
Синтаксис:
DlAddress[] [] | Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
dev |
целое | 1-4 | Номер устройства (необязательно; по умолчанию = 1) |
new_addr |
шестнадцатеричный или десятичный | 0x08-0x77 | Новый адрес I2C (необязательно; без аргумента — запрос) |
Примеры:
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)Ответ (запрос):
{"DlAddress":"0x50"}Ответ (после успешного изменения):
{"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] |
Необязательно | -- | Текущий или новый адрес |