You are on page 1of 4

Code :

#include <SoftwareSerial.h>
#include <FirebaseESP8266.h>
#include <TinyGPS++.h>
#include <ESP8266WiFi.h>
#define FIREBASE_HOST "fina-dd95d.firebaseio.com"
#define FIREBASE_AUTH "zgUEQCFSDszkWPhciY8OmhjxaanuQbeXThQYehYC"
#define WIFI_SSID "Cahyaningati"
#define WIFI_PASSWORD "123123123"

TinyGPSPlus gps;
SoftwareSerial ss(4, 5); // for connect GPS
FirebaseData firebaseData;

float latitude , longitude;


String lat_str, lng_str;

void printResult(FirebaseData &data);

void setup()
{
pinMode(D3, OUTPUT); //led
pinMode(D4, OUTPUT); //buzzer

Serial.begin(9600);
ss.begin(9600);

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(WiFi.localIP());

Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Serial.println("Firebase Connected");

}
void loop() {
if (Firebase.getInt(firebaseData, "ADA_PANGGILAN")){
if(firebaseData.dataType() == "int"){
int val = firebaseData.intData();
if(val != 0){
Serial.println("Ada panggilan darurat");
Darurat();
}
if(val != 1){
Serial.println("FINA standby");
ScanLokasi();
}
}
}
}

void printResult(FirebaseData &data) {


if (data.dataType() == "int")
Serial.println(data.intData());
else if (data.dataType() == "double")
printf("%.9lf\n", data.doubleData());
}

void ScanLokasi() {
while (ss.available() > 0)
if (gps.encode(ss.read()))
{
if (gps.location.isValid())
{
latitude = gps.location.lat();
double lat_str = latitude;
Serial.print("Latitude : ");
if (Firebase.setDouble(firebaseData, "LATITUDE", lat_str)) {
printResult(firebaseData);
}
else {
Serial.print("FAILED ");
Serial.println("REASON: " + firebaseData.errorReason());
}
longitude = gps.location.lng();
double lng_str = longitude;
Serial.print("Longitude : ");
if (Firebase.setDouble(firebaseData, "LONGITUDE", lng_str)) {
printResult(firebaseData);
}
else {
Serial.print("FAILED ");
Serial.println("REASON: " + firebaseData.errorReason());
}
}
}
}

void Darurat() {
digitalWrite(D3, HIGH);
digitalWrite(D4, HIGH);
delay(500);
digitalWrite(D3, LOW);
digitalWrite(D4, LOW);
delay(500);
}
Referensi :
https://www.javacodegeeks.com/2019/07/esp8266-esp32-firebase-realtime-database-iot.html

You might also like