ESP32, ESP8266 & Raspberry Pi, lesson 21 of 33

ESP32 / ESP8266 - Real time Data Logging with Authentication

intermediate1 min read

Every few seconds the board sends a reading over WiFi to the cloud database. It stores each one with the time, and your phone or laptop can watch them arrive from anywhere in the world.

#include <Arduino.h>
#include <WiFi.h>               //we are using the ESP32
//#include <ESP8266WiFi.h>       //uncomment this line if you are using esp8266 and comment the line above
#include <Firebase_ESP_Client.h>
 
// Provide the token generation process info.
#include "addons/TokenHelper.h"
// Provide the RTDB payload printing info and other helper functions.
#include "addons/RTDBHelper.h"
 
// Insert your network credentials
#define WIFI_SSID "YOUR_SSID"
#define WIFI_PASSWORD "YOUR_PASSWORD"
 
// Insert Firebase project API Key
#define API_KEY "YOUR_API"
 
// Insert RTDB URLefine the RTDB URL */
#define DATABASE_URL "YPUR_DATA_URL" 
 
// Insert Authorized Email and Corresponding Password
#define USER_EMAIL "email@example.com"
#define USER_PASSWORD "your_user_password"
 
// Define Firebase objects
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
 
// Variable to save USER UID
String uid;
 
// Initialize WiFi
void initWiFi() {
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
  Serial.println();
}
 
void setup(){
  Serial.begin(115200);
  
  // Initialize WiFi
  initWiFi();
 
  // Assign the api key (required)
  config.api_key = API_KEY;
 
  // Assign the user sign in credentials
  auth.user.email = USER_EMAIL;
  auth.user.password = USER_PASSWORD;
 
  Firebase.reconnectWiFi(true);
  fbdo.setResponseSize(4096);
 
  // Assign the callback function for the long running token generation task
  config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h
 
  // Assign the maximum retry of token generation
  config.max_token_generation_retry = 5;
 
  // Initialize the library with the Firebase authen and config
  Firebase.begin(&config, &auth);
 
  // Getting the user UID might take a few seconds
  Serial.println("Getting User UID");
  while ((auth.token.uid) == "") {
    Serial.print('.');
    delay(1000);
  }
  // Print user UID
  uid = auth.token.uid.c_str();
  Serial.print("User UID: ");
  Serial.print(uid);
}
 
void loop(){
  if (Firebase.isTokenExpired()){
    Firebase.refreshToken(&config);
    Serial.println("Refresh token");
  }
}