//devicemessages var mysql = require('mysql2'); // const fs = require('fs'); // const path = require('path'); // const Sequelize = require('sequelize'); // const basename = path.basename(__filename); const env = process.env.NODE_ENV || 'development'; console.log("ENV: %s", env); const config = require(__dirname + '/../../config/config.json')[env]; console.log('DB: Checking config sources in devicemessages.js'); console.log('DB: Checking config sources: process.env.DATABASE_HOST: "%s"', process.env.DATABASE_HOST); console.log('DB: Checking config sources: config.host : "%s"', config.host ); console.log('DB: Checking config sources: process.env.DATABASE_PORT: %s', process.env.DATABASE_PORT); console.log('DB: Checking config sources: config.port : %s', config.port ); console.log('DB: Checking config sources: process.env.DATABASE_NAME: "%s"', process.env.DATABASE_NAME); console.log('DB: Checking config sources: config.database : "%s"', config.database ); console.log('DB: Checking config sources: process.env.DATABASE_USER: "%s"', process.env.DATABASE_USER); console.log('DB: Checking config sources: config.username : "%s"', config.username ); // console.log('DB: Checking config sources: process.env.DATABASE_PASS: "%s"', process.env.DATABASE_PASS); // console.log('DB: Checking config sources: config.password : "%s"', config.password ); var pool = mysql.createPool({ connectionLimit : 20, host : process.env.DATABASE_HOST || config.host || '127.0.0.1', port : process.env.DATABASE_PORT || config.port || '3306', user : process.env.DATABASE_USER || config.username, password : process.env.DATABASE_PASS || config.password, database : process.env.DATABASE_NAME || config.database || 'iot' }); //const got = require('got'); pool.on('acquire', function (connection) { console.log('Connection %d acquired', connection.threadId); }); exports.findByName = function(fieldName, days, cb) { process.nextTick(function() { // console.log("findByName(" +fieldName + ",?" + days +")" ); // days = days|365; console.log("findByName(" +fieldName + "," + days +")" ); pool.getConnection(function(err, con) { if (err) throw err; // not connected! con.query("SELECT * FROM devicemessages WHERE (field_name=? OR ? IS NULL) AND (timestamp >= ( CURDATE() - INTERVAL ? DAY ))", [fieldName, fieldName, days], (err, data) => { con.release(); if (!err) { cb(null, data); } else { cb(new Error('SQL Error: ' + err)); } }); }); }); } exports.insert = function(device_id, field_name, value, cb){ var params = [device_id, field_name,value]; let sql = `INSERT INTO devicemessages(device_id,field_name,field_value,timestamp) VALUES (?,?,?,NOW());`; pool.getConnection(function(err, con) { if (err) throw err; // not connected! con.query(sql,params,(err, r) => { con.release(); //if(!cb) {return;} if (err) { console.log("error: ", err); cb && cb(new Error('SQL Error: ' + err)); }else{ console.log("inserted record: ", { id: r.insertId}); cb && cb(null, { id: r.insertId, ...params }); } }); }); } exports.getFromDht = function(url, cb) { (async () => { try { //! const dht = await got('http://192.168.1.126/json') var j = JSON.parse(body); if(j.dht && j.dht.hum <= 100 && j.dht.hum >= 0){ exports.insert(0, "A23_DHT", dht.body, cb); }else { console.log("Skip! Got invalid data from DHT: " + dht); } } catch (ex) { console.log("DHT exception:" + ex); cb && cb(new Error('SQL Error: ' + ex)); } })(); };