Files
iot/src/db/devicemessages.js
2022-03-30 19:34:32 +03:00

95 lines
3.7 KiB
JavaScript

//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));
}
})();
};