PLC ve ESP8266 ile Google Firebase Realtime Database Veri Aliş Verişi






Kod:




Güncelleme:

/*

   Created by Pi BOTS MakerHub

   Email: pibotsmakerhub@gmail.com

   Github: https://github.com/pibotsmakerhub

   Copyright (c) 2020 Pi BOTS MakerHub


   Bu Proje ESP8266 ile Google Firebase Realtime Database veri alis verisi icin gerceklestirilmistir.

   Mese Bilisim Yazilim Mekatronik olarak projeyi PLC projeleri icin duzenliyoruz.

   Amacimiz PLC nin Cep Telefonundan kontrol edilmesidir.

   Yukarida ismi verilen "Pi BOTS MakerHub" a tesekkur ederiz.

   Projenin yapilisi ve gerceklestirilmesi "PLC ve ESP8266 ile Google Firebase Realtime Database Veri Alis Verisi" isimli blogda guncellenerek yayinlanacaktir.

   Proje Blog adresi: https://blog.mesebilisim.com/2021/07/plc-ve-esp8266-ile-google-firebase.html

   Duzenleyen: Mese Mekatronik

   Tarih: 25.09.2021

*/



#include "FirebaseESP8266.h"  // Arduino IDE uzerinden library sekmesinden "Firebase ESP8266" isimli kutuphane yuklenecek

#include <ESP8266WiFi.h> // ESP nin Wifi agina baglanmasi icin


// https://console.firebase.google.com/u/0/project/fir-esp8266-led-kontrol-4/overview


#define FIREBASE_HOST "fir-xxx-default-rtdb.xxx-west1.firebasedatabase.app"

#define FIREBASE_AUTH "dExxxxxxxxxxxxxxb7oYn"

#define WIFI_SSID "Xxxxxxxxxx"

#define WIFI_PASSWORD "xxxxxxxxxx***"


int led = 2;     // NodeMCU icin LED


FirebaseData firebaseData;


FirebaseJson json;


unsigned long myTime1 = 0;

unsigned long myTime2 = 0;


String cihaz_seri_no = "0001";



void setup() {


  Serial.begin(115200);


  pinMode(led, OUTPUT);


  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  Serial.print("WiFi baglantisi yapiliyor.");

  while (WiFi.status() != WL_CONNECTED)

  {

    Serial.print(".");

    delay(300);

  }

  Serial.println();

  Serial.print("Baglandi. IP: ");

  Serial.println(WiFi.localIP());

  Serial.println();


  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

  Firebase.reconnectWiFi(true);


} // setup



void sensorUpdate() {


  float t, h;

  t = random(0, 100);

  h = random(0, 100);


  if (Firebase.setFloat(firebaseData, "/cihaz_seri_no/ID" + String(cihaz_seri_no) + "/temperature", t))

  {

    Serial.println("PASSED");

    Serial.println("PATH: " + firebaseData.dataPath());

    Serial.println("TYPE: " + firebaseData.dataType());

    Serial.println("ETag: " + firebaseData.ETag());

    Serial.println("------------------------------------");

    Serial.println();

  }

  else

  {

    Serial.println("FAILED");

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

    Serial.println("------------------------------------");

    Serial.println();

  }


  if (Firebase.setFloat(firebaseData, "/cihaz_seri_no/ID" + String(cihaz_seri_no) + "/humidity", h))

  {

    Serial.println("PASSED");

    Serial.println("PATH: " + firebaseData.dataPath());

    Serial.println("TYPE: " + firebaseData.dataType());

    Serial.println("ETag: " + firebaseData.ETag());

    Serial.println("------------------------------------");

    Serial.println();

  }

  else

  {

    Serial.println("FAILED");

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

    Serial.println("------------------------------------");

    Serial.println();

  }


} // sensorUpdate



void loop() {


  if (!Firebase.pathExist(firebaseData, "/cihaz_seri_no/ID" + String(cihaz_seri_no) + "/led")) {

    if (Firebase.setFloat(firebaseData, "/cihaz_seri_no/ID" + String(cihaz_seri_no) + "/led", 1))

    {

      Serial.println("PASSED");

      Serial.println("PATH: " + firebaseData.dataPath());

      Serial.println("TYPE: " + firebaseData.dataType());

      Serial.println("ETag: " + firebaseData.ETag());

      Serial.println("------------------------------------");

      Serial.println();

    }

    else

    {

      Serial.println("FAILED");

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

      Serial.println("------------------------------------");

      Serial.println();

    }

  }


  myTime2 = millis() / 1000;


  if (myTime2 - myTime1 > 10) { // 10 sn.

    Serial.println("Zaman doldu. Yeni verileri set et!");

    sensorUpdate();

    myTime1 = millis() / 1000;

  }


  if (Firebase.getInt(firebaseData, "/cihaz_seri_no/ID" + String(cihaz_seri_no) + "/led")) {

    Serial.print("Led durum: ");

    Serial.println(firebaseData.intData());

    if (firebaseData.intData() == 1) {

      digitalWrite(led, 0);

    }

    else if (firebaseData.intData() == 0) {

      digitalWrite(led, 1);

    }

  }

  delay(500);


} // loop