Описание.
Пока тестировал разные подходы в диммировании решил настроить WB диммер на работу с Home Assistant. Сам диммер https://wirenboard.com/ru/product/WB-MDM3/
Фотографии устройства.
Подключение напрямую к Home Assistant через USB-RS485 особо не дал результатов, только простые данные и очень простое управление. Чаты говорят, что через интерфейс HA настроить сложную логику невозможно … поэтому и разные автоматизации недоступны на уровне железа. Например, вкл/выкл и яркость идут как разные регистры, а нужно превратить в один light сенсор. Поэтому я решил сделать на ESP32 + TTL RS485, благо в esphome очень много настроек. Да и конфиг файл в самом НА не забивается. В моем случаеоказался под рукой esp32 s3, который избыточно крутой и мощный для простой задачи моста. Можно взять esp32 c3 и будет недорогое счастье.
Мой телеграм канал, там все быстрее обновляется телеграм.
не забудем про Поддержать автора
Чем хорошо использовать esp32+ttl rs485 - это передача сигнала через wifi, можно разместить диммеры где угодно и рядом с исполнителем. Я тоже не очень люблю wi-fi в умном доме, но тут все напрямую без облака - так что все ок. А если помечтать, то нас ждет wi-fi mesh в esp32, а также thread и zigbee в дальнейшем.
Диммер мне давно приглянулся так как были запросы на проводные версии управления, типа независимые от сервера. В принципе, этот диммер так и работает - входы “записываются” в сам диммер. Все настройки также записываются в сам диммер, я просто переложил это на esphome и управление/настройку через Home Assistant.
Конечно лучше брать голову контроллер от Wirenboard и дальше пускать управление через MQTT. А вот если диммеров всего один-два, а остальное например комбайн от кинкони на 32 выкхода с rs485 выходом на борту. Тогда конечно можно подключить через esphome.
Сам диммер огонь - адаптация под разные драйверы и лампы, настройка скорости диммирования, настройка порогов - например при минимальном лампа может погаснуть и через порог можно сделать поярче. Скорость затухания и разгорания - вообще супер, можно на лету менять через значения - например, вечером сделать более плавное, а днем более резкое.
Входы - короткое, двойное, долгое нажатие + комбинация с выбором каналов. То есть, любой вход назначается на любой канал (или на все каналы) и добавляется тип нажатия. На одну кнопку можно сделать короткое нажатие включить и выключить один канал, а долгое нажатие выключает все каналы.
Единственное что мне не понравилось - сам модбас, я не смог нормально без цикличной петли настроить обратный отклик. При нажатии на физическую кнопку статус в Home Assistant не меняется. Это не сильный баг, особенно если используется Алиса или сценарии выключить все - работать будет. НО можно посмотреть код и если если предложение как добавить обратный отклик - буду признателен. И ещё повысить отклик от входов.
-----------------------------
Сам код для ESPHOME тут https://github.com/smirnowegor/ESP-WB/blob/main/WB-MDM3
-----------------------------
Плату берем эту для экономии денег https://aliexpress.ru/item/1005008131844264.html?sku_id=12000043914436271&utm_campaign=181890&utm_content=5946520&utm_medium=cpa&utm_source=aerkol
Если нужно прям как у меня то вот мощная плата https://aliclick.shop/r/c/1t0zd8f0swqljqme?erid=2SDnjdfWFtS и удобный шилд под нее https://aliclick.shop/r/c/1t0zdb6iw8l3tiv1?erid=2SDnjev9ehL
Преобразователь https://aliexpress.ru/item/1005005517750423.html?sku_id=12000033386624262&utm_campaign=181890&utm_content=5683671&utm_medium=cpa&utm_source=aerkol или https://ya.cc/m/6A2Zb8
Мануал как пользоваться кодом. (Версия ESPHome)
Компоненты
ESP32 — контроллер с UART (TX/RX) и 3.3 V/GND.
TTL↔RS-485 модуль с авто-DE/RE (например HW-726) — VCC, GND, TXD(RO), RXD(DI), A, B.
WB-MDM3 — диммер с интерфейсом RS-485 (A/B).
Питание и логика
Тут будет подключение к esp32 S3, для выше предложенной платы пины могут быть другими.
- VCC (HW-726) → 3.3 V ESP32 (или через преобразователь уровней при 5 V-варианте).
- GND (HW-726) → GND ESP32 (общий минус обязателен).
- TXD (HW-726) (выход) → GPIO18 (ESP32 RX).
- RXD (HW-726) (вход) ← GPIO17 (ESP32 TX). Формула: TX одного устройства → RX другого. На модулях RO/DI соответствуют TX/RX по смыслу.
- A ↔ A, B ↔ B — RS-485 пара к WB-MDM3 (линейная топология).
Шина RS-485 (элементы)
- Топология: линейная (последовательные узлы A↔A, B↔B).
- Терминация: при длинной линии — 120 Ω между A и B на концах шины.
- Bias: при «плавающем» idle применяют pull-up на A и pull-down на B (обычно ~10 kΩ).
- DE/RE: модуль hw 726 rs485 с auto-DE/RE сам управляет направлением — дополнительных проводов не нужно.
Modbus / UART — параметры, которые видим в прошивке и в HA
UART
- Параметры, использованные в адаптации: 9600, 8N1 (baud 9600, 8 бит данных, нет паритета, 1 стоп-бит).
Modbus
- Устройство адресуется по Modbus-адресу (в адаптации может быть, например, 211). В HA интеграция использует этот адрес для чтения/записи регистров.
Что появляется в Home Assistant
- После подключения и корректной конфигурации в HA появятся сущности типов light, number, sensor, select — именно они используются для управления и настройки диммера.
Общая навигация в Home Assistant (где находятся элементы управления)
- Overview (Lovelace) — карточки управления (Light-card с ON/OFF + слайдер).
- Settings → Devices & Services → Devices → [ESP32 / WB-MDM3] — страница устройства с полным списком сущностей (Entities).
- Клик по сущности открывает диалог/страницу с деталями (значение, единицы, дополнительные атрибуты).
- Developer Tools → States — сырой список entity_id и текущих состояний (для сопоставления raw-значений).
Сущности: обзор, интерфейс и поведение.
Light — Канал N Свет
Интерфейс: карточка Light (Lovelace) или диалог сущности. Элементы:
- ON/OFF кнопка;
- слайдер яркости 0–100% (визуально).
Атрибуты и представление:
- state = on / off;
- brightness — внутренне 0–255, на UI показан как 0–100%;
- supported_features, friendly_name, entity_id, last_changed.
Что делает UI при действии:
- Слайдер → service: light.turn_on с brightness_pct (0–100) → адаптация переводит в Modbus-запись (регистры/секции).
- ON/OFF → light.turn_on / light.turn_off → запись в coils/holding регистры.
Пояснение: UI посылает желаемый уровень; реальная интерпретация (кривая, угол фазирования) выполняется прошивкой/диммером.
Number — числовые параметры (группа и единицы)
Сущности типа number применяются для разных параметров. Ниже — списки и подробности:
Канал N Яркость (commanded brightness)
- UI: поле ввода числа (0–100) или стрелки; иногда слайдер.
- Единица: проценты (%).
- Поведение: изменение отправляет запись в регистр, задаёт целевую яркость как явную числовую команду.
КN Порог min (мкс) / КN Порог max (мкс)
- UI: numeric input; подпись указывает µs.
- Единица: микросекунды (µs).
- Смысл: min = нижняя граница времени проводимости; max = верхняя граница отсечки.
- Запись: ввод → Modbus write в соответствующий holding register.
КN Скорость нарастания (мс) / КN Скорость затухания (мс)
- UI: numeric input; подпись — ms.
- Единица: миллисекунды (ms).
- Смысл: длительность transition/fade между уровнями при применении новой яркости.
КN Яркость аварии
- UI: проценты.
- Смысл: уровень который диммер установит при аппаратной аварии/защите.
Доп. параметры страницы number: min, max, step — могут быть заданы конфигурацией и ограничивать ввод в UI. После записи поле обычно отражает «configured / commanded» значение.
Select — выборные параметры управления (Input / Power on и т.д.)
InputX Mode
- UI: выпадающий список: Button или Latched switch.
- Смысл: Button = кнопка с событиями short/long/double; Latched switch = тумблер/фиксированное положение.
InputX Short Action, InputX Long Action, InputX Double Action
- UI: dropdown с опциями:
- Turn ON, Turn OFF — простые включение/выключение;
- Toggle — переключение состояния;
- Increase Level, Decrease Level — одношаговый инкремент/декремент яркости;
- Increase/Decrease Level — режим удержания (при hold меняет яркость вверх/вниз).
- Поведение: выбор опции преобразуется в код/индекс и записывается в регистр; дальше диммер применяет логику при соответствующих событиях входа.
Power on action
- Опции: Off, Restore previous, On and set brightness.
- Смысл: определяет поведение канала при подаче питания; для опции On and set brightness используется отдельное поле КN Яркость при включении.
Sensor — readback-сущности (chN_brightness_read и т.п.)
UI: read-only плашка с текущим значением, единицами и временной меткой последнего обновления.
Атрибуты: raw_register (номер регистра), quality, last_update.
Роль: показывает данные, которые устройство возвращает при опросе (реальный/фактический readback). Через UI изменить нельзя — это отображение состояния, пригодное для логики/мониторинга.
Кнопки и входы — полный блок (вместе с select и number)
Режимы входа (InputX Mode)
- Button — вход генерирует события: short (короткое), long (длинное), double (двойное). Эти события сопоставляются с выбранными действиями (InputX ... Action).
- Latched switch — вход имеет состояние замкнут/разомкнут (on/off); события удержания не применяются.
Действия на события (InputX Short/Long/Double Action) — семантика и что делает диммер
- Turn ON / Turn OFF — установка состояния канала.
- Toggle — переключение состояния.
- Increase Level / Decrease Level — одноразовый шаг изменения яркости (величина шага определяется прошивкой/конфигом).
- Increase/Decrease Level — режим удержания: при удержании входа диммер запускает непрерывную или ступенчатую регулировку вверх/вниз до отпускания. Реализация (ступенчатая/плавная), скорость и шаг зависят от прошивки и параметров ramp/step.
Параметры, влияющие на работу входов (атрибуты/связанные поля)
- debounce — фильтр дребезга (ms).
- long threshold — время распознавания долгого нажатия (ms).
- step size / repeat interval — внутренние величины шагов/интервала при удержании (может задаваться в прошивке).
Примеры сочетаний
- Short = Toggle — один короткий тап переключает свет.
- Long = Increase/Decrease Level — держим кнопку — яркость изменяется, отпускаем — изменение останавливается.
- Short = Increase Level (на кнопке Up) — каждое нажатие прибавляет фиксированный процент.
Взаимодействие UI ↔ устройство — что происходит «за кулисами»
Команды из UI
- light (слайдер/ON): формирует light.turn_on/turn_off с параметрами (brightness_pct) → интеграция переводит в Modbus-запись (holding register / set of writes).
- number (изменение): сразу формирует запись значения в соответствующий holding register.
- select (выбор): формирует запись кода (индекса/значения) в соответствующий регистр.
Readback и показатели
- sensor публикует значения, прочитанные драйвером (polling). В HA это отображение последних данных с устройства. UI не записывает в sensor, только читает.
Командированный vs фактический уровень
- UI показывает commanded (что послано) и далее может отобразить readback (что устройство сообщило). Разница возможна из-за асинхронности запросов/обработки и особенностей аппаратной реакции.
Немного фото
Способ 1 Поддержать автора
Способ 2 https://donate.stream/yoomoney410013774736621
или через криптокошелёк (Только USDT) TCHekdJZFndXpDrHZGuTmqFNcqhWBTTzPr
Связаться со мной. (Консультации, проектирование и обучение)
Новый подход к электрике и дизайну помещений. Некоторые провода уже не нужно тянуть, какие-то решения можно принять после ремонта. Перенести выключатель, запустить кондиционер с телефона - возможно автоматизировать любую рутину.
Мой телеграм канал, там все быстрее обновляется телеграм.
Сайт smart4home.ru и альтернативный Умный дом на любом этапе
Соц сети: RuTube канал Удобный дом / You Tube канал Удобный дом Яндекс Дзен: Удобный дом / InGram
Платформы специалистов: Авито / Профи.ру / Яндекс Услуги https://uslugi.yandex.ru/profile/EgorSmirnov-2294380?from=telek
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158 Реклама. ООО «ЯНДЕКС», ИНН 7736207543