Мобильное приложение для операционной системы Android, анализирующее показания датчиков устройства и сообщающее пользователю о больших изменениях. Может использоваться как охранная система, а также для проведения научных исследований.
Ссылка на apk файл: https://andreydem0505.github.io/HomeController-Extra/
Системные требования: Android версии 8 и выше.
Поддерживаемые языки: русский, английский.
Для запуска локально рекомендуется использовать Android Studio.
В ходе разработки использовались современные и перспективные технологии: язык программирования Kotlin, фреймворк Spring, библиотеки Jetpack Compose и Retrofit, облачная NoSQL база данных Cloud Firestore, система сборки Gradle, система управления версиями Git, стиль графического дизайна Material Design, API Telegram.
Использовались приёмы объектно-оринтированного, аспектно-ориентированного и функционального программирования. Одной из особенностей приложения является реактивный интерфейс.
Мобильное приложение связывается с серверной частью посредством Rest API. Серверная часть отвечает за работу Telegram бота и хранение данных в базе.
Ссылка на серверную часть: https://github.com/andreydem0505/HomeController-Backend
- Датчик определяет разницу между показаниями, при которой надо поднять тревогу, самостоятельно на основе первых показаний и запоминает как ultimateDifference. При превышении очередной разницы между соседними показаниями над ultimateDifference отправляется сигнал тревоги пользователю в виде сообщения в Telegram боте.
- Алгоритм решает проблему постоянных небольших колебаний датчиков и позволяет системе приспособиться к окружающей среде. Так, если в комнате моргает лампочка, датчик освещения не будет реагировать на это, но будет сообщать о действительно подозрительных изменениях.
- Решение позволяет добавлять обработку новых датчиков в приложение без того, чтобы задумываться об их диапазоне значений и чувствительности, так как это берёт на себя интеллект системы.
- Каждому датчику прикрепляется свой объект класса SensorListener. Это позволяет проводить анализ данных для каждого датчика непосредственно от другого (иметь своё значение ultimateDifference).
- Пользователь может настраивать систему под себя, например, изменяя коэффициент чувствительности.
- Алгоритм не потребляет много ресурсов, работа может происходить в фоновом режиме.
- Подобный алгоритм также возможно использовать для других задач, таких как обработка значений температуры воздуха, курсов валют и т. д., поэтому решение является универсальным.
- Если пользователь авторизован, смотрите следующий шаг. Иначе открывается экран с инструкцией по регистрации и ссылкой на Telegram бота. Пользователь переходит в бота, запускает его и получает индивидуальный уникальный ключ. Пользователь переходит обратно в приложение и вставляет ключ в соответствующее поле. Ключ проверяется и, в случае успеха, записывается в локальное хранилище приложения, и экран закрывается. С этого момента пользователь считается авторизованным.
- Пользователь изменяет настройки приложения, такие как коэффициент чувствительности, время задержи перед началом анализа окружающей среды и минимальный интервал между соседними сигналами одного датчика. При первом открытии этого экрана в поля подставляются рекомендуемые значения, при последующих - значения, которые пользователь ввёл в прошлый раз (записываются в локальное хранилище). Пользователь может узнать больше о конкретном поле, нажав на соответствующую иконку. В этом случае откроется диалоговое окно с информацией и кнопкой "ОК" для закрытия этого окна. При неверном формате ввода граница соответствующего поля становится красной, появляется надпись об ошибке, кнопка "Запустить" блокируется. После настроек, пользователь нажимает кнопку "Запустить".
- Если пользователь оставил значение задержки равное 0, смотрите следующий шаг. Иначе на экране появляется запущенный таймер, ведущий отсчёт с выставленного значения задержки. Пользователь в это время устанавливает устройство в выделенное для него место, оставляет окружающие условия такими, какими они должны быть во время работы системы (например, уходит из помещения, выключив за собой свет, закрыв дверь и т. д.).
- Открывается экран, показывающий текущие показания датчиков, имеющиеся на устройстве и обрабатываемые приложением. Система начинает анализ окружающей среды. Если какой-то датчик показывает сильные изменения, его название и показания становятся красными на 5 секунд, а пользователю отправляется сообщение о тревоге в Telegram боте. Вернувшись к устройству, пользователь может закрыть приложение или закрыть текущий экран (в этом случае смотрите шаг 2).