Library Qbyte-IoT
Library ESP32/ESP8266 IoT dengan dukungan WebSocket untuk komunikasi Real-Time
Fitur Utama
Koneksi WebSocket
Dibangun di atas WebSocketsClient untuk koneksi dua arah yang cepat dan andal.
Sistem Pub/Sub
Mendukung pola publish/subscribe (Pub/Sub) ringan yang sangat mudah digunakan.
Integrasi ESP32 & ESP8266
Didesain khusus untuk mikrokontroler berbasis arsitektur ESP.
Instalasi
- Unduh repository atau folder Qbyte-IoT.
- Pindahkan folder Qbyte-IoT ke dalam folder library Arduino Anda (biasanya di
Documents/Arduino/libraries/). - Restart Arduino IDE.
- Pastikan Anda juga telah menginstal library
WebSocketsClient(dapat dicari melalui Library Manager Arduino).
Menambahkan Perangkat ke Web
Untuk menghubungkan perangkat keras (ESP32/ESP8266) dengan dashboard web Qbyte-IoT, Anda perlu menggunakan Topic yang unik.
- ID Pengguna (User ID): Setiap pengguna memiliki ID unik yang ada di dashboard web (misalnya
USR_123456). - ID Perangkat (Device ID): Setiap perangkat atau komponen juga memiliki ID tersendiri (misalnya
relay_1atausensor_suhu). - Format Topic: Topic disusun dengan format
UserID/DeviceID. Contoh:USR_123456/relay_1.
Di halaman web (Dashboard), saat Anda menambahkan perangkat (misalnya menambahkan tombol Relay atau widget Suhu), Anda akan diminta untuk memasukkan Topic tersebut. Ini memastikan agar web dapat melakukan publish (mengirim perintah) ke perangkat keras, atau sebaliknya web melakukan subscribe untuk menampilkan data (sensor) yang dikirim perangkat keras.
Contoh 1: Kontrol Relay
Contoh ini menunjukkan bagaimana perangkat Anda (ESP32) melakukan subscribe ke sebuah topic untuk menerima perintah kontrol dari web, dan mengubah status dari sebuah Relay/LED.
1#include <Arduino.h>
2#include <WiFi.h>
3#include <WebSocketsClient.h>
4#include "Qbyte-IoT.h"
5
6WebSocketsClient webSocket;
7QbyteIoT iot(webSocket);
8
9const int RELAY_PIN = 2; // Pin untuk Relay (LED Built-in pada umumnya)
10
11void setup() {
12 Serial.begin(115200);
13 pinMode(RELAY_PIN, OUTPUT);
14 digitalWrite(RELAY_PIN, LOW); // Matikan relay secara default
15
16 // 1. Hubungkan ke WiFi
17 WiFi.begin("SSID", "PASSWORD");
18 while (WiFi.status() != WL_CONNECTED) {
19 delay(500);
20 Serial.print(".");
21 }
22 Serial.println("\nWiFi Connected!");
23
24 // 2. Hubungkan ke Server WebSocket Qbyte
25 webSocket.begin("server-iot-qbyte.qbyte.web.id", 443, "/ws");
26
27 // 3. Mulai layanan Qbyte-IoT
28 iot.begin();
29
30 // 4. Subscribe ke topic khusus untuk perangkat ini
31 // Ganti USR_123456 dengan User ID Anda di Web
32 iot.sub("USR_123456/relay_1");
33}
34
35void loop() {
36 // Wajib memanggil loop dari iot agar komunikasi websocket berjalan
37 iot.loop();
38
39 // Cek apakah ada data masuk pada topic tersebut
40 if (iot.has("USR_123456/relay_1")) {
41 // Ambil pesannya
42 String payload = iot.get("USR_123456/relay_1");
43 Serial.println("Perintah diterima: " + payload);
44
45 // Proses perintah dari Web (Misal: web mengirim "1" untuk ON, "0" untuk OFF)
46 if (payload == "1") {
47 digitalWrite(RELAY_PIN, HIGH);
48 // Opsional: Kirim feedback kembali ke web bahwa relay sudah menyala
49 iot.pub("USR_123456/relay_1/status", "ON");
50 }
51 else if (payload == "0") {
52 digitalWrite(RELAY_PIN, LOW);
53 iot.pub("USR_123456/relay_1/status", "OFF");
54 }
55 }
56}Contoh 2: Monitoring Suhu
Pada contoh ini, ESP32 membaca data dari sensor suhu buatan (dummy) lalu mem-publish-nya ke web setiap 5 detik. Web (Dashboard) kemudian dapat melakukan subscribe untuk menampilkan suhunya secara Real-Time.
1#include <Arduino.h>
2#include <WiFi.h>
3#include <WebSocketsClient.h>
4#include "Qbyte-IoT.h"
5
6WebSocketsClient webSocket;
7QbyteIoT iot(webSocket);
8
9unsigned long lastSend = 0;
10
11void setup() {
12 Serial.begin(115200);
13
14 WiFi.begin("SSID", "PASSWORD");
15 while (WiFi.status() != WL_CONNECTED) {
16 delay(500);
17 Serial.print(".");
18 }
19
20 webSocket.begin("server-iot-qbyte.qbyte.web.id", 443, "/ws");
21 iot.begin();
22}
23
24void loop() {
25 iot.loop();
26
27 // Setiap 5000 ms (5 detik) kirim data suhu ke web
28 if (millis() - lastSend > 5000) {
29 lastSend = millis();
30
31 // Membaca sensor suhu (Contoh simulasi nilai dummy)
32 float suhu = 25.0 + random(0, 10) / 10.0;
33
34 // Publikasi data suhu ke topic Anda
35 // Topic: USR_123456/sensor_suhu
36 iot.pub("USR_123456/sensor_suhu", String(suhu));
37
38 Serial.println("Kirim Suhu: " + String(suhu) + " °C");
39 }
40}Referensi API (QbyteIoT)
| Fungsi | Deskripsi |
|---|---|
| void begin() | Inisialisasi layanan dan event listener untuk WebSocket. |
| void loop() | Wajib dipanggil di dalam loop() utama program Arduino untuk mempertahankan koneksi. |
| void sub(const String& topic) | Mendaftarkan perangkat ke suatu topic agar dapat menerima pesan dari server web. |
| void pub(const String& topic, int payload) | Mengirim data berjenis integer ke sebuah topic. |
| void pub(const String& topic, const String& payload) | Mengirim data berjenis string ke sebuah topic. |
| bool has(const String& topic) | Mengecek apakah ada pesan/data baru yang diterima pada topic tersebut. Mengembalikan nilai boolean. |
| int getInt(const String& topic) | Mengambil data/pesan terakhir yang diterima pada topic sebagai tipe Integer. |
| String get(const String& topic) | Mengambil data/pesan terakhir yang diterima pada topic sebagai tipe String. |