구글 콘솔 등록,Home Automation 해 보기 위한 Firebase database , Android App,ESP32,ESP8266 연동 어플


https://play.google.com/store/apps/details?id=com.kjint2pi.iotautohome

https://www.youtube.com/watch?v=0zqbxNQsb68&t=10s

https://www.youtube.com/watch?v=Qt_ul3q0DZg

https://blog.naver.com/kjint_02/222402624526

///arduino version 1.8.13

///https://arduino.esp8266.com/stable/package_esp8266com_index.json

///https://dl.espressif.com/dl/package_esp32_index.json

//firebase esp32 client

//firebase esp8266 client

//https://blog.naver.com/kjint_02/222402624526

// 



#if defined(ESP32)

#include <WiFi.h>

#include <FirebaseESP32.h>

//;;int LED_BUILTIN = 2;  //nodeMCU-32S skip.. 생략

#elif defined(ESP8266)   //esp12e

#include <ESP8266WiFi.h>

#include <FirebaseESP8266.h>

#endif


#include <Ticker.h>



#define FIREBASE_HOST "iotautohome-acdf3-default-rtdb.firebaseio.com"  

#define FIREBASE_AUTH "F1Ji8qR6MUr6arY4Dn58nb3DEEl92XQihpgDB1w5"


#define WIFI_SSID "YOUR_WIFI_AP"         /// "YOUR_WIFI_AP"

#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"  /// "YOUR_WIFI_PASSWORD"


//Define Firebase Data objects


FirebaseData firebaseLed1;  //

FirebaseData firebaseLed2;

FirebaseData firebaseStr;



const int ledR = 15; //GPIO15 

const int ledG = 12; //GPIO12  //Led1

const int ledB = 13; //GPIO13  //Led2




String firePath="/fireId0";  /// fireId0,fireId1,fireId2 ... fireId9


String Led1Fire="led1";  //type bool

String Led2Fire="led2";  //type bool

String lcdStr="lcdStr"; //type String maxlength 16




volatile unsigned int count = 0;

volatile unsigned int vistNum=0;

Ticker flipper;


void flip() {

  int state = digitalRead(LED_BUILTIN);  // get the current state of GPIO1 pin

  digitalWrite(LED_BUILTIN, !state);     // set pin to the opposite state


  ++count;

 

}



void setup()

{


  Serial.begin(115200);


  pinMode(ledR, OUTPUT);

  pinMode(ledG, OUTPUT);

  pinMode(ledB, OUTPUT);   

  


  pinMode(LED_BUILTIN, OUTPUT);

  digitalWrite(LED_BUILTIN, LOW);




    Serial.println();

    Serial.println();


    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

    Serial.print("Connecting to Wi-Fi");

    while (WiFi.status() != WL_CONNECTED)

    {

        Serial.print(".");

        delay(300);

    }

    Serial.println();

    Serial.print("Connected with IP: ");

    Serial.println(WiFi.localIP());

    Serial.println();


    Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

    Firebase.reconnectWiFi(true);




    if (!Firebase.beginStream(firebaseLed1, firePath + "/" + Led1Fire))

    {

        Serial.println("Could not begin stream");

        Serial.println("REASON: " + firebaseLed1.errorReason());

        Serial.println();

    }

     if (!Firebase.beginStream(firebaseLed2, firePath + "/" + Led2Fire))

    {

        Serial.println("Could not begin stream");

        Serial.println("REASON: " + firebaseLed2.errorReason());

        Serial.println();

    }

       

     if (!Firebase.beginStream(firebaseStr, firePath + "/" + lcdStr))

    {

        Serial.println("Could not begin stream");

        Serial.println("REASON: " + firebaseStr.errorReason());

        Serial.println();

    }

    

 flipper.attach(1.0, flip);


}


void loop()

{

    if (!Firebase.readStream(firebaseLed1))

    {

        Serial.println();

        Serial.println("Can't read stream data");

        Serial.println("REASON: " + firebaseLed1.errorReason());

        Serial.println();

    }


    if (firebaseLed1.streamTimeout())

    {

        Serial.println();

        Serial.println("Stream timeout, resume streaming...");

        Serial.println();

    }


    if (firebaseLed1.streamAvailable())

    {

        if (firebaseLed1.dataType() == "boolean")

        {

            if (firebaseLed1.boolData())

                Serial.println("Set " + Led1Fire + " to High");

            else

                Serial.println("Set " + Led1Fire + " to Low");

            digitalWrite(ledG, firebaseLed1.boolData());

        }

    }



    if (!Firebase.readStream(firebaseLed2))

    {

        Serial.println();

        Serial.println("Can't read stream data");

        Serial.println("REASON: " + firebaseLed2.errorReason());

        Serial.println();

    }


    if (firebaseLed2.streamTimeout())

    {

        Serial.println();

        Serial.println("Stream timeout, resume streaming...");

        Serial.println();

    }


    if (firebaseLed2.streamAvailable())

    {

        if (firebaseLed2.dataType() == "boolean")

        {

            if (firebaseLed2.boolData())

                Serial.println("Set " + Led1Fire + " to High");

            else

                Serial.println("Set " + Led1Fire + " to Low");

            digitalWrite(ledB, firebaseLed2.boolData());

        }

    }



if(count > 9) {

  vistNum=vistNum+1;

    if (Firebase.setString(firebaseStr, firePath +"/" + lcdStr, "visitor:" + String(vistNum)))

    {

      Serial.println("visitor:" + String(vistNum));

    }

    else

    {

      Serial.println("FAILED");

      Serial.println("REASON: " + firebaseStr.errorReason());

    }

   count=0;  

}



}

댓글