#include <WiFi.h>
#include <Arduino.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define DATABASE_URL "https://offroad-rc-default-rtdb.asia-southeast1.firebasedatabase.app/.json"
HTTPClient client;
bool lampu = false;
#define BUTTON 2 // ESP32 GPIO16 pin connected to button's pin
#define BUZZER 4 // ESP32 GPIO21 pin connected to Buzzer's pin
void status(){
// Meminta Realtime Database Firebase untuk menerima masukan
int httpResponseCode = client.GET();
String payload = "";
if (httpResponseCode > 0) {
payload = client.getString();
}
// Mengidentifikasi variabel output yang dimaksud untuk menerima input dari flutter
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
lampu = doc["Status"]["Lampu"];
}
void setup()
{
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected to WiFi: ");
Serial.println(WiFi.localIP());
// Memulai pembacaan URL Firebase untuk mulai menerima input
client.begin(DATABASE_URL);
pinMode(BUTTON, INPUT_PULLUP); // set ESP32 pin to input pull-up mode
pinMode(BUZZER, OUTPUT); // set ESP32 pin to output mode
}
void loop()
{
status()
int buttonState = digitalRead(BUTTON); // read new state
if(lampu){
if (buttonState == LOW)
{
digitalWrite(BUZZER, HIGH); // turn on
}
else if (buttonState == HIGH) {
digitalWrite(BUZZER, LOW); // turn off
}
}
}