IoTera adalah library Arduino (C++) untuk mempermudah koneksi perangkat ESP8266 dan ESP32 ke aplikasi seluler IoTera secara real-time menggunakan infrastruktur Firebase Realtime Database.
(IoTera is an Arduino C++ library to simplify connecting ESP8266/ESP32 devices to the IoTera mobile app in real-time using Firebase Realtime Database infrastructure.)
- 🔌 Mudah Digunakan (Easy to Use): API yang sangat sederhana untuk inisialisasi WiFi dan Firebase.
- ⚡ Respon Cepat (Low Latency Stream): Menerima perintah aksi (tombol/slider) dari aplikasi mobile IoTera secara instan.
- 📡 Pengiriman Data (Send Data): Kirim nilai sensor ke dashboard aplikasi secara periodik dengan mudah.
- 🔄 Auto-Reconnect: Terintegrasi dengan penanganan stream Firebase yang tangguh saat koneksi terputus.
Library IoTera menggunakan arsitektur Async terbaru dari Firebase. Pastikan Anda menginstal dependensi berikut melalui Arduino IDE > Library Manager:
FirebaseClient(oleh mobizt) 👉 PENTING: Gunakan versi1.1.8.FirebaseJson(oleh mobizt).
Catatan: Kami sangat merekomendasikan menggunakan Core ESP32 versi 2.0.17 di Boards Manager untuk stabilitas kompilasi SSL/TLS.
- Di Arduino IDE, buka menu Sketch -> Include Library -> Manage Libraries...
- Cari IoTera dan klik Install.
(Atau unduh repositori ini sebagai
.zipdan tambahkan melalui Add .ZIP Library...)
Berikut adalah struktur dasar untuk menghubungkan perangkat Anda ke platform IoTera. (Here is the basic structure to connect your device to the IoTera platform.)
#include <IoTeraDevice.h>
#define WIFI_SSID "WIFI_NAME"
#define WIFI_PASS "WIFI_PASSWORD"
#define DEVICE_KEY "API_KEY_FROM_MOBILE_APP" // Salin dari menu "Kelola Perangkat & API"
IoTeraDevice iotDevice;
unsigned long previousMillis = 0;
unsigned long lastWiFiCheck = 0;
// Fungsi penerima perintah dari Aplikasi Mobile
void onAppCommand(String topic, String payload) {
Serial.println("Topic: " + topic + " | Payload: " + payload);
// Contoh jika HP mengirim perintah ke pin_D1
if (topic.indexOf("pin_D1") != -1) {
if (payload == "1") {
Serial.println("Menyalakan Relay/LED!");
} else if (payload == "0") {
Serial.println("Mematikan Relay/LED!");
}
}
}
void setup() {
Serial.begin(115200);
// Daftarkan fungsi callback
iotDevice.setCommandCallback(onAppCommand);
// Hubungkan ke WiFi dan Firebase
iotDevice.begin(WIFI_SSID, WIFI_PASS, DEVICE_KEY);
}
void loop() {
// Auto-reconnect WiFi jika terputus
if (WiFi.status() != WL_CONNECTED && (millis() - lastWiFiCheck > 5000)) {
Serial.println("Koneksi WiFi terputus, mencoba menghubungkan kembali...");
WiFi.disconnect();
WiFi.reconnect();
lastWiFiCheck = millis();
}
// Wajib dipanggil untuk menjaga aliran data masuk (Stream)
iotDevice.loop();
// Contoh pengiriman data secara periodik (setiap 10 detik)
if (millis() - previousMillis > 10000) {
previousMillis = millis();
// 1. Mengirim data sensor umum (misal: suhu, kelembapan)
float suhu = random(20, 35);
iotDevice.sendSensorData("iotera/sensor/suhu", String(suhu));
// 2. Mengirim status pin (misal: status relay) kembali ke Aplikasi
// Gunakan sendPinState() agar konsisten dengan prefix "pin_" yang diharapkan aplikasi.
// bool isRelayOn = digitalRead(RELAY_PIN) == HIGH;
// iotDevice.sendPinState("D1", isRelayOn ? "1" : "0");
}
}Didistribusikan di bawah lisensi MIT. Lihat LICENSE untuk informasi lebih lanjut.
(Distributed under the MIT License. See LICENSE for more information.)