#include <WiFi.h>
#include <FirebaseESP32.h>
#include <addons/TokenHelper.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define API_KEY "AIzaSyDFfmbkD56sfkGcctoGyB0Om9xKLK8byvk"
#define DATABASE_URL "https://do-an-1-2609-default-rtdb.firebaseio.com/"
#define LED_PIN 2
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long sendDataPrevMillis = 0;
unsigned long count = 0;
void setup()
{
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Kết nối WIFI....");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print("Kết nối WIFI thành công");
delay(300);
}
Serial.println();
// API key cho cấu hình Firebase
config.api_key = API_KEY;
// RTDB URL cho cấu hình Firebase
config.database_url = DATABASE_URL;
// Xác thực với Firebase
Firebase.signUp(&config, &auth,"","");
//Gán callback function cho việc sinh token
config.token_status_callback = tokenStatusCallback;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
String LED;
bool getsuccess = Firebase.getString(fbdo, F("/LED"), &LED); // Lấy trạng thái LED từ Firebase
if (getsuccess) // Lấy dữ liệu thành công hay không
{
Serial.print("Trạng thái LED: ");
Serial.println(LED);
if (LED == "ON")
{
digitalWrite(LED_PIN, HIGH);
}
if (LED == "OFF")
{
digitalWrite(LED_PIN, LOW);
}
}
else // Lấy dữ liệu không thành công
{
Serial.print("Lỗi xảy ra khi lấy trạng thái LED: "); // In ra thông báo lỗi
Serial.println(fbdo.errorReason()); // In ra lý do lỗi
}
// Gửi Count lên Firebase
Serial.print("Đếm lên... ");
bool setSuccess = Firebase.setInt(fbdo, F("/Count"), count);
if (setSuccess) {
Serial.println("Thành công");
} else {
Serial.print("Lỗi xảy ra khi đếm lên: ");
Serial.println(fbdo.errorReason());
}
Serial.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
count++;
delay(200);
}