СанктПетербургский государственный университет Программная инженерия
Скачать 7.95 Mb.
|
Санкт-Петербургский государственный университет Программная инженерия Соколова Полина Александровна Социальная сеть вещей как элемент универсальной цифровой платформы «умного дома» Выпускная квалификационная работа Научный руководитель: ст. преп. Баклановский М. В. Рецензент: ст. преп. Зеленчук И. В. Санкт-Петербург 2018 SAINT-PETERSBURG STATE UNIVERSITY Software Engineering Polina Sokolova Social network of things as element of universal digital smart home platform Graduation Thesis Scientific supervisor: assistant prof. Maxim Baklanovsky Reviewer: assistant prof. Ilya Zelenchuk Saint-Petersburg 2018 Оглавление Введение 4 1. Постановка задачи 7 2. Обзор 8 2.1. Существующие платформы «умного дома» . . . . . . . . 8 2.2. Используемые технологии . . . . . . . . . . . . . . . . . . 11 3. Архитектура системы 12 3.1. Социальная сеть вещей . . . . . . . . . . . . . . . . . . . . 13 3.2. База данных . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4. Android-клиент 16 4.1. Регистрация и вход . . . . . . . . . . . . . . . . . . . . . . 16 4.2. Считывание NFC-меток . . . . . . . . . . . . . . . . . . . 17 4.3. Поиск по названию . . . . . . . . . . . . . . . . . . . . . . 18 4.4. Добавление профиля новой вещи . . . . . . . . . . . . . . 19 4.5. Профиль добавленной вещи . . . . . . . . . . . . . . . . . 20 4.6. Профиль модели . . . . . . . . . . . . . . . . . . . . . . . . 21 5. Веб-сервер 24 6. Апробация 27 Заключение 29 Список литературы 31 3 Введение Интернет вещей – это сеть физических устройств, транспортных средств, бытовой техники и других предметов, оснащенных электро- никой, программным обеспечением, датчиками, приводами и сетевым подключением, которые позволяют этим объектам подключаться друг к другу и обмениваться данными [1]. Каждая вещь уникально иден- тифицируется через встроенную вычислительную систему, но способна взаимодействовать в рамках существующей инфраструктуры Интерне- та. Интернет вещей позволяет объектам восприниматься или быть кон- тролируемыми удаленно в рамках существующей сетевой инфраструк- туры, создавая возможности для более прямой интеграции физического мира в компьютерные системы, в результате повышая эффективность, точность и экономическую выгоду в дополнение к сокращению вмеша- тельства человека. Весь Интернет вещей можно разделить на промышленный и потре- бительский. Примером промышленного Интернета вещей является «ум- ный город» – концепция объединения информационных и коммуника- ционных технологий и различных физических устройств, подключен- ных к сети Интернет для повышения эффективности обслуживания и удовлетворения нужд граждан [2]. Потребительский Интернет вещей представляют системы «умного дома». «Умный дом» – это система автоматизации и компьютериза- ции дома, включающая в себя контроль и автоматизацию освещения, отопления, вентиляцию, кондиционирование воздуха и безопасность, а также бытовую технику. Современные системы обычно состоят из пе- реключателей и датчиков, подключенных к центральному концентра- тору, из которого система управляется пользовательским интерфейсом, который взаимодействует либо с настенным терминалом, программ- ным обеспечением для мобильных телефонов, планшетным компьюте- ром или веб-интерфейсом [3]. Рынок «умных домов» в России находится на стадии формирования. В 2013 году, до экономического кризиса, оборот таких систем показы- 4 вал развитие и составлял около 4 млрд. рублей. Основные пользователи этой технологии в мире – жители США и Западной Европы, где сосре- доточено около 90% от общемирового количества «умных домов», и с каждым годом их число растет. В России рынку мешают развиваться высокая стоимость этих разработок и неготовность населения вклады- ваться в них. Тем не менее, перспективы для роста есть [4]. Эксперты прогнозируют большой рост спроса на комплексные системы уже к 2022 году, и если сейчас рынок находится на начальной стадии, то его ждёт неизбежный, лавинообразный рост, в среднем на 21% в год [5]. «Умная вещь» – это электронное устройство, обладающее централь- ным процессором и имеющее выход в Интернет для коммуникации с другими устройствами. На сегодняшний день в области «умных домов» и Интернета вещей нет стандартизации, так что все такие устройства работают на разных протоколах (проводных и беспроводных). Кроме того, каждый производитель, как правило, предлагает свою систему контроля для выпускаемых «умных вещей». В результате, у пользова- теля, желающего автоматизировать свое жилище, нет единого интер- фейса взаимодействия со всеми «умными вещами» в рамках системы «умного дома». Помимо этого, на данный момент существует огромное количество вещей, которые не могут быть включены в систему «умного дома» и быть управляемыми дистанционно, поскольку не обладают выходом в Интернет. Таким образом, на сегодняшний день не существует универ- сальной цифровой платформы «умного дома» с единым интерфейсом взаимодействия пользователя и его вещей и полной поддержкой кон- цепции Интернета вещей как глобальной сети. В настоящее время большой популярностью пользуются мобильные сервисы. Это связано с тем, что около 67% жителей планеты исполь- зуют такие мобильные устройства, как смартфоны и планшеты. Попу- лярность мобильных устройств обусловлена их доступностью, возмож- ностью быть всегда под рукой и выполнять задачи, аналогичные тем, что осуществляются с помощью компьютера. Сегодня самой продаваемой мобильной операционной системой яв- 5 ляется Android. Доля глобальных продаж устройств на базе этой плат- формы составляет 87.7% по данным на первое полугодие 2017 года [6]. Популярность Android-устройств связана в первую очередь с ценовой доступностью. Единым интерфейсом взаимодействия пользователя и его вещей мо- жет выступить социальная сеть вещей. Сервис социальной сети вещей – это онлайн-платформа, которая используется для создания социаль- ных связей, но не между отдельными пользователями, как в социальной сети людей, а между их вещами. Мы покупаем новую вещь, например, роутер, настраиваем её по ин- струкции, но почему-то мобильный телефон не может подключиться к сети. Тогда мы обращаемся к Интернету для решения этого вопро- са: ищем ответы на форумах в надежде, что кто-то уже сталкивался с данной проблемой. Социальная сеть вещей может решить проблему объединения людей для обсуждения их покупок, обеспечивая обмен опытом использования вещей между различными пользователями. 6 1. Постановка задачи Целью данной дипломной работы является разработка сервиса со- циальной сети вещей для последующего включения в систему «умного дома». Для достижения этой цели были сформулированы следующие задачи. 1. Проанализировать существующие платформы «умного дома». 2. Выполнить проектирование архитектуры социальной сети вещей. 3. Разработать модуль социальной сети вещей в Android-приложении «Дом вещей». 4. Разработать веб-сервер социальной сети вещей. 5. Выполнить тестирование созданного приложения. 7 2. Обзор Представьте, что у вас есть много разных вещей, как ”умных”, так и не обладающих выходом в Интернет. Вы хотите хранить информа- цию о своих вещах, но не в бумажном виде дома, а в оцифрованном, с возможностью иметь к ней доступ в любое время. Кроме того, вам хочется, чтобы ”умные вещи” могли выполнять какие-то примитивные действия без прямого участия хозяина. Например, включение кондици- онера при превышении определенной температуры. Помимо этого, вы также хотите иметь систему, которая бы диагностировала проблемы с вашими вещами и предлагала пути их решения. Проанализируем существующие на рынке платформы ”умного дома” с целью определения, подходят ли они для решения вышеперечислен- ных проблем. В ходе обзора будут рассмотрены следующие платформы: HomeKit, MajorDoMo, openHAB, Thinger. 2.1. Существующие платформы «умного дома» С помощью платформы HomeKit можно подключить, объединить и контролировать всю «умную технику» в доме, имея под рукой iOS- устройство. Уже более 50 брендов выпускают гаджеты с поддержкой HomeKit [7]. HomeKit обеспечивает бесшовную интеграцию между устройствами, которые поддерживают Home Automation Protocol, и iOS-устройствами от Apple, открывая новые возможности в домашней автоматизации. Продвигая общий протокол для устройств домашней автоматизации и сделав публичное API, доступное для настройки и взаимодействия с этими устройствами, HomeKit делает возможным рынок, где приложе- ния для управления своим домом не зависят от поставщика, который делает устройства для домашней автоматизации и где эти устройства от различных производителей могут быть интегрированы в единое це- лое без продавцов, которым необходимо сотрудничать непосредственно друг с другом. MajorDoMo – это программное обеспечение, которое позволяет сде- 8 лать из компьютера (Windows/Linux) контроллер управления домаш- ней автоматикой. Одним из основных преимуществ MajorDoMo являет- ся возможность одновременной работы с оборудованием на различных стандартах и от разных производителей. Для работы с оборудованием в системе существуют так называе- мые модули, которые обеспечивают обмен данными по соответствую- щим протоколам между оборудованием, внутренними объектами систе- мы и пользовательским интерфейсом. В системе реализована поддерж- ка множества аппаратных протоколов (ZWave, ModBus, KNX, 1-Wire и т.д.), и их количество продолжает расти. Система является расширяе- мой, и любой пользователь может написать собственный модуль. Взаимодействие с системой происходит через веб-интерфейс, но есть и мобильная версия под операционную систему Android, которая поз- воляет управлять сервером умного дома MajorDoMo. OpenHAB – это проект домашней автоматизации с открытым ис- ходным кодом, нацеленный на создание универсальной платформы для объединения всей домашней «умной техники» в единую систему управ- ления [8]. OpenHAB реализует единую шину, то есть позволяет объеди- нить все устройства с разными протоколами в единую сеть, абстрагируя пользователя от каждого конкретного протокола. Таким образом, мож- но пользоваться единым средством управления (скажем, приложением на смартфоне) и реализовать сколь угодно сложную логику взаимосвя- зи между устройствами. В результате открытости уже сейчас openHAB поддерживает более 100 различных протоколов «умных устройств». Это, в свою очередь, дает возможность пользователю выбирать устройства для своего дома по самым разнообразным параметрам, практически не ограничиваясь возможностями всей платформы. Thinger – это централизованный ресурс, через который каждый поль- зователь может просматривать, управлять и организовывать взаимо- действие между различными устройствами [9]. У каждого пользовате- ля в рамках этой платформы есть профиль. Также профиль заводится на каждую вещь отдельно. И пользователь может к своему профилю 9 привязать профили своих вещей, тем самым иметь единый интерфейс для управления ими всеми. Платформа включает в себя две подсистемы: сайт (визуальная со- ставляющая, которую видят все пользователи) и веб-сервис, представ- ляющий единый программный интерфейс (RESTful API), который ис- пользуется непосредственно вещами для передачи данных в систему и также конечными приложениями или различными виджетами, которые получают или передают данные этим вещам. В настоящее время большая часть функций системы закрыта от публичного использования сторонними разработчиками и используется только для работы с корпоративными клиентами. Представьте, что у вас дома установлена одна из вышеперечислен- ных систем домашней автоматизации. В один момент у вас ломается стиральная машина: она выключилась и больше не включается. Что делать? Если такая проблема возникает впервые, вы начинаете обзванивать знакомых или спрашивать в Интернете в надежде, что кто-то может помочь вам получить ответ на свой вопрос. Хорошо, когда есть зна- комый специалист, готовый проконсультировать вас по телефону. Но так бывает не у всех людей и не всегда, особенно когда дело касается решения сложных технических вопросов. Платформа ”умного дома” не может вам помочь. Во-первых, сти- ральная машина не включена в систему, поэтому вы не можете полу- чить детальной информации о том, что случилось. Во-вторых, плат- форма домашней автоматизации нацелена в первую очередь на управ- ление вещами, а не на обмен информацией между ними, например, для самодиагностики. Для решения этой проблемы необходимо создание универсальной цифровой платформы ”умного дома”, поддерживающей включение в систему как ”умных вещей”, так и не обладающих выходом в Интер- нет. Кроме того, важно обеспечить социальную функцию платформы, заключающуюся в возможности обмениваться опытом использования вещей между различными пользователями. 10 2.2. Используемые технологии В данной дипломной работе используются следующие технологии. 1. Near-field communication (NFC) – технология беспроводной пере- дачи данных малого радиуса действия между двумя устройствами [10]. NFC-устройства используются в бесконтактных платежных системах, аналогичных тем, которые применяются в кредитных картах и смарт-картах электронных билетов, и позволяют мобиль- ным платежам заменять или дополнять эти системы. 2. Android – это мобильная операционная система, разработанная Google на основе модифицированной версии ядра Linux и другого программного обеспечения с открытым исходным кодом, и пред- назначенная в основном для мобильных устройств с сенсорным экраном, таких как смартфоны и планшеты [11]. Система Android предоставляет разностороннюю платформу приложений, на осно- ве которой можно создавать инновационные приложения и игры для мобильных устройств в среде языка Java [12]. 3. MySQL – реляционная система управления базами данных с от- крытым исходным кодом [13]. Обычно MySQL используется в ка- честве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные програм- мы. 11 3. Архитектура системы Для того, чтобы сделать возможным включение в систему «умно- го дома» любой вещи, необходимо создание единого интерфейса вза- имодействия пользователя и его вещей, как «умных», так и не обла- дающих выходом в Интернет. Таким интерфейсом выступает Android- приложение «Дом вещей». «Умные вещи» по проводным и беспроводным протоколам связи подключены к центральному контроллеру, который, в свою очередь, соединен с домашним веб-сервером по Wi-Fi (Рис. 1). Роль домашне- го веб-сервера может выполнять, например, компьютер или мобильное устройство, но обязательно находящееся с центральным контроллером в одной сети Wi-Fi. Рис. 1: Архитектура платформы «умного дома» 12 Модуль управления в приложении «Дом вещей» взаимодействует с домашним веб-сервером и необходим для осуществления удаленно- го управления и мониторинга «умных вещей». При подключении но- вой «умной вещи» к центральному контроллеру домашний веб-сервер автоматически добавляет объект в систему. Кроме того, информация о новой вещи отправляется в модуль управления Android-приложения «Дом вещей», и в социальную сеть вещей объект добавляется без уча- стия пользователя. Вещи, которые не могут быть включены в систему вышеописанным образом, снабжаются NFC-метками для их идентификации в социаль- ной сети вещей. Для добавления таких вещей в социальную сеть необ- ходимо провести сканирование NFC-метки встроенным или внешним NFC-считывателем. 3.1. Социальная сеть вещей Модуль социальной сети вещей в приложении «Дом вещей» необ- ходим для хранения информации о собственных вещах в системе «ум- ного дома» и обмена пользовательским опытом использования вещей, включенных в разные системы. Таким образом, социальная сеть вещей позволяет создание глобальной сети вещей, не ограничиваясь рамками одного «умного дома». Социальная сеть вещей представляет собой Интернет-сервис, состо- ящий из Android-клиента, Java-сервера и базы данных MySQL (Рис. 2). Android-клиент отправляет соответствующие HTTP-запросы на сер- вер с целью добавления, редактирования, удаления или получения дан- ных. Java-сервер, в свою очередь, принимает HTTP-запрос от клиента, посылает запрос к базе данных MySQL и получает выборку данных. После этого сервер формирует и отправляет ответ клиенту в XML- формате. 13 Рис. 2: Диаграмма компонентов социальной сети вещей 3.2. База данных Глобальная база данных MySQL состоит из 12 таблиц (Рис. 3). В таблице purchase хранятся записи с информацией о добавленных поль- зователями вещах. Таблица device содержит записи с параметрами всех существующих товаров. Все таблицы, кроме таблицы purchase, изначально заполнены дан- ными, но при необходимости могут быть обновлены добавлением необ- ходимых записей. Например, если пользователь сообщает о том, что его вещи нет в списке предложенных, то после проведения определенных проверок вещь может быть добавлена в таблицу device. В таблице user хранятся логины и хеш-значения паролей. 14 Рис. 3: Схема базы данных MySQL 15 4. Android-клиент 4.1. Регистрация и вход Использование Android-приложения «Дом вещей» начинается с экра- нов регистрации и входа (Рис. 4). Пользователю предлагается зареги- стрировать новую учетную запись, состоящую из логина и пароля, или войти под уже существующей. После ввода логина и пароля пользователем на экране регистрации Android-клиент отправляет POST-запрос на сервер для создания новой учетной записи. Если такой логин уже существует в базе данных, будет получен код ”409 Conflict”. На экране приложения появится сообщение с соответствующей подписью. (a) (b) Рис. 4: Пользовательские интерфейсы Android-приложения «Дом вещей»: (a) – экран входа, (b) – экран регистрации 16 После ввода логина и пароля пользователем на экране входа Android- клиент отправляет GET-запрос на сервер для проверки связки логин и пароль. В случае неправильного ввода параметров с сервера будет получен код ответа ”401 Unauthorized”. В случае успешного создания нового аккаунта или ввода корректных логина и пароля уже существующей учетной записи будет получен код ”200 OK”, и пользователю будет доступен главный экран приложения. 4.2. Считывание NFC-меток После входа в систему пользователю доступен главный экран Android- приложения со списком всех добавленных вещей (Рис. 5a). Для добавле- ния новой вещи пользователю необходимо поднести NFC-считыватель к NFC-метке на соответствующей вещи. В результате курсовой работы 2016-2017 учебного года мной бы- ла реализована поддержка сканирования NFC-меток внешним RFID- считывателем [14]. Сейчас в Android-приложении существует также возможность считывать NFC-метки встроенным в мобильное устрой- ство NFC-адаптером. Идентификационный номер NFC-метки NTag213, используемой в данной системе, занимает 7 байт памяти. Встроенный NFC-адаптер счи- тывает и воспринимает его в шестнадцатеричном виде с порядком от старшего к младшему, так что идентификационный номер состоит из 14 символов. Внешний RFID-считыватель считывает только первые 4 байта в десятичной системе счисления. Для представления идентификационного номера в едином формате при сканировании любым NFC- или RFID-устройством осуществляется преобразование из десятичного представления номера в шестнадцате- ричное. Кроме того, в полученной записи изменяется порядок следова- ния символов на порядок от старшего к младшему. При сканировании NFC-метки встроенным NFC-считывателем про- исходит сначала поиск равного идентификационного номера в списке полученных с веб-сервера вещей. Если вещь с таким номером существу- 17 ет, то осуществляется переход на экран профиля вещи. В противном случае, если номер NFC-метки занимает 7 байт, то берутся первые 4 байта и им ищется соответствие в списке вещей. Если вещь с восьмисимвольным идентификационным номером най- дена, то происходит переход на экран профиля вещи. Такая ситуация может возникнуть, когда при добавлении вещи используется внешний RFID-считыватель, распознающий первые 4 байта, а в дальнейшем при сканировании задействуется встроенный NFC-адаптер, считывающий все 7 байт идентификационного номера NFC-метки. Если вещь не най- дена, то осуществляется переход на экран добавления профиля вещи. (a) (b) (c) Рис. 5: Пользовательские интерфейсы Android-приложения «Дом вещей»: (a) – главный экран, (b) – панель навигации, (с) – экран поиска 4.3. Поиск по названию После сканирования NFC-метки пользователю предлагается выбрать свою вещь из списка предложенных (Рис. 5c). Для получения актуаль- 18 ной информации Android-клиент посылает GET-запрос на веб-сервер и получает ответ в XML-формате. Полученные данные сохраняются в XML-файле на мобильном устрой- стве. В GET-запросе также передается идентификационный номер по- следней вещи в сохраненном локально XML-файле, так что при каждом таком запросе отправляются не все данные, а только новые, еще не до- бавленные в XML-файл на мобильном устройстве. Пользователь вводит модель своей вещи в строку поиска, список всех вещей фильтруется в соответствии с введенными символами, и пользователю показывается обновленный список вещей для выбора. Кроме того, функции поиска по названию вещи и переход к профи- лю модели могут быть осуществлены при нажатии на кнопку ”Поиск” на главном экране, то есть без создания профиля вещи. 4.4. Добавление профиля новой вещи После выбора вещи из предлагаемого списка, пользователь запол- няет информацию о покупке. В предыдущей версии, реализованной мной в курсовой работе 2016- 2017 учебного года, было 3 последовательных экрана добавления нового профиля: параметры объекта, покупки и сервисного обслуживания [14]. Такой вариант оказался неудобным для пользователя, поскольку тре- бовал тратить значительное количество времени для самостоятельного поиска и заполнения данных. Сейчас на экране добавления нового профиля пользователь может заполнить только самые необходимые данные о покупке (Рис. 6a). После добавления информации и нажатия на кнопку сохранения пользователем Android-клиент отправляет POST-запрос с введенны- ми параметрами Java-серверу на добавление записи в глобальную базу данных. Если поле соответствующего параметра не заполнено, то веб- серверу передается значение ”NULL”. 19 (a) (b) (c) Рис. 6: Пользовательские интерфейсы Android-приложения «Дом вещей»: (a) – экран добавления профиля новой вещи, (b) – экран информации о покупке, (с) – экран фотографий 4.5. Профиль добавленной вещи В предыдущей версии, реализованной мной в курсовой работе 2016- 2017 учебного года, профиль вещи состоял из экрана с фотографией ве- щи и списком параметров, как введенных пользователем вручную, так и подгруженных с сервера [14]. Сейчас экран профиля вещи представлен интерфейсом с вкладками: информация о покупке и фотографии. (Рис. 6b, 6c). Таким образом, стало возможным добавление фотографий из галереи мобильного устройства. Пользователю доступны функции редактирования и удаления про- филя. После нажатия на кнопку редактирования осуществляется пере- ход к экрану, аналогичному экрану добавления нового профиля, толь- ко с заполненными соответствующими полями. При сохранении вве- денных данных происходит отправка POST-запроса на веб-сервер. По- 20 сле нажатия на кнопку удаления профиля Android-клиент посылает DELETE-запрос на удаление профиля вещи. 4.6. Профиль модели Помимо добавления информации о собственной вещи, пользователь также может обмениваться впечатлениями о модели в целом. Экран профиля модели представлен интерфейсом с вкладками: отзывы и во- просы (Рис. 7). (a) (b) Рис. 7: Пользовательские интерфейсы Android-приложения «Дом вещей»: (a) – экран отзывов, (b) – экран вопросов На вкладке ”Отзывы” пользователь может как узнавать мнения дру- гих людей о товаре, так и добавлять свои отзывы по использованию вещи. Кроме того, у покупателей часто возникают вопросы по настрой- ке и эксплуатации товара, ответы на которые не могут быть найдены, например, в прилагаемой к вещи инструкции. На вкладке ”Вопросы” 21 пользователь может задавать интересующие его вопросы, получать на них ответы, а также помогать другим людям решать возникающие с вещью проблемы. При переходе пользователя в профиль модели Android-клиент от- правляет GET-запросы на получение информации об отзывах и вопро- сах о вещи. Для добавления отзыва или вопроса пользователь нажи- мает на кнопку ”Добавить отзыв” или ”Задать вопрос” соответствен- но, и ему демонстрируется экран добавления отзыва или вопроса (Рис. 8). После ввода всей необходимой информации пользователем Android- клиент отправляет POST-запрос на сервер. (a) (b) Рис. 8: Пользовательские интерфейсы Android-приложения «Дом вещей»: (a) – экран добавления отзыва, (b) – экран добавления вопроса Переход в профиль модели осуществляется как из профиля добав- ленной вещи, так и из экрана поиска вещи. Таким образом, пользова- 22 тель может читать чужие отзывы и ответы на возникающие вопросы еще до покупки товара и его добавления в список вещей. 23 5. Веб-сервер Веб-сервер написан на Java. Сервер создает сокет и ждет HTTP- запросы на порт 8080. При подключении клиента создается новый по- ток, и в нем начинается обработка запроса, которая заключается в опре- делении метода запроса, request-uri и разборе параметров [15]. Сервер обрабатывает запросы: GET, POST, DELETE. Веб-сервер взаимодействует с MySQL-сервером через JDBC Driver и отправляет SQL-запросы: SELECT, INSERT, UPDATE, DELETE. GET-запрос отправляется Android-клиентом, когда ему необходимо получить данные. 1. Корректность логина и пароля. Параметры: логин и пароль. За- прос: SELECT к таблице user. 2. Доступные вещи. Параметр: идентификационный номер послед- ней вещи в списке. Запрос: SELECT к таблице device. Тело от- вета: список вещей с бо́льшими идентификационными номерами. Данные были получены в результате парсинга сайта Юлмарт. В результате получилось скачать информацию о 18413 вещах. 3. Информация о покупке. Параметры: логин пользователя и иден- тификационный номер вещи, полученный при считывании NFC- метки. Запрос: SELECT к таблицам purchase, device, type, firm, model, shop, address. Тело ответа: название, модель, дата покуп- ки, стоимость, магазин, адрес. 4. Изображения покупки. Параметры: логин пользователя и иденти- фикационный номер вещи. Запрос: SELECT к таблице purchase. Тело ответа: список URI изображений. 5. Отзывы. Параметры: логин пользователя и идентификационный номер добавленной вещи или модели. Запрос: SELECT к таблицам user, review. Тело ответа: список отзывов с логинами, оценками, комментарием и датой публикации. 24 6. Вопросы. Параметры: логин пользователя и идентификационный номер добавленной вещи или модели. Запрос: SELECT к таблицам user, question, answer. Тело ответа: список вопросов с идентифика- ционным номером вопроса, логином, заголовком, комментарием, датой публикации и количеством ответов. 7. Ответы. Параметры: логин пользователя и идентификационный номер вопроса. Запрос: SELECT к таблицам user, question, answer. Тело ответа: список ответов с идентификационным номером отве- та, логином, комментарием, датой публикации. При успешной обработке запроса в теле HTTP-ответа клиенту от- правляются данные в XML-формате. POST-запрос может быть отправлен Android-клиентом при созда- нии или редактировании информации. 1. Создание учетной записи. Параметры: логин и пароль. Запрос: INSERT к таблице user. Ключ формируется по стандарту PBKDF2. 2. Создание и редактирование профиля вещи. Параметры: иденти- фикационный номер вещи, полученный при считывании NFC-метки, логин пользователя, идентификационный номер модели, дата, сто- имость, магазин, адрес, широта и долгота. Запрос: INSERT или UPDATE к таблице purchase. 3. Добавление фотографий в профиль вещи. Параметры: логин поль- зователя, идентификационный номер вещи, URI изображения. За- прос: INSERT или UPDATE к таблице purchase. 4. Добавление отзыва или вопроса. Параметры: логин пользовате- ля, идентификационный номер модели, заголовок (для вопроса), описание, рейтинг (для отзыва), дата. Запрос: INSERT к таблице review или question. 5. Добавление ответа. Параметры: логин пользователя, идентифика- ционный номер вопроса, описание, дата. Запрос: INSERT к табли- це answer. 25 При успешной обработке запроса в теле HTTP-ответа клиенту от- правляется ”Object inserted” или ”Object updated” в зависимости от со- вершенных действий. Android-клиент посылает DELETE-запрос при удалении профиля добавленной вещи или фотографий из профиля. В качестве парамет- ров передаются идентификационный номер удаляемой вещи и логин пользователя, а также URI удаляемого изображения. Сервер посылает DELETE-запрос к таблице purchase. При успешной обработке запроса в теле HTTP-ответа клиенту от- правляется ”Object deleted”. В HTTP-ответе клиенту может быть передан один из кодов состоя- ния: 200, 401, 404, 409, 500. При успешной обработке HTTP-запроса Java-сервер посылает код ответа об успешном статусе ”200 OK”. Если хеш-значение пароля, со- ответствующего переданному логину не совпадает с хеш-значением пе- реданного, то клиент получает код ”401 Unauthorized”. В случае, когда модель не может быть найдена в базе данных, сервер посылает клиенту код ”404 Not Found”. При попытке добавления в базу данных user уже существующего логина клиент получает код ”409 Conflict”. Если в ходе обработки возникли ошибки на сервере, например, некорректный за- прос к базе данных, то клиенту отправляется код ответа о внутренней ошибке сервера ”500 Internal Server Error”. Для передачи тела ответа используется собственный протокол, ос- нованный на XML. 26 6. Апробация Апробация социальной сети вещей состояла из тестирования двух основных частей системы: мобильного приложения и веб-сервера. Тестирование мобильного приложения заключалось в проверке эр- гономичности (usability testing) пользовательского интерфейса. Поль- зователям предлагалось выполнить несколько стандартных сценариев: регистрация, вход, создание нового профиля вещи, добавление и удале- ние фотографий, поиск и написание отзывов о не добавленной в список вещи, добавление вопросов и ответов о вещи. Как правило, у пользователей возникали проблемы со сканирова- нием NFC-меток. Это связано, в первую очередь, с недостатком опыта использования NFC-считывателя в связке с NFC-метками. Кроме того, некоторыми пользователями были высказаны замеча- ния относительно недостаточного количества доступных для выбора вещей: отсутствие уже не выпускаемых на данный момент товаров. На- пример, в базе данных нет iPad 2, выпущенного в 2011 году. В целом, мобильное приложение было описано респондентами как юзабельное, с интуитивно понятным интерфейсом. Для тестирования производительности веб-сервера использовалась утилита ApacheBench. В ходе проведения тестирования оказалось, что веб-сервер поддерживает обслуживание не более 52 пользователей од- новременно для всех запросов. Кроме того, при 52 одновременных поль- зователях, посылающих по 50 последовательных запросов (кроме пер- вого запроса на получение списка всех доступных вещей), среднее время обработки запроса не превышает 0.8 с. Обработка запроса на получение списка всех доступных вещей, по- сылаемого пользователем в первый раз (когда списка вещей у пользо- вателя еще нет), не превышает 7 с. Это не критично, поскольку запрос отправляется не в ответ на действия пользователя в мобильном прило- жении, а с запуском главного экрана. Время обработки последующих запросов, когда список вещей у пользователя заполнен полностью или частично, в среднем не превышает 2,6 с. 27 По результатам тестирования можно сделать вывод о том, что на первом этапе разработке системы прототип является жизнеспособным: мобильный интерфейс показался пользователям удобным, а веб-сервер справляется с небольшой нагрузкой. 28 Заключение В ходе данной работы были получены следующие результаты. 1. Проведен анализ существующих платформ ”умного дома”: Apple HomeKit, MajorDoMo, openHAB, Thinger. 2. Разработана архитектура социальной сети вещей: Android-клиент, Java-сервер, база данных MySQL. 3. Реализовано Android-приложение социальной сети вещей со сле- дующим функционалом: считывание NFC-меток встроенным NFC- адаптером, регистрация и вход в систему под уникальным логи- ном и паролем, пользовательский интерфейс для просмотра про- филя модели, взаимодействие с веб-сервером по протоколу HTTP. 4. Реализован веб-сервер на Java со следующим функционалом: по- лучение HTTP-запросов клиента, отправка соответствующих за- просов к базе данных MySQL и получение выборки, формирова- ние и отправка ответа клиенту. 5. Проведено тестирование сервиса: нагрузочное тестирование веб- сервера и юзабилити-тестирование мобильного приложения. В качестве возможного применения Интернет-сервиса можно выде- лить помощь пользователю с выбором качественного сервисного цен- тра рядом для ремонта его вещи. Коммерциализация продукта может обеспечиваться за счет привлечения мелкого бизнеса: отдельных сер- висных центров и индивидуальных мастеров. Сервис будет предлагать пользователю оптимальный вариант, а мастерские, поскольку заинте- ресованы в продвижении и рекламе своих услуг, будут платить за то, чтобы попасть в список возможных рекомендаций. Следующим возможным применением Интернет-сервиса является хранение истории эксплуатации вещи для последующего обмена ею с другими пользователями, экспертами и мастерами. Это позволяет эко- номить время и деньги пользователя, ограждая его от необходимости везти свою вещь в сервисный центр или вызывать мастера на дом. 29 Кроме того, помимо обсуждения вопросов с другими пользователя- ми, сервис может предоставлять услугу «задать вопрос эксперту». Это бывает полезно, когда вопрос технически сложен и для его решения необходимы специальные знания, которыми не обладает рядовой поль- зователь. Эксперты привлекаются со стороны, а для пользователя эта услуга предполагается платной. 30 Список литературы [1] Wikipedia. Internet of Things. Wikipedia, The Free Encyclopedia. URL: https://en.wikipedia.org/wiki/Internet_of_things. [2] Wikipedia. Smart city. Wikipedia, The Free Encyclopedia. URL: https://en.wikipedia.org/wiki/Smart_city. [3] Wikipedia. Home automation. Wikipedia, The Free Encyclopedia. URL: https://en.wikipedia.org/wiki/Home_automation. [4] Черкасов Денис. Кому нужен «умный дом»: перспекти- вы развития технологии в России. РБК. 2017. URL: https://realty.rbc.ru/news/59a6b61b9a79471042a5627a. [5] Беркана Алиса. Стоит ли выходить на российский рынок умных домов? Rusbase. 2017. URL: https://rb.ru/longread/umnyj-dom-v- rossii/. [6] Global mobile OS market share in sales to end users from 1st quarter 2009 to 2nd quarter 2017. Statista, The Statistic Portal. 2017. URL: https://www.statista.com/statistics/266136/global-market-share- held-by-smartphone-operating-systems/. [7] Умный дом, послушный дом. Apple Inc. URL: https://www.apple.com/ru/ios/home/. [8] openHAB. openHAB, empowering the smart home. URL: https://www.openhab.org. [9] Thinger – социальная сеть умных вещей. YouTube. URL: https://www.youtube.com/watch?v=990PVAmW0oM. [10] Near-field communication. Wikipedia, The Free Encyclopedia. URL: https://en.wikipedia.org/wiki/Near-field_communication. [11] Android (operating system). Wikipedia, The Free Encyclopedia. URL: https://en.wikipedia.org/wiki/Android_(operating_system). 31 [12] Общие сведения о платформе Android. Android Developers. URL: https://developer.android.com/guide/index.html. [13] MySQL. Wikipedia, The Free Encyclopedia. URL: https://en.wikipedia.org/wiki/MySQL. [14] Соколова Полина. Разработка интерфейса для базы данных ве- щей. Курсовая работа, Кафедра Системного Программирования, Математико-механический факультет СПбГУ. 2017. [15] Hypertext Transfer Protocol – HTTP/1.1. RFC 2616. 1999. URL: https://tools.ietf.org/html/rfc2616. 32 |