Рисунок 39. Диаграмма деятельности процесса просмотра показаний
На рисунке представлена диаграмма деятельности процесса просмотра показаний. На диаграмме выделены 3 дорожки:
xПользователь; xГоловной контроллер; xСчетчик ресурсов.
Дорожки выделяют бизнес-процессы системы.
Пользователь открывает приложение, после чего делает запрос на головной контроллер. После запроса процессы распараллеливаются:
xПользователь ожидает ответа;
xГоловной контроллер обрабатывает запрос от пользователя.
Головной контроллер проверяет насколько актуальны показания. Если показания не были обновлены в течении часа, то проверяется, может ли счетчик проверять запросы на обновление показаний. В случае, когда счетчик действительно может принимать запросы на обновление показаний, ГК отправляет запрос для актуализации данных.
Если счетчик не может обрабатывать запросы, то пользователю выгружаются самые актуальные данные из имеющихся.
Если данные собраны в течении часа, то пользователю отправляются последние собранные показания счетчика.
После выгрузки данных параллельные процессы объединяются. Пользователю больше не отображается окно ожидания и появляется возможность проводить учет показаний.
Рисунок 40. Диаграмма деятельности взаимодействия головного контроллера и счетчика ресурсов
На рисунке представлена диаграмма деятельности взаимодействия головного контроллера и счетчика ресурсов. На диаграмме отображены 2 дорожки:
xГоловной контроллер;
xСчетчик ресурсов.
Счетчик все свое рабочее время регистрирует потребление ресурсов.
Счетчик инициирует передачу показаний, после чего проверяет головной контроллер на доступность и готовность принять показания.
Если головной контроллер доступен, то счетчик передает показания на головной контроллер. Головной контроллер обновляет показания, хранящиеся в базе данных.
В ином случае, когда головной контроллер не доступен, счетчик сохраняет показания на внешний носитель. Внешним носителем является флеш-память – SD карта.
Сохранение показаний счетчика на флеш-память позволит получать все собранные показания, когда головной контроллер находился недоступным для передатчиков. Так же пользователь может извлечь SD-карту из передатчика показаний и вставить её в компьютер. Данные хранятся в текстовом файле с расширение *.csv, позволяющий просматривать их в виде эл. Таблиц.
На диаграмме классов представлена доменная модель системы. В ней отображены все классы участвующие в системе при обмене данными. Доменная модель отображает бизнес-логику системы. Доменная модель совпадает с ER диаграммой, т.е. сущности одинаковые.
Доменные классы: xPerson; xUser; xResourceBill;
xIndicationRecord; xResourceMeter; xResourceType.
Класс Person – отображает человека, проживающего в квартире, где
установлена система. Класс User – отображает пользователя, который пользуется системой. Каждый объект класса Person может иметь сопоставление с объектом класса User, т.е. каждый человек, проживающий в квартире, может пользоваться системой. Класс ResourceBill – отображает счет за коммунальный ресурс определенного типа. Класс IndicationRecord – отображает показание со счетчика. Класс ResourceMeter – отображает счетчик, который регистрирует показания. Перечисление ResourceType содержит значения, отображающие какого типа ресурс.
Значения перечисления ResourceType: xHOT_WATER – горячая вода; xCOLD_WATER – холодная вода; xGAS – газ;
xELECTRICITY – электричество;
Диаграмма классов клиентского мобильного приложения отображает иерархию классов в мобильном приложение для Android. Для построения иерархии применялась методология DDD (Domain Driven Development), т.е. в приложении выделены классы доменной модели, отображающие бизнес- логику приложения. Для взаимодействия с локальным хранилищем используются классы помощники, содержащие CRUD (Create, Read, Update, Delete) операции с объектом класса доменной модели.
Такой способ организации классов позволяет использовать ORM (Object-Relational Mapping) – объектно реляционное отображение. Благодаря объектно реляционному отображению все записи из базы данных можно представить в виде объектов классов. Код становится более читабельным и чистым. Пример кода без использования технологий ORM:
// Java 8
PreparedStatement sqlQuery = “SELECT id, first_name,
last_name, email FROM User WHERE id = ‘142b4329- 4dc0- 455a- 9438- 5c348c44bc1a’”;
ResultSet res = sqlQuery.executeQuery().next(); UUID userId = UUID.fromString(res.getString(1)); String firstName = res.getString(2);
String lastName = res.getString(3); String email = res.getString(4); User user = new User(); user.setId(userId); user.setFirstName(firstName); user.setLastName(lastName); user.setEmail(email);
// …
Пример кода с использованием технологий ORM:
// Java 8
// …
User user = userRepository.findById(id);
// …
На рисунке изображена диаграмма компонентов системы учета коммунальных ресурсов.
Компоненты можно разделить на 4 группы: xАппаратные компоненты сервера; xПрограммные компоненты сервера; xКомпоненты мобильного приложения;
xКомпоненты системы учета и передачи показаний.
К аппаратным компонентам относятся Raspberry Pi 3 и Server. Аппаратный компонент Server предоставляет интерфейс для запуска сервлет- контейнеров.
К программным компонентам относятся Servlet, Application, Service, REST, Repository, JDBC, DBMS (СУБД). Программный интерфейс Servlet использует интерфейс «Запуск сервлет-контейнеров» компонента Server. Servlet предоставляет интерфейс «Распознавание HTTP запросов» и предоставляет его компоненты Application. Программный компонент Application предоставляет интерфейс «Маршрутизация запроса» для компонента Service и ассоциированным с ним компонентом REST. В свою очередь компонент Service запрашивает интерфейс «Получение данных». Данный интерфейс предоставляется компонентом Respository. В Repository выделены компоненты доменной модели Domain. На каждый компонент доменной модели создан компонент, отвечающий за сохранение объектов в базу данных и загрузку данных из БД. Программный компонент Repository запрашивает интерфейс «Абстракция Базы Данных». Данный интерфейс реализует и предоставляет компонент JDBC. JDBC представляет собой абстракцию базы данных и предоставляет единый интерфейс доступа к базе данных. Для этого разработчики СУБД пишут драйверы для своих конкретных СУБД. С компонентом JDBC могут быть ассоциируются: sqlite-jdbc.jar, h2- jdbc.jar, psql-jdbc.jar и др. Компонент JDBC запрашивает интерфейс
«Обработка SQL запросов». Этот интерфейс реализуется компонентом DBMS (СУБД). СУБД обрабатывает SQL запрос и возвращает набор данных в JDBC.
В JDBC набор данных транслируется в объекты конкретных классов Java.
Компонент REST предоставляет интерфейс для доступа к данным, для компонентов не имеющих прямого доступа к БД. В REST контроллера проводится фильтрация и обработка запросов пользователя. В данном компоненте вложенный компонент Serializer/Deserializer предоставляет интерфейсы «Сериализация/Десериализация данных в формате JSON» для компонентов контроллеров.
К компонентам мобильного приложения относятся – SQLite и Activity компоненты. Компонент SQLite отвечает за абстракцию от базы данных в мобильных устройствах. Он предоставляет интерфейс для создания запросов и обработки результатов их выполнения. С компонентом SQLite ассоциирован компонент ORMLite для предоставления большей абстракции базы данных. ORMLite позволяет реализовывать идеи объектно реляционного отображения. Компонент Retrofit отвечает за HTTP клиент в декларативном стиле. Retrofit предоставляет интерфейс для отправки HTTP запрос и обработки HTTP ответов. Ассоциированный компонент Retrofit-Jackson-Converter реализует интерфейс «Сериализация/Десериализация данных JSON формата». Компоненты Activity оркеструют компонентами SQLite, Retrofit, а именно вызывают функции интерфейсов, предоставляемые упомянутыми компонентами.
К компонентам системы учета и передачи показаний относятся три компонента:
xПередатчик; xArduino UNO;
xСчетчик учета коммунальных ресурсов.
Компонент передатчик ассоциируется с компонентом Arduino UNO. Компонент счетчик учета коммунальных ресурсов предоставляет интерфейс
«Показания». Данный интерфейс запрашивается компонентом Передатчик, который в свою очередь тоже реализует интерфейс «Показания». Интерфейс
«Показания» компонента Передатчик предоставляется компоненту Server. Передатчик предоставляет и реализует интерфейс «Информация о соседних передатчиках».
Рисунок 45. Компоненты системы
На рисунке представлены компоненты системы (слева на право): xArduino UNO с фоторезистором – компонент сбора и передачи данных на головной контроллер;
xRaspberry Pi 3 B+ Model – компонент «Головной контроллер» выступает в роли сервера;
xСмартфон – установлено мобильное приложение для учета потребления коммунальных ресурсов;
xWi-Fi роутер от компании ASUS – выполняет роль коммутирующего и маршрутизирующего компонента, связывает компоненты в единую компьютерную сеть.
Заключение
В процессе выполнения дипломного проекта была исследована предметная область, спроектирована и разработано мобильное приложение по учету потребления коммунальных ресурсов, проведен анализ готовых решений как на отечественном рынке, так и зарубежных систем. Главной проблемой отечественной системы сейчас является то, что нет государственной поддержки, такой как в США. EIA ведет учет используемых ресурсов по всей стране, включая Гавайи и Аляску. В России похожими системами владеют частные компании.
Так же в процессе выполнения дипломного проекта были построены разработаны дополнительные системы головного контроллер и сбора/передачи показаний на головной контроллер.
Система учета коммунальных ресурсов может применяться как для жилищных квартир, так и для помещений предприятий, что показывает гибкость применения системы. Использование альтернативных протоколов и стандартов беспроводной связи, позволяет уменьшить вероятность проведения успешной MITM-атаки и последующей фальсификации данных.
Список используемых источников
- Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации, «Более половины населения в 75 регионах страны зарегистрированы на Едином портале госуслуг,» Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации, 14 Март 2018. [В Интернете]. Available: https://digital.gov.ru/ru/events/38030/. [Дата обращения: 10 Март 2019].
- Известия, «Хорошо забытое новое: «Почта России» вводит онлайн- оплату услуг ЖКХ,» Известия, 9 Апрель 2019. [В Интернете]. Available: https://iz.ru/865589/inna-grigoreva/khorosho-zabytoe-novoe- pochta-rossii-vvodit-onlain-oplatu-uslug- zhkkh?utm_source=yxnews&utm_medium=desktop. [Дата обращения: 9 Апрель 2019].
- Statcounter, «Desktop vs Mobile vs Tablet Market Share Worldwide,» Statcounter, 2 Апрель [В Интернете]. Available: http://gs.statcounter.com/platform-market-share/desktop-mobile- tablet/worldwide/#monthly-201601-201901. [Дата обращения: 2 Апрель 2019].
- Bizhit, «Количество пользователей интернета в России | Мобильный интернет,» Bizhit, 17 Сентябрь 2018. [В Интернете]. Available: http://www.bizhit.ru/index/users_count/0-151. [Дата обращения: 2 Апрель 2019].
- Компания «Стриж», «СТРИЖ: LPWAN №1 для Интернета вещей (IoT/M2M),» Компания «Стриж», 2018. [В Интернете]. Available: https://strij.tech/. [Дата обращения: 19 Октябрь 2018].
- Компания «Стриж», «XNB — LPWAN-протокол от «Стрижа»,» Компания «Стриж», 2018. [В Интернете]. Available: https://strij.tech/protokol-xnb. [Дата обращения: 19 Октябрь 2018].
- Мегафон, ««МегаФон» запускает всероссийскую систему учёта в ЖКХ,» МегаФон, 2013. [В Интернете]. Available: https://habr.com/company/megafon/blog/191896/. [Дата обращения: 19 Октябрь 2018].
- МегаФон, «Прайс-лист на услуги мобильной связи,» МегаФон, 2013. [В Интернете]. Available: https://moscow.megafon.ru/download/~center/corp/Price_FIT_Resource_Cpdf. [Дата обращения: 10 Октябрь 2018].
- ЗАО НВП «Болид», «АСКУЭ Ресурс,» Болид, 2019. [В Интернете]. Available: https://resurs.bolid.ru/index.php. [Дата обращения: 9 Май 2019].
- ЗАО НВП «Болид», «Схемы подключения АСКУЭ Ресурс,» Болид, [В Интернете]. Available: https://resurs.bolid.ru/connection_schemes.php#resurs. [Дата обращения: 9 Май 2019].
- S. EIA, «Electricity data browser,» U.S. Goverment, 2019. [В Интернете]. Available: https://www.eia.gov/electricity/data/browser/. [Дата обращения: 2 Апрель 2019].
- S. EIA, «OPEN DATA,» U.S. Goverment, 2019. [В Интернете]. Available: https://www.eia.gov/opendata/. [Дата обращения: 2 Апрель 2019].
- SamRoguine, «Беспечное отношение к данным: сколько стоит ваш бэкап?,» Acronis, 17 Январь [В Интернете]. Available:https://habr.com/ru/company/acronis/blog/209392/. [Дата обращения: 10 Апрель 2019].
- Компания «Стриж», ««Умные» счетчики воды с дистанционным снятием показаний,» «Стриж», Апрель 2019. [В Интернете]. Available: https://strij.tech/products/umnyie-schetchiki-vodyi. [Дата обращения: 3 Апрель 2019].
- ЗАО НВП Болид, «Прайс-лист АСКУЭ «Ресурс»,» ЗАО НВП Болид, [В Интернете]. Available: https://resurs.bolid.ru/files/pricelist.xls. [Дата обращения: 1 Май 2019].
- В. Олифер и Н. Олифер, Компьютерные сети. Принципы, технологии, протоколы., 5 ред., СПб: Питер,
- The Things Network, «Limitations of LoRaWAN,» The Things Network, [В Интернете]. Available: https://www.thethingsnetwork.org/docs/lorawan/limitations.html. [Дата обращения: 10 Апрель 2019].
- ZigBee Alliance, «ZigBee 3.0 ZigBee for Developer,» ZigBee, 2018. [В Интернете]. [Дата обращения: 10 Февраль 2019].
- В. Петриго, «Беспроводные сети ZigBee. Часть 1 [Вводная],» ЭФО, 20 Апрель 2016. [В Интернете]. Available: https://habr.com/ru/company/efo/blog/281048/. [Дата обращения: 5 Май 2019].
- LoRaWAN Alliance, «LoRaWAN Alliance,» LoRaWAN Alliance, 2019. [В Интернете]. Available: https://lora-alliance.org/. [Дата обращения: 10 Апрель 2019].
- LoRaWAN Alliance, LoRaWAN 1.1 Specification, Beaverton, Oregon: LoRa Alliance, Inc,
- Tonk, «Что такое Тонкие клиенты?,» Tonk, 2019. [В Интернете]. Available: https://tonk.ru/library/article/chto-takoe-tonkie-klienty. [Дата обращения: 8 Апрель 2019].
- Законы и постановления РФ, «Сколько по закону положено квадратных метров на человека?,» 2019. [В Интернете]. Available: https://zakon-region2.ru/stati/skolko-po-zakonu-polozheno-kvadratnyx- metrov-na-cheloveka-241/. [Дата обращения: 8 Апрель 2019].
- Urban Look, «Средняя площадь квартиры на рынке жилья в Москве составляет около 70 кв. м,» Urban Look, 22 Март 2019. [В Интернете]. Available: https://urbanlook.ru/srednyaya-ploshhad-kvartiry-na-rynke- zhilya-v-moskve-sostavlyaet-okolo-70-kv-m/. [Дата обращения: 31 Март 2019].
- Raspberry Pi Org, «Raspberry Pi 3 Model B+,» Raspberry Pi Org, 2019. [В Интернете]. Available: https://wwraspberrypi.org/products/raspberry-pi- 3-model-b-plus/. [Дата обращения: 2 Май 2019].
- Амперка, «Arduino Uno,» Амперка, 2019. [В Интернете]. Available: https://amperka.ru/product/arduino-uno. [Дата обращения: 2 Май 2019].
- Р. Д. Я. И. Буч Г., Язык UML. Руководство пользователя, Москва: ДМК «Пресс»,
- Б. Харди, Б. Филлипс, К. Стюарт и К. Марсикано, Android программирование для профессионалов, СПб: Питер,
- Э. Гамма, Р. Хелм, Р. Джонсон и Д. Влиссидес, Приемы объектно- ориентированного проектирования. Паттерны проектирования, СПб: Питер, 2017.
