Bagaimana JavaScript digunakan untuk mengontrol perangkat IoT, memproses data sensor, dan berkomunikasi melalui protokol seperti MQTT.
IoT (Internet of Things) identik dengan bahasa pemrograman seperti C++ atau Python. Namun, JavaScript kini semakin populer di dunia IoT, terutama karena kemampuannya berjalan di banyak platform dan dukungan ekosistemnya yang luas.
Dengan hadirnya Node.js, JavaScript dapat berjalan di perangkat kecil, server, hingga menghubungkan keduanya dalam sistem IoT yang terintegrasi.
1. Mengapa JavaScript Cocok untuk IoT
- Event-Driven: Cocok untuk menangani data sensor yang datang terus-menerus.
- Asynchronous: Mampu memproses banyak koneksi tanpa blocking.
- Banyak Library: Ada modul siap pakai untuk sensor, MQTT, HTTP, WebSocket, dan lainnya.
- Full-Stack: Bisa dipakai untuk backend, frontend, dan bahkan di perangkat IoT itu sendiri.
2. Peran JavaScript dalam IoT
- Di Perangkat IoT
- Menggunakan firmware seperti Espruino atau Johnny-Five untuk mengontrol mikrokontroler (Arduino, ESP8266, ESP32) langsung dengan JavaScript.
- Di Server Backend
- Menggunakan Node.js untuk menerima data dari perangkat, menyimpannya di database, dan memprosesnya.
- Di Dashboard Web
- Menggunakan framework seperti React atau Vue untuk menampilkan data sensor secara real-time.
3. Contoh Implementasi (ESP8266 + Node.js + MQTT)
Misalnya kita ingin membaca suhu dari sensor DHT11 di ESP8266 dan mengirimkannya ke dashboard web:
- ESP8266 (C++) → Mengambil data suhu & kelembapan, lalu mengirim ke broker MQTT.
- Node.js (JavaScript) → Berperan sebagai subscriber MQTT, menerima data, dan menyimpannya di database MongoDB.
- Frontend (JavaScript) → Mengambil data dari backend menggunakan WebSocket dan menampilkannya dalam grafik real-time.
4. Contoh Kode Node.js untuk MQTT Subscriber
javascript
CopyEdit
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', () => {
console.log('Terhubung ke broker MQTT');
client.subscribe('sensor/dht11');
});
client.on('message', (topic, message) => {
console.log(`Data dari ${topic}: ${message.toString()}`);
});
Kode ini akan menerima data dari topik sensor/dht11
dan mencetaknya ke console.
5. Tantangan Menggunakan JavaScript di IoT
- Performa Terbatas pada perangkat mikrokontroler kecil.
- Manajemen Memori harus diperhatikan, karena JavaScript cenderung boros dibanding C/C++.
- Ketergantungan Ekosistem — beberapa sensor tidak punya library JavaScript native.