Умный Дом — голосовое управление в три шага. Raspberry + HomeKit

Уважаемые друзья!

Мы решили поделиться с Вами бюджетным готовым решением, надеемся Вы оцените наши старания. Решение проверенное, рабочее. Во вложении можно скачать все файлы программ и настройки. Отдаем все бесплатно.

Умный дом для заказчика в основном «игрушка» которым можно похвастаться перед друзьями, но эти игры стоят не малых усилий интеграторам!

Речь пойдет о некоторых проблемах и решениях, связанных именно с освещением в доме, как о неотъемлемом блоке «умного дома».

Проблема 1: Если система централизованная, то в случае сбоя центрального контроллера программа не может управлять реле включения света.

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

image

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

image

Несмотря на то, что программу выглядит просто, к ней мы шли несколько лет не по своей вине, компания Овен относительно недавно (после появления ПР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 каналов можно скачать по ссылке в конце статьи и залить в программируемое реле, не забудьте сменить целевую платформу для своей версии ПР200/110 иначе прошить устройство не удастся!

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

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

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

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

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

Шаг 2: стыкуем ПР200/110 с HomeKit

Для этого необходимы следующие инструменты:

Решение рекомендованное для демонстраций:

Raspberry Pi 2/3/4 и к нему usb конвертер rs485 (например с Alliexpress)

image

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

image

Подключите Ваше устройство на базе 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

Заходим в Menu -> import -> вставляем код потока

image

image

image

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

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

Для достоверности перезагрузите Ваше устройство SSH à sudo reboot

Шаг 3. Настройка приложения на Вашем Apple устройстве довольно простая.

image

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

image

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

image

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

image

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

Желаем Вам приятного использования такой недорогой, но очень удобной системы.

Внимание:

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

Программу для ОВЕН ПР200 и скрипт для NodeRed можно бесплатно скачать тут.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 32

    +1
    Очень не хватает обычного димера на 8 каналов.
      0
      Очень не хватает примеров использования кроме управления лампочками/шторами.
        0

        Мы подготовим в ближайшее время и обязательно выложим

        0

        Можно использовать Алису Яндекса. У них есть отдельный навык для управления. Я для своего контроллера делал голосовое управление. Сейчас оно прибито гвоздями, но при наличии желания и времени можно допилить до полноценного. Есть, правда, одно неудобство: нужно либо ставить центральный сервер и с него пересылать команды на клиентские умные дома, либо самому выставлять в сеть свою реализацию и делать приватный навык (благо, одобряют его мгновенно).
        P.S. Я писал на PHP, но можно на чём угодно сделать, ибо json кругом.

          0

          Интересное решение

            0

            Эх. Гулять так гулять. https://github.com/fsa/shcc
            Кому интересно, можете глянуть код.

            +1
            Проблема 1: Если система централизованная, то в случае сбоя центрального контроллера программа не может управлять реле включения света.

            Эх, в который раз… После того, как настроили первый Raspberry Pi со своим HomeKitом…
            Покупаем второй такой же Raspberry Pi с RS485 стиком. Клонируем SD карту с первого распберри и вставляем во второй. Подключаем к той же шине RS485
            Берем любое Watchdog реле с переключающим контактом и подключаем его к первому Raspberry Pi. В Nodered настраиваем импульсный выход. Через переключающие контакты реле запитываем и первый и второй Raspberry.
            Общий принцип получается — пока первый RPi жив и треплется, второй выключен и не мешает. Первый накрылся, реле передернуло питание из первого во второй, который продолжает обмен по RS485. Холодное резервирование называется.


            И никакие ПР200 не нужны.

              0

              Не обязательно использовать ПР200, в статье он указан как один из вариантов, суть понятна думаю

                0

                Суть понятна, но не нужны такие умные оконечные устройства.

                  0
                  Тут вопрос не в избыточности ума, а в цене и она относительно низкая у ПР200 с модулями расширения канал один обходится в 620р. Если надо управлять 2-4 реле, то проще на малине GPIO использовать, а если 10 — 100 каналов, то врядли есть дешевле решение.
                    0

                    Ну, возможно не в России, но они есть. Вам тогда не нужны никакие программируемые реле, а достаточно обыкновенных I/O модулей — будь они на Modbus или на какой-либо другой технологии полевой шины. Даже самые-самые быстрые I/O модули на основе Ethercat(так как по Modbus светом особо не поуправлять) стоят по 65 евро за 16 каналов + 100 евро за копплер. Т.е. при 96 каналах общая стоимость будет 6*65+100=490 евро или 5,10 Евро за канал, т.е. порядка 360 рублей, если пересчитать. У того же Овна, помоему, тоже модули такого плана есть и огни гораздо дешевле.

                      0
                      I/O модули нужно резервировать сервер, как вы писали выше, а если встроенная логика, то можно 2 уровня резерва сделать. мне Ваша идея понравилась на счет холодного резервирования.
                      К сожалению мы в России! Не буду защищать modbus rtu я сам прекрасно понимаю, что он медленный, но в умном доме этого достаточно за 100мс (если все правильно сделать) примерно команда доходит, а это не заметное время отклика для человека. Вообще интересно на CAN шине умный дом поднять, она имеет скорость до 1мб/с, так же как в KNX нет мастеров но скорости гораздо выше.
                        0

                        Можно и горячий резерв запилить. Питать оба 2 разными БП, одним проверять работу второго, если не откликается, то брать управление на себя

                          0

                          В данном случае это будет гораздо сложнее реализовать, так как оба контроллера будут конфликтовать из-за одинаковых IP адресов, двух мастеров на Modbus шине и т.д. А если все эти конфликты разрешать, то надо будет добавлять в другие устройства какие-то функции по выбору "мастер"-контроллера — т. е. того который в данный момент управляет. Или делать какой-то общий арбитер — короче ненужное усложнение системы, которое в принципе нужно только в том случае, если переключение на резервный контроллер должно быть очень быстрым. Там еще назревает вопрос репликации состояний...


                          Короче не нужно это в УД. В том редком случае 1-5 минут, пока резервный контроллер загружается, не будут очень сильно напрягать.

              0

              Кстати, с Google Home не пробовали?

                0

                На конец декабря по плану стоит тест google home

                  0

                  Кстати вот на днях проверил https://flows.nodered.org/node/node-red-contrib-nora


                  Как ни странно, получилось очень просто и даже работает.

                    0

                    Интересный плагин, ещё одно подтверждение того что в node-red можно сделать почти все что угодно.

                      0

                      Да, причем неожиданно то, что при этом и очень быстро по сравнению с другими вариантами.


                      То есть тот же Google Home в Openhab надо привязывать через их облако, а для этого его перед этим надо настроить, а тут всего пара кликов и оно работает.


                      Таким же образом пытался привязать кондиционеры к домашней автоматизации — мучался всякими токенами в OpenHAB. А в node-red поставил плагин и оно заработало

                0
                Имеет смысл присмотреться к offline решениям, open source
                en.wikipedia.org/wiki/List_of_speech_recognition_software
                fosspost.org/lists/open-source-speech-recognition-speech-to-text
                  +1

                  Я вот думал и будет речь про оффлайн. Представляю себе, делаем коммерческое решение, а через месяц (образно) прилетают очередные санкции\ роском-кто-то там блокирует очередную подсеть\ повредили кабель провайдера… и половину функций отваливается. И это не самопал, который вечером на коленке сам слепил, за это не малые деньги отстегнули.

                    0

                    Это работает на WiFi когда Вы внутри дома

                    0

                    Это решение как раз offline по сети WiFi, а если хотите выйти во внешнюю сеть apple предлагает использовать apple tv либо iPad как центр домашней автоматизации и стыкует Вас с домом через облако Apple. Я понимаю что все это от части избыточно, но если автоматизация комплексная то она себя оправдывает.

                    0

                    Я совсем ламер в данных вопросах, но собираюсь себе настроить работу выключателей через homekit.


                    Кто нибудь может мне объяснить чем данное решение лучше чем тот же shelly? Пока что я вижу что shelly:


                    1. Дешевле (Но правда под один/два канала всего, хоть мне это кажется логичным — как раз под один выключатель. Хотя 4 shelly вроде как все равно дешевле).
                    2. Работает со стандартными выключателями, которые мне кажутся более эстетичными чем кнопка.
                    3. Не требует Rs, управляется прямо по wifi.
                    4. Влазит в распределительную коробку.
                      0
                      Не понял вопрос, а разве shelly уже работает с протоколом HomeKit?
                        0

                        Homekit подтягивается так же как у вас: через raspberry pi и homebridge

                      0
                      По поводу выключателей с пружинками, по сути нет никакой разницы фиксируй мы не вкл или выкл выключателя, а обнаружения простого изменения состояния (с вкл на выкл или с выкл на вкл). Таким образом я оставил родные выключатели(даже проходные) и всегда могу убрать «умность» с конкретного выключателя за минут 10.
                        0
                        Тут загвоздка: если включил свет с выключателя, а выключил с телефона этот выключатель останется в положении «ВКЛ», если он один то куда не шло, а если их 2-4 в одной рамке, просто выглядеть будет странно, когда свет выключен полностью, а там хаос. На счет перейти на «Не умные выключатели» открыть выключатель и выкинуть пружинку позволяют все вендоры и продолжить работу в штатном режиме но это уже 11 минут ))
                        +1
                        Где умный дом? Чем отличается управление голосом от простого переключения рукой? Если пишите заголовки то пишите их корректно. На этом ресурсе грамотные люди статьи читают. Вот у меня в доме автоматика сама принимает решение о включение и выключении в том числе и мощности освещения в комнатах дома. Полностью автоматизировано отопление, вентилирование и кондиционирование и то мне сложно это назвать умным домом.
                          0
                          Я с удовольствием почитаю о Ваших решениях и если дадите ссылку.
                          0
                          Спасибо, любопытно. А где такой корпус для малинки найти, как на изображении?

                          У себя дома построил автоматизацию на Home Assistant + Алиса. Но сейчас, глядя на все устройства, что я туда завёл, я задумываюсь, что было бы разумнее заранее продумать проект всего питания/освещения и приобрести соответствующие устройства одного вендора с собственным шлюзом для управления, например по zigbee (сходу на ум приходят xiaomi и livolo), а так же с обязательным дублированием умных функций физическими кнопками.
                            0
                            Спасибо, любопытно. А где такой корпус для малинки найти, как на изображении?

                            Этот корпус не для обычной малины, а для платы расширения, которую Мы сами изготовили, в эту плату втыкается raspberry cm3. Здесь можно посмотреть.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое