/*
Created by:- Yoga Pratama Pangestu
Libraries used:-
1. Arduino Json
2. Firebase ESP32 Client
*/
#include <WiFi.h>
#include "FirebaseESP32.h"
// Insert your network credentials
#define WIFI_SSID "Wokwi-GUEST" // your WiFi SSID
#define WIFI_PASSWORD "" // your WiFi PASSWORD
#define LED1 13
#define LED2 14
#define LED3 33
#define LED4 32
// Insert Firebase project API Key
#define FIREBASE_AUTH "AIzaSyBBedwJY2scz2zlc2aBl43kqpBHfRCt3YA"
// Insert RTDB URLefine the RTDB URL */
#define FIREBASE_HOST "https://esp32-iot-a129f-default-rtdb.asia-southeast1.firebasedatabase.app/"
// Declare the Firebase Data object in the global scope
FirebaseData firebaseData;
// Declare global variable to store value
String val= "example";
String val2= "example";
String val3= "example";
String val4= "example";
void setup() {
// Select the same baud rate if you want to see the datas on Serial Monitor
Serial.begin(115200);
// Set All led as output
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
Serial.println("Serial communication started\n\n");
//try to connect with wifi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD, 6);
Serial.print("Connecting to ");
Serial.print(WIFI_SSID);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
//get status Connected OK/NO ?
Serial.println();
Serial.print("Connected to ");
Serial.println(WIFI_SSID);
Serial.print("IP Address is : ");
Serial.println(WiFi.localIP()); //print local IP address
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // connect to firebase
Firebase.reconnectWiFi(true);
delay(1000);
}
void loop() {
// Firebase Error Handling And Reading Data From Specified Path ************************************************
if (Firebase.getString(firebaseData, "/Device/s1")) { // On successful Read operation, function returns 1
Serial.println(firebaseData.dataType());
val = firebaseData.stringData();
if (val == "1"){
Serial.println("s1 HIGH");
digitalWrite(LED1, 1);
}else{
Serial.println("s1 low");
digitalWrite(LED1, 0);
}
Serial.println(val);
Serial.println("\n Change value at firebase console to see changes here.");
delay(1000);
}
if (Firebase.getString(firebaseData, "/Device/s2")) { // On successful Read operation, function returns 1
Serial.println(firebaseData.dataType());
val2 = firebaseData.stringData();
if (val2 == "1"){
Serial.println("s2 HIGH");
digitalWrite(LED2, 1);
}else{
Serial.println("s2 low");
digitalWrite(LED2, 0);
}
Serial.println(val2);
Serial.println("\n Change value at firebase console to see changes here.");
delay(1000);
}
if (Firebase.getString(firebaseData, "/Device/s3")) { // On successful Read operation, function returns 1
Serial.println(firebaseData.dataType());
val3 = firebaseData.stringData();
if (val3 == "1"){
Serial.println("s3 HIGH");
digitalWrite(LED3, 1);
}else{
Serial.println("s3 low");
digitalWrite(LED3, 0);
}
Serial.println(val3);
Serial.println("\n Change value at firebase console to see changes here.");
delay(1000);
}
if (Firebase.getString(firebaseData, "/Device/s4")) { // On successful Read operation, function returns 1
Serial.println(firebaseData.dataType());
val4 = firebaseData.stringData();
if (val4 == "1"){
Serial.println("s4 HIGH");
digitalWrite(LED4, 1);
}else{
Serial.println("s4 low");
digitalWrite(LED4, 0);
}
Serial.println(val4);
Serial.println("\n Change value at firebase console to see changes here.");
delay(1000);
} else {
Serial.println(firebaseData.errorReason());
}
}
/* NOTE:
* To read value, command is ===> Firebase.getInt(firebaseData, "path"); variable = firebaseData.intData();
*
* Example ===> Firebase.setInt(firebaseData, "/data", val); val = firebaseData.intData();
*/