«Умные» вещи обычно содержат сенсоры для получения данных, исполнительные устройства для влияния на внешнюю среду, модуль связи для передачи данных в центр управления сетью и управляющий микроконтроллер. Еще совсем недавно для создания подобных устройств необходимо было знать основы микроэлектроники, уметь паять и обладать различными навыками работы с «железом», однако с появлением решений наподобие открытой аппаратно-программной платформы Arduino ситуация изменилась. Ориентированные на непрофессиональных разработчиков инструменты построения систем автоматики позволяют снизить порог вхождения в сферу программирования микроконтроллеров. Наличие элементарных средств разработки, простота создания схем без пайки и большой выбор готовых совместимых модулей вызвали пополнение армии энтузиастов, которым по плечу генерировать новые идеи и создавать устройства, способные работать в среде Интернета вещей [1].
Однако разработка устройств на базе Arduino — только часть работы. Нужно еще обеспечить хранение показаний, получаемых от многочисленных сенсоров, сбор статистики и визуализацию данных, поэтому следующим шагом после создания собственно устройства является организация сохранения данных во внешней базе. Для этого можно использовать карты памяти, передачу через Ethernet и Wi-Fi на удаленные носители и т. п., но все это требует либо дополнительного оборудования, либо написания большого объема кода. Минимально необходимая конфигурация — прямая связь через COM-порт, по которому одновременно может осуществляться и питание устройства.
Одним из вариантов выбора СУБД, а также сервера приложений может быть InterSystems Cachе´, которая работает с различными типами устройств, получая данные напрямую через COM-порт без каких-либо промежуточных уровней (веб-сервер, файлы и пр.). Это важно, так как большинство устройств Интернета вещей [2], как правило, имеют ограниченный объем памяти для хранения программ. СУБД работает с такими физическими и логическими устройствами, как диски, магнитные ленты, файлы, терминалы, TCP- и COM-порты и т. д., а поставляемый вместе с Cachе´ модуль аналитики BI DeepSee позволяет визуализировать полученные данные.
Взаимодействие с СУБД Cachе´ осуществляется средствами языка Cachе´ ObjectScript [3] и выполняется в пять этапов: с помощью команды OPEN регистрируется факт получения текущим процессом доступа к устройству; устройство инициируется как текущее с помощью команды USE; по команде READ данные считываются с устройства, а по команде WRITE передаются на устройство; переключение на другое устройство осуществляется командой USE; работа с устройством завершается по команде CLOSE.
На практике этот процесс выглядит так. На Arduino собирается схема для чтения данных из COM-порта, включающая светодиод на указанное число миллисекунд. Для работы с такой схемой требуется простая программа на Cи, принимающая данные по COM-порту и при передаче новой строки интерпретирующая ее как число миллисекунд, на которые включается светодиод. Для подключения этой схемы к СУБД Cachе´ нужно написать метод SendSerial обращения к COM-порту [4].
Затем к Arduinо подключается клавиатура и начинается передача данных, например, для обеспечения дополнительной аутентификации пользователя с помощью делегации авторизации — механизма, позволяющего получать сведения для авторизации пользователя из внешних источников вроде «умных» вещей или биометрического сканера отпечатков пальцев. В [4] приведен пример кода на Cи для подключения к COM-порту и отправки по нему символов, нажатых на клавиатуре, а в СУБД Cachе´ требуется теперь написать соответствующий метод ReceiveOneLine подключения к порту и получения строки.
Все эти действия можно считать подготовкой для сбора «умного» устройства, способного работать в среде Интернета вещей. В качестве примера такого устройства можно рассмотреть метеостанцию, собирающую базовую информацию об окружающей среде: температуру, влажность и освещенность. Такие устройства могут применяться в «умных» домах, которым требуется знать температуру за окном для управления различными системами дома. На рис. 1 приведена примерная схема подключения метеостанции к Интернету вещей.
Рис. 1. Пример подключения метеостанции к Интернету вещей |
Для сборки метеостанции используются фоторезистор (датчик освещенности) и датчик DHT11 для измерения температуры и влажности. На рис. 2 приведена схема подключения этих сенсоров к модулю Arduino.
Рис. 2. Метеостанция в сборе |
После загрузки кода на Arduino модуль начинает посылать данные на COM-порт в формате H=34.0;T=24.0;LL=605. Где H — влажность (от 0 до 100%); T — температура в градусах Цельсия; LL — освещенность в условных единицах (от 0 до 1023). Всю эту телеметрию надо загрузить в СУБД Cachе´ — для этого потребуется хранимый класс Arduino.Info, записывающий полученные от метеостанции сведения и время их получения. В Arduino.Info можно еще добавить метод ReceiveSerial, который в бесконечном цикле принимает данные в формате Arduino и преобразует их в объекты класса Arduino.Info. После этого надо запустить модуль Arduino и выполнить на терминале метод ReceiveSerial:
do ##class(Arduino.Info).ReceiveSerial()
Для визуализации полученных данных можно использовать модуль BI DeepSee из СУБД Cachе´, а также открытые утилиты: REST API MDX2JSON (предоставление информации об объектах DeepSee в формате JSON) и DeepSee Web (клиент для визуализации данных) [5]. При этом разработчику не обязательно знать SQL или разбираться в тонкостях настройки СУБД — имеется готовый класс с данными (в нашем примере это Arduino.Info), свойства которого выбираются в мастере визуализации в качестве мер и измерений OLAP-куба. Затем на основе OLAP-куба строится сводная таблица — также в визуальном средстве с помощью простого «перетаскивания» на строки и столбцы необходимых мер и измерений куба. На последнем этапе выбирается один из способов визуализации: график, таблица, круговая диаграмма, временной ряд и др.
Все данные, полученные от метеостанции, могут быть сведены в одну панель (рис. 3), содержащую графики яркости (хорошо виден рассвет в районе 5:50), температуры и влажности.
Рис. 3. Пример визуализации данных от метеостанции |
Метеостанции — лишь полезная вещь для дома, но с привязкой к географическим координатам такие устройства могут непрерывно передавать информацию метеорологам, которые получат возможность создавать точные прогнозные модели. Другой пример — фитнес-трекеры, собирающие данные о пройденном расстоянии, но если добавить к ним датчики пульса, температуры и систематизировать собранные сведения, то персональная медицина получит инструмент раннего выявления заболеваний. Таким образом, «умные» метеостанции и лампочки — всего лишь предвестники изменений, которые обещает Интернет вещей, способный радикально улучшить качество жизни общества благодаря обработке всех доступных сведений. И все же сколь бы «умными» ни были устройства, успех будет возможен лишь при условии массовости их проникновения во все сферы жизни, и тогда количество перейдет в качество.
***
СУБД InterSystems Cachе´ может служить основой для создания развитой инфраструктуры Интернета вещей, позволяя обеспечить связь с устройствами различных типов, что открывает широкие возможности для организации взаимодействия с прикладными устройствами и управления ими. Аналитические возможности этой СУБД позволяют в реальном времени визуализировать данные, полученные от устройств. Чем шире будет сеть таких «умных» устройств, созданных в том числе и энтузиастами, тем больше появится возможностей для анализа и визуализации различной информации, тем ближе будет индустрия к решению главной задачи Интернета вещей — широкой интеграции технологий с повседневной жизнью. ?
Литература
- Михаил Борисов. Доступный мониторинг производственных процессов // Открытые системы.СУБД. — 2015. — № 3. — С. 13–15. URL: http://www.osp.ru/os/2015/03/13046892 (дата обращения: 18.03.2016).
- Рой Уонт, Бил Шилит, Скотт Дженсон. Механизмы Интернета вещей // Открытые системы.СУБД. — 2015. — № 1. — С. 38–42. URL: http://www.osp.ru/os/2015/01/13045328/ (дата обращения: 15.03.2016).
- URL: http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=GIOD_iodevcomms (дата обращения: 18.03.2016).
- URL: https://github.com/intersystems-ru/ArduinoSnippets/blob/master (дата обращения: 18.03.2016).
- URL: https://github.com/intersystems-ru (дата обращения: 18.03.2016).
Эдуард Лебедюк (lebeduk93@gmail.com) — инженер-консультант, корпорация InterSystems, аспирант РЭУ им. Г. В. Плеханова (Москва).