Пример поумневшего дома (smart home example), android, kotlin. Реализация управления датчиками: Remote Control (IR, Bluetooth, WiFi), lighting, access control, door & gates, pressure, temperature & humidity, ESP32(ESP8266), relay, other sensors.

1. Предисловие

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

2. Компоненты умного дома

Контроллер, датчики и исполнительное оборудование - главные компоненты "умного" дома.

Контроллер умного дома. Предназначен для управления всеми устройствами, выполнения сценариев автоматизации и удаленным доступом к умному дому.

Датчики выполняют указания контроллера по сети и управляют устройствами умного дома. На основе этих данных умный дом выполняет те или иные действия.

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

3. Этапы проектирования умного дома

Кто будет использовать "умный" дом?

Насколько «умным» будет ваш дом?

Чем вы планируете управлять?

Как вы планируете управлять "умным" домом?

Цена обслуживания?

4. Реализация проекта

Сразу оговорюсь, проектированием своего умного дома на этапе строительства я не занимался, сначала он был построен, а затем дом стал понемногу умнеть :). В качестве контроллера умного дома я использую планшет (в настоящий момент mipad 5 pro), он большой шустрый, яркий и громкий (и это не реклама...), до этого был mipad 4 plus - тоже достойный аппарат, сейчас висит в зимнем саду и используется для умной системы видеонаблюдения

Кроме того используется с умным домом еще планшет в машине (их там 2) поэтому 1 периодически выполняет функцию управления на выезде (например для открытия\закрытия въездных ворот или включения какого-нибудь оборудования) и в телефоне (редко).

Клиентское ПО написано под андройд, Kotlin, MVVM, Сoroutines, WorkManager, Room, Fragments, RecyclerView, Dagger2, помимо выполнения действий по нажатию кнопок, реализованы автоматические события в течении суток для выполнения определенных действий (проверки выключения света, открытие\закрытие дверей у кур, включение сигнализации и т.д.

Для пользователей android мною написана библиотека и выложена в maven central repository для получения погоды с сервиса rusmeteo.net (android library for obtaining forecast),

подключение и использование библиотеки описано на моем гитхабе (прогноз почасовой и  на 10 дней).

 

Серверная часть представляет собой СУБД MySQL, php скрипты для работы с базой данных и частично синхронизации локальной Room c удаленной MySQL.

В качестве датчиков  мною были использованы модули ESP32(ESP8266EX) прeдставляющие собой расширенную версию arduino с WIFI, a ESP32 и bluetooth, мне понравилось исполнения в форм-факторе Wemos, из минусов это работа только в сети 2,4 Ггц, плюс это цена ~200 руб на aliexpress на момент покупки. В модулях ESP-32 еще было задействован bluetooth, для управления цветными светодиодами (управление цветной подсветкой под музыку с умного дома), кроме этого я еще реализовал проект лазерного дальномера в своем автомобиле с датчиком VL531X (дальность работы 4 метра) с управлением по bluetooth с планшета авто.

Для сравнения, некоторое время назад мне пришлось разрабатывать систему удаленного управления оборудования под AMX Harman, где реализация подобного функционала измеряется сотнями тысяч.

4.1. Модули

К модулям ESP32(ESP8266EX) у меня подключены различные сенсоры:

датчики температуры, влажности (dht-22) они мне показались наиболее точными (только на улице стоят 3 штуки и агрегируют точное значение); 

давления (bme-280) тоже очень точный датчик работает по интерфейсу шины I2C;

реле: (для управления 220В я использую 30А электромеханическое с опторазвязкой - SLA-05VDC-SL-C), (для управления 12В электромагнитные реле  SRD-05VDC-SL-C);

датчики дыма MQ-2, угарного газа MQ-7, детекторы CO2 MQ-135; датчик огня KY-026;

ик датчики YL-63(FC-51), ик датчики движения HC-SR501;

и т.д.

 

 Старые версии оболочки для различных устройств

В данный момент у меня около 35 умных устройств ESP, а так как система realTime пришлось помогать своему роутеру (archer ax6000) который периодически выборочно игнорировал пакеты с устройств, докупить usb 4g модем, воткнуть его в старый роутер и разгрузить атаку мелкими пакетами основной роутер, благо тариф на "USB свисток" +100  рублей.

При отсутствии интернета управление осуществляется локально, через веб сервер на планшете (с локальной БД Room), но с появление дополнительного 4G модема в моей системе, удаленный доступ к базе есть всегда.

telegramm bot

Для логирования событий помимо отображения журнала событий в программе, используется telegramm bot, для получения событий на телефоны, к сожалению доступ к telegramm для ESP устройств был заблокирован, пришлось искать варианты решения...

Схема взаимодействия

 

ESP-8266EX (Wemos D1 R1)

ESP-32 Wemos

 

 Импульсное реле ABB, фотография и схема с сайта производителя

 

4.1. Что реализовано

- управление освещением в доме, гараже, бане, беседке (!контроль за детьми, забывают выключать свет!) основа - импульсные реле;

- несколько датчиков температуры и влажности воздуха (улица, дом, баня), бассейн (температура воды), барометр; 

- контроль CO, CO2;

- датчики дыма и огня;

- контроль территории (датчики движения, датчики холла, концевики);

- ворота - ролставни (гараж);

- вьездные ворота, управление открытием с пульта RF и через умный дом;

- освещение улицы (фонари, курятник, много всего);

- откр\закр дверки у кур, теплицы, зимний сад - актуаторы.

 

- библиотека получения прогноза погоды

- события храняться в БД и отправляются  в группу мессенджера telegram (telegram bot);

- время, 2 программируемых на неделю будильника, 2 таймера;

- прогноз погоды (10 дней, почасовой);

- озвучивание выполняемых действий (yandex text speech)

- контроль работоспособности датчиков;

Контроль работоспособности датчиков

 

Отдельная программа для конструктора событий:

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

 

Открытие въездных и гаражных ворот 2020

Обновление погоды 2021

Обновление оболочки 02.12.2021

<На главную>