Русский
Русский
English
Статистика
Реклама

Умный дом как хобби

Когда-то вблоге мырассказывали, как наш руководитель отдела обучения изамечательный программист Евгений создал марсианские часы изаодно выиграл вконкурсе. Апотом как онже сконструировал систему Умный дом своими руками. Так вот, сегодня снова поговорим оDIY-электронике ипринципиально новой системе контроля задомом, которую Евгений создал снуля взамен предыдущей.


image



Язанимаюсь всем, что связано сэлектроникой ипрограммированием электронных устройств, суниверситета. Это моя профессия яучился наприборостроителя. Иполучилось так, что работаю яразработчиком, амоё хобби связано спрофессией.


Евгений, разработчик




Идея умного дома недавала покоя инженерам ещё в50-е: тогда появился первый дом скнопками, где все бытовые задачи решались нажатием конкретной кнопки. В1966 году спомощью единой системы уже можно было настраивать климат впомещении ивключать/выключать приборы.


Полноценные умные дома появились назападе в70-е сизобретением передачи сигнала поэлектросети ибеспроводного управления нарадиочастоте 433МГц. Нодля управления системой нужен был специальный пульт: сего помощью можно было включать ивыключать приборы, менять яркость света иинформировать отекущем состоянии бытовой техники. Одна беда работали такие пульты позакрытым протоколам. Нокогда появился Интернет иWi-Fi, всфере умных домов всё изменилось.



Счего всё началось


Эпопея сУмным домой началась уЕвгения давно ещё 5лет назад, когда онвпервые узнал про Arduino (аппаратно-программную платформу для создания каких угодно устройств). Эта тема так его заинтересовала, что спустя пару месяцев онзаказал собственный набор Arduino иначал сним ковыряться, изучать возможности идокументацию. Ауже спустя 4месяца сделал первое устройство сенсорную игру нареакцию. Нопосле этого, пособственному признанию Евгения, его посетил творческий кризис: унего была база для проектирования идаже время, авот идеи, что сотворить, небыло.


В2016-м онзаинтересовался темой умных домов ипонял, что набазе Arduino сделать подобную систему для своей квартиры вполне реально. Первая версия умного дома состояла изметеостанции (сдатчиками температуры ивлажности) иохранной системы (сдатчиком открытия/закрытия двери иинфракрасным датчиком движения), ивыглядела так:


первая версия умного дома


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




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



Восстание машин


Естественно, все комплектующие для системы заказывались изКитая, поскольку вРоссии найти что-то подобное заадекватные деньги проблематично. Вкакой-то момент дисплей, как всё китайское (простите заштамп), начал глючить: стал неадекватно реагировать нанажатия ижить своей жизнью.


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


Евгений, разработчик




Третья версия системы построена насамописной системе центрального управления. Нозачем, спроситевы, ведь естьже готовые решения?! Ага, есть такие.


Первая MajorDomo, придуманная разработчиком изБелоруссии. Сама посебе штука прикольная иочень популярная, кней есть множество плагинов имодулей, кней даже можно подключить датчики отсупер-брендовых производителей. Ноесть нюанс она построена наязыке PHP сиспользованием MySQL (свободной реляционной системы управления базами данных). Евгений пробовал еёвделе, нонасервере дважды терялась база данных, потому что MySQL при запуске сервера почему-то нестартовал.


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


Евгений, разработчик




Второе распространённое готовое решение система Home Assistant, написанная наPython иотлично работающая наUnix-машинах (оборудовании спереносимой операционкой). Можно просто записать образ программы управления нафлешку, вставить еёвсвою систему ивсё заработает. Да, для Home Assistant есть плагины для быстрой настройки, носними непросто. Поэтому чаще конфигурация такой системы делается вручную (приходится писать код): проще укусить себя залокоть. Аесли ужнужно писать код, так лучше свой собственный.



Всё заново: система умного дома своими руками


Вновой, написанной ручками, системе есть три узла:


  1. Вещи осязаемые элементы системы: датчики, сенсоры ивообще всё, что можно взять ипотрогать руками.
  2. Сервисы виртуальные модули, пока ихтри: видео-камеры, прогноз погоды иданные самой системы.
  3. Центр управления сдвумя основными компонентами: MQTT-брокером исервером наNode.JS.

Сердце системы микрокомпьютер версии Raspberry PI3b+. Стоит он23 тысячи рублей, авзамен выполучаете полноценный компьютер размером спачку сигарет. Единственный нюанс: его файловая система базируется накарте памяти формата MicroSD, апостоянные записи данных быстро выводят еёизстроя. Из-за этого приходится заботиться оминимизации записываемых данных или подключать HDD-носитель вместо MicroSD. Нопринцип вобоих случаях одинаковый: нужно скачать образ Raspbian, установить его накарту памяти ивставить вмикрокомпьютер ивуаля, увас готов полноценный Linux-компьютер, накотором можно делать всё что угодно. Внашем случае сервер умного дома.


Второй незаменимый компонент системы модуль NodeMCUV3, который базируется намикросхеме ESP8266, которую можно программировать всреде Arduino. Напомним, Arduino это отладочная плата смикроконтроллером, стабилизацией питания, подключением кUSB для перепрошивки ивыходами для управления чем угодно. Программируется наязыкеC++.


Arduino-модуль

Arduino всем хорош, номодуль изкоробки умеет общаться только скомпьютером итолько через USB-порт, адля системы умного дома это серьёзный минус. Зато модуль NodeMCUV3, который Евгений использовал для своей системы, имеет наборту Wi-Fi азначит, ненужно заморачиваться сдополнительными периферийными устройствами, иданные легко передавать.


Всистеме также есть несколько датчиков:


  • BME280
    Один изсамых крутых погодных сенсоров, отвечает заданные температуры, влажности идавления. Стоит порядка 200рублей, авзамен предоставляет пользователю полноценную метеостанцию.
  • PIR-сенсор, или датчик движения
    Работает онхитро: сканирует инфракрасное излучение помещения, иесли вдва момента времени температура сканированного участка изменилась, значит, какой-то тепловой объект попал вполе зрения датчика. Если вас бесит, что онпостоянно реагирует накошку, можно снизить порог чувствительности устройства.
  • RC522
    Датчик, считывающий электронный ключ. Отэтой маленькой штучки зависит, например, пройдёте выдальше пропускного пункта или навас налетит группа быстрого реагирования:)

    Такие стоят везде, где выприкладываете RFID ключ-карту, чтобы пройти через турникет или войти вкакое-то охраняемое помещение. Удатчика есть катушка, иесли подключено питание, тонаней создаётся электромагнитное поле. Когда выподносите ключ-карту ктакому датчику, онпопадает под действие этого электромагнитного поля фактически происходит беспроводная передача энергии. Ключ начинает посылать свой сигнал надатчик, итот распознаёт, подходит тот или нет.
  • SIM800L
    Пожалуй, самая интересная вещь всистеме. Это GSM/GPRS-модем. Иными словами, телефон размером споловинку спичечной коробки. Внего устанавливается мини-SIM-карта, изасчёт этого система может звонить, принимать звонки, отправлять SMS-сообщения идаже гуглить винтернетах. Так что, если хотите замутить себе хенд-мейд мобилку, тонабазе этой штуки увас точно получится. Несмартфон, конечно, нозвонить будет.
  • MH-Z19
    Инфракрасный датчик концентрации углекислого газа, самый дорогой всистеме. Зачем оннужен, спроситевы? Если впомещении много CO2 (высокая концентрация, говоря научным языком), человек начинает зевать истановится вялым. Если очень много может заболеть голова, аесли слишком много можно исознание потерять совсеми вытекающими. Так что контроль этого параметра необходимый элемент любой метеостанции.

    Утакого датчика есть 2окошка, под которыми спрятаны 2капсулы: водной азот, вдругой проба воздуха впомещении. Также внутри есть источник инфракрасного излучения (попросту лампа): когда инфракрасное излучение проходит через газ вкапсулах, оно начинает преломляться засчёт молекул газа, идлина волны меняется. Сенсор, который установлен навходе датчика, сравнивает эталонные значения длины волны стекущими иделает вывод оконцентрации CO2в помещении.

Чтобы система работала как одно целое, центральный узел ипериферийные устройства должны как-то между собой общаться, причём общаться максимально стабильно. Изначально Евгений сделал JSON-обмен: элементы обменивались данными поhttp-запросу. Способ стабильный, нопроблема втом, что так никто неделает. Поэтому втекущей системе заобмен данными отвечает протокол MQTT, заточенный специально под обмен информацией между узлами системы. Его создали в2016-м исейчас активно используют набольших серьёзных заводах, где требуется автоматизация производства.


Упротокола есть центральная часть Broker, который отвечает заприём иотправку сообщений всем элементам системы. Элементыже делятся надве группы: Publisher (публикуют данные вBroker) иSubscriber (получают эти данные). Причём, Subscriber может заранее подписаться накакой-то топик (скажем, данные отемпературе), которого всистеме пока нет. Как только топик появится, данные сразу придут.


Как устроен MQTT-протокол


Конфигурация системы


Физические модули: метеостанция


Метеостанция своими руками

Всердце системы NodeMCU, окотором мыуже говорили выше. Кнему подключены три узла:


  1. датчик температуры ивлажности BME280;
  2. сенсор CO2 MH-Z19;
  3. OLED-дисплей, который выводит данные датчиков пользователю.

Данные между устройствами исервером передаются поинтерфейсу I2С или UART это интерфейсы для общения. Внашем случае, между микроконтроллерами.



Физические модули: охрана


Система охраны своими руками

Изначально модуль планировался без узла Arduino, ноконтроллер NodeMCU просто неуспевал отслеживать все изменения всистеме ипередавать ихнабольшой тачскрин-дисплей. Также вмодуль охраны включены датчик движения исканер RFID ключа-карты. НаArduino-модуль приходится обработка всех параметров стачскрина. Фактически контроллер запрашивает уArduino данные сдатчиков иотправляет ихнадисплей через интерфейс UART.



Физические модули: GSM


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

Этот модуль неимеет корпуса из-за пандемии.


Все платы Евгений заказывает накитайском заводе просто потому что так дешевле. Сотрудничает сними давно, качество плат устраивает. Нокогда онвочередной раз заказал уних плату для охранной системы, спересылкой вБарнаул начались проблемы: пандемия, границы закрыты, все дела. Деньги вернуть могут только задоставку, азасами платы нет ведь они ихуже изготовили. Всего 2$, конечно, новсё равно как-то жалко. Правдами инеправдами выяснилось, что вНовосибирск доставка возможна ичерез друзей Евгений получил-таки свои заветные железки. Правда, при стоимости плат в150 рублей доставка вышла в1000:)


Из-за этого другие платы онзаказал наAliExpress, ноитам всё пошло непоплану: заказ дважды отменялся, аденьги занего долго висели нахолдировании. Собственно, поэтому плату для GSM пришлось делать самостоятельно. Акорпуса нет, потому что его ещё напечатать на3D-принтере надо.



Сервисы внутри системы


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


  • Openweather отвечает запрогноз погоды натекущую дату инанеделю, атакже график температур вближайшие дни.
  • Macroscope отвечает завидеонаблюдение (вдоме, где живет Евгений, Управляющая компания установила 18камер, изасчёт крутого API ковсем 18не составило труда подключиться).
  • Сервис всамой системе позволяет получить текущее состояние всей системы: дата ивремя, продолжительность непрерывной работы для отслеживания сбоев, состояние батареи питания, атакже функционал перезагрузки ивыключения сервера.


Центр управления


Примерная структурная схема того, как устроена система:


Как сделать умный дом структурная схема

Всердце системы сервер нафреймворке Vue.js, который отлично подходит для создания пользовательского интерфейса, сиспользованием фреймворка Nuxt.js, который позволяет создавать приложения наVue.js. Дополнительно кфреймворкам используется модуль mongoDB (это документоориентированная система управления базами данных соткрытым исходным кодом).


Вещи (физические датчики) публикуют данные вMQTT-брокер, аоттуда они попадают насервер, где происходит ихвалидация, обработка, проверка ипреобразование. После эти данные попадают вмодуль Public, который отвечает запубликацию всех собранных данных для внешних подключений. Ауже оттуда данные переходят вSocket IO библиотеку Java Script, засчёт которой обеспечивается двусторонняя связь между веб-клиентами исерверами врежиме реального времени. Навыходе данные получает клиент (например, вбраузере). Сервисы работают схожим образом, нопередача данных для них обходится без MQTT информация передаётся сразу через Public иSocket IOнаружу.


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


Когда задаётся сценарий, нужно выбрать целевую точку: либо отправить команду вузел вещи, либо всервис, либо отправить http-запрос для webhook функционал для уведомления сторонних сервисов. Иконечно, каждой изних можно дать название сценария иприкрепить кней иконку.


Запуск набора сценариев поконкретному событию происходит засчёт автоматизации. Например, если выоткрыли дверь, система должна включить свет. Чтобы задать автоматизацию, сначала указывается событие запуска: дата, параметр или автоматизация. Например, 3-го числа каждого месяца, если идёт дождь, нужно напоминать взять ссобой зонт :) Внутри автоматизации можно указывать идругие автоматизации. Например, увас есть два сценария: для будней идля выходных дней. Так вот, вторая автоматизация проверит, какой сегодня день, итолько потом запустится автоматический сценарий выходного или рабочего дня. Такая механика даёт неограниченную вложенность автоматизаций, чтобы создавать максимально сложные сценарии, комбинируя типы событий и сили.


Когда событие иего параметры указаны, система выбирает подходящий сценарий. Запуск проверки сценариев происходит лишь тогда, когда какой-либо параметр всистеме изменился.


Ключевые характеристики системы


  • Софт реализован наNuxt.js(сиспользованием Vue.jsиMongoDB).
  • Автономная работа сервера врайоне 5часов (если отключится внешнее питание, система проработает примерно столько засчёт батареи).
  • Запуск приложения происходит через утилиту PM2 process manager (рабочий диспетчер процессов для приложений Node.js) работает максимально просто: устанавливается всистему, выпишете команду старт, ивсё работает. Может одновременно запустить столько процессов, сколько есть ядер всистеме. Например, если ядра4, можно запускать параллельно 4сервера, разделяя между ними трафик наслучай, если какой-то изних упадёт.
  • Подключение происходит поWi-Fi, причём каждый узел системы способен самостоятельно восстанавливать подключение, если оно отвалится.
  • Каждый элемент системы может работать как отдельное устройство это было принципиальное условие настарте.
  • Разработка этой версии заняла полгода Евгений инженерил всвободное время: зачас доработы ивобеденный перерыв побудням.



Как происходит обмен данными


Обмен данными в системе Умный дом

Есть два основных канала, которые пофакту являются топиками вMQTT:


  1. Канал данных понему все элементы системы шлют данные насервер. Данные делятся натипы: строка, справочник (набор предопределённых данных вроде вкл ивыкл для охранной или метеосистемы), число, да/нет.
  2. Канал управления понему сервер отдаёт команду какому-либо устройству. Данные также передаются, делясь натипы: либо кнопка, либо строка. Вответ накоманду устройство, сервис или вещь возвращает результат выполнения статус-код: 1 всё хорошо; 2 сейчас выполнить нельзя (скажем, нельзя включить тревогу, если помещение непоставлено наохрану); 3 всё плохо.


Почему ничего неполучилось сGoogle Assistant


Google Assistant тот самый сервис, который отвечает зазапросы окей, Гугл.... Аналог Siri отApple. Иконечно, унего есть своё API исреда для подключения умных устройств вэкосистему Google Assistant, чтобы можно было сказать окей, Гугл, включи охранную систему или окей, Гугл, какая погода сегодня?. Запрос пройдёт через сервера Гугла, вернётся квам наустройство, ионо выдаст результат.


Яподумал круто!, готовое нативное приложение для телефона наAndroid икак раз годится для системы умный дом. Начал подключать. Если кто-то видел документацию сервисов Гугла, теменя поймут: яофигел ихчитать. Во-первых, наанглийском. Во-вторых, многобукаф инаписано очень мудрёно.


Яподписан наютуб-канал одного разработчика, которому удалось подключиться кэкосистеме Google Assistant. После своих неудачных попыток ярешил написать ему онответил идаже помог мне сподключением. Новпервыйже день яразочаровался: приложение Google Home сырое, аего русская версия иподавно. Носамое главное система заточена под управление брендовыми устройствами: например, умной рисоваркой, которой можно управлять через Wi-Fi. Или умной колонкой Google Station, спомощью которой реально можно управлять хоть всем домом, нокоторая по-русски непонимает. Моиже устройства кастомные, ипод них вэкосистеме Google Assistant ничего нет. Так что всё было зря.


Евгений, разработчик




Пробовал Евгений ияндексовскую Алису она лучше из-за адекватного русского языка, ноиеёконфигурация ущербная. Витоге онпонял, что сготовыми решениями просто несудьба:)



Сколько стоило создание системы


Самое дорогое микрокомпьютер Raspberry PI3b+ивообще весь блок центрального управления. Онвышел постоимости чуть больше 4тысяч рублей. Аобщий бюджет проекта составил 9540 рублей без учёта расходов напластик для печати корпусов имелких деталек, которые уже были варсенале уЕвгения.


Сколько стоит создать умный дом

Планы


Сейчас впланах создание мобильного приложения скрасивым интерфейсом, чтобы умный дом был всегда вкармане ичтобы вместо SMS приходили push-уведомления. Также Евгений планирует добавить управление светом ивходным замком.


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


Среди замков нарынке есть интересное решение замки Sherlock, управляемые через Wi-Fi сосмартфона. Евгений хочет собрать нечто подобное, только чтобы состороны подъезда вместо электронного дисплея было гнездо для RFIDметки. Носамое главное замок должен сигнализировать отом, что оннезакрыт (признайтесь, увас нераз было такое, что выпроспали всю ночь соткрытой дверью, правда?).


современная люстра и замок Sherlock

Также впланах реализовать функцию разбудить посети. Это когда при нажатии специальной кнопки роутер отправляет команду поmac-адресу устройства например, телевизора, ивелит ему включиться. Засчёт этого функционала можно настроить сценарии. Скажем, сценарий хочу работать: включить компьютер, выключить телевизор, закрыть шторы, выгнать изкомнаты всех домашних :)


Носамая крутая штука, которую Евгений хочет воплотить, это подключение ZigBee-устройств. ZigBee это стандарт общения между гаджетами или попросту протокол передачи данных. Грубо, аналог подключения поWi-Fi. Основное преимущество такой технологии низкое потребление энергии. Ноиз-за маломощности идальность работы тоже меньше, чем уWi-Fi (хотя всвежих версиях этот недостаток, вродебы, пофиксили).


Организовать сеть ZigBee можно тремя вариантами конфигураций:


Конфигурации ZigBee

Координатор устройство, которое собирает иотправляет данные всем остальным устройствам сети. Если сеть длинная (большая квартира, толстые стены), вход вступают роутеры они получают сигнал откоординатора, усиливают его итранслируют наконечные устройства. Они могут прятаться вобычных бытовых предметах: настольных лампах или увлажнителях. Фишка втом, что вся ZigBee-система выбирает тип подключения сама, исходя изусловий вкаждом конкретном случае: координатор пытается через роутеры найти все возможные устройства, чтобы создать сеть.


Китайцы быстро поняли, что эта технология быстрая, классная идешёвая, поэтому выпускают все свои устройства уже стаким функционалом. Нокаждый гаджет может функционировать только сосвоим координатором: тоесть, если увас чайник Xiaomi, тоикоординатор должен быть этойже фирмы (выглядит онкак круглое устройство, которое вставляется врозетку). Нотеже самые китайцы быстренько нашли, как обойти это ограничение: сделали USB-свисток, накоторый через USB-порт компьютера можно скачать специальноеПО, итогда кнему можно подключить любое устройство любого производителя.


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


Нояпонимаю, что мне никогда непереплюнуть Xiaomi, IKEA или Aqara банально поцене: даже если янайду китайцев, которые сделают партию пооптовым ценам сготовыми платами, это всё равно получится дороже, чем устройство оттогоже Xiaomi. Нуивдобавок моё устройство небудет таким красивым, как уних.


Евгений, разработчик




Как система выглядит для пользователя


Физические устройства:








Что пользователь видит вбраузере:


Основной экран

Экран Вещи

Данные метеостанции

Сервис Прогноз погоды

Данные сервиса системы видеонаблюдения

Сервис системы

Список сценариев

Добавление сценария

Список автоматизаций

Добавление автоматизации

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

Источник: habr.com
К списку статей
Опубликовано: 20.08.2020 12:11:50
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Разработка на raspberry pi

3d-принтеры

Умный дом

Diy или сделай сам

Raspberry pi

Софт

3d принтеры

Dyi

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru