Проект локальных беспроводных устройств к каждом из которых подключается датчик (температуры, влажности), датчик движения, различные устройства с цифровым выходом, которые можно использовать для охраны. Вся информация, выводится на смартфон, также как и управление и настройка.
Данное устройство разрабатывалось на основе микроконтроллера esp32 (ap), esp8266 (node) и смартфона os Android.
Программа для микроконтроллеров написана на языке Си для андроид на языке Котлин (скачать возможно по ссылке download).
Каждый из микроконтроллеров подключенный в данном проекте имеет одинаковые функции. Максимальное количество node можно подключить 20 штук.
И в первую очередь хотелось бы разъяснить как осуществляется беспроводная связь между устройствами, и лучшим способом будет показать это графической схемой.


Каждый из портов можно настроить функционалом выбираемым в настройках node.
Перечислим специальные функции:
1 порт — регулятор температуры
Задаём среднее значение и гетерезис, выбираем включение порта на повышение или на понижение температуры. Подключаем подогреватель или охладитель.
2 порт — регулятор влажности
Задаём среднее значение и гетерезис на повышение влажности. Подключаем увлажнитель.
3 порт — оповещение
Порт включится после превышения температуры (работает как пожарная сигнализация), после появления высокого уровня на INP1 или INP2, если активирована сигнализация (охрана или 24/7). Подключаем сирену.
4 порт — по событию (возможно совмещать с таймером)
Подключаем любое устройство с отключением или включением при появлении высокого уровня на INP2.
5 порт — освещение
Имеет функционал для управления освещением и включением порта от INP1. Подключаем led лампу при появлении высокого уровня на INP1, включается порт на заданный промежуток времени (возможно плавное включение).
Кроме специальных функций с 1 по 4 порт возможно установить:
таймер время с выбором дня недели (2 режима),
таймер цикл.
Функции таймеров возможно устанавливать на каждый из 4 портов в зависимости от потребностей. Это может быть полив растений, включение вентиляции на заданные промежутки времени, наполнение ёмкости совмещая с портом по событию и прочее.
INP1, INP2 порт — настроен на входные значения т.е. при появлении высокого уровня:
INP1 если активирован 5 порт произойдет включение 5 порта (плавный запуск). Включение датчика движения на порт INP1 позволяет производить включение порта 5 на промежуток времени (5-120 сек), при необходимости можно установить отключение в дневной период.
- INP1, INP2 если активирована сигнализация (охрана или 24/7), включится оповещение (порт 4) и (или) звуковой сигнал на смартфоне. Возможно изменить статусы контактов (на INP1, INP2), установить контакты нормально-разомкнутые или нормально-замкнутые.
На каждый из входных портов возможно назначить функции сигнализации (охрана или датчики 24/7). Датчики 24/7 позволяют мониторить различные датчики к примеру (дыма, утечки воды, пожарные извещатели).
Поскольку в данном проекте используются временные таймеры, немаловажное значение имеет часы реального времени RTC. Чтобы не усложнять внешнюю обвязку микроконтроллера часы реального времени осуществляют ход за счёт внутреннего кварца, а поскольку данный счет не является достаточно точным, пара секунд за сутки будут теряться, обновляться будем через интернет SNTP. Для этого достаточно будет настроить доступ к роутеру.
Установку времени осуществляем следующим образом:
-- при каждом новом запуске esp32:
->обновление через node, если нет
->обновление через смартфон, если нет
->обновление через интернет.
-- при каждом новом запуске esp8266:
->обновление через esp32.
Все данные передаются на смартфон, интерфейс программы выглядит таким образом.

Каждый node имеет поля со значениями температуры, влажности, статусы портов, текущее время. Каждый порт имеет информацию о настройках порта, поле для изменения статуса. Информацию о изменении температуры, влажности статусы INP1, INP2 в течении часа, в виде графиков.
Программа позволяет осуществлять настройку параметров в esp32, esp8266 в удобном и интуитивно понятным способом.
Программа позволяет хранить значения температуры, влажности за неограниченный период времени в виде максимума и минимума за час.


Ссылка по подробному описанию интерфейса программы
Ссылка на загрузку прошивку, программы, схемы