diff --git a/Raspberry Pi/package.json b/Raspberry Pi/package.json new file mode 100644 index 0000000..d05b860 --- /dev/null +++ b/Raspberry Pi/package.json @@ -0,0 +1,15 @@ +{ + "name": "Raspberry-Relay-Control", + "version": "1.0.0", + "description": "Raspberry Pi Code", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js" + }, + "author": "AG & SA", + "license": "ISC", + "dependencies": { + "firebase-admin": "^6.4.0" + } +} diff --git a/Raspberry Pi/server.js b/Raspberry Pi/server.js new file mode 100644 index 0000000..51e7a42 --- /dev/null +++ b/Raspberry Pi/server.js @@ -0,0 +1,58 @@ +/* Firebase Admin SDK Configuration */ +var admin = require("firebase-admin"); +var fs = require('fs'); + +const ACTIVATE = "activate"; +const DEACTIVATE = "deactivate"; +const RELAY = "number"; + +const PATH_TO_RELAYS = { + 1: "/sys/class/gpio/gpio23/value", + 2: "/sys/class/gpio/gpio24/value" +}; + +var serviceAccount = require(""); + +admin.initializeApp({ + credential: admin.credential.cert(serviceAccount), + databaseURL: "" +}); + +// Database Init +var defaultDatabase = admin.database(); +var ref = defaultDatabase.ref(); + +// You can retrieve services via the defaultApp variable... +var defaultDatabase = admin.database(); +var ref = defaultDatabase.ref(); + +entitiesFromAssistant = {} + +var ref = defaultDatabase.ref(); + +ref.on('value', function (snapshot) { + snapshot.forEach(function (childSnapshot) { + + var key = childSnapshot.key; + var val = childSnapshot.val(); + + entitiesFromAssistant[key] = val; + + }); // snapshot.forEach(function (childSnapshot) + + console.log(entitiesFromAssistant); + + Object.entries(PATH_TO_RELAYS).forEach(([relay, path]) => { + if (relay == entitiesFromAssistant[RELAY]) { + if (entitiesFromAssistant[ACTIVATE]) { + fs.writeFileSync(path, entitiesFromAssistant[ACTIVATE], function (err) { + if (err) throw err; + }); // fs.writeFileSync + } else { + fs.writeFileSync(path, entitiesFromAssistant[DEACTIVATE], function (err) { + if (err) throw err; + }); // fs.writeFileSync + } // else + } // if (relay == entitiesFromAssistant[RELAY]) + }); // Object.entries(PATH_TO_RELAYS).forEach +}); // ref.on('value', function (snapshot)