#include <ESP8266WiFi.h>
#include <MQTT.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
const char ssid[] = "Redmi Note 11";
const char pass[] = "112234455";
#define DHTPIN11
#define DHTTYPE DHT22
float suhu, kelembaban;
DHT dht(11, DHT22);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int buzzer = 13;
int led_awas = 4;
int led_aman = 3;
void connect() {
Serial.print("menghubungkan ke WiFi..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.println("Terhubungkan ke WiFi !");
Serial.print("Menghubungkan ke Broker...");
while (!client.connect("Nyimmmmmassss!!")) {
Serial.print(".");
delay(1000);
}
Serial.println("Terhubung ke Broker");
client.subscribe("bangoor/#");
}
void setup() {
dht.begin();
lcd.init();
lcd.begin(16, 2);
lcd.backlight();
pinMode(led_awas, OUTPUT);
pinMode(led_aman, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(115200);
WiFi.begin(ssid, pass);
client.begin("broker.emqx.io", net);
client.onMessage(dataMasuk);
pinMode(2, OUTPUT);
}
void loop() {
float kelembaban = dht.readHumidity();
float suhu = dht.readTemperature();
delay(100);
Serial.print("lembab");
Serial.print(kelembaban);
Serial.print("%");
Serial.print(" ");
Serial.print("suhu");
Serial.print(suhu);
Serial.println("*C");
lcd.setCursor(0, 0); //
lcd.print("kelembaban: ");
lcd.print((int) kelembaban);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Suhu: ");
lcd.print((int) suhu);
lcd.print((char)223);
lcd.print("C ");
//kondisi if dibawah ini, silahkan di atur sesuai dengan kebutuhan kamu
if ( kelembaban > 70.10){ //jika kelembapan lebih besar dari 82.10
digitalWrite(led_awas, HIGH); //led merah menyala
digitalWrite(buzzer, HIGH); //buzzer menyala
digitalWrite(led_aman, LOW); //led hijau mati
delay(100);
}
else if( suhu > 32.10){ //jika suhu lebih besar dari 32.10
digitalWrite(led_awas, HIGH); //led merah menyala
digitalWrite(buzzer, HIGH); //buzzer menyala
digitalWrite(led_aman, LOW); //led hijau mati
delay(100);
}
else{ //jika tidak
digitalWrite(led_aman, HIGH); //led hijau menyala
digitalWrite(led_awas, LOW); //led merah mati
digitalWrite(buzzer, LOW); //buzzer mati
}
{
client.loop();
}
void dataMasuk(String topic, String data) {
if (topic == "bangoor/") {
Serial.println(data);
if (data == "true") {
digitalWrite(2, 1);
} else {
digitalWrite(2, 0);
}
}
}