← - Lambda Reference | Содержание | Далее: FAQ и устранение неполадок →
Интеграция ESPHome — Home Assistant, устранение неполадок, дальнейшие шаги
Интеграция с Home Assistant, устранение неполадок и планы развития.
Содержание
5.1 Интеграция с Home Assistant
Автоматическое обнаружение
После прошивки ESP32 устройство автоматически появляется в Home Assistant.
Проверка:
- Настройки -> Устройства и службы
- Find the "New devices discovered" notification
- Или: ESPHome -> выберите устройство
Сущности в Home Assistant
При использовании стандартного примерасоздаются следующие сущности:
| Сущность | Тип | Описание |
|---|---|---|
light.dimmerlink_light |
Light | Основной диммер |
sensor.dimmerlink_ac_frequency |
Sensor | Частота сети (50/60 Гц) |
sensor.dimmerlink_level |
Sensor | Текущий уровень (%) |
select.dimmerlink_curve |
Select | Кривая диммирования |
binary_sensor.dimmerlink_ready |
Binary Sensor | Статус готовности |
button.dimmerlink_restart_esp |
Button | Перезапуск ESP |
Карточки Lovelace
Простая карточка
type: light
entity: light.dimmerlink_light
name: Living Room
Расширенная карточка
type: vertical-stack
cards:
- type: light
entity: light.dimmerlink_light
name: Dimmer
- type: entities
entities:
- entity: select.dimmerlink_curve
name: Curve
- entity: sensor.dimmerlink_ac_frequency
name: Mains Frequency
- entity: binary_sensor.dimmerlink_ready
name: Status
Карточка с ползунком (custom:slider-entity-row)
type: entities
entities:
- entity: light.dimmerlink_light
type: custom:slider-entity-row
name: Brightness
toggle: true
Автоматизации
Включение по датчику движения
automation:
- alias: "Light on Motion"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
to: "on"
condition:
- condition: sun
after: sunset
action:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 70
transition: 2
Отключение через 5 минут
automation:
- alias: "Auto Turn Off"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
to: "off"
for:
minutes: 5
action:
- service: light.turn_off
target:
entity_id: light.dimmerlink_light
data:
transition: 5
Ночной режим (приглушённый свет)
automation:
- alias: "Night Mode"
trigger:
- platform: time
at: "23:00:00"
condition:
- condition: state
entity_id: light.dimmerlink_light
state: "on"
action:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 20
transition: 10
Смена кривой в зависимости от типа нагрузки
automation:
- alias: "Curve for LED"
trigger:
- platform: state
entity_id: input_select.lamp_type
to: "LED"
action:
- service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "LOG"
- alias: "Curve for Incandescent"
trigger:
- platform: state
entity_id: input_select.lamp_type
to: "Incandescent"
action:
- service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "RMS"
Скрипты
Плавное утреннее включение
script:
morning_light:
alias: "Morning Light"
sequence:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 10
- delay:
seconds: 30
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 50
transition: 120 # 2 minutes
Имитация присутствия
script:
presence_simulation:
alias: "Presence Simulation"
sequence:
- repeat:
count: 10
sequence:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: "{{ range(30, 80) | random }}"
- delay:
minutes: "{{ range(5, 20) | random }}"
- service: light.turn_off
target:
entity_id: light.dimmerlink_light
- delay:
minutes: "{{ range(10, 30) | random }}"
Сцены
scene:
- name: "Movie"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 15
- name: "Reading"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 80
- name: "Romantic"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 30
Группы
light:
- platform: group
name: "All Dimmers"
entities:
- light.dimmerlink_living_room
- light.dimmerlink_bedroom
- light.dimmerlink_kitchen
Датчик мощности на основе шаблона
Если известна мощность лампы:
sensor:
- platform: template
sensors:
dimmer_power:
friendly_name: "Dimmer Power"
unit_of_measurement: "W"
value_template: >
{% set brightness = state_attr('light.dimmerlink_light', 'brightness') | default(0) %}
{% set max_power = 100 %}
{{ (brightness / 255 * max_power) | round(1) }}
История и статистика
Добавьте в configuration.yaml:
recorder:
include:
entities:
- light.dimmerlink_light
- sensor.dimmerlink_level
- sensor.dimmerlink_ac_frequency
history:
include:
entities:
- light.dimmerlink_light
5.2 Устранение неполадок
Проблемы с I2C
Устройство не найдено (0x50)
Symptom: Logs don't show "Found i2c device at address 0x50"
Проверка:
| Проверка | Решение |
|---|---|
| DimmerLink в режиме I2C? | Переключить через UART: 02 5B |
| Питание подключено? | VCC -> 3.3V, GND -> GND |
| Провода подключены верно? | SDA -> SDA, SCL -> SCL (без перекрещивания!) |
| Подтягивающие резисторы? | Добавьте резисторы 4.7 кОм на SDA и SCL к 3.3V |
| Провода достаточно короткие? | I2C работает на расстоянии до 30 см |
Диагностика:
# Add to configuration for debugging
i2c:
sda: GPIO21
scl: GPIO22
scan: true # Enable scanning
id: bus_a
logger:
level: DEBUG
logs:
i2c: DEBUG
Периодические ошибки I2C
Symptom: "I2C communication failed" from time to time
Решения:
- Снизьте частоту:
yaml
i2c:
frequency: 50kHz # Вместо 100kHz
- Добавьте задержки:
yaml
output:
- platform: template
write_action:
- delay: 1ms # Перед записью
- lambda: |-
// ... код
- Проверьте блок питания — нестабильное питание вызывает ошибки I2C
Проблемы с WiFi
ESP32 Doesn't Connect to WiFi
Проверка:
- Правильные SSID и пароль в
secrets.yaml - WiFi on 2.4 GHz (ESP32 doesn't support 5 GHz)
- Роутер не блокирует новые устройства
Решение — резервная точка доступа:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "dimmerlink-fallback"
password: "12345678"
captive_portal:
If it doesn't connect to WiFi — it will create an access point for configuration.
Частые отключения
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: NONE # Disable power saving
Проблемы с Home Assistant
Device Doesn't Appear in HA
- Убедитесь, что дополнение ESPHome запущено
- Проверьте api key в конфигурации
- Перезапустите Home Assistant
- Добавьте вручную: Настройки -> Интеграции -> Добавить -> ESPHome
"Entity unavailable"
Causes:
- ESP32 offline
- WiFi issues
- API key mismatch
Проверка:
ping dimmerlink.local
Проблемы с диммированием
Лампа мерцает
Причины и решения:
| Причина | Решение |
|---|---|
| Лампа не диммируемая | Use lamps marked "dimmable" |
| Малая нагрузка | Минимум 10–25 Вт для стабильной работы |
| Неверная кривая | Попробуйте LOG для LED |
| Помехи в сети | Добавьте RC-снаббер на выход диммера |
Lamp Doesn't Turn Off Completely
DimmerLink полностью отключает TRIAC при уровне level=0. Если лампа всё равно светится:
- Проблема в диммере или схеме подключения
- Некоторые драйверы LED имеют ток утечки
Слишком узкий диапазон яркости
Попробуйте другие кривые:
# In Home Assistant Developer Tools
service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "RMS" # or "LOG"
Проблемы с ESPHome
Ошибка компиляции
«lambda function not allowed»
Проверьте отступы в YAML — lambda должна иметь правильный отступ:
# Correct
write_action:
- lambda: |-
uint8_t data[2] = {0x10, 50};
id(bus_a).write(0x50, data, 2, true);
# Incorrect (missing "|-")
write_action:
- lambda:
uint8_t data[2] = {0x10, 50};
«id not found»
Убедитесь, что id: bus_a объявлен в секции i2c:.
OTA не работает
- Убедитесь, что ESP32 находится в той же сети
- Используйте IP вместо имени хоста:
bash
esphome run dimmerlink.yaml --device 192.168.1.100
Диагностические команды
Проверка I2C из ESPHome
Добавьте диагностическую кнопку:
button:
- platform: template
name: "I2C Diagnostic"
on_press:
- lambda: |-
ESP_LOGI("diag", "=== I2C Diagnostic ===");
// Check connection
uint8_t reg = 0x00;
uint8_t status = 0;
auto err = id(bus_a).write(0x50, ®, 1, false);
ESP_LOGI("diag", "Write result: %d", err);
err = id(bus_a).read(0x50, &status, 1);
ESP_LOGI("diag", "Read result: %d, status: 0x%02X", err, status);
// Read version
reg = 0x03;
uint8_t version = 0;
id(bus_a).write(0x50, ®, 1, false);
id(bus_a).read(0x50, &version, 1);
ESP_LOGI("diag", "Firmware: %d", version);
// Read frequency
reg = 0x20;
uint8_t freq = 0;
id(bus_a).write(0x50, ®, 1, false);
id(bus_a).read(0x50, &freq, 1);
ESP_LOGI("diag", "AC Frequency: %d Hz", freq);
ESP_LOGI("diag", "=== Done ===");
Логирование всех операций
logger:
level: DEBUG
logs:
i2c: DEBUG
api: DEBUG
sensor: DEBUG
Сброс к заводским настройкам
ESP32
- Очистить флеш-память:
bash
esptool.py --port COM3 erase_flash
- Прошить заново
DimmerLink
Отправьте команду RESET:
button:
- platform: template
name: "Factory Reset DimmerLink"
on_press:
- lambda: |-
uint8_t data[2] = {0x01, 0x01};
id(bus_a).write(0x50, data, 2, true);
- delay: 3s
Таблица кодов ошибок
| Код | Название | Причина | Решение |
|---|---|---|---|
| 0x00 | OK | — | — |
| 0xF9 | ERR_SYNTAX | Недопустимый регистр | Проверьте адрес регистра |
| 0xFC | ERR_NOT_READY | Не откалиброван или ошибка FLASH | Подождите 2 сек после включения |
| 0xFD | ERR_INDEX | Недопустимый индекс диммера | Используйте 0 |
| 0xFE | ERR_PARAM | Недопустимый параметр | level <= 100, curve <= 2 |
5.3 Дальнейшие шаги
Текущее состояние
DimmerLink v1.0:
- I2C interface
- UART interface
- Basic dimming (0-100%)
- Three curves (LINEAR, RMS, LOG)
- Auto-detection of mains frequency
- I2C address change
ESPHome Integration v1.0:
- Light entity
- All sensors
- Curve selection
- Diagnostics
- Multi-device
Планы развития
DimmerLink v2.0 (в разработке)
| Функция | Статус | Описание |
|---|---|---|
| Тепловая защита | В разработке | Мониторинг NTC, PWM-вентилятор |
| Плавный FADE | В разработке | Аппаратное затухание по команде |
| Многоканальный | Запланировано | До 4 каналов на одном модуле |
| Настройки EEPROM | Запланировано | Сохранение уровня и кривой |
Интеграция ESPHome v2.0
| Функция | Статус | Описание |
|---|---|---|
| Нативный компонент | Доступно | External Component |
| Мониторинг температуры | В разработке | Датчик температуры |
| Управление вентилятором | В разработке | Управление охлаждением |
| Мониторинг потребления энергии | Запланировано | Интеграция с ACS712/CT |
Нативный компонент ESPHome
Доступен нативный внешний компонент ESPHome. Он обеспечивает чистую конфигурацию YAML без кода lambda:
external_components:
- source: github://robotdyn-dimmer/DimmerLink@main
components: [dimmerlink]
dimmerlink:
id: dimmer1
address: 0x50
light:
- platform: dimmerlink
dimmerlink_id: dimmer1
name: "Light"
sensor:
- platform: dimmerlink
dimmerlink_id: dimmer1
ac_frequency:
name: "AC Frequency"
Расширенные проекты
Солнечный роутер
Использование DimmerLink для перенаправления избыточной солнечной энергии:
+---------------+ +---------------+ +---------------+
| Solar Panel |---->| CT Sensor |---->| ESP32 |
+---------------+ +---------------+ | + ESPHome |
| |
+---------------+ +---------------+ | |
| Heater |<----| DimmerLink |<----| |
+---------------+ +---------------+ +---------------+
Многокомнатная система
# Central controller for the whole house
substitutions:
# Dimmer addresses
living_room: "0x50"
bedroom: "0x51"
kitchen: "0x52"
bathroom: "0x53"
# 4 dimmers on one ESP32
Умный будильник
# Gradual light turn on for waking up
automation:
- alias: "Sunrise Alarm"
trigger:
- platform: time
at: "07:00:00"
action:
- service: light.turn_on
target:
entity_id: light.bedroom_dimmer
data:
brightness_pct: 1
- repeat:
count: 30
sequence:
- delay: 60
- service: light.turn_on
target:
entity_id: light.bedroom_dimmer
data:
brightness_pct: "{{ repeat.index * 3 }}"
transition: 60
Обратная связь
Нашли ошибку или есть предложение?
- GitHub Issues: DimmerLink Repository
- Документация: rbdimmer.com/docs
Хотите помочь с разработкой?
- Тестирование новых версий
- Документация и переводы
- Примеры использования
Полезные ссылки
| Ресурс | Ссылка |
|---|---|
| Документация DimmerLink | rbdimmer.com/docs |
| ESPHome | esphome.io |
| Home Assistant | home-assistant.io |
| ESPHome I2C | esphome.io/components/i2c |
| ESPHome Light | esphome.io/components/light |
| HACS | hacs.xyz |
История изменений
| Версия | Дата | Изменения |
|---|---|---|
| 1.0 | 2026-02 | Первый выпуск |
← - Lambda Reference | Содержание | Далее: FAQ и устранение неполадок →