СофтХабрахабр

Система «Умный дом» своими руками

Пару недель назад в нашем чате появилось вот такое сообщение:

А еще чуть позже — вот такое:

В 5 лет он заметил, что если вырвать из магнитофона моторчик, подключить к нему лампочку и начать его крутить, то лампочка будет гореть. Автор сообщений — Женя, программист, руководитель отдела обучения и электронщик. В 18 поступил на Измерительные инновационные технологии в Политех. В шесть — что если у моторчика поменять полярность подключения, он будет крутиться в другую сторону. А в 24 пришел работать в «Сибирикс».

Цель — почесать руки (потому что чешутся) и не дать им окислиться (потому что из золотого сплава). Это к тому, что цель всей затеи — не Умный дом и метеостанция как таковые. А тем, кому интересна тема DIY-электроники (или DIY-электронщиков, что тоже не зазорно), можно скроллить дальше. Так что все, кто недоумевает, зачем тратить время, когда можно просто купить такие девайсы — идите лесом-DNCом.

Что-то делать своими руками. Мне кажется, что у любого человека должно быть какое-то хобби, помимо работы. Самое интересное — симбиоз, когда твоё хобби становится полезным и востребованным для дела.
Это хорошая эмоциональная разгрузка (главное, чтобы не превращалось в рутину — на работе, пусть даже такой разнообразной и интересной, как программирование — рутина практически неизбежна, а в хобби — вполне себе да).

— Владимир Завертайлов, руководитель Студии «Сибирикс»

Arduino

Первую версию Умного дома Женя сделал два с половиной года назад на arduino.

Пишешь программу на C++, загружаешь ее в память микроконтроллера arduino — и она управляет всеми подключенными устройствами. Arduino — небольшая плата с микроконтроллером, памятью и контактами, к которым можно подключать лампочки, моторы, датчики и вообще все, что работает от электричества. Так создаются классные гаджеты — система полива дачного участка, например, или робот, который приносит вам тапочки.

Два сенсора, два участника. Первая тема, которую Женя сделал на arduino — это игрушка. Когда игрушка пикнет, нужно резко убрать руку. Каждый держит руку над своим сенсором. Рубились с женой. Игрушка измеряет время реакции до 100-х секунд и говорит, кто тут чемпион. Удобно — кто проиграл, тот моет посуду).

Подключил к arduino охранную систему (датчик движения и датчик открытия двери) и термометр (датчик температуры и влажности DHT11) и остался недоволен. Когда с arduino все стало понятно, Женя решил, конечно, делать Умный дом (электронщик же). Женя боролся с радиосигналами месяца 2, а потом решил не бороться, а переделать сервер умного дома на Raspberry Pi. Связь между всеми устройствами была по радиоканалу на 433 МГц и оказалась нестабильной.

Raspberry Pi

Да, одноплатный. Raspberry Pi — это уже полноценный компьютер. Да, сильно уступает по мощностям современным большим компьютерам. Да, размером с кредитную карту. Это значит, можно перейти с С++ на более высокие языки — java script, php. Но на нем может быть запущена операционная система Linux. Но главное — Raspberry Pi позволяет уйти от 433 радиосигнала и перейти ко всем известному и горячо любимому wi-fi, который работает стабильно. А это уже родные для Жени языки.

Дизайн

Женя, как мы помним, определился с этим еще в 5 лет, поэтому с дизайном были траблы. Обычно ты или электронщик, или дизайнер. Потому что скоро он подошел к гендиректору «Сибирикс» и попросил помочь. Но недолго. Через месяц у него уже был отрисован интерфейс Умного дома нашим дизайнером.

Система

Работал примерно по 2,5 часа в день. Систему Женя написал за 4 месяца. Полтора часа до работы (специально вставал пораньше, потому что вечером — сын, домашние дела, игра в «Цивилизацию» с женой) и час во время обеда на работе.

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

Сейчас там 9 модулей. Поэтому система организована таким образом: создаешь папку в Умном доме с модулем, описываешь его работу и она легко интегрируется в систему. Есть модули физические (те, которые имеют физическое устройство), а есть логические (те, которые нужны для работы системы).

Функционал

Метеостанция

Создание метеостанции проспонсировал гендиректор студии на том условии, что Женя сделает еще одну такую в студию (уже сделал). Для метеостанции Женя взял 4 главных параметра, которые позволяют понять, умрешь ты или нет (температура, влажность, атмосферное давление, концентрация углекислого газа в воздухе). Теперь там есть еще и график температуры в офисе. У нас она по wi-fi подключается не к Умному дому, а к заббиксу, системе мониторинга серверов, которая мониторит разные параметры, от температуры жестких дисков до нагрузки на сеть, и выводит это все в виде красивых графиков.

Первые же эксперименты показали, что приточку горе-винтеляционщики нам смонтировали так себе. Датчик CO2 мы планировали подключить к нашему Zabbix, вывести на плазму и мониторить атмосферу. Ругаясь матерными словами, мы подогнали вышку и перемонтировали все по-человечески. Воспользовавшись электронным эндоскопом, мы выяснили, что приток шел через маленькую щелку в сайдинге здания (оно относительно новое). Теперь утром датчик показывает CO2 в районе 500, к обеду поднимается до 800, что, в общем-то, нормально.

— Владимир Завертайлов, руководитель Студии «Сибирикс»

Видеонаблюдение

Женя подключил камеры видеонаблюдения в свой Умный дом. Когда на Женин дом установили камеры видеонаблюдения, которые можно отслеживать через приложение для телефона, оказалось, что они сделаны на очень популярном сервисе — макроскоп, и у них есть api-доступ. Приложение тупит дико. Забавно, что в Умном доме они работает лучше, чем в приложении. А в Умном доме камеры открываются влет.

Охрана

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

События

Здесь отображаются все события, которые зарегистрировала система.

Система

Здесь можно посмотреть параметры системы: график температур процессора, IP aдрес, нагрузку на процессор, батарейку.

Сценарии

Реакции задаются с компа. Здесь содержатся реакции системы на какое-либо событие.

Корпус

Печаталась на стареньком домашнем 3d-принтере. Корпус — это та вещь, которая разрабатывалась 5 часов, а печаталась 28 часов. А тут — 28. Для справки — если печать длится порядка 4 часов, это уже считается долго. На верхнюю — 6. На нижнюю часть корпуса ушло 16 часов. Если свет, допустим, отключится на 98% печати, значит, ты 15 часов пластика просто выкидываешь. Это вечеринка на целый день — запускаешь 3d-принтер и он печатает, прерывать нельзя. Случилось другое: из-за недочета в проектировании (слишком тонкие стенки в фигурном отверстии под динамик) крышку пришлось перепечатать. Такого, к счастью, не случилось. Ушла почти вся катушка пластика. То есть, суммарно печать заняла примерно 28 часов.

Голос

Speech-to-text

Нажимаешь кнопочку, говоришь фразу, и она конвертирует ее в текст. Система умеет говорить и понимает, что ты ей говоришь. Гугл умеет это делать, но за деньги. Преобразование голоса в текст — дико сложная задача. Как оказалось, в последних версиях хрома есть встроенный инструмент «Распознавание голоса». А первое правило DIY-проекта — никаких абонентских плат. Умный дом — как раз такая система: клиент и сервер находятся на одной машине, так что удалось подключиться по localhost. Единственный нюанс в том, что соединение должно быть либо https, либо localhost.

Реакция на команды

Фишка в том, что ты задаешь шаблон фразы, например: «Какая погода завтра?» и указываешь, что слово «завтра» — это переменная типа date. Второй сервис называется dialogflow. Вся эта тема — на нейросетях, и она обучаема. И теперь уже ты можешь задать любой вопрос: «Какая погода 20 сентября?», «Какая погода послезавтра?», «Какая погода через 3 дня?» и система понимает, что это тип данных — date, конвертирует его в программную дату и реагирует на нее. Обучение нейросети происходит по доступу: при регистрации на сервисе выдаются ключи доступа к api, доступ к личному кабинету агента, можно этого агента обучать и можно дать право кому-то на его использование. Если ты сказал «Какая будет погодка сегодня?» и система не поняла, она говорит «Я не поняла», и ты заходишь на сервер и прям руками обучаешь ее, что вот эта фраза означает «Какая погода?», и она запоминает.

Задаешь вопрос, например, «Как твои дела?» и задаешь паттерны ответов на него: «Пока не родила», «Все в шоколаде, даже дисплей», «У нас делишки, а дела у прокурора», «Ой, всё» — и система каждый раз будет рандомно выбирать из этих вариантов ответ на этот вопрос. В dialogflow есть еще одна классная тема — микродиалоги.

Получается, сервис передает в Умный дом сам триггер, который должен быть выполнен и возможную фразу для ответа, Дом ловит эту фразу и дальше задача наоборот: tts, то есть text to speech.

Text-to-speech

Там можно выбрать не только голос (нескольких вариантов женских и мужских голосов), но и настроение (веселый, грустный, злой, нейтральный). Это хорошо умеет делать Яндекс. У Яндекса очень простое и условно бесплатное api (с лимитом что-то около 10 тыс преобразований в день).

Так, например, работает установка будильника голосом. Таким образом получился цикл: произносишь фразу, система ее понимает, произносит что-то в ответ и совершает какое-то действие. И во вторник в 7 тебя разбудит Умный дом. Говоришь: «Поставь будильник на вторник на 7 часов».

СМС

Есть такой модуль — называется sim800L. Неплохо, если Умный дом может оповестить вас о пожаре или вскрытии двери, когда вас нет дома, правда? Он умеет звонить, отвечать на звонки, отправлять/получать смски, выходить в интернет с помощью gprs, определять местоположение с помощью сотовых вышек и т. д. Это gps модем, который является полноценным телефоном. Идея была такая: заказать этот модуль, вставить сим-карту в Умный дом, настроить какой-нибудь тариф, чтобы не было абонентской платы вообще, закинуть туда 500 руб и, пока они не истратятся (по 1 руб. за смс), а это, как минимум на год, забыть про все это.

У Умного дома есть модуль питания, туда заходит шнур, там аккумулятор и от аккумулятора выходит питание в систему. Но оказалось, что в пике эта платка в момент поиска сетей потребляет 2 Ампера тока. То есть 3 Ампера постоянного потребления всей системой — край. Батарейка может обеспечить максимум 3 Ампера выхода. Ей не хватит тока, и она просто потухнет. И, если добавить этот gsm модуль к raspberry, она вырубится. Тогда туда можно обеспечить бесперебойное питание на 2 Ампера. Единственное решение проблемы — это модуль отправки смсок делать отдельной коробочкой. То есть Умный дом говорит модулю: «Отправь вот такую смску», и модуль отправляет. И просто по Wi-Fi связать с Умным домом. Сейчас Жене нужно докупить пару железяк, и модуль будет готов.

Затраты

  • Raspberry Pi — 1500 руб.
  • Дисплей — 2500 руб.
  • Детали метеостанции — 1500 руб. (самая дорогая деталь — датчик CO2, 1100 руб.)
  • Всякая мелочь, вроде микрофончика, колонок компьютерных, маленьких, настольных, самые дешевых, чтобы усилок оттуда достать — пусть будет 500 руб.
  • Плата резервного питания — 1500 руб.
  • Печать корпуса весом грамм 300 (2 руб. за грамм с учетом расхода пластика и электроэнергии) — 600 руб. Если печатать на заказ, выйдет дороже, возможно, около 1500 руб.

Итого: 8100 руб.

Немного лирики напоследок

— испытывают они тебя.
Ты делаешь попытку:
— 328?
И, конечно, не попадаешь. Электронщики — это люди, которые зачарованно смотрят на трехзначное число на дисплее и говорят:
— Смотри, как круто!
Ты смотришь на то же самое число и неуверенно говоришь:
— Круто, да…
— А что ты видишь? Это офигенно работающая динамическая индикация. Потому что это не просто 328.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть