//LAHAN 3
#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
#include <esp_wifi.h>
#define DHTPIN 12 // Pin untuk sensor DHT22
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define TRIGPIN 5 // Pin Trig untuk sensor Ultrasonik
#define ECHOPIN 18 // Pin Echo untuk sensor Ultrasonik
const char* ssid = "Wokwi-GUEST"; // Ganti dengan SSID WiFi Anda
const char* password = ""; // Ganti dengan password WiFi Anda
const char* mqtt_server = "mqtt.thingsboard.cloud"; // Alamat MQTT Server Thingsboard
const char* token = "Xxk7bJnjKuh6Otxuu3an"; // Ganti dengan Access Token dari Thingsboard
WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(DHTPIN, DHTTYPE);
uint8_t newMACAddress[] = {0x13, 0xAE, 0xA4, 0x88, 0x0D, 0x66};
void setup()
{
Serial.begin(9600);
delay(10);
dht.begin();
pinMode(TRIGPIN, OUTPUT);
pinMode(ECHOPIN, INPUT);
Serial.print(" Connect to : ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// WiFi.config(IP, NETWORK, NETMASK, DNS);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print("...");
}
Serial.print("\n");
Serial.print("IP address : ");
Serial.print(WiFi.localIP());
Serial.print("\n");
Serial.print("Connect to : ");
Serial.println(ssid);
client.setServer( mqtt_server, 1883);
// client.setCallback(callback);
Serial.print("[OLD] ESP32 Board MAC Address: ");
Serial.println(WiFi.macAddress());
esp_wifi_set_mac(WIFI_IF_STA, &newMACAddress[0]);
Serial.print("[NEW] ESP32 Board MAC Address: ");
Serial.println(WiFi.macAddress());
}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP32", token, NULL)) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// Mengambil data dari sensor DHT22
float h = dht.readHumidity();
float t = dht.readTemperature();
// Mengambil data dari sensor Ultrasonik
long duration, distance;
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
duration = pulseIn(ECHOPIN, HIGH);
distance = duration * 0.034 / 2;
// Mencetak data sensor ke Serial Monitor
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Mengirim data ke Thingsboard menggunakan MQTT
String payload = "{";
payload += "\"temperature\":"; payload += String(t); payload += ",";
payload += "\"humidity\":"; payload += String(h); payload += ",";
payload += "\"distance\":"; payload += String(distance);
payload += "}";
client.publish("v1/devices/me/telemetry", (char*) payload.c_str());
delay(2000);
}