Sensor Telemetrie 2.0.1 – Fortschrittliche Temperaturüberwachung mit Azure IoT Hub
Sensor Telemetrie 2.0.1 liefert Echtzeit-Temperaturdaten eines MCP9808-Sensors an Microsoft Azure IoT Hub. Das System verarbeitet Telemetrie mit Azure Stream Analytics, speichert Ergebnisse in Azure SQL und visualisiert den Verlauf in einer Windows Universal Mobile App. Aktualisiert am 17. Mai 2017.
Hintergrund
UPDATE: Sensor Telemetrie wurde überarbeitet und in Version 2.0.1 umbenannt.
Einführung
Überblick
Dieses Projekt demonstriert, wie man einen hochpräzisen MCP9808-Temperatursensor an einem Raspberry Pi ausliest, Telemetrie an Azure IoT Hub sendet, Daten mit Stream Analytics verarbeitet und Messwerte in Azure SQL persistiert. Eine UWP-Mobile-App zeigt den Sensorverlauf an und ermöglicht Fernsteuerung via SignalR.
Die Anwendung
Zwei UWP-Apps teilen sich ~99 % ihres Codes: eine läuft auf dem Raspberry Pi (IoT-Seite), die andere auf dem PC (Client-Seite). Die IoT-App sendet Sensordaten an IoT Hub und SignalR, während die Client-App SignalR für Echtzeit-Updates abonniert und Befehle zurück an das Gerät senden kann.
Technologien
Der Code folgt MVVM mit Prism (Prism.Unity für IoC) und Prism.Event für ein lose gekoppeltes Event-System. SignalR treibt die Echtzeitkommunikation zwischen App-Instanzen an.
Architektur
Die Kern-MCP9808-Bibliothek ist eine wiederverwendbare UWP-Komponente. In der Client-App sind Views mit ViewModels gekoppelt; drei Repositories verwalten Einstellungen, Debug-Logs und Sensordaten. Der Mcp9808TemperatureRepository veröffentlicht ein Temperatur-geändert-Event nur bei tatsächlicher Änderung. Hintergrunddienste kümmern sich um Telemetrie, Timer, Alert-Pin-Überwachung, LED-Steuerung, Taster-Handling, Benachrichtigungs-Relay und Debug-Logging.
Telemetrie-Dienst
Lauscht auf Temperaturänderungen und leitet Nachrichten an Azure Service Bus Event Hub weiter.
Timer-Dienst
Publiziert einen 500 ms Tick; genutzt für UI-Zeitanzeige und Sensor-Polling (1 s Intervalle).
Alert-Pin-Überwachung
Erkennt GPIO-Änderungen am MCP9808-Alert-Pin und publiziert Events.
LED-Dienst
Steuert LEDs basierend auf Temperaturalarmen.
Taster-Überwachung
Behandelt manuellen Alarm-Reset über einen GPIO-Taster.
Benachrichtigungs-Relay
Mappt interne Events auf SignalR-Nachrichten für Inter-App-Kommunikation.
Debug-Konsole
Sammelt und stellt Debug-Events für die UI bereit.
Anwendungsinitialisierung
Die App startet StartPage, die Dienste initialisiert bevor sie zur Hauptansicht navigiert.
Erste Schritte
Schaltungsanforderungen
- Großes Steckbrett (Vilros T-förmiger Cobbler optional)
- MCP9808 Breakout (Adafruit)
- 4 LEDs, 220 Ω Widerstände, 10 kΩ Pull-ups, Taster
Aufbau
- LEDs an GPIO 18 (blau), 23 (grün), 12 (rot), 16 (gelb) mit 220 Ω zu 3,3 V anschließen.
- MCP9808: VDD→3,3 V, GND→GND, SCL→GPIO 5, SDA→GPIO 3, ALERT→GPIO 6, Pull-up 10 kΩ zu 3,3 V.
- Taster: eine Seite an GPIO 5, andere an GND, Pull-up 10 kΩ zu 3,3 V.
Fotos des fertigen Steckbretts finden Sie in der Galerie unten.
Microsoft Azure Anforderungen
Erstellen Sie ein kostenloses Azure-Konto (200 $ Guthaben) unter azure.com. Melden Sie sich im Azure Portal an.
Azure IoT Hub einrichten
- Neu → Internet of Things → IoT Hub
- Eindeutiger Name, Abonnement, Ressourcengruppe (neu erstellen), Standort (gleiche Region)
- Preisstufe: F1 Free (einmalig kostenlos pro Konto)
- Auf Deployment warten, dann Hub-Übersicht prüfen.
Gerät erstellen
- Azure IoT SDK für C# von GitHub herunterladen und DeviceExplorer in Visual Studio öffnen.
- IoT Hub-Verbindungsstring einfügen (aus Hub > Shared access policies > iothubowner).
- Gerät erstellen (z. B. TemperatureDevice1) mit automatisch generierten Schlüsseln.
Azure SQL Datenbank einrichten
- SQL-Datenbanken → Hinzufügen → Name: SensorTelemetry.
- Vorhandene Ressourcengruppe nutzen; neuen Server mit eindeutigem Namen, Admin-Benutzername/Passwort, Basic-Tarif, gleiche Region erstellen.
- Firewall so konfigurieren, dass eigene IP erlaubt ist.
Datenbanktabelle erstellen
- SQL Server Object Explorer in Visual Studio öffnen, mit Azure SQL Server verbinden.
- Bereitgestelltes CREATE TABLE Skript ausführen, um
SensorReadingszu erstellen.
App Service Plan & Mobile App erstellen
- App Service Pläne → Neu, Name, vorhandene Ressourcengruppe, Standort, Basic Tier B1.
- Neu → Web+Mobile → Mobile App, Name, Abonnement, vorhandene Ressourcengruppe, gewählter App Service Plan.
Azure Stream Analytics einrichten
- Neu → Data + Analytics → Stream Analytics Job.
- Eingabe als IoT Hub, Ausgabe als Azure SQL Tabelle konfigurieren.
- Query:
SELECT [TimestampUtc], Source, Temperature, IsCritical, IsAboveUpperThreshold, IsBelowLowerThreshold INTO [YourOutputAlias] FROM [YourInputAlias]; - Job starten.
Software konfigurieren
Quellcode aus dem Repository herunterladen und die Solution in Visual Studio öffnen.
Mobile App veröffentlichen
- Rechtsklick auf Web-Projekt → Veröffentlichen → Microsoft Azure App Service → eigenen App Service wählen.
- Azure SQL Verbindungsstring (ADO.NET) kopieren und in
MS_TableConnectionStringim Projekt einfügen, Benutzername/Passwort aktualisieren. - Veröffentlichen; Website startet automatisch.
IoT Hub Anmeldedaten eintragen
- In
App.xamldes UWP-Projekts{YOUR CONNECTION STRING HERE}durch Geräte-Verbindungsstring aus Device Explorer ersetzen. {YOUR DEVICE ID HERE}durch erstellte Geräte-ID ersetzen.
Mobile App URL eintragen
- In
UnityConfiguration.csdie App Service URL (aus Azure Portal) in{YOUR MOBILE SERVICES URL HERE}einfügen.
Für detaillierte Anweisungen siehe die vollständige Sensor Telemetry 2.0.1 Dokumentation.
Herstellungsprozess
- Sensorkalibrierung erklärt: Definition, Methoden und Schlüsselanwendungen
- Herzschlagsensor: Funktionsweise & praktische Anwendungen
- Lambda-Sonde (O2-Sensor) verstehen: Rolle, Position und Ausfallanzeichen
- TMP006 Infrarot-Temperatursensor mit Raspberry Pi: Python Library & Setup Guide
- LED mit PIR-Bewegungsmelder am Raspberry Pi steuern
- Günstiger Raspberry Pi Bodenfeuchtesensor für smarte Bewässerung
- DS18B20 Temperatursensor am Raspberry Pi testen
- Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
- Sensor Telemetrie 2.0.1 – Fortschrittliche Temperaturüberwachung mit Azure IoT Hub
- Emotionssensor & EEG: Günstige Hardware für Echtzeit-Emotionserkennung