Sensor Telemetry 2.0.1 – Pemantauan Suhu Canggih dengan Azure IoT Hub
Sensor Telemetry 2.0.1 menyampaikan data suhu real-time dari sensor MCP9808 ke Microsoft Azure IoT Hub. Sistem memproses telemetri dengan Azure Stream Analytics, menyimpan hasil di Azure SQL, dan memvisualisasikan riwayat dalam aplikasi seluler Windows Universal. Diperbarui 17 Mei 2017.
Cerita
UPDATE: Sensor Telemetry telah diremaster dan diubah namanya menjadi 2.0.1.
Pendahuluan
Ringkasan
Proyek ini menunjukkan cara membaca sensor suhu MCP9808 yang akurat tinggi pada Raspberry Pi, mengirim telemetri ke Azure IoT Hub, memproses data dengan Stream Analytics, dan menyimpan pembacaan di Azure SQL. Aplikasi seluler UWP menampilkan riwayat sensor dan memungkinkan kontrol jarak jauh melalui SignalR.
Aplikasi
Dua aplikasi UWP berbagi sekitar 99% kode mereka: satu berjalan pada Raspberry Pi (sisi IoT) dan yang lain pada PC (sisi klien). Aplikasi IoT mengirim data sensor ke IoT Hub dan SignalR, sementara aplikasi klien berlangganan ke SignalR untuk pembaruan real-time dan dapat mengirim perintah kembali ke perangkat.
Teknologi
Basis kode mengikuti MVVM dengan Prism (Prism.Unity untuk IoC) dan Prism.Event untuk sistem peristiwa yang longgar. SignalR memungkinkan komunikasi real-time di seluruh instance aplikasi.
Arsitektur
Pustaka inti MCP9808 adalah komponen UWP yang dapat digunakan kembali. Dalam aplikasi klien, Views dipasangkan dengan ViewModels; tiga repositori menangani pengaturan, log debug, dan data sensor. Mcp9808TemperatureRepository mempublikasikan peristiwa perubahan suhu hanya saat pembacaan berubah. Layanan latar belakang menangani telemetri, timer, pemantauan pin peringatan, kontrol LED, penanganan tombol tekan, relay notifikasi, dan pencatatan debug.
Layanan Telemetri
Mendengarkan perubahan suhu dan meneruskan pesan ke Azure Service Bus Event Hub.
Layanan Timer
Mempublikasikan tik 500 ms; digunakan untuk tampilan waktu UI dan polling sensor (interval 1 detik).
Layanan Pemantauan Pin Peringatan
Mendeteksi perubahan GPIO pada pin peringatan MCP9808 dan mempublikasikan peristiwa.
Layanan LED
Mengontrol LED berdasarkan peringatan suhu.
Layanan Pemantauan Tombol Tekan
Menangani reset peringatan manual melalui tombol tekan GPIO.
Layanan Relay Notifikasi
Memetakan peristiwa internal ke pesan SignalR, memungkinkan komunikasi antar aplikasi.
Layanan Konsol Debug
Mengumpulkan dan mengekspos peristiwa debug untuk UI.
Inisialisasi Aplikasi
Aplikasi meluncurkan StartPage, yang bootstraps layanan sebelum menavigasi ke tampilan utama.
Memulai
Persyaratan Rangkaian
- Breadboard tanpa solder besar (Vilros T-shaped cobbler opsional)
- Breakout MCP9808 (Adafruit)
- 4 LED, resistor 220 Ω, pull-up 10 k Ω, tombol tekan sementara
Rangkaian
- Hubungkan LED ke GPIO 18 (biru), 23 (hijau), 12 (merah), 16 (kuning) dengan 220 Ω ke 3,3 V.
- MCP9808: VDD→3,3 V, GND→GND, SCL→GPIO 5, SDA→GPIO 3, ALERT→GPIO 6, pull-up 10 k Ω ke 3,3 V.
- Tombol tekan: satu sisi ke GPIO 5, sisi lain ke GND, pull-up 10 k Ω ke 3,3 V.
Foto breadboard yang selesai tersedia di galeri di bawah.
Persyaratan Microsoft Azure
Buat akun Azure gratis (kredit USD 200) di azure.com. Masuk ke portal.azure.com.
Pengaturan Azure IoT Hub
- Baru → Internet of Things → IoT Hub
- Nama unik, langganan, grup sumber daya (buat baru), lokasi (wilayah yang sama)
- Tingkat harga: F1 Gratis (satu tingkat gratis per akun)
- Tunggu penyebaran, lalu tinjau ringkasan hub.
Buat Perangkat
- Unduh Azure IoT SDK untuk C# dari GitHub dan buka DeviceExplorer di Visual Studio.
- Tempel string koneksi IoT Hub (dari hub > Kebijakan Akses Bersama > iothubowner).
- Buat perangkat (misalnya, TemperatureDevice1) dengan kunci yang dihasilkan otomatis.
Pengaturan Azure SQL Database
- SQL Databases → Tambah → Nama: SensorTelemetry.
- Gunakan grup sumber daya yang ada; buat server baru dengan nama unik, nama pengguna/admin kata sandi, tingkat Basic, wilayah yang sama.
- Konfigurasikan firewall untuk mengizinkan IP Anda.
Buat Tabel Database
- Buka SQL Server Object Explorer di Visual Studio, koneksikan ke server Azure SQL.
- Jalankan skrip CREATE TABLE yang disediakan untuk membuat
SensorReadings.
Buat App Service Plan & Mobile App
- App Service plans → Baru, nama, grup sumber daya yang ada, lokasi, tingkat Basic B1.
- Baru → Web+Mobile → Mobile App, nama, langganan, grup sumber daya yang ada, App Service plan yang dipilih.
Pengaturan Azure Stream Analytics
- Baru → Data + Analytics → Stream Analytics Job.
- Konfigurasikan input sebagai IoT Hub, output sebagai tabel Azure SQL.
- Gunakan kueri: SELECT [TimestampUtc], Source, Temperature, IsCritical, IsAboveUpperThreshold, IsBelowLowerThreshold INTO [YourOutputAlias] FROM [YourInputAlias];
- Mulai pekerjaan.
Mengonfigurasi Perangkat Lunak
Unduh sumber dari tautan repositori dan buka solusi di Visual Studio.
Publikasikan Aplikasi Seluler
- Klik kanan proyek Web → Publikasikan → Microsoft Azure App Service → pilih App Service Anda.
- Salin string koneksi Azure SQL (ADO.NET) dan tempelkan ke
MS_TableConnectionString dalam proyek, perbarui nama pengguna/kata sandi. - Publikasikan; situs web akan meluncur secara otomatis.
Masukkan Kredensial IoT Hub
- Di
App.xaml proyek UWP, ganti {YOUR CONNECTION STRING HERE} dengan string koneksi perangkat dari Device Explorer. - Ganti
{YOUR DEVICE ID HERE} dengan ID perangkat yang Anda buat.
Masukkan URL Aplikasi Seluler
- Di
UnityConfiguration.cs, tempel URL App Service (disalin dari portal Azure) ke {YOUR MOBILE SERVICES URL HERE}.
Untuk instruksi detail, lihat dokumentasi lengkap Sensor Telemetry 2.0.1.