42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
|
const bms = require('./bms');
|
||
|
const firebase = require('firebase');
|
||
|
const namespace = require('fs').readFileSync('/etc/hostname', 'utf8').trim();
|
||
|
|
||
|
// init
|
||
|
firebase.initializeApp({
|
||
|
apiKey: "AIzaSyAs3FvBCADM66wR1-leBz6aIjK1wZfUxRo",
|
||
|
authDomain: "homefront-2ccb4.firebaseapp.com",
|
||
|
databaseURL: "https://homefront-2ccb4.firebaseio.com",
|
||
|
projectId: "homefront-2ccb4",
|
||
|
storageBucket: "homefront-2ccb4.appspot.com",
|
||
|
messagingSenderId: "482384317544"
|
||
|
});
|
||
|
const firestore = firebase.firestore();
|
||
|
firestore.settings({timestampsInSnapshots: true});
|
||
|
const powerwall = new bms('/dev/ttyACM0');
|
||
|
const timestamp = new Date().getTime();
|
||
|
|
||
|
// Wait to accumulate data and then submit
|
||
|
setTimeout(async () => {
|
||
|
try {
|
||
|
let data = powerwall.data();
|
||
|
data.timestamp = timestamp;
|
||
|
|
||
|
console.log(`(${(new Date()).toISOString()}) Saving...`);
|
||
|
await firestore.collection('Battery').doc(namespace)
|
||
|
.collection('data').doc(timestamp.toString())
|
||
|
.set(data);
|
||
|
powerwall.close();
|
||
|
console.log(`(${(new Date()).toISOString()}) Saved`);
|
||
|
process.exit();
|
||
|
} catch(err) {
|
||
|
console.log(err);
|
||
|
process.exit(1);
|
||
|
}
|
||
|
}, 5000);
|
||
|
|
||
|
// Remove any records older than 30 days
|
||
|
firestore.collection('Battery').doc(namespace).collection('data')
|
||
|
.where('timestamp', '<', timestamp - 2592000000).get()
|
||
|
.then(snapshot => snapshot.forEach(doc => doc.ref.delete()));
|