Sensor Telemetry 2.0.1 — продвинутый мониторинг температуры с Azure IoT Hub
Sensor Telemetry 2.0.1 доставляет данные температуры с датчика MCP9808 в Microsoft Azure IoT Hub в реальном времени. Система обрабатывает телеметрию через Azure Stream Analytics, сохраняет результаты в Azure SQL и визуализирует историю в мобильном приложении Windows Universal. Обновлено 17 мая 2017 г.
История
ОБНОВЛЕНИЕ: Sensor Telemetry переработан и переименован в 2.0.1.
Введение
Обзор
Проект демонстрирует, как считывать высокоточный датчик температуры MCP9808 на Raspberry Pi, отправлять телеметрию в Azure IoT Hub, обрабатывать данные Stream Analytics и хранить показания в Azure SQL. UWP-мобильное приложение отображает историю датчика и позволяет удалённое управление через SignalR.
Приложение
Два UWP-приложения делят ~99% кода: одно работает на Raspberry Pi (IoT-сторона), другое на ПК (клиентская сторона). IoT-приложение шлёт данные датчика в IoT Hub и SignalR, клиентское подписывается на SignalR для обновлений в реальном времени и может отправлять команды обратно на устройство.
Технологии
Кодовая база следует MVVM с Prism (Prism.Unity для IoC) и Prism.Event для слабосвязанной событийной системы. SignalR обеспечивает реальное время коммуникации между экземплярами приложений.
Архитектура
Основная библиотека MCP9808 — переиспользуемый UWP-компонент. В клиентском приложении Views связаны с ViewModels; три репозитория обрабатывают настройки, логи отладки и данные датчика. Mcp9808TemperatureRepository публикует событие изменения температуры только при изменении показания. Фоновые сервисы занимаются телеметрией, таймерами, мониторингом пина тревоги MCP9808, управлением LED, обработкой кнопки, реле уведомлений и логами отладки.
Сервис телеметрии — слушает изменения температуры и пересылает сообщения в Azure Service Bus Event Hub.
Таймер-сервис — публикует тик 500 мс; используется для отображения времени UI и опроса датчика (интервал 1 с).
Мониторинг пина тревоги — обнаруживает изменения GPIO на пине ALERT MCP9808 и публикует события.
LED-сервис — управляет светодиодами на основе тревог температуры.
Мониторинг кнопки — обрабатывает ручной сброс тревоги через GPIO-кнопку.
Реле уведомлений — маппит внутренние события в SignalR-сообщения для межприложенийного обмена.
Сервис консоли отладки — собирает и предоставляет события отладки для UI.
Инициализация приложения — запускает StartPage, который загружает сервисы перед переходом к главному виду.
Начало работы
Требования к схеме
- Большая беспаечная макетная плата (опционально Vilros T-образный коблер)
- MCP9808 breakout (Adafruit)
- 4 светодиода, резисторы 220 Ом, подтягивающие 10 кОм, тактовая кнопка
Сборка
- Подключите LED к GPIO 18 (синий), 23 (зелёный), 12 (красный), 16 (жёлтый) через 220 Ом к 3,3 В.
- MCP9808: VDD→3,3 В, GND→GND, SCL→GPIO 5, SDA→GPIO 3, ALERT→GPIO 6, подтяжка 10 кОм к 3,3 В.
- Кнопка: одна нога к GPIO 5, другая к GND, подтяжка 10 кОм к 3,3 В.
Фото собранной макетной платы доступны в галерее ниже.
Требования Microsoft Azure
Создайте бесплатный аккаунт Azure (кредит $200) на azure.com. Войдите на portal.azure.com.
Настройка Azure IoT Hub
- New → Internet of Things → IoT Hub
- Уникальное имя, подписка, группа ресурсов (создать новую), регион (тот же)
- Ценовой уровень: F1 Free (один бесплатный уровень на аккаунт)
- Дождитесь развёртывания, затем проверьте обзор хаба.
Создание устройства
- Скачайте Azure IoT SDK для C# с GitHub и откройте DeviceExplorer в Visual Studio.
- Вставьте строку подключения IoT Hub (из hub > Shared access policies > iothubowner).
- Создайте устройство (например, TemperatureDevice1) с автогенерируемыми ключами.
Настройка Azure SQL Database
- SQL Databases → Add → Name: SensorTelemetry.
- Используйте существующую группу ресурсов; создайте новый сервер с уникальным именем, админом/паролем, уровень Basic, тот же регион.
- Настройте файрвол для разрешения вашего IP.
Создание таблицы БД
- Откройте SQL Server Object Explorer в Visual Studio, подключитесь к Azure SQL серверу.
- Выполните предоставленный CREATE TABLE скрипт для создания
SensorReadings.
Создание App Service Plan и Mobile App
- App Service plans → New, имя, существующая группа ресурсов, регион, уровень Basic B1.
- New → Web+Mobile → Mobile App, имя, подписка, существующая группа ресурсов, выбранный App Service plan.
Настройка Azure Stream Analytics
- New → Data + Analytics → Stream Analytics Job.
- Настройте вход как IoT Hub, выход как Azure SQL таблицу.
- Используйте запрос:
SELECT [TimestampUtc], Source, Temperature, IsCritical, IsAboveUpperThreshold, IsBelowLowerThreshold INTO [YourOutputAlias] FROM [YourInputAlias]; - Запустите задание.
Конфигурация программного обеспечения
Скачайте исходный код из репозитория и откройте решение в Visual Studio.
Публикация мобильного приложения
- Правый клик на Web-проекте → Publish → Microsoft Azure App Service → выберите ваш App Service.
- Скопируйте строку подключения Azure SQL (ADO.NET) и вставьте в
MS_TableConnectionStringв проекте, обновив логин/пароль. - Опубликуйте; веб-сайт запустится автоматически.
Ввод учётных данных IoT Hub
- В
App.xamlUWP-проекта замените{YOUR CONNECTION STRING HERE}на строку подключения устройства из Device Explorer. - Замените
{YOUR DEVICE ID HERE}на ID созданного устройства.
Ввод URL мобильного приложения
- В
UnityConfiguration.csвставьте URL App Service (скопированный с портала Azure) в{YOUR MOBILE SERVICES URL HERE}.
Подробные инструкции см. в полной документации Sensor Telemetry 2.0.1.
Производственный процесс
- Калибровка датчиков: определение, методы и ключевые применения
- Датчик пульса: принцип работы и практические применения
- Понимание кислородного (O2) датчика: роль, размещение и признаки отказа
- ИК-датчик температуры TMP006 с Raspberry Pi: библиотека Python и руководство по настройке
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Построение низкобюджетного датчика влажности почвы на Raspberry Pi для умного полива
- Тестирование датчика температуры DS18B20 на Raspberry Pi
- Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana
- Sensor Telemetry 2.0.1 — продвинутый мониторинг температуры с Azure IoT Hub
- Датчик эмоций и ЭЭГ: низкобюджетное железо для детекции эмоций в реальном времени