Tutorial Proyek: Membangun Sistem Monitoring IoT dengan Bukti Integritas Blockchain

Artikel-artikel sebelumnya di seri ini membahas konsep satu per satu: hash data sensor, identitas perangkat, smart contract, dan oracle. Artikel ini merangkai semuanya menjadi satu proyek utuh yang bisa dibangun dan dijalankan: sistem monitoring suhu gudang sederhana dengan bukti integritas data on-chain. Ini bukan artikel roadmap karier — kalau Anda mencari jalur belajar Web3 IoT Developer secara bertahap, itu dibahas di panduan blockchain untuk IoT dan artikel roadmap Web3 Developer. Artikel ini murni tutorial membangun satu proyek nyata dari nol sampai jalan.
Gambaran Proyek
Proyek yang akan dibangun: satu ESP32 dengan sensor suhu DHT22 memantau kondisi gudang penyimpanan, mengirim data lewat MQTT ke backend Python, backend menghitung hash dan Merkle root secara periodik, lalu mencatat root tersebut ke smart contract di jaringan testnet. Siapa pun bisa memverifikasi bahwa data suhu yang dilaporkan tidak diubah sejak dicatat, tanpa harus memercayai operator gudang begitu saja.
[GAMBAR: diagram arsitektur keseluruhan proyek â ESP32+DHT22 â MQTT broker â backend Python (hash+Merkle) â smart contract DataAnchor di testnet â dashboard verifikasi]
Daftar Kebutuhan
Sebelum mulai, siapkan: satu board ESP32, satu sensor DHT22, breadboard dan kabel jumper secukupnya, broker MQTT (bisa Mosquitto yang dijalankan lokal atau layanan gratis seperti HiveMQ Cloud untuk skala uji coba), Python 3 dengan library paho-mqtt dan web3, dompet testnet (MetaMask sudah cukup) berisi token testnet gratis dari faucet jaringan yang dipilih, dan akun RPC endpoint testnet (bisa didapat gratis dari penyedia seperti Alchemy atau Infura). Semua komponen ini gratis atau berbiaya sangat rendah, karena proyek ini memang dirancang untuk dipelajari tanpa risiko kehilangan dana nyata.
Kalau Anda belum pernah mengirim data dari ESP32 ke broker MQTT sama sekali, ada baiknya praktikkan dulu tutorial dasar kirim data sensor dari ESP32 ke MQTT broker sebelum melanjutkan ke langkah-langkah di bawah ini.

Level 1: Menyiapkan Perangkat Keras dan Firmware
Rangkai ESP32 dengan sensor DHT22 (pin data ke GPIO4, VCC ke 3.3V, GND ke GND). Firmware yang ditulis di sini menggabungkan dua hal yang sudah dibahas terpisah: pembacaan sensor biasa, dan penghitungan hash SHA-256 dari setiap pembacaan menggunakan mbedTLS seperti pada artikel hash data sensor ESP32. Untuk proyek ini, firmware cukup memakai kredensial MQTT sederhana dulu (username/password) — identitas berbasis kunci privat dari artikel identitas digital perangkat adalah pengembangan lanjutan yang bisa ditambahkan setelah alur dasar berjalan.
Level 2: Backend Penerima dan Penghitung Merkle Root
Backend Python berlangganan topik MQTT, menyimpan setiap pembacaan ke database (SQLite cukup untuk skala proyek ini), dan setiap satu jam menjalankan proses anchoring: mengambil semua hash pembacaan pada jam tersebut, menghitung Merkle root-nya (memakai fungsi hitung_merkle_root dari artikel hash data sensor), lalu menyiapkan transaksi untuk mencatatnya ke smart contract. Pola pemisahan off-chain/on-chain ini mengikuti prinsip di arsitektur on-chain/off-chain: data mentah tetap di SQLite, hanya root yang naik ke chain.
Level 3: Deploy Smart Contract ke Testnet
Deploy kontrak DataAnchor dari artikel smart contract IoT ke jaringan testnet (bukan mainnet, karena ini proyek pembelajaran) menggunakan Hardhat atau Remix IDE. Setelah kontrak ter-deploy, daftarkan alamat backend sebagai perangkat terdaftar lewat fungsi daftarkanPerangkat, supaya backend bisa memanggil catatAnchor. Simpan alamat kontrak dan ABI-nya, karena backend membutuhkan keduanya untuk berinteraksi dengan kontrak.
# Instalasi dependency backend
pip install web3 paho-mqtt
# Contoh pemanggilan sederhana dari backend ke kontrak testnet
# (menggunakan pola dari artikel smart contract IoT)
tx_hash = catat_merkle_root(merkle_root_hex, akun_backend, private_key_backend)
print(f"Anchoring tercatat, tx: {tx_hash}")Level 4: Menghubungkan Semua Lapisan Lewat Oracle
Backend yang dibangun di Level 2 sebenarnya sudah bertindak sebagai oracle sederhana, seperti dibahas di artikel oracle: ia yang memvalidasi data dari ESP32 dan menjadi satu-satunya pihak yang berhak memanggil catatAnchor. Untuk proyek skala pembelajaran ini, oracle terpusat seperti ini sudah cukup — pertanyaan penyaring dari artikel kapan IoT butuh blockchain tetap berlaku: proyek internal tanpa pihak eksternal yang saling tidak percaya belum butuh oracle terdesentralisasi.
Level 5: Dashboard Verifikasi Sederhana
Langkah terakhir adalah membangun halaman sederhana (bisa berupa script Python atau halaman web ringan) yang mengambil data mentah dari database, menghitung ulang hash dan Merkle root-nya, lalu membandingkannya dengan root yang tercatat di smart contract (dibaca lewat fungsi ambilAnchor, yang bersifat view dan gratis dipanggil). Kalau cocok, dashboard menampilkan status “Data Terverifikasi” untuk periode tersebut. Fitur riwayat semacam ini juga relevan untuk kasus audit, seperti dibahas di artikel audit trail maintenance, meski di proyek ini konteksnya monitoring suhu, bukan riwayat servis mesin.
[GAMBAR: mockup dashboard sederhana menampilkan grafik suhu dan status verifikasi “cocok/tidak cocok” per periode anchoring]
Menguji Alur End-to-End
Setelah semua level di atas selesai, uji alur lengkapnya dengan skenario sederhana: biarkan ESP32 mengirim data selama beberapa jam, lalu jalankan proses anchoring dan pastikan transaksinya berhasil tercatat di testnet (bisa dicek lewat block explorer testnet yang bersangkutan). Selanjutnya, coba skenario “manipulasi”: ubah satu angka suhu secara manual langsung di database SQLite, lalu jalankan ulang verifikasi di Level 5. Dashboard seharusnya menampilkan status tidak cocok untuk periode yang datanya diubah, sementara periode lain tetap terverifikasi — ini cara paling meyakinkan untuk membuktikan ke diri sendiri (atau ke siapa pun yang diperlihatkan proyek ini) bahwa sistem benar-benar mendeteksi perubahan data.
Langkah Pengembangan Lanjutan
Setelah proyek dasar ini berjalan, beberapa arah pengembangan yang masuk akal: menambahkan identitas berbasis kunci privat per perangkat (dari artikel identitas digital), memperluas ke banyak sensor dalam satu gudang dengan ID perangkat berbeda-beda, atau mengganti oracle terpusat dengan pola yang lebih terdesentralisasi kalau proyek ini nantinya melibatkan pihak eksternal (misalnya pelanggan yang menitipkan barang di gudang tersebut dan ingin memverifikasi sendiri kondisi penyimpanannya).
Untuk visualisasi yang lebih kaya dibanding dashboard sederhana di Level 5, stack ESP32 + Node-RED + InfluxDB yang sudah dibahas terpisah di bisaioti bisa dipakai sebagai pengganti dashboard Python sederhana pada proyek ini.
Batasan yang Perlu Diingat
- Blockchain tidak berada di jalur kontrol. Proyek ini murni monitoring dan pencatatan bukti, bukan sistem kontrol suhu otomatis.
- Smart contract tidak boleh menggerakkan aktuator secara langsung tanpa verifikasi dan interlock di sisi PLC/edge.
- Waktu konfirmasi transaksi tidak deterministik, sehingga proyek ini tidak cocok dijadikan dasar sistem alarm real-time.
- Gunakan testnet, bukan mainnet, selama tahap belajar dan pengembangan untuk menghindari biaya gas nyata.
- Perubahan pada sistem produksi mengikuti prosedur manajemen perubahan dan izin pihak berwenang di fasilitas terkait, kalau proyek ini nantinya dipindahkan ke lingkungan produksi.
Kesimpulan
Proyek monitoring suhu gudang dengan bukti integritas on-chain ini merangkai konsep hash, identitas perangkat, smart contract, dan oracle yang sebelumnya dibahas terpisah menjadi satu sistem yang benar-benar bisa dijalankan. Ini titik awal yang baik untuk portofolio — dan fondasi yang bisa dikembangkan lebih jauh sesuai kebutuhan spesifik proyek industri yang sesungguhnya.
Belajar Lebih Terstruktur
Materi ini tersedia dalam bentuk course terstruktur di bisaioti.id, lengkap dengan kit hardware supaya bisa langsung dipraktikkan.
[perlu data: nama course yang relevan, link course, nama kit hardware]




