#include <WiFi.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* thingsboardServer = "thingsboard.cloud";
const char* accessToken = "qTzSZjrZ4axKXUqYAvtZ";
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long previousMillis = 0; // Waktu terakhir pengiriman telemetry
const long interval = 5000; // Interval pengiriman telemetry (dalam milidetik)
void setup() {
Serial.begin(115200);
// Menghubungkan ke WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Menghubungkan ke ThingsBoard melalui MQTT
client.setServer(thingsboardServer, 1883);
while (!client.connected()) {
Serial.println("Connecting to ThingsBoard MQTT...");
if (client.connect("ESP32Client", accessToken, NULL)) {
Serial.println("Connected to ThingsBoard MQTT");
} else {
Serial.print("Failed to connect to ThingsBoard MQTT, rc=");
Serial.println(client.state());
delay(2000);
}
}
}
void loop() {
// Mendapatkan waktu sekarang
unsigned long currentMillis = millis();
// Mengecek apakah sudah waktunya mengirim telemetry
if (currentMillis - previousMillis >= interval) {
// Simpan waktu terakhir pengiriman
previousMillis = currentMillis;
// Mengirimkan data telemetri ke ThingsBoard
sendTelemetry(temperatureSensor(), humiditySensor(), adc_pot());
}
// Tambahkan logika atau sensor lainnya di sini
}
float temperatureSensor() {
// Gantilah dengan logika pengambilan data suhu sesuai perangkat Anda
return random(20, 30);
}
float humiditySensor() {
// Gantilah dengan logika pengambilan data kelembaban sesuai perangkat Anda
return random(40, 70);
}
int adc_pot() {
// Gantilah dengan logika pengambilan data kelembaban sesuai perangkat Anda
return random(0, 4096);
}
void sendTelemetry(float temperature, float humidity, int adc_pot) {
// Membuat objek JSON
StaticJsonDocument<200> jsonDocument;
jsonDocument["temperature"] = temperature;
jsonDocument["humidity"] = humidity;
jsonDocument["adc_pot"] = adc_pot;
// Mengkonversi JSON ke string
char payload[200];
serializeJson(jsonDocument, payload);
// Mengirimkan data telemetri ke ThingsBoard melalui MQTT
client.publish("v1/devices/me/telemetry", payload);
Serial.println("Data Telemetry Sent to ThingsBoard");
}