Skip to content
This repository has been archived by the owner on Apr 8, 2023. It is now read-only.

This is for ESP32 DHT11 POST Data to Heroku Server and FireBase(Data Base).

Notifications You must be signed in to change notification settings

MakerbaseMoon/DHT11Firebase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DHT11 Firebase

This is for ESP32 DHT11 POST Data to Heroku Server and FireBase(Data Base).

Link

console

> npm install express --save
> npm install firebase-admin --save
> npm install body-parser --save

dht11firebase.js

class Firestore

constructor(serviceAccount) {
    const admin = require("firebase-admin");

    admin.initializeApp({
        credential: admin.credential.cert(serviceAccount)
    });

    this.db     = admin.firestore();
}

serviceAccountKey.json

{
    "type":                         "service_account",
    "project_id":                   "tXXt-7XXX6",
    "private_key_id":               "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "private_key":                  "-----BEGIN PRIVATE KEY-----\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----END PRIVATE KEY-----\n",
    "client_email":                 "[email protected]",
    "client_id":                    "000000000000000000000000000",
    "auth_uri":                     "https://accounts.google.com/o/oauth2/auth",
    "token_uri":                    "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url":  "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url":         "https://www.googleapis.com/robot/v1/metadata/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.iam.gserviceaccount.com"
  }

async checkIdPasswd(checkIdPasswdData)

async checkIdPasswd(checkIdPasswdData) {
    let _json;

    try {
        _json = {
            Name:   checkIdPasswdData["Name"],
            Id:     checkIdPasswdData["Id"],
            Passwd: checkIdPasswdData["Passwd"],
        };

        if(_json.Name !== "checkIdPasswd")
            return getReturnData("CHECK_ID_PASSWD", "ERROR", "JSON_NAME_ERROR");
    } catch(e) {
        return getReturnData("CHECK_ID_PASSWD", "ERROR", "JSON_ERROR");
    }

    try {
        const snapshot  = await this.db.collection('Users').where('Id', '==', _json.Id).where('Passwd', '==', _json.Passwd).get();

        if(snapshot.empty)
            return getReturnData("CHECK_ID_PASSWD", "ERROR", "ID_OR_PASSWD_ERROR");

        let returnData = getReturnData("CHECK_ID_PASSWD", "OK", NaN);
        snapshot.forEach(doc => {
            returnData["Key"] = doc.id;
        });
        return returnData;

    } catch(e) {
        return getReturnData("CHECK_ID_PASSWD", "ERROR", "DATABASE_WHERE_ERROR");
    }
}

Client Json

{
    "Name":   "checkIdPasswd",
    "Id":     "<Enter your ID>",
    "Passwd": "<Enter your Password>"
}

Server Json

Type -> OK

{
    "Name":  "checkIdPasswd",
    "Type":  "OK",
    "Error":  null,
    "Key":   "XXXXXXXXXXXXXX"
}

Type -> Error

{
    "Name":  "checkIdPasswd",
    "Type":  "ERROR",
    "Error": "<Error Code>"
}
  • JSON_NAME_ERROR
  • JSON_ERROR
  • ID_OR_PASSWD_ERROR
  • DATABASE_WHERE_ERROR

async getDHT11Data(dateData)

async getDHT11Data(dateData) {
    let _json;

    try {
        let date  = new Date(dateData["Year"], dateData["Month"], dateData["Day"], dateData["Hour"]);
        _json = {
            Name:   dateData["Name"],
            Date:   date.getTime(),
        }

        if(_json.Name !== "getDHT11Data")
            return getReturnData("GET_DHT11_DATA", "ERROR", "JSON_NAME_ERROR");

    } catch(e) {
        return getReturnData("GET_DHT11_DATA", "ERROR", "JSON_ERROR");
    }

    try {
        const cityRef = this.db.collection("DHT11").doc(_json.Date.toString());
        const doc = await cityRef.get();

        if (!doc.exists)
            return getReturnData("GET_DHT11_DATA", "ERROR", "DATABASE_NOTFOUND_DATA_ERROR");

        
        let data = getReturnData("GET_DHT11_DATA", "OK", NaN);
        data["Data"]    = doc.data()
        return data;
        
    } catch(e) {
        return getReturnData("GET_DHT11_DATA", "ERROR", "DATABASE_GET_DATA_ERROR");
    }

}

Client Json

2021/10/01 13:05

{
    "Name":  "getDHT11Data",
    "Year":   2021,
    "Month":    10,
    "Day":       1,
    "Hour":     13
}

Server Json

Type -> OK

{
    "Name":  "GET_DHT11_DATA",
    "Type":  "OK",
    "Error":  null,
    "Data": {
        "Date":  1635523200000,
        "0": {
            "Temp": [20, 20, 20, 20, 20, 20],
            "Hum":  [50, 50, 50, 50, 50, 50]
        },
        "1": {
            "Temp": [20, 20, 20, 20, 20, 20],
            "Hum":  [50, 50, 50, 50, 50, 50]
        },
        ...
    }
}

Type -> Error

{
    "Name":  "GET_DHT11_DATA",
    "Type":  "ERROR",
    "Error": "<Error Code>"
}
  • JSON_NAME_ERROR
  • JSON_ERROR
  • DATABASE_NOTFOUND_DATA_ERROR
  • DATABASE_GET_DATA_ERROR

async setDHT11Data(DHT11Data)

async setDHT11Data(DHT11Data) {
    let _json;

    try {
        let date  = new Date(DHT11Data["Year"], DHT11Data["Month"], DHT11Data["Day"], DHT11Data["Hour"]);
        _json = {
            Name: DHT11Data["Name"],
            Date: date.getTime(),
            Min:  DHT11Data["Min"],
            Temp: DHT11Data["Temp"],
            Hum:  DHT11Data["Hum"]
        }

        if(_json.Name !== "setDHT11Data")
            return getReturnData("SET_DHT11_DATA", "ERROR", "JSON_NAME_ERROR");

    } catch(e) {
        return getReturnData("SET_DHT11_DATA", "ERROR", "JSON_ERROR");
    }

    try {
        let firebaseData = {}
        firebaseData[_json.Min.toString()] = {
            Temp: _json.Temp,
            Hum:  _json.Hum,
        };

        const myDoc = this.db.collection("DHT11").doc(_json.Date.toString());
        const doc = await myDoc.get();

        if (!doc.exists) {
            await myDoc.set({Date: _json.Date});
        }

        await myDoc.update(firebaseData);

    } catch(e) {
        return getReturnData("SET_DHT11_DATA", "ERROR", "DATABASE_SAVE_DATA_ERROR");
    }

    return getReturnData("SET_DHT11_DATA", "OK", NaN);
}

Client Json

2021/10/01 13:05

{
    "Name":  "setDHT11Data",
    "Year":   2021,
    "Month":    10,
    "Day":       1,
    "Hour":     13,
    "Min":       5,
    "Temp":    [20, 20, 20, 20, 20, 20],
    "Hum":     [50, 50, 50, 50, 50, 50]
}

Server Json

Type -> OK

{
    "Name": "SET_DHT11_DATA",
    "Type": "OK",
    "Error": null
}

Type -> Error

{
    "Name":  "SET_DHT11_DATA",
    "Type":  "ERROR",
    "Error": "<Error Code>"
}
  • JSON_NAME_ERROR
  • JSON_ERROR
  • DATABASE_SAVE_DATA_ERROR

About

This is for ESP32 DHT11 POST Data to Heroku Server and FireBase(Data Base).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published