Открытое ПО для управления умным домом
По мере развития оказалось, что сетей из умных гаджетов и узлов на основе Arduino или других открытых микрокомпьютерных платформ недостаточно, чтобы построить полноценную систему умного дома. Нехватало центральных процессоров и качественных пользовательских интерфейсов, которые играют заметную роль в популярных проприетарных системах умного дома, таких как Control4 или Vantage. Благодаря усилиям энтузиастов по всему миру стали появляться открытые программные платформы, которые решают и эту проблему. В настоящее время среди таких DIY-платформ (Open-source DIY home automation platform) наиболее известны:
- OpenHAB — одна из наиболее популярных открытых платформ с большим и активным сообществом разработчиков и последователей. Платформа реализована на Java и из-за этого считается тяжеловесной. Вместе с тем, именно это обстоятельство позволяет разворачивать OpenHAB на любых системах с поддержкой Java (Windows, Linux, MacOS, Raspberry Pi, PINE и др.). Разработано большое количество драйверов под эту платформу для подключения самого разного оборудования. Поскольку платформа не ориентирована ни на одного производителя, то наличие драйвера под определенное устройство определяется в большей степени его популярностью. Чем более известен и распространен на рынке конкретный гаджет, тем выше вероятность, что под него уже есть (или скоро будет написан) драйвер под OpenHAB. Система имеет достаточно аскетичный дизайн, поддерживает голосовое управление, мобильные приложения для iOS и Android, интегрируется с Apple HomeKit (то есть управление возможно с устройств Apple вообще без установки каких-либо приложений). Имеется возможность увязать друг с другом события, происходящие в доме, и настроить поведение устройств в зависимости от таких событий.
- MajorDoMo — динамично развивающаяся открытая платформа, имеющая большое сообщество русскоязычных пользователей. MajorDoMo поддерживает множество протоколов связи и большое количество оборудования от различных производителей. В целом концепция MajorDoMo не сильно отличается от концепции OpenHAB, но она реализована на совершенно другой программной архитектуре. Здесь используется Apache + PHP + MySQL, что также позволяет развертывать MajorDoMo на множестве разных платформ (Windows, Linux, Raspberry Pi). Поддерживается голосовое управление, есть возможность интеграции с Apple HomeKit. В целом развитие MajorDoMo подпитывается теми же идеями, которые реализуются в системе OpenHAB. Вместе с тем, MajorDoMo больше ориентируется на русскоязычное сообщество, а в плане архитектуры обладает несколько большей гибкостью, но и требует более специфического программирования при построении системы умного дома. MajorDoMo может брать на себя любые фунции по управлению устройствами, реагировать на события, рассылать уведомления. Сервер с системой MajorDoMo по сути берет на себя роль главного процессора в системах с централизованной архитектурой.
- ioBroker — один из «новичков», который быстро завоевывает авторитет и популярность, благодаря своей продуманной и универсальной архитектуре. ioBroker разработан на платформе Node.js (также как и HomeBridge). Благодаря этому, его можно развернуть и запустить практически на любой операционной системе или виртуальной машине: Windows, Mac, Linux, в контейнере Docker и даже на Android. Это позволяет масштабировать систему исходя из потребностей. Система имеет визуальный редактор планов помещений. Легко интегрируется с любыми MQTT-серверами (или брокерами), а также сама выступает в качестве MQTT-сервера/брокера для IoT-устройств, поддерживающих протокол MQTT. Большой упор сделан на возможности удобной настройки и конфигурации, что по сути составляет не менее половины функциональности всей системы, в отличие от OpenHAB или, например, FHEM, где настройки задаются посредством конфигурационных файлов. Имеется русскоязычное сообщество.
IoT Manager — это программное обеспечение для домашней автоматизации, которое не является полноценной системой управления умным домом, но может использоваться как средство мониторинга и передачи простых команд посредством протокола MQTT. Продукт сфокусирован на визуализации управления, отображении графиков и пр. на мобильных устройствах. Сами мобильные приложения не имеют собственной логики, которая должна быть реализована исключительно в оконечных устройствах. Приложение обращается непосредственно к устройствам с использованием шины MQTT и через нее же получает ответы, которые тут же визуализирует в графическом виде. IoT Manager представляет из себя гибридное (не нативное) приложение, созданное с помощью Ionic Framework, на HTML5 и AngularJS, обмен с брокером реализован на Paho, который обеспечивает полное соответствие стандарту MQTT.
Данный список является далеко не полным. Энтузиастами по всему миру также разработаны такие системы как: Calaos, DomotiGa, Freedomotic, Jeedom, MyController.org, PiDome, Pimatic и другие.
Важно понимать, что все перечисленные выше системы представляют из себя только лишь программные оболочки и предназначены для того, чтобы управлять каким-то оконечным оборудованием, из которого и состоят подсистемы умного дома. Концепция DIY предполагает совместное использование самых разнообразных устройств, в качестве которых могут выступать и умные гаджеты от известных производителей, и noname-оборудование со всех концов света, и какие-то подсистемы и исполнительные механизмы, полностью собранные пользователем самостоятельно из отдельных блоков и компонентов. Такая программная оболочка должна быть установлена на каком-то компьютере, в качестве которого может выступать обычный ПК или небольшой сервер. Очень часто в качестве упомянутого «сервера» принято использовать недорогие микрокомпьютеры типа Raspberry Pi или подобные.
Данный микрокомпьютер с установленной на нем программной составляющей становится по сути центральным процессором умного дома и берет на себя задачи по управлению логикой работы и взаимодействию различных подсистем умного дома. Для непосредственного взаимодействия с самими этими подсистемами управляющий микрокомпьютер должен быть оснащен соответствующими интерфейсами (Z-Wave, ZigBee, USB, Ethernet, Modbus, 1-Wire и т.п.).
Сервер умного дома windows
Сердцем Умного дома выступает сервер — который собирает информацию от всех устройств и отдает им различные команды
Производители оборудования для Умного дома часто делают собственные сервера для своих устройств. Ключевой минус таких серверов — это невозможность подключить к ним оборудование других брендов.
Некоторые производители отказываются от производства сервера и предлагают пользователям вариант облачного сервера. Минус такого варианта — зависимость от интернета.
Системам Умного дома (MajorDoMo и другие), которые позволяют подключать оборудование разных брендов, необходим физический сервер.
Что важно?
На выбор сервера для Умного дома обычно влияет несколько факторов:
Сразу уберем из наших вариантов промышленные сервера — это как минимум дорого.
В целом в качестве сервера для Умного дома можно использовать любой компьютер на Windows или Linux.
Многие пользователи MajorDoMo (и других систем Умного дома) используют для своего Умного дома обычные:
- персональные компьютеры (PC)
- нетбуки
Основной плюс такого варианта — это можно использовать свой старый компьютер в качестве Умного дома. Системы для создания Умного дома обычно не требовательны к железу, поэтому запустятся на многих старых компьютерах и буду стабильно функционировать.
Мы и сами используем старые PC и нетбук на нескольких наших тестовых системах 🙂
Но если покупать новый PC специально в качестве сервера — получается все же дороговато.
Кроме того, большой минус использования PC/нетбука в качестве сервера — это размер.
Если у вас есть специальное техническое помещение где вы можете поставить компьютер или нетбук — замечательно. Мы же предпочитаем делать аккуратный серверный шкаф и размещать сервер и все контроллеры там.
Оптимальное решение
И тут на помощь приходит такая замечательная вещь как одноплатный компьютер.
Рынок одноплатные компьютеров стал активно развиваться с 2011-2012 гг., когда был выпущен британский одноплатник Raspberry Pi. Первые же эксперименты показали что Raspberry отлично подходит в качестве сервера Умного дома, популярность которого начала также расти в 2011-2012 гг.
Основные плюсы использования одноплатных компьютеров в качестве сервера Умного дома:
- очень небольшая цена — от 20 USD в Китае до 50-70 USD в магазинах СНГ
- по техническим характеристикам отлично подходит для Умного дома
- надежность
- небольшой по размерам
Фото одноплатника
Самые популярные одноплатные компьютеры для создания Умного дома:
В качестве бонуса
По ссылке вы можете посмотреть что используют в качестве сервера текущие пользователи MajorDoMo.
Гайд: Как подготовить сервер умного дома
Выбрав в качестве первого сервера для умного дома raspbrerry pi, я не был оригинален, но при получении заветного одноплатника все равно был очень рад. Это был первый опыт с одноплантными компьютерами, поэтому это действительно было похоже на магию. Мой первый компьютер был на порядок больше и примерно во столько же раз слабее этого устройства.
В этой статье я не буду описывать весь процесс установки операционной системы на мой сервер умного дома — таких статей в интернете вы найдете множество (но, если интересно — напишите в комментарии, я напишу подробный гайд). Лишь хочу показать, на что нужно обратить внимание при установке операционной системы для сервера умного дома.
- Образ операционной системы необходимо скачать на официальном сайте проекта по ссылке https://www.raspberrypi.org/downloads/raspberry-pi-os/ . Качайте и устанавливайте образ Raspberry Pi OS (32-bit) Lite. От остальных вариантов он отличается отсутствием графической оболочки (та самая привычная среда в виде рабочего стола, папок, файлов и браузера) и предустановленного «рекомендованного” обеспечения. Такой способ установки был выбран, прежде всего, для рационального использования ресурсов. Графический интерфейс, как и всё в операционной системе, требует ресурсов процессора и места в оперативной памяти. Управление умным домом и его конфигурация будет происходить через вэб-интерфейс (местами понадобится, конечно, и доступ к конфигурационным файлам, но и для этого графический интерфейс системы не обязателен), так что привычный всем “рабочий стол” на нашем сервере нам не понадобится.
Для установки операционной системы на одноплатник в первую очередь нужно записать скачанный образ на sd карту. Для записи образа на micro sd карту вам понадобится картридер, если такого нет в вашем компьютере. Для записи образа я использовал программу Win32DiskImager.
Тут я отмечу на очевидный минус использования Home Assistant на Raspberry pi — это флэш карта формата micro sd в сочетании со спецификой базы данный HA. Дело в том, что HA постоянно пишет в базу данных, пишет много и часто, что приводит к выходу из строят флэш памяти. В свою очередь загрузка операционной системы с micro sd карты — стандартный и на момент покупки одноплатника безальтернативный вариант использования операционной системы. О том, как с этим бороться и что можно предпринять, я обязательно напишу позже.
- После того, как образ записан на micro sd карту, необходимо создать на флэшке пустой файл и назвать его “ssh”. Этот файл должен быть без расширения (.txt или .doc недопустимы). Наличие этого файла на карте обеспечит включение доступа по ssh на наш одноплатник. Эта опция была мне просто необходима, так как подключить к raspberry pi монитор у меня не было технической возможности.
- После первой загрузки операционной системы необходимо узнать ip адрес вашего сервера умного дома, чтобы подключиться к нему по ssh.По умолчанию сервер имеет имя raspberrypi, получить его ip адрес можно воспользовавшись в командной строке windows утилитой ping, т.е. ping raspberrypi. В ответ вы увидите, какой ip адрес резолвится по этому имени. Я крайне рекомендую прописать на raspberry pi сетевой адрес статически, либо зарезервировать его на вашем роутере.
- Советую подключать сервер умного дома к локальной сети только по проводу, никаких wi-fi. Это связано не столько с большей надежностью проводного соединения (тут, конечно, можно и поспорить в комментариях), но и во избежание проблем для внутреннего модуля bluetooth в самом одноплатнике, который также используется сейчас в моем УД.
- Для подключения по ssh к серверу умного дома я использую популярный клиент putty. По умолчанию в системе создается пользователь pi с паролем raspberry. Далее рекомендую изменить стандартный пароль, на что-то посложнее. Также можно создать отдельного пользователя — так злоумышленникам будет еще сложнее подобрать пару логин/пароль, если вы их опасаетесь.
Если какой-то из этих пунктов требует разъяснения — пишите в комментарии, дам развернутый ответ.