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

← Обзор нативного драйвера | Содержание | Далее: Команды →

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, и изменение сохраняется во внутренней флэш-памяти устройства.

Включение драйвера

Драйвер защищён двумя препроцессорными условиями:

c
#ifdef USE_I2C
#ifdef USE_DIMMERLINK

Оба должны быть активны. USE_I2C обычно включён в конфигурации по умолчанию для вашей платы. USE_DIMMERLINK необходимо добавить явно.

Шаг 1: Создайте или откройте user_config_override.h

Этот файл находится по адресу:

plaintext
tasmota/user_config_override.h

Если он не существует, создайте его в этом расположении.

Шаг 2: Добавьте определение

c
#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. Значение по умолчанию приведено в документационных целях.

c
// Default: 0x50 (factory default for DimmerLink)
#define USE_DIMMERLINK_ADDR  0x50

USE_DIMMERLINK_CHANNELS

Задаёт количество каналов, настроенных для каждого обнаруженного устройства.

c
// Default: 4 (maximum)
#define USE_DIMMERLINK_CHANNELS  4

Допустимый диапазон: от 1 до 4. Установите значение, соответствующее фактическому количеству каналов нагрузки, физически подключённых к вашему аппаратному обеспечению DimmerLink.

c
// 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

c
// 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).

Схема подключения

plaintext
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

Команда сборки

bash
# 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.

Проверка компиляции драйвера

После успешной сборки убедитесь, что драйвер включён:

bash
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 и выполните:

bash
# ESP8266
pio run -e tasmota --target upload
# ESP32
pio run -e tasmota32 --target upload

PlatformIO автоматически определяет последовательный порт. Если доступно несколько портов, укажите явно:

bash
pio run -e tasmota32 --target upload --upload-port COM3

Через OTA (веб-интерфейс Tasmota)

Если устройство уже работает под управлением Tasmota:

  1. Соберите прошивку (например, pio run -e tasmota32)
  2. Бинарный файл находится по адресу .pio/build//firmware.bin
  3. В веб-интерфейсе Tasmota: Firmware Upgrade > Upgrade by file upload
  4. Выберите firmware.bin и нажмите Start upgrade

Через esptool.py (вручную)

bash
# 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) и наблюдайте журнал загрузки. При успешном обнаружении отображается:

plaintext
DLK: DimmerLink v1 at 0x50 bus1 (4ch, 50Hz, READY)

Если устройства DimmerLink не найдены, строки DLK: в журнале загрузки отсутствуют.

Проверка через консоль

После загрузки выполните запрос к устройству:

plaintext
DlStatus

Подключённое устройство отвечает:

json
{
  "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 подтверждает наличие устройства на шине:

plaintext
I2CScan

Подтверждение в веб-интерфейсе

Перейдите по адресу http:///. При обнаружении DimmerLink страница отображает слайдеры яркости и строки данных датчиков. Отсутствие слайдеров указывает на то, что устройство не было обнаружено.