Цитата Сообщение от veprik_ivan Посмотреть сообщение
Умный дом для заказчика в основном «игрушка» которым можно похвастаться перед друзьями, но эти игры стоят не малых усилий интеграторам!
Речь пойдет о некоторых проблема связанных именно с освещением в доме как об неотъемлемом блоке «умного дома».
Проблема 1: Если система централизованная, то в случае сбоя центрального контроллера программа не может управлять реле включения света.
Решение: Использовать распределенные модули управления, по нашему опыту одним из самых зарекомендовавших себя устройств в этом - программируемое реле ПР200 производства компании ОВЕН. Советуем использовать версию 220в, т.к. бытовые выключатели рассчитаны именно на это напряжение и будет меньше проблем с логической «единицей» на дискретном входе.

pr200.png

Это устройство имеет 8 каналов (реле) которые можно запрограммировать с использованием внутренней логики (как распределенную систему), дополнительно подключаются еще модули расширения 2шт. по 8 каналов, но тут есть риск остаться без большего количество управляемых светильников при выходе из строя самого ПР200 (8 каналов против 24), если соберетесь экономить, подумайте!

Овен.JPG

Пример программы одного канала в программе OWEN LOGIC
Несмотря на то, что программу выглядит просто, к ней мы шли несколько лет не по своей вине, компания Овен относительно недавно (после появления ПР200) добавила возможность управлять сетевой переменной как с наружи, так и изнутри.

Подробнее о программе:
I8 – это дискретный вход с 8 выключателя в доме или комнате
RTRIG – детектор переднего фронта, необходим для формирования единичного (на один цикл программы) импульса
TO INT – преобразования Bool в INT можно было бы и обойтись, но Slave сетевая переменная в Owen Logic не поддерживает bool.
XOR – исключающее или, если на одном входе 1, то и выход 1, если на оба входа подать 1 выход обнулится, основной элемент программы, который решает по нажатию на выключатель включить или выключить свет.
Реле8 – входная и выходная сетевая переменная, как я и говорил выше с недавнего времени можно использовать эти две переменные с одним регистром (адресом) Modbus, это нам дает возможность сохранить в нее необходимое нам состояние как снаружи, так и внутри без использования различных триггеров. Эти сетевые переменные имеют энергонезависимую память, поэтому при скачке напряжения освещение вернется в последнее состояние.
TO BOOL – конвертируем INT в BOOL значение, потому как реле на выходе имеет состояние False/True

Шаг 1: программу для 8 каналов можно скачать в приложениях Освещение для УД.owl и залить в программируемое реле, не забудьте сменить целевую платформу для своей версии ПР200/110 иначе прошить устройство не удастся!

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

Решение 1: Использовать готовые кнопки без фиксации, которые есть у большинства производителей выключателей таких как Schneider, Biticino, ABB и др. (рекомендованное решение, хоть кнопки в одном положении и включенных и выключенных ламп это выглядит эстетически красиво)

Решение 2: Отлавливать в ПР200/110 изменение состояния входа при использование типичного бытового выключателя с фиксацией и дальше посылать импульс программе которую скачали выше, если свет был включен то он погаснет и наоборот (не рекомендуется, т.к. через некоторое время все кнопки будут перепутаны верх и низ)

Проблема 3: верхний уровень у большинства производителей систем умного дома не дотягивает до эстетического и функционального совершенства.
Решение: используем HomeKit от Apple, которое: функционально, удобно и есть голосовое управление.

Шаг 2: стыкуем ПР200/110 с HomeKit
Для этого необходимы следующие инструменты:

Решение рекомендованное для демонстраций
Raspberry Pi 2/3/4 и к нему usb конвертер rs485 (например с Aliexpress)

raspberry.jpg 2142.750.jpg


Решение рекомендованное для интсаляций на базе модуля Raspberry CM3+ в промышленном исполнении c 2 двумя встроенными RS485 портами
Документация к устройству

qqqq.jpg raspberry-pi-compute-module-3-16g-cm3-16g-1.jpg


Подключите Ваше устройство на базе Raspberry к питанию и домашней сети желательно патчкордом, а не по wifi.
Соедините RS485 порт Вашего устройства и ПР200/110.
Далее определите IP адрес который выдал Ваш роутер и подключитесь по SSh например через программу PUTTY (по умолчанию логин pi пароль raspberry)
Установите программный продукт node-red для стыковки протокола HomeKit на верхнем уровне и Modbus Rtu на нижнем, смотри инструкцию по установке тут.

Не забудьте сделать Ваш node-red сервисом для автозагрузки.
Установите пакет HomeKit и modbus для node-red
cd ~/.node-red
npm install node-red-contrib-homekit
npm install node-red-contrib-modbus
sudo reboot

Ждем перезагрузки и переходим в браузер «ВАШ IP»:1880 (например 192.168.1.110:1880 )

Копируем следующий поток см. приложение node-red.txt (код) и вставляем в веб интерфейс «движка» правил node-red
Заходим в Menu-->import-->вставляем поток-->import

node-red2.JPG node-red3.JPG

Необходимо применить поток нажав на кнопку Deploy

node-red4.JPG

В случае неудачи советуем правильно указать RS485 порт в настройках Modbus плагина «Запрос модбас» и «Write Reset FC6» (пример /dev/ttyUSB0).
Для достоверности перезагрузите Ваше устройство SSH --> sudo reboot

Шаг 3:
Настройка приложения на Вашем Apple устройстве довольно простая заходим в программу "ДОМ" и жмем добавить дом.

Даем имя нашему дому по желанию, в нашем примере ПР200

hk1.jpeg hk2.jpeg

Добавляем и соглашаемся использовать несертифицированный аксессуар

hk3.jpeg hk4.jpeg

Вводим код доступа, в нашем случае 111 11 111, его можно заменить в настройках Node-red в каждом из аксессуаров HomeKit

hk5.jpeg hk7.jpeg

Добавляем все наши лампы в комнаты, это можно сделать позже.

hk8.jpeg hk9.jpeg

Желаем Вам приятного использования такой недорогой, но очень удобной системы.
Внимание:
Мы не агитируем к коммерческому использованию протокол HomeKit, любые действия противоречащие лицензионному соглашению APPLE по использованию протокола HomeKit разработчик берет на себя!
Мне кажется слишком расточительно использовать аж целый регистр для управления одной единицей нагрузки...