Materi 6 dari 6 · Stasiun 5
Proyek: deteksi anomali suhu ruangan
Setelah materi ini, kamu bisa:
- Bisa menambahkan deteksi anomali ke monitor suhu dari materi Proyek akhir: monitor suhu ruangan di HP: setiap bacaan dibandingkan dengan rata-rata bacaan sebelumnya, dan peringatan dikirim kalau selisihnya terlalu jauh.
- Bisa mengirim peringatan lewat topik MQTT terpisah dan menampilkannya di HP.
- Bisa menyetel pengali k dengan data beberapa hari, dan mencatat alarm palsu serta kejadian terlewat.
Sebaiknya sudah belajar:
Materi ini mengisi slot yang belum diputuskan di peta konsep. Isinya usulan.
Monitor yang bisa curiga
Monitor suhu dari Proyek akhir: monitor suhu ruangan di HP menampilkan angka. Tapi kamu tidak menatap HP sepanjang hari. Di proyek ini, perangkatnya sendiri yang memberi tahu kalau ada yang tidak biasa.
Proyek ini menggabungkan Proyek akhir: monitor suhu ruangan di HP (sistem yang sudah berjalan), Data sensor sebagai dataset dan Statistik dasar: rata-rata dan sebaran (memahami data), dan Ambang dan deteksi anomali sederhana (aturan deteksi).
Rancangan
Ketuk satu per satu.
- Di ESP32
- Setiap bacaan dibandingkan dengan rata-rata 8 bacaan sebelumnya. Kalau selisihnya lebih dari k kali simpangan baku (k × σ), kirim peringatan. Contoh: dengan k = 3 dan simpangan baku 0,4 °C, peringatan dikirim kalau selisihnya lebih dari 3 × 0,4 = 1,2 °C.
- Topik peringatan
- Peringatan dikirim ke topik terpisah, misalnya kamar/peringatan, berisi JSON {"suhu_c":24.1,"selisih":-3.8}.
- Di HP
- Berlangganan kamar/peringatan dengan notifikasi aktif. Data rutin tetap di kamar/suhu tanpa notifikasi.
- Kenapa di perangkat?
- Deteksi tetap bekerja walau dasbor mati, dan perangkat bisa langsung bertindak (misalnya menyalakan kipas) tanpa menunggu server.
Setel k sebelum dipasang
Ini data contoh satu hari dengan dua kejadian: lonjakan pagi dan penurunan sore. Cari rentang k yang menangkap keduanya tanpa alarm palsu. Kartu terbuka setelah kamu melihat ketiga jenis hasil.
Simulasi interaktif tersedia saat JavaScript aktif.
Di data ini, k antara sekitar 1,5 dan 4,5 menangkap keduanya tanpa alarm palsu. Di data nyatamu, rentangnya berbeda. Pilih k di tengah rentang aman, bukan di tepinya, supaya tidak langsung gagal saat datanya sedikit berubah.
Tambahan program
Ditambahkan ke program Proyek akhir: monitor suhu ruangan di HP. Fungsi janggal() sama seperti di materi Ambang dan deteksi anomali sederhana.
const float SIGMA = 0.8; // dari data normal beberapa hari
const float K = 3.0;
void kirimSuhu() {
float s = bacaSuhu();
char isi[60];
snprintf(isi, sizeof isi, "{\"suhu_c\":%.1f}", s);
mqtt.publish("kamar/suhu", isi);
if (janggal(s, SIGMA, K)) {
mqtt.publish("kamar/peringatan", isi);
}
} - Baris 1: Hitung simpangan baku (σ) dari selisih bacaan terhadap rata-rata bergerak selama beberapa hari normal (lihat [[a2]] dan [[a3]]), lalu tulis di sini.
- Baris 2: Isi K (pengali k) dengan nilai dari rentang aman yang kamu temukan saat menyetel.
- Baris 8: Hanya bacaan janggal yang dikirim ke topik peringatan.
Menguji dengan jujur
Ketuk semuanya.
- Rekam dulu, pasang kemudian
- Jalankan Proyek akhir: monitor suhu ruangan di HP beberapa hari tanpa peringatan. Pakai data itu untuk menghitung simpangan baku (σ) dan mencoba beberapa nilai pengali k.
- Buat kejadian sungguhan
- Tiup sensor dengan udara hangat, atau dekatkan ke gelas air dingin. Apakah peringatan muncul?
- Catat semua
- Setiap peringatan, apakah benar atau palsu? Setiap kejadian yang kamu tahu, apakah tertangkap? Hitung keduanya per minggu.
- Satu perubahan setiap kali
- Ubah k atau jendela rata-rata satu per satu, lalu bandingkan catatannya (lihat Serial monitor dan debugging).
Kalau tidak bekerja
- Peringatan berbunyi setiap pagi sekitar jam 7, padahal tidak ada apa-apa.
- Suhu naik cepat di pagi hari karena matahari, dan k terlalu kecil untuk perubahan secepat itu
- Sensornya rusak setiap pagi
- Broker bermasalah
Jawaban
Suhu naik cepat di pagi hari karena matahari, dan k terlalu kecil untuk perubahan secepat itu. Perubahan wajar yang cepat bisa melebihi batas k kali simpangan baku. Besarkan k sedikit, atau perpendek jendela rata-rata supaya lebih cepat mengikuti.
- Penurunan suhu pelan selama 3 jam saat AC mati tidak pernah memicu peringatan.
- Wajar. Rata-rata bergerak ikut turun pelan, jadi selisihnya tetap kecil
- Programnya salah
Jawaban
Wajar. Rata-rata bergerak ikut turun pelan, jadi selisihnya tetap kecil. Detektor ini bagus untuk perubahan mendadak, buta terhadap perubahan pelan. Gabungkan dengan ambang tetap untuk batas mutlak (lihat Ambang dan deteksi anomali sederhana).
Proyek selesai
- Deteksi di perangkat, peringatan di topik MQTT terpisah dengan notifikasi.
- Simpangan baku (σ) dan pengali k disetel dari data nyata beberapa hari. Pilih k di tengah rentang yang aman.
- Catat alarm palsu dan kejadian terlewat. Rata-rata bergerak buta terhadap perubahan pelan.
Pancingan
Kamu sudah menempuh jalur dari satuan dan awalan sampai perangkat yang bisa curiga. Langkah berikutnya terbuka lebar. Tambah sensor (lihat I2C: sensor digital), hemat baterai (lihat Daya perangkat IoT: baterai dan deep sleep), atau coba model yang belajar sendiri (lihat Model sederhana: regresi dan klasifikasi dan TinyML: model kecil di mikrokontroler).
Berikutnya
Referensi
- V. Chandola, A. Banerjee, V. Kumar, Anomaly Detection, A Survey, ACM Computing Surveys, 2009.
- Dokumentasi PubSubClient dan aplikasi klien MQTT di HP (fitur notifikasi).
Draf AI. Belum direview manusia. Materi ini mengisi slot di peta konsep. Tujuannya usulan penulis AI, belum keputusan. Program belum diuji di perangkat.
Kode materi a6 · versi 0.1 · 2026-10-06