#include <DHT.h>
#define DHTPIN 13 // Pin yang digunakan untuk menghubungkan sensor DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT22
DHT dht22(DHTPIN, DHTTYPE);
#include <WiFi.h>
#include <ThingsBoard.h>
#include <Arduino_MQTT_Client.h>
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASS ""
#define TB_SERVER "thingsboard.cloud"
#define TOKEN "qBs0C8YvtMomnC7zBmrc"
constexpr uint16_t MAX_MESSAGE_SIZE = 256U;
WiFiClient espClient;
Arduino_MQTT_Client mqttClient(espClient);
ThingsBoard tb(mqttClient, MAX_MESSAGE_SIZE);
const int pirPin = 25;
const int LED = 33;
void connectToWiFi() {
Serial.println("Connecting to WiFi...");
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
WiFi.begin(WIFI_AP, WIFI_PASS, 6);
delay(500);
Serial.print(".");
attempts++;
}
if (WiFi.status() != WL_CONNECTED) {
Serial.println("\nFailed to connect to WiFi.");
} else {
Serial.println("\nConnected to WiFi");
}
}
void connectToThingsBoard() {
if (!tb.connected()) {
Serial.println("Connecting to ThingsBoard server");
if (!tb.connect(TB_SERVER, TOKEN)) {
Serial.println("Failed to connect to ThingsBoard");
} else {
Serial.println("Connected to ThingsBoard");
}
}
}
void sendDataToThingsBoard(float temp, int hum) {
String jsonData = "{\"tempIn\":" + String(temp) + ", \"humIn\":" + String(hum) + ", \"tempOut\":" + "0" + ", \"humOut\":" + "0"+ ", \"pressure\":" + "0"+ ", \"rainfall\":" + "0"+ ", \"windSpeed\":" + "0"+ ", \"windDirection\":" + "0" + ", \"windAVG\":" +"0"+"}";
tb.sendTelemetryJson(jsonData.c_str());
Serial.println("Data sent");
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("SIMULASI KIPAS OTOMATIS TEST");
// SENSOR DHT22
dht22.begin();
// SENSOR PIR
pinMode(pirPin, INPUT);
// LED OUTPUT
pinMode(LED, OUTPUT);
connectToWiFi();
connectToThingsBoard();
delay(1000);
}
void loop() {
delay(1000);
connectToWiFi();
int suhu = dht22.readTemperature();
int motion = digitalRead(pirPin);
if (suhu >=29 || motion == HIGH) {
digitalWrite(LED, HIGH);
}
else {
digitalWrite(LED, LOW);
}
Serial.print(F("Suhu: "));
Serial.println(suhu);
Serial.print(F("Motion: "));
Serial.println(motion);
if (!tb.connected()) {
connectToThingsBoard();
}
sendDataToThingsBoard(suhu, motion);
delay(2000);
tb.loop();
}