#include <WiFi.h>
#include <PubSubClient.h>
#include <Ultrasonic.h>
const char* ssid = "R_Kepala_Lab"; // Ganti dengan SSID WiFi Anda
const char* password = "Rkepalalab"; // Ganti dengan password WiFi Anda
const char* thingsboardServer = "http://thingsboard.cloud/api/v1/ezm0e778vg09f66lb2n4/telemetry"; // Ganti dengan alamat server ThingsBoard Anda
const char* accessToken = "Yezm0e778vg09f66lb2n4"; // Ganti dengan access token ThingsBoard Anda
const int triggerPin = 12; // Pin trigger sensor ultrasonik
const int echoPin = 14; // Pin echo sensor ultrasonik
Ultrasonic ultrasonic(triggerPin, echoPin); // Buat objek sensor ultrasonik
WiFiClient wifiClient; // Buat objek klien WiFi
PubSubClient client(wifiClient); // Buat objek klien MQTT
void setup() {
Serial.begin(115200); // Inisialisasi komunikasi serial
// Hubungkan ke WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Hubungkan ke ThingsBoard melalui MQTT
client.setServer(thingsboardServer, 1883);
}
void loop() {
// Baca data jarak dari sensor ultrasonik
float distance = ultrasonic.read();
// Format data jarak ke JSON
String payload = "{";
payload += "\"distance\":";
payload += distance;
payload += "}";
// Hubungkan ke ThingsBoard jika belum terhubung
if (!client.connected()) {
if (client.connect("ESP32Client", accessToken, NULL)) {
Serial.println("Connected to ThingsBoard");
} else {
Serial.print("Failed to connect to ThingsBoard, rc=");
Serial.println(client.state());
}
}
// Kirim data jarak ke ThingsBoard
if (client.connected()) {
client.publish("v1/devices/me/telemetry", payload.c_str());
Serial.println("Data sent to ThingsBoard");
}
// Putuskan koneksi ThingsBoard jika tidak digunakan
if (!client.connected()) {
client.disconnect();
Serial.println("Disconnected from ThingsBoard");
}
delay(1000); // Tunggu 1 detik sebelum mengulang loop
}