Reputation: 2132
I am using native Firebase Javascript SDK's
on IoT device running Node-red environment.
WRITE
and DELETE
operations on the Firebase
RealtimeDatabase data.READ
any data from Firebase Realtime
database.Even though I don't READ
any data, when I looked this morning into the Firebase console I saw a graph that showed me constant 12kB/minute
downloads and 1
peak connection. I though some bot connected to my database. So I turned off my IoT device and I saw in the graph that also the connection went from 1
to 0
(so I am certain only my IoT device was connected to the database).
Also the downloads went from 12kB/minute
to 0kB/minute
:
on
, onChildAdded
, onValue
etc.
methods.Code which runs when the IoT device turn's on:
//Load data from Global contexta
const app = global.get('app');
const database = global.get('database');
const firestore = global.get('firestore');
const auth = global.get('auth');
const firebaseConfig = {
//my credentials
};
//Set up Firebase
const fb_app = app.initializeApp(firebaseConfig);
const fb_db = database.getDatabase(); //kdybychom měli vice projektu tak app dame do parametru
const fb_ft = firestore.getFirestore();
const fb_auth = auth.getAuth();
//Save the database reference to Global context
global.set('fb_app', fb_app);
global.set('fb_db', fb_db);
global.set('fb_ft', fb_ft);
global.set('fb_auth', fb_auth);
Code that writes data every 1 second:
const fb = global.get('database');
const fb_db = global.get('fb_db');
var timestamp = Math.round(msg.payload / 1000);
var UID = 'uid1';
var a1 = 0 + Math.floor(Math.random() * 100);
var p1 = 50 + Math.floor(Math.random() * 20);
var t1 = 20 + Math.floor(Math.random() * 20);
//Send data to Firebase
const ref = fb.ref(
fb_db,
'device_realtime/' + UID + '/' + timestamp.toString()
);
fb.set(ref, {
a1: a1,
p1: p1,
t1: t1
});
Code that deletes data older then 60 seconds:
const fb = global.get('database');
const fb_db = global.get('fb_db');
var timestamp1 = Math.round(msg.payload / 1000) - 60;
var timestamp2 = Math.round(msg.payload / 1000) - 61;
var UID = 'uid1';
//Delete old data from firebase
var reference1 = fb.ref(
fb_db,
'device_realtime/' + UID + '/' + timestamp1.toString()
);
var reference2 = fb.ref(
fb_db,
'device_realtime/' + UID + '/' + timestamp2.toString()
);
fb.remove(reference1)
fb.remove(reference2)
Code that writes data every 1 minute:
const fb = global.get('database');
const fb_db = global.get('fb_db');
var timestamp = Math.round(msg.payload / 1000);
var UID = 'uid1';
var a1 = 0 + Math.floor(Math.random() * 100);
var p1 = 50 + Math.floor(Math.random() * 20);
var t1 = 20 + Math.floor(Math.random() * 20);
//Send data to Firebase
const ref = fb.ref(
fb_db,
'device_trends/' + UID + '/' + timestamp.toString()
);
fb.set(ref, {
a1: a1,
p1: p1,
t1: t1
});
Screenshot of the entire flow:
Upvotes: 0
Views: 62
Reputation: 168843
To expand on the discussion in comments:
That Downloads figure takes into account all outbound traffic from the database, including e.g. any possible OK responses to writes made.
Based on the figures quoted and some napkin math, it seems that every write corresponds to about 200 bytes of data downloaded.
Upvotes: 2