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

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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":                 "firebase-adminsdk-7pgpu@XXXXXXXXXXXXXXX.iam.gserviceaccount.com",
    "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

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages