Хочу представить вам Стаса Павлова, нашего IoT-эксперта, который отобрал несколько интересных технологических историй, появившихся в рамках Microsoft Technical Case Studies. Все результаты работ по нему можно найти на GitHub. Этот материал заинтересовал Стаса тем, что технологии IoT использовались в необычном месте — для контроля состояния античного митреума в Риме. Внутри вы найдёте немного истории Древнего Рима и много Интернета вещей.
Цикл статей «Microsoft Technical Case Studies»
1. Power BI Embedded, IoT и машинное обучение для обработки термограмм мозга.
2. Как в Канаде ищут пропавших детей.
3. Интернет вещей в археологии.
4. Loading…
Введение
Данный проект относится к исследованию важного археологического памятника Рима — митреума, расположенного под трибунами Большого цирка. Работа велась совместно с Миланским техническим университетом (PoliMi) — научно-технический университет, выпускающий инженеров, архитекторов и промышленных дизайнеров. Помимо университета, в работе также принимали участие городской департамент культурного наследия (Sovrintendenza Capitolina) и Университет Триеста.
Мы собирали показания датчиков, установленных внутри митреума, чтобы удаленно следить за концентрацией углекислого газа, уровнем вибраций, температуры и влажности.
Митреум сохранился в хорошем состоянии до наших дней. Впервые его обнаружили в 1930-х годах в ходе реставрации Римского оперного театра. Постройка датируется II веком н. э. Вероятно, она много раз перестраивалась. В III веке н. э. её нижний этаж был отведен под святилище — митреум.
Митреум в Большом цирке (Рим)
В проекте использовались следующие устройства и технологии IoT:
- Специальные датчики, установленные в митреуме: акселерометр (на устройстве), термометр (MCP9700A), гигрометр (808H5V5), датчик углекислого газа (TGS4161), почвенный термометр (PT1000) и фоторезистор (VT43N2).
- Libelium Waspmotes в качестве вычислительного модуля для датчиков.
- Raspberry Pi 2 под управлением ОС Raspbian с ПО Mono и консольным приложением C# в качестве полевого шлюза.
- Стандарт 802.15.4 для беспроводных сетей с низким уровнем скорости для связи датчиков и шлюза.
- Azure IoT Hub для приёма данных: по одному сообщению каждые 30 минут.
- Azure Stream Analytics для передачи данных в базу данных и Power BI.
- База данных SQL Azure для хранения данных.
- Power BI Embedded.
- Общедоступная возможность визуализации данных в службе приложений Azure.
Постановка задачи
Главная задача этого проекта — удалённый мониторинг текущего состояния митреума при помощи специальных датчиков, установленных внутри этого памятника архитектуры. В их числе акселерометры, датчики углекислого газа, температуры и влажности. Данные передаются на полевой шлюз, а затем в облачную инфраструктуру с целью их публикации в наглядной форме на обычной веб-странице.
Визуализация данных на веб-сайте
Для PoliMi мониторинг митреума стал первым проектом на пути к созданию эталонной системы сбора данных с археологических площадок. В дальнейшем в ней будут использованы различные виды датчиков, шлюзов и единая облачная архитектура, построенная для этого проекта, поэтому в этом проекте были использованы IoT-технологии, потенциально полезные для следующих разработок.
Главные цели этого проекта:
- Найти масштабируемое решение, которое можно применить на разных археологических площадках.
- Интегрировать облачную инфраструктуру со шлюзами и датчиками, установленными локально. Решить проблемы совместимости, которые возникали в рамках данного проекта.
- Найти решение, чтобы любой пользователь мог посмотреть данные мониторинга откуда угодно.
Датчики и шлюз
Прежде всего, мы провели несколько совещаний по Skype, чтобы точнее определить задачи и понять текущее состояние проекта. Когда мы приступили к созданию облачной архитектуры, сотрудники PoliMi уже выбрали датчики и установили их в митреуме.
Расположение датчиков в митреуме
Через равные промежутки времени (в зависимости от выбранной частоты в миллисекундах) датчики отправляют небольшие наборы данных в полевой шлюз, где происходит их локальная обработка. Как видно из таблицы ниже, размер каждого сообщения совсем небольшой, поэтому каждые 30 минут данные группируются в единый файл в формате .txt, содержащий все показания датчиков. Консольное приложение C# обрабатывает полученный файл, после чего структурированные данные отправляются в Azure IoT Hub.
Характеристики датчиков в митреуме
Основываясь на этих данных, мы смогли рассчитать ежемесячную стоимость всей облачной инфраструктуры до начала её развертывания, используя калькулятор цен Azure. Это инициатива, высоко оцененная клиентом, позволила продолжить работу над проектом. Конечно, сыграли роль и другие преимущества: легкое развертывание, масштабирование и перенос решения, поддержка проекта высококвалифицированными сотрудниками Microsoft.
Расчет стоимости
Сложности при разработке проекта
Одной из самых серьёзных задач в рамках этого проекта стал разбор данных. Нужно было разделить показания всех датчиков, собранные в текстовом файле, чтобы создать корректное сообщение для отправки в IoT Hub. В решении этой задачи нам очень помогли специалисты университета PoliMi. Четко поняв и определив структуру сообщения, мы смогли правильно визуализировать данные.
Другой серьёзной задачей была интеграция облачной инфраструктуры с датчиками и шлюзом.
Мы работали совместно с клиентом, используя различные формы связи: несколько конференций в Skype, личные встречи, удаленные разработки и обсуждения. В общей сложности на все этапы проекта, включая проектирование, разработку и тестирование, мы потратили около 10 полных рабочих дней. За это время мы организовали внедрение системы и создали комплексное решение.
Очная встреча с Костабом и Лукой
Решение и его этапы
Как описано выше, датчики четырех видов отправляют данные на полевой шлюз с частотой, указанной на схеме решения внизу.
Сетевой шлюз подключается к Azure IoT Hub и отправляет примерно по 1 КБ данных каждые 30 минут. В качестве протокола мы выбрали MQTT, поскольку он широко распространен и удобен для использования с моделями узлов этого проекта.
Azure Stream Analytics обрабатывает поток данных и направляет результаты измерений в соответствующую таблицу базы данных SQL.
Веб-приложение публикует отчеты Power BI, чтобы конечные пользователи (специалисты из PoliMi) получили визуализированные данные.
Схема архитектуры проекта
Данные для анализа
Для сбора данных применялись 10 датчиков Libelium Waspmote. Их тип выбирали археологи и сотрудники, ответственные за реставрацию объекта. Использовались модели датчиков Libelium для вычислительного устройства Waspmote, в том числе:
- Акселерометр
- Термометр
- Гигрометр
- Датчик углекислого газа
- Фоторезистор (VT43N2)
- Почвенный термометр (PT1000)
Показания передаются в устройство Raspbery Pi 2, работающее под управлением операционной системы Raspbian и выступающее в качестве полевого шлюза.
Выбор ОС определялся предпочтениями клиента, который обладал большим опытом работы с ОС Raspbian и почти не использовал Windows 10 IoT Базовую и другие операционные системы. Устройство обрабатывает данные, полученные с датчиков. Например, для значений, собранных из узлов 3 и 4 (акселерометры), выполняется быстрое преобразование Фурье (БПФ), которое добавляется к отправляемому в облако сообщению.
Запущенное на шлюзе приложение на Python каждые 30 минут генерирует текстовый файл со всеми собранными данными. Выбор языка программирования Python оказался для Костаба Долуи лучшим способом минимизировать усилия и упростить репликацию решения на различных платформах в будущем. Этот файл будет использоваться для отправки данных в IoT Hub. На изображении ниже — образец файла в формате .txt с необработанными данными, который будет разобран консольным приложением C# на полевом шлюзе.
Текстовый файл с необработанными данными
Предварительная обработка
Чтобы отправить нужные данные, следует преобразовать текстовый файл в консольном приложении, запущенном на полевом шлюзе. На этом этапе вставал вопрос о выборе языка разработки консольного приложения. IoT Hub SDK доступен и для Python, и для C#. Обсудив с клиентом оба варианта, мы решили разрабатывать приложение на C#, поскольку лучше знали этот язык. Затем мы установили ПО Mono на устройство Raspberry Pi для запуска приложения.
Это приложение создает готовый для отправки в IoT Hub JSON-массив измерений, содержащий показания всех датчиков, извлеченные из текстового файла. В ходе итогового тестирования мы использовали очень большой файл в формате .txt и обнаружили некоторые проблемы, связанные с размером сообщений, отправляемых в IoT Hub.
Если размер текстового файла больше 256 КБ, то он должен быть разделен на небольшие файлы. Это требование возникло из-за ограничений IoT Hub на максимальный размер пакета данных, передаваемых с устройства в облако.
Схема разбора текстовых данных
Создание средства синтаксического анализа показаний узлов 3 и 4 осложнялось характером отправляемых данных. Они должны были передавать на полевой шлюз следующую информацию: метка времени, ИД узла, уровень заряда батареи, координаты, номер пакета и набор из 20 чисел, являющихся частью БПФ. Передача данных от одного датчика для определенных координат состоит из семи пакетов с метками времени в пределах 70 миллисекунд. Мы должны были идентифицировать эти пакеты и создать одну строку в таблице, включающую все значения БПФ семи пакетов (представленных в виде JSON-массива и сохраненных вместе в виде строки).
Передача телеметрии
Как упоминалось ранее, из-за особенностей подключения прежде всего мы должны были обработать текстовый файл, содержащий показания датчиков. Мониторинг в реальном времени не был целью данного проекта, поэтому итоговая модель функционирует с небольшой задержкой. В конце концов, мы решили не отказываться от текстового файла, создаваемого полевым шлюзом, ведь он может пригодиться клиенту как файл журнала. Мы также продолжили использовать разработанное средство синтаксического анализа.
Raspberry Pi работает как непрозрачный полевой шлюз, поэтому мы зарегистрировали консольное приложение C# как уникальное устройство для IoT Hub. Это означает, что сколько бы датчиков мы к нему не подключили, шлюз выполнит все необходимые манипуляции, агрегирует данные и создаст сообщение для отправки в IoT Hub. Кроме того, такой подход позволит повторно использовать разработанную архитектуру для других археологических объектов и создать масштабируемое и легко переносимое решение.
Безопасность
Azure IoT Hub позволяет регистрировать каждое устройство с помощью имени и симметричного ключа. Это означает, что каждое устройство получает собственную строку подключения.
Если её взломают, соответствующее устройство можно будет отключить, остановив с ним обмен данными с помощью панели управления на портале Azure.
IoT Hub предоставляет готовое эффективное решение для защиты передаваемых данных. Перед началом работы над проектом никаких требований в отношении безопасности представлено не было, однако эта функция получила широкое признание со стороны клиента.
Хранение телеметрии с помощью Stream Analytics
Данные, переданные в Azure IoT Hub, подлежат хранению и визуализации. После обсуждения с клиентом мы решили создать базу данных с четырьмя различными таблицами, по одной для каждого вида датчика. Мы выбрали базу данных SQL, так как из неё можно напрямую запрашивать данные в PowerBI Embedded.
Служба Azure Stream Analytics затем настраивается с одним потоком входящих и четырьмя потоками исходящих данных, как видно на скриншоте ниже.
Azure Stream Analytics
Запрос состоит из четырех операторов, которые направляют данные телеметрии в соответствующую таблицу базы данных SQL. Например:
SELECT
dateadd(s, ts, '1970-01-01') as ts,
id,
bat,
ax,
ay,
az,
te,
hu,
lt
INTO
[accsample]
FROM
[IoTHub]
WHERE id=1 OR id=2
Как видно, функция dateadd
используется для преобразования времени из формата UNIX в читаемую форму. В оставшейся части выражения выполняется считывание данных из потока и их сохранение в таблице сопоставления выходных данных accsample
.
Визуализация данных
Заключительным этапом проекта является визуализация. Для упрощения анализа данных мы решили встроить отчет Power BI в веб-приложение на ASP.NET. За счет этого нам удалось реализовать две важные цели этого проекта: отобразить данные на диаграммах, которые клиент легко сможет персонализировать, и, самое главное, открыть публичный доступ к показаниям датчиков.
Диаграммы, графики и фильтры данных, доступные в веб-приложении, создавались в тесном сотрудничестве с клиентом, чтобы результат соответствовал ожиданиям: различные вкладки для различных датчиков, фильтры и так далее.
Другой пример специфических требований: фильтрация данных по метке времени для каждого из устройств.
Визуализация данных с использованием PowerBI Embedded
Заключение
Мы смогли разработать комплексное решение Интернета вещей для получения данных с важного археологического объекта и удаленного отслеживания его состояния. Конечно, это имеет большое значение для ученых. Теперь у них будет доступ к нужной информации откуда угодно.
Кроме того, реализованную архитектуру можно легко масштабировать и переносить. Специалисты Миланского технического университета хотели разобраться, как использовать эти технологии и адаптировать решение к другим проектам. Совместная работа позволила нам достичь этих целей.
Визуализация данных очень проста и понятна. Исследователи могут использовать её, чтобы получить информацию о состоянии археологического объекта.
Перспективы
Комплексное решение по удаленному мониторингу митреума в Большом цирке успешно реализовано. Команда проекта приобрела все навыки, необходимые для его создания. В ближайшие несколько месяцев исследователи проведут тестирование и оценку эффективности системы, чтобы понять, как её улучшить, учитывая специфические потребности, с которыми они сталкиваются.
Более того, команда PoliMi получила навыки работы с платформой Azure и может легко воссоздать аналогичную архитектуру для различных проектов дистанционного мониторинга, связанных с другими археологическими объектами.
Напоминаем, что бесплатно попробовать Microsoft Azure можно здесь.
Дополнительные ресурсы
Репозиторий GitHub для консольного приложения C#, запущенного на полевом шлюзе
Информация о митреуме в Большом цирке на сайте Sovrintendenza Capitolina
Бизнес.IoT: открывая интернет вещей
30 марта 2017 года пройдёт онлайн-конференции Microsoft «Бизнес.IoT: открывая интернет вещей». В программе будет два параллельных трека (бизнес и технологический) с лучшими практиками и рекомендациями от ведущих экспертов в области интернета вещей, машинного обучения и предиктивной аналитики.
Среди спикеров будут присутствовать: Михаил Черномордиков (Microsoft), Сергей Осипов (MAYKOR-GMCS), Дмитрий Бергельсон (GuaranaCam), Анна Кулашова (Microsoft), Дмитрий Марченко (Microsoft), Андрей Мелузов (ГК «КОРУС Консалтинг») и Василий Есипов (КПМГ).
Чтобы принять участие, необходимо зарегистрироваться здесь.
Автор: Microsoft