Skip to content

Latest commit

 

History

History
128 lines (98 loc) · 12 KB

README_ru.md

File metadata and controls

128 lines (98 loc) · 12 KB

Всем привет!

Это проект, посвященный управлению моторизированными шторами, и их интеграции в системы умного дома (напр. Home Assistant или OpenHab).

Проект развивается в основном в двух областях:

  1. Программная часть (прошивка для контроллера на базе ESP8266 / ESP32)
  2. Механическая часть (3д-модели для превращения обычных рулонных штор в моторизованные).

А теперь немного подробнее...

Прошивка для ESP8266 / ESP32

Я стараюсь поддерживать работоспособность всех функций на обеих платформах. Основные отличия между ними:

  • На ESP8266 доступно меньше пинов. Тут можно подключить только 2 шаговых двигателя к одному контроллеру (используя 8 пинов).
  • ESP32 даёт возможность подключить 4 (или даже больше?) шаговых двигателя к одному контроллеру (используя 16 пинов).

Если вам нужно подключить 1-2 мотора - можете смело брать плату на основе более дешевого и простого ESP8266 (Wemos D1 mini, Node MCU и т.д.).

Основные возможности моей прошивки

  • Поддержка доступных шаговых двигателей 28BYJ-48 (лучше использовать 12 вольтовые версии)
  • Управление неограниченным кол-вом шаговых двигателей (ограничение в 4 мотора стоит по-умолчанию для более удобного UI). Фактически ограничены только аппаратно - кол-вом пинов.
  • Возможность задать скорость вращения (моторы на 12 вольт могут обеспечить бОльшую скорость)
  • Возможность задать все основные настройки на этапе запуска системы через Captive WiFi Portal (используемые моторы, пины, скорость моторов, настройки MQTT и т.д.)
  • Веб-интерфейс для выставления крайних точек и управления шторами (в том числе адаптирован под мобильные устройства)
  • Возможность подключения внешнего механического выключателя для управления шторами (с возможностью остановки штор в нужной позиции).
  • Поддержка MQTT (как для управления шторами, так и для настроек крайних положений - полная замена Web UI)
  • Простая интеграция с популярными системами умного дома вроде Home Assistant или OpenHab (через MQTT)
  • "Обновления по воздуху" (OTA updates). Не нужно снимать и разбирать контроллер для обновления прошивки. Веб-интерфейс уведомляет о наличии новых обновлений.
  • Сохранение положения каждой шторы в энергонезависимой ПЗУ (после отключения питания не нужно заново калиброваться или выставлять позицию)
  • Управлением всеми подключенными моторами в параллель (асинхронная работа с шаговыми двигателями)
  • Watchdog (автоматический рестарт контроллера в случае зависания)
  • Автоматическое поддержание подключения к MQTT серверу и переподключение в случае проблем с сетью
  • Низкое энергопотребление в режиме простоя (обмотки двигателя не держатся под напряжением во время остановки)
  • Поддержка DHCP по WiFi

Web-интерфейс

Управление:

Калибровка крайних позиций:

Captive Portal

После соединения с сетью "esp-xxxx" автоматически откроется Captive Portal:

Настройте тут пины для нужных двигателей и для механических кнопок Вверх/вниз (или выключите, если не используется).

MQTT

Если не хотите использовать MQTT, просто не вводите адрес MQTT сервера при конфигурации в Captive Portal.

Принцип работы:

  • Команды для управления шторами контроллер слушает в топике ESP_Blinds/<chip_id>/in (JSON)
  • Обновления о позиции и своём состоянии контроллер отправляет в ESP_Blinds/<chip_id>/out (JSON)
  • Отдельные топики для моторов (/outN) отключены в целях оптимизации MQTT общения, но если в вашей интеграции они нужны - их можно включить.

Интеграция с HomeAssistant

В контроллере реализована функция MQTT auto-discovery с префиксом по-умолчанию (требует как минимум версии HA v2021.11). Она поможет автоматически обнаружить контроллер штор и настроить все объекты с правильной конфигурацией.

В случае, если этот вариант вам не подходит, вы можете настроить всё вручную. Смотрите примеры конфигураций ниже.

Пример конфига для интеграции 2х штор в Home Assistant (замените "chip_Id" Chip id вашего контроллера - его можно подглядеть в сообщении о регистрации - /ESP_Blinds/register):

cover:
  - platform: mqtt
    name: "Штора 1"
    device_class: "blind"
    command_topic: "ESP_Blinds/_chip_Id_/in"
    set_position_topic: "ESP_Blinds/_chip_Id_/in"
    set_position_template: '{"num": 1, "action": "auto", "value": {{ 100 - position }} }'
    position_topic: "ESP_Blinds/_chip_Id_/out"
    position_template: '{{ value_json.position1 }}'
    payload_open: '{"num": 1, "action": "auto", "value": 0}'
    payload_close: '{"num": 1, "action": "auto", "value": 100}'
    payload_stop: '{"num": 1, "action": "stop", "value": 0}'
    position_open: 0
    position_closed: 100
    optimistic: false

  - platform: mqtt
    name: "Штора 2"
    device_class: "blind"
    command_topic: "ESP_Blinds/_chip_Id_/in"
    set_position_topic: "ESP_Blinds/_chip_Id_/in"
    set_position_template: '{"num": 2, "action": "auto", "value": {{ 100 - position }} }'
    position_topic: "ESP_Blinds/_chip_Id_/out"
    position_template: '{{ value_json.position2 }}'
    payload_open: '{"num": 2, "action": "auto", "value": 0}'
    payload_close: '{"num": 2, "action": "auto", "value": 100}'
    payload_stop: '{"num": 2, "action": "stop", "value": 0}'
    position_open: 0
    position_closed: 100
    optimistic: false

Аналогично добавляются все остальные шторы.

Механическая часть

Наиболее распространённый вариант использует двигатели 28BYJ-48, но фактически вы можете использовать любые шаговые двигатели с управлением по 4м контактам (двигатели с двумя обмотками). 28BYJ-48 чаще всего используют вместе с драйвером ULN2003 (лучше на 12 вольт, он даёт бОльший крутящий момент).

Я разработал 2 варианта переделки рулонных штор из Леруа Мерлен в моторизованные:

  1. для старого образца крепления. Похоже их почти уже не продают.
  2. для нового образца (скоро опубликую). Крепёжные отверстия совпадают с оригинальными деталями, поэтому шторы могут быть легко превращены в моторизованные и обратно.

Модели для 3д печати доступны каталоге 3d_parts или напрямую на Thingiverse

Планы развития

  • Добавить поддержку других шаговиков и драйверов (предлагайте в issues каких)
  • Добавить больше возможностей по конфигурации в Web UI (чтобы не приходилось сбрасывать все настройки, чтобы попасть в Captive Portal)
  • Подготовить универсальные печатные платы для более простой сборки самого контроллера
  • Есть идея? добавляйте тут в issues

История проекта

Этот проект изначально был основан на работе товарища @nidayand - как форк от его репозитория.

К сожалению проект поддерживал только ESP8266 и управление 1 двигателем, плюс давно не обновлялся. Я добавил поддержку Platformio (для более удобной разработки), нескольких моторов, а позже и ESP32 (чтобы можно было подключить более 2х моторов к одному контроллеру). Это было опубликовало под версией 1.4.x.

Вскоре захотелось более удобного управления двигателями, простой конфигурации контроллера без правки прошивки, но изначальный код был малопригоден для поддержания, хотя и работал. В результате произошёл большой рефакторинг прошивки - были выделены новые классы, зоны ответственности.

Фактически стало понятно, что от старого проекта почти ничего не осталось (непереработанным остался только лишь Web UI). Этот проект был выделен в свою отдельную ветку и теперь развивается самостоятельно.