#include <WiFi.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Arduino_MQTT_Client.h>
#include <ThingsBoard.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define TOKEN "6vv9U3zULl0ABbuEgSH2"
#define THINGSBOARD_SERVER "thingsboard.cloud"
uint16_t MAX_MESSAGE_SIZE = 128U;
WiFiClient espClient;
uint16_t THINGSBOARD_PORT = 1883U;
Arduino_MQTT_Client mqttClient(espClient);
ThingsBoard tb(mqttClient, MAX_MESSAGE_SIZE);
int statusWifi = WL_IDLE_STATUS;
#define DHTPIN 33
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define PIN_LED 23
LiquidCrystal_I2C lcd(0x27,16,2);
void Wifi_Init() {
Serial.println("Menghubungkan ke AP");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
void Reconnect_Wifi() {
statusWifi = WiFi.status();
if (statusWifi != WL_CONNECTED) {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
}
Wifi_Init();
}
void setup() {
Serial.begin(115200);
Wifi_Init();
dht.begin();
pinMode (PIN_LED, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Monitoring suhu");
lcd.setCursor(0,1);
lcd.print(" Ruang Server ");
delay (2000);
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Helmi Misbakhul Umam | 2120501086");
lcd.setCursor (0,1);
lcd.print ("Muhammad Ilham Syafi | 2120501079");
for (int i; i<= 20;i++)
{
lcd.scrollDisplayLeft();
delay (250);
}
}
void loop()
{
delay(1000);
lcd.clear();
if (WiFi.status() != WL_CONNECTED) {
Reconnect_Wifi();
}
if (!tb.connected()) {
Serial.printf("Connecting to: (%s) with token (%s)\n", THINGSBOARD_SERVER, TOKEN);
if (!tb.connect(THINGSBOARD_SERVER, TOKEN, THINGSBOARD_PORT)) {
Serial.println("Failed to connect");
return;
}
}
float t = dht.readTemperature();
Serial.print(F("Temperature: "));
Serial.print(t);
Serial.println(F("°C "));
Serial.println(F("=========================="));
tb.sendTelemetryData("Temperature", t);
lcd.setCursor (0,0);
lcd.print ("Suhu :");
lcd.print (t);
lcd.print ("C");
if (t > 21.0)
{
digitalWrite(PIN_LED, HIGH);
tb.sendTelemetryData("LED_State", 1); // Send attribute update to ThingsBoard
}
else
{
digitalWrite(PIN_LED, LOW);
tb.sendTelemetryData("LED_State", 0); // Send attribute update to ThingsBoard
}
}