//USING LIBRARY
#include<WiFi.h>
#include<DHT.h>
#include<PubSubClient.h>
//USING DHT TEMPERATURE
DHT dht(19, DHT22);
//Info MQTT
const char* mqtt_server = "test.mosquitto.org";
const int mqtt_port = 1883;
const char* mqtt_topic = "data-perindo";
WiFiClient espclient;
PubSubClient client(espclient);
//FUNCTION MQTT
//Function CALLBACK, fungsi untuk menerima pesan dari MQTT
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Pesan yang diterima: ");
Serial.print(topic);
Serial.print(". Pesan: ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
//Function Reconnect, fungsi untuk menghubungkan ke MQTT Broker
void reconnect() {
while (!client.connected()) {
Serial.print("Menghubungkan ke MQTT Broker ....");
if (client.connect("Hellow")) {
Serial.println("Terhubung");
} else {
Serial.print("Yah.. koneksimu gagal, rc=");
Serial.print(client.state());
Serial.println(" Coba kamu lagi dehh ...");
delay(1000);
}
}
}
void setup() {
// Inisialisasi Serial dan pin
Serial.begin(115200);
Serial.println("Hello new world!");
pinMode(12, OUTPUT);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
pinMode(27, OUTPUT);
pinMode(32, INPUT);
// Koneksi WiFi
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(". ");
}
Serial.println("Connected");
dht.begin();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
if (!client.connected()) {
reconnect();
}
client.loop();
}
//BOOLEAN STATSLAMP
// bool statusLamp = false;
// bool statusBefore = LOW;
void loop() {
// put your main code here, to run repeatedly:
//delay(1000); // this speeds up the simulation
// bool valButton = digitalRead(32);
if (!client.connected()) {
reconnect();
}
client.loop();
static unsigned long lastMsg = 0;
unsigned long now = millis();
if(now - lastMsg > 2000) {
lastMsg = now;
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
String message2 = "Hellow MQTT Wokwi!";
String message = "=[ Status Ruangan ]=\nSuhu: " + String(temperature) + "°C, Kelembaban: " + String(humidity) + "%";
// Serial.print("Mengirim Pesan: ");
// Serial.println(message2);
Serial.print("Status Ruangan: ");
Serial.println(message);
client.publish(mqtt_topic, message.c_str());
}
delay(2000);
// Memastikan data valid
// if (isnan(temperature) || isnan(humidity)) {
// Serial.println("Gagal membaca dari sensor DHT!");
// return;
// }
// Serial.print("Temperature: ");
// Serial.print(temperature);
// Serial.print("°C ");
// Serial.print("Humidity: ");
// Serial.print(humidity);
// Serial.println("%");
// delay(1000);
// if (temperature < 10) {
// digitalWrite(12, HIGH);
// digitalWrite(27, LOW);
// digitalWrite(22, LOW);
// digitalWrite(23, LOW);
// Serial.print("Status: ");
// Serial.println("Horee merah nyala");
// }
// else if (temperature >= 10 && temperature < 30) {
// digitalWrite(12, LOW);
// digitalWrite(27, HIGH);
// digitalWrite(22, LOW);
// digitalWrite(23, LOW);
// Serial.print("Status: ");
// Serial.println("Horee cyan nyala");
// }
// else if (temperature >= 30 && temperature < 60) {
// digitalWrite(12, LOW);
// digitalWrite(27, LOW);
// digitalWrite(22, HIGH);
// digitalWrite(23, LOW);
// Serial.print("Status: ");
// Serial.println("Horee kuning nyala");
// }
// else if (temperature >= 60) {
// digitalWrite(12, LOW);
// digitalWrite(27, LOW);
// digitalWrite(22, LOW);
// digitalWrite(23, HIGH);
// Serial.print("Status: ");
// Serial.println("Horee putih nyala");
// }
// delay(1000);
// LAMPU DIJE PAKE BUTTON
// if (valButton == HIGH && statusBefore == LOW) {
// statusLamp = !statusLamp;
// if (statusLamp) {
// digitalWrite(12, HIGH);
// digitalWrite(22, HIGH);
// digitalWrite(23, HIGH);
// digitalWrite(27, HIGH);
// Serial.println("All lamp has been turn on!");
// } else {
// digitalWrite(12, LOW);
// digitalWrite(22, LOW);
// digitalWrite(23, LOW);
// digitalWrite(27, LOW);
// Serial.println("All lamp turn off...");
// }
// }
// statusBefore = valButton;
// delay(50);
// ANOTHER LAMPU DIJE
// digitalWrite(12, HIGH);
// digitalWrite(22, LOW);
// digitalWrite(23, LOW);
// digitalWrite(27, LOW);
// delay(1000);
// digitalWrite(12, LOW);
// digitalWrite(22, LOW);
// digitalWrite(23, LOW);
// digitalWrite(27, HIGH);
// Serial.println("Hello, This is pin 27 or cyan lamp!");
// delay(1000);
// digitalWrite(12, LOW);
// digitalWrite(22, HIGH);
// digitalWrite(23, LOW);
// digitalWrite(27, LOW);
// Serial.println("Hello, This is pin 22 or orange lamp!");
// delay(1000);
// digitalWrite(12, LOW);
// digitalWrite(22, LOW);
// digitalWrite(23, HIGH);
// digitalWrite(27, LOW);
// Serial.println("Hello, This is pin 23 or white lamp!");
// delay(1000);
}