Обзор различных систем автоматизации. Строим с «Дусей» настоящий Интернет вещей у себя дома

Одним из наиболее важных и сложных вопросов при запуске системы автоматизации (умного дома) является процесс первоначальной конфигурации системы и её отладки. Сложность заключается в том, что необходимо написать значительную часть в текстовом редакторе. При этом разработчик остаётся практически один на один с задачей, т.к. почти не существует средств автоматизации для данного этапа. В то же время система умного дома сложная и многоуровневая по своей структуре, что также усложняет процесс, т.к. необходимо учесть множество факторов одновременно. Отсутствие подобного инструментария стоит на пути массового внедрения систем умного дома у большинства пользователей, т.к. порог входа в данном случае достаточно высок. Решением в данном случае является специализированная среда разработки, которая позволяет упростить некоторые из типовых задач.
openHAB значительно отличается от большинства , тем, что предоставляет собственную среду разработки, построенную на базе Eclipse. Первоначально IDE называлась openHAB Designer , она доступна на стандартной странице загрузки openHAB. Важно отметить, что она поддерживает конфигурацию только для openHAB первой версии. Для более новой второй версии (в настоящий момент в статусе беты) был разработан отдельный проект — Eclipse SmartHome Designer , которая также построена на базе Eclipse, но теперь поддерживается отдельным сообществом (частью самого Eclipse) и не совместима с openHAB v.1. Мы будем рассматривать версию 2, т.к. она более функциональна и в целом перспективна.

Процесс установки самого openHAB не вызывает вопросов. Достаточно скачать архивы с официальной страницы загрузки и распаковать их. Отмечу, что для Linux и MacOS систем можно произвести установку из репозитариев . Т.к. openHAB работает на Java , то требуется, чтобы он был установлен версии 1.8. В большинстве систем он также уже установлен, но при необходимости его, можно скачать . Стоит отметить такую составляющую системы, как — в общем смысле это библиотеки описывающие те или иные ещё компоненты. Если будете подключать, что-то специфическое, то придётся установить и их. Однако это нужно лишь в редких случаях, практически всё работает из коробки.

Как мы видим на рисунке, во второй версии openHAB доступно 4 интерфейса. Наиболее простым и минималистичным является Basic UI , его мы и будем рассматривать в дальнейшем. Classic UI — дизайн в стиле старого iOS, доставшийся от первой версии openHAB. Paper UI и Rest API нужны для упрощения конфигурации системы. Достаточно кликнуть по тому или иному интерфейсу для запуска. Конфигурация системы не привязывается к какому-то отдельному интерфейсу. В дальнейшем можно напрямую использовать следующую ссылку http://host_ip:8080/basicui/app .

В итоге получаем следующее окно. Если растянуть окно вширь, то колонок станет больше, чтобы эффективно использовать пространство.

Продемонстрируем работу наглядно, изменяя положение переключателя.


Включено
Выключено

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

Примерно пять месяцев назад на страницах Лайфхакера появился . В этом обзоре мы покажем, как с помощью той же технологии и собственной фантазии можно организовать настоящий Интернет вещей прямо у вас дома, управляемый голосом с любого Android-устройства - часов, планшета, смартфона и даже любого ПК с запущенным браузером.

Как это работает

Установить и запустить такую систему у себя дома под силу каждому. В видео показана короткая демонстрация простейшего взаимодействия «Дуси» с Z-Wave розеткой Fibaro Wall Plug , которая управляется с помощью недорогого USB-контроллера Aeon Z-Stick .

Контроллер подключается по USB к обычному компьютеру. Он осуществляет связь между конечными устройствами (розетки, диммеры, термостаты, жалюзи и т. п.) и «Дусей», которая преобразует речь пользователя в команды для устройств.

Контроллер также собирает данные от устройств, что позволяет пользователю задавать вопросы типа «Какая температура в комнате?».

Конечно же, управлять можно далеко не только Z-Wave розеткой. Это могут быть совершенно разные устройства и протоколы, причём объединённые в общей сети И нтернета вещей .

Интернет вещей

Единая сеть устройств открывает огромные возможности для «обучения» собственного жилища. Скажем, когда вы приходите домой, умный дом может обнаружить в сети известное Bluetooth-устройство и автоматически изменить освещение в зависимости от времени суток. И это только простейший пример.

Такое возможно, если на том же компьютере с контроллерами установлен сервер умного дома openHAB . Это бесплатное решение с открытым исходным кодом, позволяющее объединить всё оборудование в одну систему, чтобы потом управлять им более интеллектуальным способом.


Все устройства (а это могут быть в том числе и мультимедийные системы типа Sonos, SmartTV и многие другие) один раз конфигурируются в обычных текстовых файлах, называемых items и sitemaps . После чего в настройках «Дуси» необходимо лишь указать IP-адрес вашего openHAB-сервера, и всё - теперь можно голосом управлять всем домом! В том числе и с самых обыкновенных автономных Android-часов, которые не требуют наличия смартфона в кармане. В видео показана работа с IconBIT Callisto 100 .

Например, подключив свой SmartTV к такому домашнему серверу, можно голосом с любого Android-устройства попросить «Убавь громкость телевизора» или «Включи канал „Спорт“». Для этого нужно только правильно указать IP вашего телевизора в настройках openHAB и задать item’ы «громкость телевизора» и «канал „Спорт“». «Дуся» получает эти данные от сервера и понимает речь в правильном контексте и с учётом особенностей языка.

Умный браузер

Даже если у вас нет умных устройств, то всё равно можно найти очень интересное применение для большого экрана любого телевизора или монитора, подключенного к ПК. Запустив на нём сайт www.dusi.mobi , можно включить функцию «Управление браузером», которая позволит транслировать все голосовые команды «Дусе» на такой телевизор в виде веб-страниц.


«Дуся» в любом браузере выглядит так

Это статья написана для напоминания, что умный дом стал намного ближе, чем мы думали.

Home Assistant-это open-source платформа для автоматизации, работающая на Python 3. Позволяет отслеживать и контролировать все устройства в доме и автоматизировать действия. Идеально может работать на одноплатном компьютере Raspberry PI.

Давайте по порядку:

1. Центральное ядро

Умный дом нуждается в центральном контроллере (хаб, сервер и т.д.). Это связующее звено между всеми элементами умного дома и пользователем. Бывают распределенные системы без центрального контроллера, но все равно нужен один сборщик информации, который покажет пользователю все актуальные новости каждого устройства

ПК -отличный вариант, если требуется большая нагрузка на сервер, т.к. производительности даже старых ноутбуков хватит вполне (только если вы не будете крутить 4К видео или использовать 10 камер с HEVC кодированием). Из минусов- в 95% случаев активное охлаждение и чтобы подключить обычное реле всегда приходится использовать дополнительные костыли.

Специализированные контроллеры - отличный вариант, если вам нужна надежность и отказоустойчивость. Вероятность отказа промышленного контроллера (при правильных руках) приближается к вероятности появления зомби апокалипсиса. Но есть и минус- программировать и настраивать могут либо те, кто уже автоматизировал несколько конвейеров, либо человек в мозгу которого не нейроны а релейные схемы. И чаще всего интерфейс у них, мягко говоря, аскетичный. К сожалению, я не такой умный, поэтому это точно не для меня.

И тут мы приходим к самому современному варианту - это дешевые одноплатные компьютеры на базе ARM архитектуры. Сейчас их выбор просто огромен, но самый популярный родоначальник Raspberri pi . Из плюсов маленькое энергопотребление, есть пользовательские выводы и удовлетворительная производительность для запуска несложных программ.

Есть еще много экзотических вариантов автоматизации своего очага, например, кровать-будильник на Всемирной выставке 1851 года (изобретатель Теофиль Картер). Или любимое извращенство- ардуино с шилдами (прощу прощение за несерьезный мем)

2. Внешние датчики, контроллеры, элементы управления.

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

DIY решения и ардуиноподбные решения
- Китайские решения (пример Sonoff)
- Дорогие красивые решения (пример nest)

3. Софт

Тоже вынесем сие обсуждение в отдельную тему. Сегодня мы будем рассматривать только одну из множества открытых платформ. Обзоры еще будут. Сразу отвечу на вопросы, почему именно она:

А) Огромное количество поддерживаемых сервисов,
б) Легко и бесплатно установить,
в) Приятный интерфейс.

4. Сторонние сервисы

Помогают подключить разные существующие решения и автоматизировать действия на смартфонах и ПК. Типичный пример IFTTT .

Что делать если я не умею программировать или у меня есть деньги?
Отдельно стоят решения современных экосистем от Samsung , Xiaomi , Amazon , Apple , Google и т.д. Соглашусь, что порой их решения выглядят намного красИвее, но средняя заработная плата русского человека примерно 500$, что не позволяет ощутить всю гамму вкусов.

1. Raspberry Pi 3 (вероятно подойдут и более старые) 35$
2. MicroSD на 16ГБ не ниже 10 класса(чем быстрее, тем лучше) с адаптером к компьютеру 7$
3. Зарядник MicroUSB на 5В и больше чем 2А 0$ (подошел от старого телефона)
4. Ваше драгоценное время. Бесценно.
5. Опционально монитор с HDMI

Давайте устанавливать:

1. Скачать удобную программу для записи на флешку. Я рекомендую портативную версию
2. Зайти на сайт и скачать последнюю версию Hassbian
3. Разархивировать основной образ в любую папку.
4. Открыть Etcher
5. Выбрать наш основной образ
6. Выбрать нашу флешку для записи
7. Нажать кнопку старт
8. ???
9. Profit

После записи, извлекаем флешку и вставляем в распберри пи.

ОБЯЗАТЕЛЬНО НАДО ВСТАВИТЬ В МАЛИНУ ИНТЕРНЕТ-ШНУР!!!

При подаче питания должна загореться красная лампочка и зеленая начать хаотично мигать. Ждем с кружкой чая 10 минут.

После этого нам надо найти уже веб интерфейс нашей системы умного дома. Для этого есть несколько способов:

1) Посмотреть через hdmi нашу командную строку и найти там IP вида 192.168.1.х (или любого другого)
2) посмотреть в настройках роутера какой DHCP сервер присвоил адрес новому устройству
3) Воспользоваться сканером сети (например,

Говорят что лень - мать прогресса. В моём случае, так оно и было. Сейчас я живу в солнечной Индонезии, где по ночам люди освещaют свои дома для отпугивания воров (и призраков). Случилось так что моим поручением стало включение и выключение сего освещения. Каждое утро и вечер надо пройти вокруг дома и щёлкнуть всеми наружными выключателями. Особенно трудно не забыть об этом утром, поскольку включённые лампочки не заметны при дневном свете. После недельки таких хождений мне захотелось лучшей жизни. Я решил сделать дистанционный выключатель и автоматизировать управление светом. Таким образом, закладывая первые виртуальные кирпичи своего умного дома. Была только одна маленькая проблемка - я не имел ни малейшего представления как спроектировать электронику и развести плату.

На заглавном фото вы видите результат моих работ. Выключатель представляет из себя две вставки в стену. В одной располагается физический выключатель, а в другой его «мозг». Виртуальный выключатель работает в OpenHab2, запущенный в с свою очередь на RaspberryPi2.

Дизайн/Пожелания

Итак, с чего же все таки начать разработку такого устройства? Я хотел чтобы виртуальный выключатель работал вместе, а не вместо, физического, и чтобы выключение физического выключателя не отключало виртуальный. Здесь такую конструкцию любя называют «отельный выключатель».


А как быть с корпусом? Мой девайс ни в коем случае не должен быть «wall wart»-ом. Наоборот, он должен гладко сливаться с физическим выключателем не выдавая своего существования. Значит плата должна будет помещаться в одну из распостранённых стенных коробочек. Ниже, на фотографии показан экземпляр такой коробочки, она из линейки выключателей и розеток компании Panasonic. На её базе я разработал своё устройство.


Ок, а что про «умные» функции? Я хотел выключатель который знает включён ли он или нет. Не просто знал статус рэле, но действительно знал если ток течёт через систему. Также я хотел чтобы это состояние сохранялось долгосрочно, и например, при сбое в электросети свет не включался/выключлся внезапно, после восстановления питания.

Напоследок, я хотел красивую панель управления для виртуального выключателя. Мне требовалось хорошее решение для контроля умного дома, куда я мог бы подключиться. Я совсем не желал писать еще одно кул-приложение для смартфона, чёрт побери!


Первый Прототип

Итак, я хотел построить электронное устройство, но совсем не знал как это сделать. Я был знаком с микроконтроллерами, умел пользоваться мульти-митером и спаял пару нехилых бордов чужого дизайна. Но проектировать свою схему я никак не умел. Поэтому, сперва я решил собрать свой выключатель из готовых модулей. Вот что я насобирал:


Для понижения 220В в 5В я использовал заряжалку от телефона. Сразу берите хорошую заряжалку, например ту которая прилагалась к телефону при покупке. Не покупайте Китайский афтермаркет на базаре, они обычно кривые. Я взял свою от какого-то старого Самсунга.

Рэле я взял как кит («beefcake» kit из SparkFun-a). Оно было большое, с громким кликом и имело всю необходимую обвязку (транзистор, защитный диод, итд) чтобы орудовать им ногой микроконтроллера.

Для измерения тока я взял один из Allegro-вских ACS712 модулей на маленькой плате. Там была вся обвеска, нужно было только подключить питание и читать аналог выход.

О разработке своей собственной шины «CLUNET» для соединения устройств в «умном доме». Многие просят рассказать о том, что же у меня получилось в итоге, что я сейчас и попытаюсь сделать.

Попытался начертить схему моей комнаты со всеми устройствами объединёнными в сеть, картинка кликабельна:

Вся идея держится на трёх китах:

  • Децентрализация — вся система функционирует без какого-либо главного модуля;
  • Простота — минимум компонентов и лёгкость подключения;
  • Дешевизна — себестоимость устройства легко уложить в 100 рублей.

При таком подходе можно легко создавать и добавлять в CLUNET-сеть устройства, каждое из которых отвечает за какую-то простую функцию. У всех устройств есть свой адрес, при этом они могут обмениваться между собой пакетами напрямую, без участия какого-либо главного модуля, и это очень активно используется:

  • Пакеты от ДУ-приёмника получают выключатель и открыватель окна, что позволяет управлять светом и открывать окно с любого пульта или Nintendo Wii U;
  • Датчики движения информируют выключатель о том, что в комнате никого нет, и можно выключить свет;
  • Дисплей в коридоре выводит всегда актуальную температуру на улице, получаемую от датчиков температуры;
  • По команде от кодовой панели открывается дверной замок;
  • Устройство с пищалкой издаёт звуки, когда узнаёт об открытии замка, нажатии кнопки или звонке в домофон.

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

Единственным главным устройством, пожалуй, можно назвать только блок питания. В данный момент он у меня один почти на все самодельные устройства, и отлично с этим справляется. Многие скорее всего скажут: «Да у тебя же наверное всюду провода!», — отчасти это правда, но у меня нет никакой фобии по отношению к проводам. К тому же маленький шлейф с питанием и линией данных почти незаметен на фоне остальных кабелей.

Роутер с CLUNET-адаптером

Мой роутер помимо маршрутизации трафика выполняет ещё одну роль — маршрутизация трафика он является «окном» для устройств CLUNET сети в Интернет. Или скорее наоборот — позволяет из Интернета и локальной сети командовать всеми устройствами. Для этого в его USB порт включено специальное устройство.

Не буду сильно повторяться, про это я рассказывал в статье о CLUNET протоколе . Идея проста — роутер на основе Linux, и на нём работает демон, который принимает входящие подключения из локальной сети или Интернета и предоставляет доступ к сети устройств умного дома.

Помимо этого роутер используется как простенький веб-сервер, чтобы можно было управлять устройствами через веб-интерфейс на случай… ну так, на всякий случай:

Весьма удобно использовать и cron на роутере для самых разных задач — от открытия окна или обогрева комнаты по расписанию до банального будильника. Для последнего у меня сделан простенький веб-интерфейс и скрипты:

Нет будильника приятнее, чем просыпаться от радио, которое очень медленно в течении нескольких минут увеличивает громкость. Главное при этом — выключить его до того, как оно сможет разбудить и соседей.

В ответ на пакеты приходящие от устройств тоже выполняются различные скрипты. Так ведутся логи по самым различным событиям типа звонков в домофон, рисуются графики температуры () и других данных, отправляется push-уведомление мне на телефон, если вдруг в комнате открыта дверь, а меня дома нет, и прочее.

Софт для Windows

На компьютере работает приложение, которое подключается к демону на роутере и позволяет полноценно управлять всем и вся. В главном окне можно отследить весь трафик между устройствами и послать им любую команду:

В нём можно наблюдать за тем, как умный дом живёт полноценной жизнью, но на практике это нужно только для отладки. Всё можно делать по клику на иконке в зоне уведомлений:

Помимо этого на многие действия есть специальные сочетания клавиш. Да, лень — двигатель прогресса, и мне чертовски удобно открывать окно или включать свет горячими клавишами, не вставая с кресла.

Но нельзя же останавливаться на управлении светом, надо управлять и бытовой техникой! Для этого у меня используется ДУ-передачик, который имитирует нажатия кнопок на пультах. По нажатию горячей клавиши на экране появляются экранные пульты ДУ:

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

Помимо этого этот софт выполняет и обратную роль — получает коды кнопок от ДУ-приёмника и имитирует WinLIRC-сервер — популярную программу для работы с ДУ-пультами. Работу с ней поддерживает, например, MPC-HC, есть плагин для foobar2000. Таким образом можно делать и наоборот — управлять приложениями на компьютере при помощи любого пульта.

Софт для телефона

Ну как же без управления всем этим с телефона из любой точки мира? Приложение для Android обладает примерно такой же функциональностью. В основном активити можно переключаться между различными режимами путём горизонтального свайпа.

Планшет

Сначала у меня была мысль — спаять настенную панель управления, которая висела бы над кроватью, чтобы выполнять с неё простейшие действия — включать свет, регулировать громкость, управлять телевизором и пр. Хотелось бы добавить туда и экран для вывода основной информации.

Но скоро меня осенило, что времена уже не те. Гораздо проще купить дешёвый китайский планшет на Android и повесить его на стену. Да, подобные планшеты обычно тормознутые и весьма низкого качества, но для моих целей этого вполне достаточно. Сказано — сделано.

Пришлось накодить различные виджеты рабочего стола:

Но это всё равно было недостаточно удобно, особенно когда хотелось сделать что-то на ощупь. Через некоторое время я вспомнил, что в Android есть отличный API по распознаванию голоса. Потребовалось всего полчаса, чтобы планшет начал выполнять свои первые голосовые команды. Вскоре набор возможных команд сильно вырос.

Знакомьтесь, вот моя электронная жена:

Стоит ли говорить, на сколько удобно открывать ночью окно, не размыкая при этом глаз? Жаль, что этот привод очень шумный — когда окно закрывается по таймеру, не проснуться невозможно.

Аналогичная служба была в итоге установлена и на телефон. Работает она только при подключенной зарядке. Наверное было бы здорово использовать для этого Google Glass.

Подробнее об устройствах

Напоследок расскажу немного о том, какие устройства функционируют в моём умном доме. Внимание! Ниже адское количество колхоза и проводов! Красиво я делать не умею, руки у меня растут не из нужного места.

Выключатель света

Ничего особенного, просто включает и выключает лампы на люстре.

Кнопки сенсорные — одна прибавляет количество ламп, другая убавляет. Есть возможность установить таймер выключения, но его необходимость отпала с появлением настенного планшета. Дружит с ДУ-приёмником и датчиками движения.

Контроллер геркона с пищалкой

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

Суть в том, что у меня в комнате жили мыши, а в остальной части квартиры — коты. Весь смысл устройства был в том, чтобы дико пищать, если забыли закрыть дверь, ведь коты ни в коем случае не должны проникнуть в комнату к мышам. Теперь же устройство посылает в сеть пакеты при открытии и закрытии двери. Роутер же пишет логи её открытия и посылает мне push-уведомление, если вдруг она открыта, когда меня нет дома. Моё местоположение определяется по мобильному телефону. Помимо всего этого пищалка теперь используется для самых разных звуковых уведомлений — домофон, открытие замка, нажатие кнопок на кодовой панели.

ДУ-приёмник и ДУ-передатчик

Про них я вроде ещё уже рассказал выше. Приёмник стоит у компьютера, передатчик спрятан на шкафу.

Датчики движения

В комнате висят два вот таких вот датчика движения.

Способствуют выключения света, когда движения долго нет, а ещё смене моего статуса на «away» в мессенджерах. Помимо них движение определяют ещё и четыре видеокамеры.

Дверной замок и кодовая панель

Когда я стал счастливым обладателем 3D принтера, мне очень захотелось поэкспериментировать с механикой. В результате я разработал и напечатал механизм дверного замка. Первый блин комом, и получился дикий колхоз, но функционирует он отлично. С внешней стороны двери я сделал кодовую панель, она уже вышла получше. Лучше просто посмотреть видео.

Теперь у меня всё как у серьёзных взрослых дядь!

Датчики температуры и освещения

Тут особо нечего рассказывать. Устройство висит под подоконником и опрашивает по 1-wire датчики температуры, помимо этого экспериментально сделан ещё датчик освещения. Сам не знаю зачем.

Открыватель окна

Его вы уже могли немного видеть на видео выше. Сам механизм покупной и представляет из себя цепь с двигателем. Приятно было узнать, что есть компании, которые делают подобные штуки.

Сам привод питается от 220В. Слева в коробке схема с двумя реле, которые подают питание. Я снял с окна одну петлю, что позволило открывать его в два раза шире, поэтому открывать можно полностью и наполовину.

Дисплей в коридоре

Однажды при выходе из дома мне захотелось видеть текущую температуру на улице и время. Вот и всё.

А ещё там бегает Pac-Man, для которого было нарисовано несколько кастомных символов.

Домофон
Мышиные клетки

Мышиные клетки передают в виде ИК-сигналов информацию о том, сколько каждый мыш пробежал в колесе. Про это тоже была отдельная статья:
Увы, сейчас остался только один мышонок, и бегает он уже мало.

Видеокамеры

В комнате стоят четыре IP-камеры с механизмами поворота.

Они отправляют на удалённый сервер короткое видео, когда открывается дверь. Или длинное, если меня при этом нет дома. При наличии движения они периодически делают фотографии. Помимо всего этого камеры работают как дополнительные датчики движения. Если что-то начало двигаться, они запрашивают ссылку на роутере, а тот в свою очередь посылает широковещательный пакет в сеть.

Заключение

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

Многие люди наверняка будут спрашивать меня: «Зачем тебе столько видеокамер?», «Зачем тебе кодовая панель?», «Зачем тебе датчики движения?», «Зачем тебе всё это?»
На все подобные вопросы я отвечу одной картинкой: