/****************** https://app.sanusb.org/fmiot/ ***********************/
// #if defined(ESP32)
#include <WiFi.h>
#include <HTTPClient.h>
#include <FirebaseESP32.h>
#include <ESP32Servo.h>
/*
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <FirebaseESP8266.h>
#endif
//*/
//wokwi.com: Install Firebase ESP32 Client in Library Manager
//https://wokwi.com/projects/354403233523341313
//*
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define SERVO_PIN 2
#define TRIG_PIN 5
#define ECHO_PIN 18
float duration, distance;
//*/
int pos = 0;
FirebaseData firebaseData;
Servo servoMotor;
//Install Firebase-ESP32 for real ESP32. See details at https://github.com/SanUSB/EspCloudUpdate
/*
#define WIFI_SSID "----------"
#define WIFI_PASSWORD "----------"
//*/
#define FIREBASE_HOST "https://internship-c025d-default-rtdb.firebaseio.com"
#define FIREBASE_AUTH "DODjTYNU2AafXyK1Lgpj63j3wbsb8vdjY1FQ4oSi"
String messageTemp;
void setup_wifi(void) {
pinMode(LED_BUILTIN, OUTPUT);
Serial.println();
Serial.print("Connecting to ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void firebase_config(void) {
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
//Enable auto reconnect the WiFi when connection lost
Firebase.reconnectWiFi(true);
}
//***********************************************************
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
setup_wifi();
firebase_config();
pinMode(TRIG_PIN, OUTPUT); //
pinMode(ECHO_PIN, INPUT);
servoMotor.attach(SERVO_PIN); // attaches the servo on ESP32 pin untuk memulai servo nya
servoMotor.write (pos);
}
//**********************************************************
void loop() {
digitalWrite(TRIG_PIN, HIGH); //ngambil data
delayMicroseconds(10); //buat data waktu
digitalWrite(TRIG_PIN, LOW); //input
duration = pulseIn(ECHO_PIN, HIGH);
distance = 0.017 * duration;
if (distance < 5)
{
Firebase.setInt(firebaseData,"PersonPresense",1);
int ppv= 1;
while(ppv == 1)
{
if(Firebase.getInt(firebaseData, "/PersonPresense"))
{
ppv = firebaseData.intData();
if(ppv == 0)
{
servoMotor.write(200);
delay(3000);
servoMotor.write(0);
}
}
}
}
if (Firebase.getString(firebaseData, "/")) //Success
{
messageTemp = firebaseData.stringData();
Serial.print("Data Stored in RequestVal = ");
Serial.println(messageTemp);
} else {
Serial.print("Error in getInt, ");
Serial.println(firebaseData.errorReason());
}
Firebase.setString(firebaseData, "/ESP32/P16", 123);
}