#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* FIREBASE_HOST ="https://da-den-default-rtdb.firebaseio.com/";
const char* FIREBASE_AUTH="AIzaSyCaMFsSrdFzEueHtLGssjqPSL6SwtkPsv4";
const char* databaseURL="https://da-den-default-rtdb.firebaseio.com/data.json";
#define DHT_PIN 5
DHT dht(DHT_PIN, DHT22);
void setup(){
// mở cổng giao tiếp serial để mở thông báo bên màn hình
Serial.begin(9600);
// kết nối wifi
WiFi.begin(ssid, password);
// kiểm tra wifi
while(WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Connecting to wifi.........");
}
Serial.println("Connected to wifi");
// bat dau cho cam bien doc
dht.begin();
// led nhap nhay
pinMode(18, OUTPUT);
pinMode(25, INPUT_PULLUP);
}
void loop(){
// doi 1 khoang thoi gian
delay(1000);
int but = digitalRead(25);
// bien doc du lieu
float doAm = dht.readHumidity();
float nhietDo = dht.readTemperature();
// kiem tra du lieu xem co doc thanh cong kh( nan = error)
// thanh cong dong goi sang goi chuoi JSON
if(!isnan(doAm) && !isnan(nhietDo)){
Serial.printf("doAm: %.2f%% , nhietDo: %.2fC\n", doAm, nhietDo);
}
// send data to firebase = protocol HTTP
String data= String("{\"nhietDo\":") + String(nhietDo) + String(",\"doAm\":") + String(doAm) + String("}");
HTTPClient http;
http.begin(databaseURL);
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", FIREBASE_AUTH);
int httpResponseCode = http.PUT(data);
if(httpResponseCode > 0){
Serial.print("Data sent successfully, respon code: ");
Serial.println(httpResponseCode);
}
else{
Serial.print("error sending data, response code: ");
Serial.println(httpResponseCode);
}
http.end();
delay(100);
if(httpResponseCode == 200){
String response = http.getString();
float nhietDoFirebase = response.toFloat();
kiemtraT(nhietDoFirebase);
}
// int but = digitalRead(25);
if(but == 0){
digitalWrite(18, HIGH);
delay(1000);
digitalWrite(18, LOW);
delay(1000);
}
delay(1000);
}
void kiemtraT(float nhietDoFirebase){
if(nhietDoFirebase > 50){
digitalWrite(18, HIGH);
delay(2000);
digitalWrite(18, LOW);
}
}