var logger = require('winston'); var sensor = require("ds18x20") var devices; var channel; var current_temp; const Sequelize = require('sequelize'); const sequelize = new Sequelize('postgres://postgres:postgres-pi@localhost:5432/home_automation'); sequelize .authenticate() .then(() => { logger.info('Connection to database has been established successfully.'); }) .catch(err => { logger.info('Unable to connect to the database:', err); }); module.exports.start = function(router, channel_config){ channel = channel_config logger.info("Starting External temperature module"); var isLoaded = sensor.isDriverLoaded(); if(isLoaded){ logger.info("ds18x20 sensor drivers are loaded.") devices = sensor.list(); console.log(devices); setInterval(function () { var temperature = readSensor(); }, 5000); setInterval(function () { saveData(); }, 300000); } else { logger.info("ds18x20 sensor drivers are not loaded.") } router.get('/external_temperature', function (req, res) { logger.info("Received request for external temperature data"); sequelize.query("SELECT * FROM conditions", { type: sequelize.QueryTypes.SELECT}).then(data => { res.json(data); }) }); } function readSensor() { // Read Sensor data if(devices == undefined){ devices = sensor.list(); } sensor.get(devices[devices.length - 1], function(err, temp){ if(err){ console.log(err); } channel.emit('temperature_external', { temperature: temp }); current_temp = temp; }); } function saveData(){ sequelize.query("INSERT INTO conditions(time, location, temperature) VALUES (NOW(), 'external', " + current_temp + ");").spread((results, metadata) => { // Results will be an empty array and metadata will contain the number of affected rows. }) }