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

← Расширенное использование | Содержание | Далее: Lambda-интеграция →

DimmerLink — Интеграция с ESPHome

AC-диммирование без мерцания для Home Assistant. Выделенный контроллер синхронизации, который решает главную проблему TRIAC-диммеров.




❌ Проблема

Using ESPHome's ac_dimmer component?

  • 💡 Мерцание на низких уровнях яркости
  • Конфликты WiFi — прерывания сбивают тайминги
  • 🔥 Нестабильная работа ESP8266 — недостаточно ресурсов для критичного по времени кода
  • 📝 Сложная настройка — тайминги зависят от типа нагрузки и качества сети

«Лампа мерцает нерегулярно»ESPHome Issue #4131



✅ Решение

DimmerLink — компактный модуль с выделенным ядром Cortex-M0+, который берёт на себя ВСЕ критичные по времени операции: детектирование перехода через ноль, расчёт фазового угла и управление затвором TRIAC с микросекундной точностью.

Your ESP just sends: "Set brightness to 50%" via I2C. That's it.

  • Нулевое мерцание — аппаратные тайминги, без программного джиттера
  • 3 строки YAML — без прерываний, без библиотек, без конфликтов
  • Работает на любом ESP — ESP8266, ESP32, ESP32-S2/S3/C3
  • Авто 50/60 Гц — автоматическое определение частоты сети
  • 3 кривые диммирования — линейная, RMS, логарифмическая



ac_dimmer DimmerLink
Мерцание ⚠️ Часто на низких уровнях (#4131) Никогда — аппаратные тайминги
Поддержка ESP8266 ⚠️ Нестабильно (конфликты прерываний) Стабильно — прерывания не нужны
Загрузка CPU Высокая (критичный по времени ISR) < 1% (только запись по I2C)
Влияние на WiFi Да (прерывания vs стек WiFi) Нет
Сложность настройки Средняя (требуется подстройка) Простой YAML
Кривые диммирования Только программные 3 аппаратные кривые
Частота AC Ручная конфигурация Автоопределение 50/60 Гц
Дополнительное оборудование $0 Модуль за $1.99

Когда использовать ac_dimmer: Если он уже хорошо работает в вашей системе — продолжайте!

Когда использовать DimmerLink: Проблемы с мерцанием, ESP8266, несколько диммеров или вам нужна простота plug-and-play.


DimmerLink




Два способа интеграции

DimmerLink поддерживает два подхода к интеграции с ESPHome:


Готовый компонент ESPHome с понятной конфигурацией YAML. Код на C++ или lambda не требуется.

yaml
external_components:
  - source: github://robotdyn-dimmer/DimmerLink@main
    components: [dimmerlink]
    refresh: 1d

dimmerlink:
  id: dimmer1
  address: 0x50

light:
  - platform: dimmerlink
    dimmerlink_id: dimmer1
    name: "Dimmer"

Подходит для: Большинства пользователей. Простой YAML, автоматическая связь по I2C, встроенные датчики, селекторы и кнопки.

Полная документация по компоненту


2. Lambda-интеграция (продвинутый вариант)

Прямой доступ к регистрам I2C через lambda-функции ESPHome. Полный контроль над протоколом обмена данными.

yaml
output:
  - platform: template
    id: dimmer_out
    type: float
    write_action:
      - lambda: |-
          uint8_t level = (uint8_t)(state * 100.0f);
          uint8_t data[2] = {0x10, level};
          id(bus_a).write(0x50, data, 2, true);

light:
  - platform: monochromatic
    name: "Dimmer"
    output: dimmer_out

Подходит для: Продвинутых пользователей, которым нужна собственная логика, нестандартные конфигурации или детальное понимание протокола I2C.

Полная документация по Lambda | Справочник Lambda




Сравнение способов интеграции

Функция Внешний компонент Lambda-интеграция
Сложность настройки Простой YAML Требуются C++ lambda
Объём кода ~30 строк ~100+ строк
Датчики и статус Встроенные Ручная реализация
Выбор кривой диммирования Встроенные Ручная реализация
Сброс / Рекалибровка Встроенные кнопки Ручные команды
Несколько устройств Нативная поддержка Ручная настройка каждого
Кастомизация Стандартные параметры Полная гибкость
Обработка ошибок I2C Автоматическая Ручная



Архитектура

text
Home Assistant
      │
      │ WiFi (Native API)
      ▼
   ESP32 + ESPHome
      │
      │ I2C (100 kHz)
      ▼
  DimmerLink
      │
      │ Zero-Cross + Gate
      ▼
   AC Dimmer (TRIAC)
      │
      │ AC 110/220V
      ▼
    Lamp



Быстрый старт


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

text
ESP32          DimmerLink
─────          ──────────
3.3V     →     VCC
GND      →     GND
GPIO21   →     SDA
GPIO22   →     SCL


Минимальная конфигурация (внешний компонент)

yaml
esphome:
  name: dimmerlink

esp32:
  board: esp32dev

logger:
api:
ota:

wifi:
  ssid: "YOUR_WIFI"
  password: "YOUR_PASSWORD"

external_components:
  - source: github://robotdyn-dimmer/DimmerLink@main
    components: [dimmerlink]
    refresh: 1d

i2c:
  sda: GPIO21
  scl: GPIO22

dimmerlink:
  id: dimmer1

light:
  - platform: dimmerlink
    dimmerlink_id: dimmer1
    name: "Dimmer"
    gamma_correct: 1.0



Типы сущностей (внешний компонент)

Сущность Платформа Описание
Light dimmerlink Управление яркостью (0–100%)
Sensor dimmerlink Частота AC, уровень яркости, версия прошивки
Binary Sensor dimmerlink Статус готовности, флаг ошибки, статус калибровки
Select dimmerlink Кривая диммирования (LINEAR / RMS / LOG)
Button dimmerlink Команды сброса и рекалибровки



Документ Описание
Связь по I2C Протокол I2C и карта регистров
Подключение оборудования Схемы подключения
Быстрый старт Начало работы с DimmerLink
FAQ и устранение неполадок Частые проблемы и решения



История версий

Версия Дата Изменения
1.0 2026-02 Первый выпуск: документация по lambda-интеграции
1.1 2026-02 Добавлен внешний компонент

← Расширенное использование | Содержание | Далее: Lambda-интеграция →