АННОТАЦИЯ 3
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ 4
ВВЕДЕНИЕ 6
1 Интернет вещей 8
1.1 Концепция технологии Internet of Things (Интернет вещей) 8
1.2 Service-oriented Architecture (SOA) 8
1.3 Основные понятия и принципы сенсорных сетей 10
1.4 Технология маяков BLE 15
2 Архитектура системы 17
2.1 Аппаратная реализация 18
2.2 Программная реализация 19
2.2.1 Клиент серверная архитектура 19
2.2.2 Веб-приложение 20
2.2.3 MVC 22
2.2.4 Архитектура веб-сервера 23
2.2.4.1 Flask 23
2.2.4.2 WebSockets 27
2.2.4.3 MQTT (Message Queue Telemetry Transport) 29
2.2.4.4 Определение координат маяка BLE 33
2.2.4.5 Принцип работы и структура проекта 36
3 Реализация проекта 41
3.1 Модели БД 41
3.2 Пользователь 42
3.3 Устройство 42
3.4 Авторизация 42
3.4.1 Авторизация 43
3.4.2 Регистрация 44
3.4.3 Сброс пароля 44
3.5 Главная страница и профиль пользователя 44
ЗАКЛЮЧЕНИЕ 47
ЛИТЕРАТУРА 48
ПРИЛОЖЕНИЕ А 52
1 Raspberry Pi 52
2 ESP32 53
ПРИЛОЖЕНИЕ Б 56
1 Bluetooth 56
2 Bluetooth с низким энергопотреблением 56
3 Диапазон частот BLE 56
4 Структура пакета BLE 58
5 Структура полезной нагрузки 61
6 Параметры Bluetooth и BLE 62
ПРИЛОЖЕНИЕ В
В рамках дипломной работы реализуется система, которая определяет положение подключенного к системе устройства в пределах комнаты. Разрабатываемая система связана с предоставлением пользователю услуг, на основе местоположения в пространстве (Location-based service). В область применения данной темы входит так называемый IoT (Internet of Things), стремительно набирающий популярность. Благодаря данным о пользователе и его местоположении возможно создание индивидуального взаимодействия, смарт-сценария и автоматизации бытовых процессов, основанных на личных предпочтениях пользователя. Кроме того, решение, использованное в данном проекте, возможно для применения внутренней навигации, ориентации и взаимодействии во внутренней экосистеме не только семейных домов, но и также крупных объектов, таких как аэропорты, музеи или торговые центры.
Актуальность работы обусловлена возрастающим спросом на внедрение решений, связанных с навигацией внутри помещений. На сегодняшний день существует несколько направлений, где применение востребовано:
1. Маркетинг. Технология может использоваться в сфере продаж с целью донесения до пользователя информации;
2. Аналитика. Можно использовать информацию о перемещениях клиентов;
3. Навигация. Для подсказок об ориентации в пространстве;
4. Медицине. Определение местонахождения персонала, пациентов в больничном помещении.
С точки зрения информационных технологий эта задача носят комплексный характер.
Во-первых, требует решения для поиска задачи определения местоположения, а во-вторых, для их реализации в виде информационных сервисов необходима разработка программного комплекса специальной архитектуры, учитывающей особенности программно-аппаратных платформ устройств, знания стандартов, протоколов, умения работать с базой данных.
Целью проекта является разработка системы, с помощью которой можно точно отслеживать местоположение пользователя в пространстве и идентифицировать его личность.
Для достижения цели были поставлены следующие задачи:
- изучить доступные и оптимальные инструменты, и методы для реализации системы мониторинга, а также спроектировать архитектуру исследуемой системы;
- определить набор инструментов для реализации исследуемой системы;
- реализовать систему.
В результате работы была спроектирована и реализована система, отслеживания человека в помещении и отображения его на виртуальной карте. Все этапы реализации пройдены, приложение отслеживает текущее положение человека в комнате и идентифицирует этого человека.
Приложение состоит из трех частей. Приложение для модуля ESP32, серверное приложение и приложение веб-интерфейса. Большая часть приложения завязана на поиске устройств в сети Bluetooth и отправке полученных данных на веб-сервер. Приложение создано с использованием модульной системы ESPHOME. Серверная часть приложения должна поддерживать протокол MQTT для сбора данных с микроконтроллеров и протокол WebSocket для их публикации в реальном времени. Для реализации серверного приложения использовался Flask, потому что отвечает всем требованиям проекта и имеет большое количество ресурсов для настройки связи между MQTT и WebSocket. Графический интерфейс был создан и использованием встроенного в Flask шаблонизатора - Jinja2 и JavaScript.