← Обзор нативного драйвера | Содержание | Далее: Команды →
Build & Flash — DimmerLink Native Tasmota Driver
Предварительные требования
Программное обеспечение
| Требование | Детали |
|---|---|
| PlatformIO | IDE или CLI. Установите с https://platformio.org или как расширение VS Code |
| Исходный код Tasmota | Клонируйте с https://github.com/arendst/Tasmota или используйте свой форк |
| Python 3 | Требуется системой сборки PlatformIO |
| Git | Для клонирования и управления исходным кодом |
Аппаратное обеспечение
| Требование | Детали |
|---|---|
| Плата ESP32 или ESP8266 | Любой вариант ESP32 (tasmota32, tasmota32c3, tasmota32s3 и др.) или ESP8266 (tasmota, tasmota-sensors и др.) |
| Устройство DimmerLink | MCU TRIAC-диммер с включённым интерфейсом I2C |
| Подключение I2C | Соединения SDA, SCL, GND, VCC с соответствующими подтягивающими резисторами |
| USB-кабель | Для прошивки (или возможность OTA-обновления при повторной прошивке) |
Режим I2C DimmerLink
Устройство DimmerLink поставляется с включённым интерфейсом UART по умолчанию. Перед подключением к шине I2C Tasmota устройство должно быть переключено в режим I2C с помощью команды UART SWITCH_I2C (0x5B). Обратитесь к документации по подключению аппаратной части DimmerLink для выполнения этой процедуры. После переключения устройство загружается в режиме I2C, и изменение сохраняется во внутренней флэш-памяти устройства.
Включение драйвера
Драйвер защищён двумя препроцессорными условиями:
#ifdef USE_I2C
#ifdef USE_DIMMERLINKОба должны быть активны. USE_I2C обычно включён в конфигурации по умолчанию для вашей платы. USE_DIMMERLINK необходимо добавить явно.
Шаг 1: Создайте или откройте user_config_override.h
Этот файл находится по адресу:
tasmota/user_config_override.hЕсли он не существует, создайте его в этом расположении.
Шаг 2: Добавьте определение
#ifndef USE_DIMMERLINK
#define USE_DIMMERLINK
#endifШаг 3: Убедитесь, что I2C включён
Проверьте, что в вашей целевой среде определён USE_I2C. Для tasmota32 (ESP32) и tasmota (ESP8266) это включено по умолчанию. Если вы собираете упрощённую среду (например, tasmota-lite), убедитесь в наличии USE_I2C в tasmota/tasmota_configurations.h.
Регистрация драйвера
После активации обоих определений драйвер самостоятельно регистрируется в таблице диспетчеризации Tasmota через функцию Xdrv94 и занимает слот I2C XI2C_100 (идентификатор устройства 100). Никаких других изменений на уровне исходного кода не требуется.
Параметры конфигурации
Два необязательных определения управляют поведением во время выполнения. Разместите их в user_config_override.h.
USE_DIMMERLINK_ADDR
Задаёт ожидаемый начальный адрес сканирования I2C. Драйвер всё равно сканирует полный допустимый диапазон адресов I2C (от 0x08 до 0x77) и определяет устройства, считывая регистр VERSION. Значение по умолчанию приведено в документационных целях.
// Default: 0x50 (factory default for DimmerLink)
#define USE_DIMMERLINK_ADDR 0x50USE_DIMMERLINK_CHANNELS
Задаёт количество каналов, настроенных для каждого обнаруженного устройства.
// Default: 4 (maximum)
#define USE_DIMMERLINK_CHANNELS 4Допустимый диапазон: от 1 до 4. Установите значение, соответствующее фактическому количеству каналов нагрузки, физически подключённых к вашему аппаратному обеспечению DimmerLink.
// Example: single-channel installation
#define USE_DIMMERLINK_CHANNELS 1
// Example: two-channel installation
#define USE_DIMMERLINK_CHANNELS 2Ограничения времени компиляции
Они зафиксированы в исходном коде и не могут быть изменены через user_config_override.h:
| Константа | Значение | Смысл |
|---|---|---|
DL_MAX_DEVICES |
4 | Максимальное количество одновременно обнаруживаемых устройств |
DL_MAX_CHANNELS |
4 | Максимальное количество каналов на устройство |
DL_FW_VERSION |
0x01 | Требуемый отпечаток версии прошивки |
Полный пример user_config_override.h
// user_config_override.h — DimmerLink native driver configuration
// Enable DimmerLink native I2C driver (requires USE_I2C)
#ifndef USE_DIMMERLINK
#define USE_DIMMERLINK
#endif
// Default I2C address (informational — driver scans full bus range)
#ifndef USE_DIMMERLINK_ADDR
#define USE_DIMMERLINK_ADDR 0x50
#endif
// Number of channels per device (1-4)
// Set to match the physical wiring of your DimmerLink hardware
#ifndef USE_DIMMERLINK_CHANNELS
#define USE_DIMMERLINK_CHANNELS 4
#endifПодключение аппаратной части I2C
Подключение контактов
Контакты ESP32 по умолчанию:
| Контакт DimmerLink | Контакт ESP32 | Примечания |
|---|---|---|
| VCC | 3.3V | DimmerLink принимает 1,8В, 3,3В или 5В — преобразователь уровней не нужен |
| GND | GND | Общая земля |
| SDA | GPIO21 (по умолчанию) | Любой GPIO, настроенный как I2C SDA в Tasmota |
| SCL | GPIO22 (по умолчанию) | Любой GPIO, настроенный как I2C SCL в Tasmota |
Контакты ESP8266 по умолчанию:
| Контакт DimmerLink | Контакт ESP8266 | Примечания |
|---|---|---|
| VCC | 3.3V | Аналогично ESP32 |
| GND | GND | Общая земля |
| SDA | GPIO4 (D2) | I2C SDA по умолчанию на большинстве плат ESP8266 |
| SCL | GPIO5 (D1) | I2C SCL по умолчанию на большинстве плат ESP8266 |
На обеих платформах контакты I2C можно переназначить через конфигурацию модуля (Configuration > Configure Module).
Схема подключения
3.3V
|
4.7k | 4.7k
| |
MCU | | DimmerLink
SDA ------+-----+---- SDA
SCL ------------+---- SCL
GND ---------------- GND
3.3V ---------------- VCCПодтягивающие резисторы
Внешние подтягивающие резисторы обязательны. И ESP32, и ESP8266 имеют слабые внутренние подтягивающие резисторы (~45 кОм), недостаточные для I2C.
| Длина провода | Рекомендуемое значение подтягивающего резистора |
|---|---|
| До 10 см | 4,7 кОм |
| От 10 до 30 см | от 2,2 до 4,7 кОм |
| Более 30 см | от 1 до 2,2 кОм (не рекомендуется; используйте более короткие провода) |
Расположите резисторы между линиями SDA/SCL и 3,3В. Одна пара резисторов обслуживает всю шину — не добавляйте подтягивающие резисторы на каждое устройство, если несколько устройств используют одну шину.
Уровни напряжения
DimmerLink принимает VCC от 1,8В до 5В, и его логические уровни соответствуют VCC. При 3,3В (стандартный уровень ESP32/ESP8266) преобразователь уровней не требуется.
Скорость шины I2C
Устройство DimmerLink работает на частоте 100 кГц (стандартный режим). Скорость I2C по умолчанию в Tasmota подходит. Не настраивайте скорость шины I2C выше 100 кГц для этого устройства.
Вторая шина I2C (ESP32)
Tasmota поддерживает две шины I2C на ESP32, ESP8266, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 и ESP32-S3. Драйвер автоматически сканирует обе шины. Если у вас есть другие устройства I2C на шине 1 и вы хотите изолировать DimmerLink на шине 2, настройте вторую пару SDA/SCL в конфигурации модуля Tasmota и подключите DimmerLink туда. Изменения на стороне драйвера не требуются.
Сборка с помощью PlatformIO
Команда сборки
# ESP8266 (standard Tasmota)
pio run -e tasmota
# ESP32 (standard)
pio run -e tasmota32
# ESP32-C3
pio run -e tasmota32c3
# ESP32-S3
pio run -e tasmota32s3Выберите целевую среду в platformio_override.ini в параметре default_envs.
Проверка компиляции драйвера
После успешной сборки убедитесь, что драйвер включён:
pio run -e tasmota32 2>&1 | grep -i dimmerlinkЕсли драйвер скомпилирован, в выводе будут ссылки на символы Xdrv94 или DimmerLink. Если ничего не отображается, повторно проверьте, что USE_DIMMERLINK определён и USE_I2C активен для выбранной среды.
Влияние на память
| Ресурс | Использование |
|---|---|
| RAM (куча) | ~40 байт на устройство; менее 250 байт для 4 устройств по 4 канала |
| Flash (код) | ~4–6 КБ в зависимости от конфигурации сборки |
Прошивка
Через PlatformIO (USB)
Подключите плату через USB и выполните:
# ESP8266
pio run -e tasmota --target upload
# ESP32
pio run -e tasmota32 --target uploadPlatformIO автоматически определяет последовательный порт. Если доступно несколько портов, укажите явно:
pio run -e tasmota32 --target upload --upload-port COM3Через OTA (веб-интерфейс Tasmota)
Если устройство уже работает под управлением Tasmota:
- Соберите прошивку (например,
pio run -e tasmota32) - Бинарный файл находится по адресу
.pio/build//firmware.bin - В веб-интерфейсе Tasmota: Firmware Upgrade > Upgrade by file upload
- Выберите
firmware.binи нажмите Start upgrade
Через esptool.py (вручную)
# ESP32
esptool.py --chip esp32 --port COM3 --baud 921600 \
write_flash -z 0x0 .pio/build/tasmota32/firmware.bin
# ESP8266
esptool.py --chip esp8266 --port COM3 --baud 921600 \
write_flash -z 0x0 .pio/build/tasmota/firmware.binНастройте --chip, --port и путь к прошивке для вашей среды.
Проверка
Вывод последовательного журнала
Подключите последовательный терминал (115200 бод, 8N1) и наблюдайте журнал загрузки. При успешном обнаружении отображается:
DLK: DimmerLink v1 at 0x50 bus1 (4ch, 50Hz, READY)Если устройства DimmerLink не найдены, строки DLK: в журнале загрузки отсутствуют.
Проверка через консоль
После загрузки выполните запрос к устройству:
DlStatusПодключённое устройство отвечает:
{
"DimmerLink1": {
"Addr": "0x50",
"Bus": 1,
"Ready": true,
"FW": 1,
"ACFreq": 50,
"Fade": 0,
"Ch1": {"Level": 0, "Curve": "LINEAR"},
"Ch2": {"Level": 0, "Curve": "LINEAR"},
"Ch3": {"Level": 0, "Curve": "LINEAR"},
"Ch4": {"Level": 0, "Curve": "LINEAR"}
}
}Если команда возвращает {"Command":"Unknown"}, драйвер не скомпилирован.
Сканирование I2C
Встроенная команда сканирования I2C в Tasmota подтверждает наличие устройства на шине:
I2CScanПодтверждение в веб-интерфейсе
Перейдите по адресу http://. При обнаружении DimmerLink страница отображает слайдеры яркости и строки данных датчиков. Отсутствие слайдеров указывает на то, что устройство не было обнаружено.