К истории вопроса
У меня давно было желание сделать жизнь в своем доме более комфортной. Это желание возникло еще на стадии проектирования дома в далеких 90-х годах прошлого века. При постройке дома мною был проложен сетевой кабель (4 витых пары) в виде петли через все помещения дома. Но заняться интеллектуальным оснащением дома все было некогда.
Наконец мною в 2010 году был создан упрощенный вариант.
В первой версии написанной на языке C# использовался в качестве устройства управления стационарный компьютер с операционной системой Windows XP. Была создана охранная сигнализация дома на основе:
стационарного компьютера с операционной системой Windows XP;
USB-GSM-модема, подключенного к компьютеру;
датчики движения, на основе инфракрасного излучения объекта;
световые и звуковые сигнализаторы;
соединялось все с помощью проложенного по всему дому сетевому кабелю.
Для уменьшения затрат, чтобы не использовать дополнительно контроллеров для датчиков и сигнализаторов, сбор информации и передача сигналов осуществлялся с помощью сигналов и линий управления COM – порта. Недостатком первой версии было большое потребление питания и невозможность дальнейшего расширения функциональных возможностей.
Наконец в 2022 году у меня появилось свободное время и я решил создать новый вариант умного дома.
В новой версии в качестве управляющего устройства используется сотовый телефон с ОС Android версией не ниже 5.0. Через кабель USB телефон подключен к покупному устройству USB/RS485. Для питания всей системы используется блок бесперебойного питания . Узлы управления сбором информации от датчиков и управления исполнительными устройствами реализованы на микросхемах ESP 32. Обмен информацией и питание внешних устройств производится через сетевой кабель.
Управляющее устройство (телефон) периодически (4 сек.) опрашивает контроллеры сети, внешние устройства (ВУ) и если есть информация от датчиков, в зависимости от настроек, передает сообщения либо в виде SMS, либо в TELEGRAM. А если получена SMS – команда она передается для исполнения на ВУ.
Обоснование выбора архитектуры умного дома
Построение сети умный дом было сделано из следующих соображений.
1. Упор сделан на основную функцию сети как охранная сигнализация:
поэтому все устройства сети умный дом должны централизовано управляться из локального центра расположенного внутри дома, для исключения сбоя от внешних причин;
связь между узлами локальной сети участвующими в системе охранной сигнализации только проводная, для исключения нарушения обмена информацией, например из-за высокочастотных помех от « высокочастотных глушилок» или препятствий для прохождения высокочастотного сигнала в виде стен;
локальная сеть умный дом запитывается от автономного источника, для исключения сбоя от умышленного отключения сетевого дома.
2. Локальная сеть умный дом кроме локальной сигнализации должна передавать сообщения на внешние устройства — телефон.
Также локальная сеть должна иметь возможность изменять свои функции через внешние команды, например SMS.
3. Кроме жестко расположенных узлов локальной сети, обменивающихся информацией с центральным управляющим устройством по интерфейсу RS485, необходимо предусмотреть узлы с которыми обмен информации происходит по беспроводной связи.
4. Стоимость составляющих локальной сети должна быть минимально возможной.
Исходя из этих требований и выбрана следующая архитектура локальной домашней сети умный дом:
центральное управляющее устройство: устаревший телефон (бесплатно);
узлы сети на основе дешевых китайских микропроцессоров, но с большими функциональными возможностями, включая беспроводный интерфейс BLE. Стоимость микросхемы ESP 32 вместе с платой составляет 2-3 $. Прочие детали: стабилизаторы, датчики и формирователи сигналов стоят менее 1$;
блок бесперебойного питания выбран из самых дешевых ББП-20 Lite, вместе с аккумуляторной батареей АКБ7 их стоимость составила меньше 2 т. р. плюс 1 т.р. за пьезоэлектрическую сирену на 12 В;
проводные узлы сети смонтированы в корпусе датчиков движения типа ДД-009, стоимость которых не более 6$.
Итого общая стоимость домашней локальной сети умный дом, состоящей из 7 проводных узлов и 3 беспроводных, с сигнализацией мне обошлась в сумму менее 10000 рублей.
Описание работы локальной сети
Функциональная схема локальной домашней сети умный дом приведена на рис. 1, где:
УУ - удаленное устройство, например телефон или телефоны, на которое поступает информация с домашней сети и которое может посылать в эту сеть сигналы управления;
ЦУУ — центральное управляющее устройство, основано на устройстве с операционной системой Андроид (например сотовый телефон), предназначено для управления обменом информацией в локальной домашней сети, работа по сценариям, организация связи с удаленными гаджетами через интернет и сотовую связь;
ВУ — внешние устройства, узлы домашней локальной сети состоящие из датчиков, исполнительных устройств и микроконтроллера управляющего их работой. В локальной сети представлено два типа ВУ: подключаемые по проводному интерфейсу RS485 – ВУ RS485; подключаемые по беспроводному интерфейсу BLE — ВУ BLE к одному из узлов ВУ RS485;
БПП — блок бесперебойного питания, организует бесперебойное питание домашней сети напряжением 12 В.
![Рис. 1 Рис. 1](https://habrastorage.org/getpro/habr/upload_files/f5c/1d9/6bc/f5c1d96bc17812890de32c7b193b177a.jpg)
Работает все следующим образом. ЦУУ работая в автономном режиме каждые 4 сек организует цикл опроса подключенных к локальной сети ВУ, в зависимости от выбранного режима работы и сценария в конце цикла формируется одна команда управления ВУ.
Команды управления ВУ делятся на:
команда SMS, команда поступает с управляющего телефона в виде SMS;
команда сценария, формируется самим ЦУУ согласно выбранному сценарию работы локальной сети в автономном режиме;
команда сигнализации, команда относится к командам широковещательной рассылки и поступает от ЦУУ одновременно на все ВУ при работе в режиме «ОХРАНА» если сработал хотя бы один датчик перемещений. По этой команде включается свет и сигнализация во всех помещениях на 3 минуты.
К каждому ВУ RS485 подключен датчик перемещений, а также может подключаться:
датчик температуры и влажности воздуха;
датчик влажности почвы;
до 3 других цифровых датчиков, срабатывание лог.0;
до 6 исполнительных устройств включая свет и сигнализацию, срабатывание лог.1.
На данный момент ВУ BLE запрограммированы только на управление исполнительными устройствами, хотя в дальнейшем при доработке программы возможно подключение датчиков.
Описание и программа для ЦУУ разработанная на языке java в среде программирования Android Studio приведена в моем репозитории по ссылке, там же можно скачать файл .apk приложения.
Описание и программа для ВУ RS485 разработанная на языке С в среде программирования ESP-IDF приведена в моем репозитории по ссылке.
Описание и программа для ВУ BLE разработанная на языке С в среде программирования ESP-IDF приведена в моем репозитории по ссылке.
Описание работы приложения на телефоне
1. Подключение
![Рис 1 Рис 1](https://habrastorage.org/getpro/habr/upload_files/2f4/e16/6ee/2f4e166eecc5e271e3d0d04b01d88e53.jpg)
Скачать файл приложения (расширение .apk) и запустить его. На экране телефона отобразится следующая картинка, см. рис. 2. Закрываем приложение и выбираем в настройках телефона:
Настройки/Блокировка экрана/Спящий режим/Не выключать;
Настройки/Экран/Яркость/минимально.
Затем необходимо получить доступ к расширенным настройкам телефона в качестве разработчика, для этого обычно надо 6 раз нажать в настройках/ о телефоне/версия ОС(MIUI).
После этого в появившемся разделе: настройки/расширенные настройки/OTG включить режим otg телефона.
Кроме этого необходимо зайти в настройках телефона: приложения\ все приложения\MySmartHouse2\разрешения приложений и разрешить работу с SMS.
Следующем этапом является подключение устройства USB/RS485 через разъем micro USB следующим образом: в начале в телефон вставляется специальный шлейф OTG, а затем к нему подключается обычный разъем USB (вилка) от устройства USB/RS485. Телефон обычно спрашивает какое приложение запускать по умолчанию, надо указать данное. После этого приложение запускается и внизу экрана в информационной строке появляется сообщение о подключении устройства USB/RS485 с заданными параметрами.
Примечание — используемый телефон должен обладать полноценной функцией USB OTG (проверить поддерживает ли телефон полностью функцию OTG можно с помощью устанавливаемого на телефон приложения “USB OTG CHECKER”).
Следующем этапом является подключение устройства USB/RS485 через разъем micro USB следующим образом: в начале в телефон вставляется специальный шлейф OTG, а затем к нему подключается обычный разъем USB (вилка) от устройства USB/RS485. Телефон обычно спрашивает какое приложение запускать по умолчанию, надо указать данное. После этого приложение запускается и внизу экрана в информационной строке появляется сообщение о подключении устройства USB/RS485 с заданными параметрами.
Необходимо учесть, что выборе OTG режима работы телефона зарядки батареи не происходит, поэтому необходимо либо подключить подзарядку непосредственно на батарею телефона, либо использовать его не более суток.
ВНИМАНИЕ! Прежде чем выполнять следующие пункты, к проводной домашней локальной сети необходимо подключить ВУ RS485 с установленными с помощью перемычек индивидуальными номерами в двоичном коде. Расположить в помещениях где это нужно ВУ BLE с кодом соответствующему коду адреса ВУ RS485 установленного в данном помещении.
2. Настройка ВУ RS485
![Рис 3 Рис 3](https://habrastorage.org/getpro/habr/upload_files/381/2fe/ecc/3812feeccf176f8f7cc0daf4b9c04846.jpg)
На главной странице приложения открываем дополнительное меню «НАСТРОЙКИ», нажав на значок «...» в верхнем правом углу экрана. Выбираем подменю «RS485/Наименование устройств».
В открывающемся окне необходимо напротив номера узла сети написать наименование (например: кухня) и сделать его активным (галочка), см. рис. 3.
Затем сохранить информацию нажав кнопку «записать».
Выбранные узлы будут опрашиваться и в случае если от них два раза подряд не поступит ответ, опрос их исключается (галочка в подменю снимается).
Максимальное число ВУ как видно из рисунка составляет 16.
3. Внесение номеров телефонов для управления
![Рис 5 Рис 5](https://habrastorage.org/getpro/habr/upload_files/cd0/64b/347/cd064b3474242a490d5c736727d900a0.jpg)
На главной странице приложения открываем дополнительное меню «НАСТРОЙКИ», нажав на значок «...» в верхнем правом углу экрана. Выбираем подменю «SMS телефон». В открывающемся окне необходимо записать номера телефонов (до 6 шт.) на которые будут рассылаться SMS. См рис. 4.
Если перед номером поставить «галочку», то это означает что с этого номера можно будет посылать SMS с командами управления.
4. Внесение идентификационных данных «TELEGRAM – канала»
На главной странице приложения открываем дополнительное меню «НАСТРОЙКИ», нажав на значок «...» в верхнем правом углу экрана. Выбираем подменю « Telegram”.
В открывающемся окне необходимо записать Bot_Token и chat_id канала на который будет поступать информация из локальной сети Умный дом.
Создание «TELEGRAM – канала» и получение его идентификационных данных хорошо описано на сайте, доступном по ссылке.
Примечание — Изначально выбор передачи сообщений по «TELEGRAM – каналу» отсутствует, до тех пор пока не будут введены идентификационных данные.
5. Выбор режима обмена информации для удаленной связи
На главной странице в верху экрана по надписью «ВЫБОР ВИДА СООБЩЕНИЙ И УПРАВЛЕНИЯ» выбираем передачу сообщений от домашней сети в виде «SMS» и, или в «TELEGRAM – канал». Для выполнения SMS -команд надо выбрать опцию «команды SMS».
6. Работа в режиме охраны
![Рис 6 Рис 6](https://habrastorage.org/getpro/habr/upload_files/0c0/c0c/38e/0c0c0c38e6af12a25dfab04aab455251.jpg)
Включение/выключение домашней сети в режим охрана производится нажатием кнопки расположенной в нижней части интерактивного экрана.
Изначально необходимо, набрать текст передаваемого сообщения: например «сработал датчик перемещений, а также команды отключения режима охраны, например «sim sim open”. Тексты запоминаются по нажатии кнопки.
Включение происходит через 3 минуты после нажатия кнопки, это необходимо для того чтобы покинуть дом. Отключение происходит сразу после нажатия кнопки или получения SMS-команды отключения режима охраны.
В случае срабатывания охранной сигнализации через интернет/сотовую связь (в зависимости от выбранного способа получения сообщений) приходит сообщение следующего типа: «кухня: сработал датчик перемещений», где в начале вставляется выбранное наименование узла домашней сети в месте которого расположен датчик. Одновременно на все устройства сети широковещательной командой включается сирена и световой сигнал на 3 минуты.
ПРИМЕЧАНИЕ — передача сообщений от датчиков перемещений происходит только при включенном режиме охраны.
7. Стилистика команд управления
Передаваемые команды управления домашней сетью должны состоять из следующих частей:
первая, присвоенное пользователем имя расположения узла домашней сети (например-кухня);
вторая, команда: включить или выключить;
третья, объект: мотор; свет; вода; сирена; отопление; розетка;
четвертая (дополнительная, может отсутствовать), способ: непосредственно/удаленно через BLE. Если этой части нет, команда предназначена для непосредственного исполнения узлом RS485 (ВУ). Если есть слово «удаленно», происходит передача команды по BLE исполнительным устройствам подключенным к данному узлу.
Каждая часть отделяется от другой пробелом. Пример команды: «кухня включить свет».
Если команда заданна неправильно или узел не подключен приходит сообщение об ошибке.
ПРИМЕЧАНИЕ
1. Слова включить/выключить можно писать сокращенно: вкл/выкл
2. Слово удаленно можно писать сокращенно: уд.
Если при подаче команды нарушена стилистика по отсылается сообщения:
«Команда (текст команды) не выполнена-неправильное имя»;
«Команда (текст команды) не выполнена-модуль не активен»;
«Команда (текст команды) не выполнена-неправильная команда»;
«Команда (текст команды) не выполнена-объект не найден».
Если команда принята к исполнению конечным устройством, то ответного сообщения не будет, иначе отсылаются сообщения:
«Команда не исполнена модулем» - в случае сбоя;
«Ответа на команду нет» - если ВУ не отвечает.
Существует специальная команда опроса состояния домашней сити - «состояние».
При получении такой SMS в ответ высылается информация по состоянию системы:
включение режима охраны;
активные узлы;
температура в помещениях;
влажность почвы.
Желательно получать информацию по данной команде через «TELEGRAM – канал», так как отсылаемая SMS может содержать более 130 знаков и произойдет сбой отправки.
8. Вкладка климат
![Рис 7 Рис 7](https://habrastorage.org/getpro/habr/upload_files/250/e3a/bef/250e3abef39bed201b4be7a3af761ccb.jpg)
Вкладка климат предназначена для отображения температуры и влажности в помещениях и для управления отоплением согласно заложенному сценарию.
Если датчик температуры и влажности не подключен к узлу RS485 в выбранном помещении то стоке информации отображается «н/д».
По умолчанию, в строках температуры включения и выключения, находится «no«. Задавая значения температуры включения/выключения инициализируем формирование сигнала на выходе заданного узла RS485.
При нажатии кнопки «ОБНОВИТЬ» происходит обновление информации от датчиков.
При подключении одному из проводных узлов датчика влажности земли, в низу вкладки отображается влажность почвы в относительных единицах (обычно от 30 до 100).
Техническая реализация
Описание технической реализации, включая схемы, приведено в моем репозитории по ссылке.
Здесь приведу лишь сведения об использованных компонентах
1. Блок бесперебойного питания
![Фото 1 Фото 1](https://habrastorage.org/getpro/habr/upload_files/b5a/15b/a40/b5a15ba40f5b3a93816ce435075a27ed.jpg)
В качестве блока бесперебойного питания используется ББП-20 Lite, см. Фото 1, со встроенной в него аккумуляторной батареей емкостью 7А*ч типа АКБ 7.
Примечание — замечено, что при включении без нагрузки, он формирует напряжение более 14В, что может привести к выходу из строя заряжаемого аккумулятора. Что бы исключить это параллельно заряжаемому аккумулятору мною поставлен стабилитрон на 15В.
Внутри блока также установлены: стабилизатор на 5 В и формирователь сигналов интерфейса RS485.
2. Адаптер USB/RS485
![Фото 2 Фото 2](https://habrastorage.org/getpro/habr/upload_files/692/5c4/5bc/6925c45bcd24fa24db77f0dfe6c84613.jpg)
Для преобразования сигналов интерфейса USB в сигналы интерфейса RS485 используется дешевый адаптер на микросхеме FT232R, см. Фото 2.
3. Питание сотового телефона
![Фото 3 Фото 3](https://habrastorage.org/getpro/habr/upload_files/d3e/914/830/d3e9148304c442fbc7b99d15a6408265.jpg)
В качестве центрального управляющего устройства локальной домашней сети используется сотовый телефон.
Так как при работе USB в режиме OTG зарядка телефона через один разъем невозможна, а телефоны с отдельным разъемом для зарядки теперь не выпускают, пришлось запитать аккумулятор телефона напрямую через диод. Для этого положительный контакт аккумулятора подключил к выводу микрофона для подключения внешней гарнитуры и питание подается через штекер для наушников. При этом для исключения возможного сбоя в работе телефона, из-за короткого замыкания по питанию при вставлении штекера, рекомендуется полностью выключать телефон.
При данной схеме питания телефона ток зарядки/питания составляет 200-300 мА, а падение напряжения на диоде 1В. Внешний вид используемого телефона приведен на Фото 3.
4. ESP 32 на плате
![Фото 4 Фото 4](https://habrastorage.org/getpro/habr/upload_files/e27/d08/deb/e27d08debabbf8ef3f90e4e39465c441.jpg)
В качестве управляющего микроконтроллера для узлов домашней локальной сети умный дом используется модуль ESP-WROOM-32D содержащий микросхему ESP32-DOWDQ6 основанную на двух процессорах X tensa. Изображение модуля установленного на плату приведено на Фото 4.
5. Датчики и исполнительные устройства
![Фото 5 Фото 5](https://habrastorage.org/getpro/habr/upload_files/6d4/97b/359/6d497b35972096a83394dfbe6917d313.jpg)
На Фото 5 представлен датчик температуры и влажности воздуха типа DHT11. Эти цифровые датчики основаны на протоколе, который для связи использует один провод\шину с открытым коллектором, поэтому обязательна подтяжка резистором 10 кОм к плюсу питания.
Питание от 3 до 5 В. Диапазон измерения температуры от 0*С до +50*С с точностью 2*С. Диапазон измерения влажности от 20% до 95% с точностью 5%.
![Фото 6 Фото 6](https://habrastorage.org/getpro/habr/upload_files/28d/c65/3f8/28dc653f8d7ec6d86d1889d9e643cc9a.jpg)
На Фото 6 представлен емкостной датчик влажности почвы. Это датчик выдает аналоговый сигнал измеряемый АЦП микроконтроллера. Принцип его работы: изменение частоты формируемой мультивибратором от изменения емкости почвы при увлажнении и выделении постоянной составляющей полученного сигнала. Датчик работоспособен только при питании от 5 В и выдаваемый им сигнал обратно пропорционален измеряемой влажности почвы.
![рис 7 рис 7](https://habrastorage.org/getpro/habr/upload_files/71c/c87/fc0/71cc87fc033706a8546eb2dbd51a2c35.jpg)
В качестве исполнительных устройств использовались готовые блоки основанные на электромеханических реле способных коммутировать напряжение до 220 В.
![Рис 8 Рис 8](https://habrastorage.org/getpro/habr/upload_files/e38/a4b/d6b/e38a4bd6be5342176c3340f42fbdf863.jpg)
Для питания узлов сети ВУ BLE использовались готовые блоки питания представленные на Фото 8.
Для стабилизации напряжения до уровня 5 В из сетевого питания локальной сети в 12 В использовалась микросхема серии L78, подключенная к сети питания через 2 ваттное сопротивление номиналом 10 Ом.
Для формирования напряжения питания микроконтроллера ВУ 3,3 В из напряжения 5 В используется микросхема серии MCP1700.
6. Узлы локальной сети
![Фото 9 Фото 9](https://habrastorage.org/getpro/habr/upload_files/f44/637/79d/f4463779d64bf889f1f53516dba33be9.png)
![Фото 10 Фото 10](https://habrastorage.org/getpro/habr/upload_files/9fa/e32/a9b/9fae32a9b02793a36a5f99322c792518.jpg)
На Фото 9 показан внешний вид проводного узла локальной домашней сети умный дом ВУ RS485 помещенный в корпус датчика движения.
На Фото 10 показан внешний вид беспроводного узла локальной домашней сети умный дом ВУ BLE в самом дешевом корпусе который смог найти. Подключается узел к сети 220 В и управляемой нагрузке через колодку на три контакта.
Ссылки
1 https://github.com/OldIngineer/MySmartHouse2
2 https://github.com/OldIngineer/controllerRS485_MySmartHouse
3 https://github.com/OldIngineer/controllerBLE_MySmartHouse
4 https://kotyara12.ru/pubs/iot/esp_tg_notify/comment-page-1/#comment-2316