iotcat 4 years ago
parent 6e1328d2e5
commit b74dad9a1b
  1. 112
      index.js
  2. 5
      package.json
  3. 32
      yarn.lock

@ -1,37 +1,115 @@
const mqtt = require('mqtt').connect('mqtt://192.168.3.4');
const mysql = require('mysql').createConnection({
host : 'db.yimian.xyz',
user : 'home',
password : 'KJ4j2JL6s^k@jsa2',
database : 'home'
});
const fs = require('fs');
const redis = require('redis').createClient(6379, '127.0.0.1');
mysql.connect();
const sql = 'INSERT INTO sola_mqtt(timestamp,topic,value) VALUES(?,?,?)';
var data = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var res = [0, 0, 0, 0];
mqtt.on('connect', function () {
mqtt.subscribe('hass/#', function (err) {
mqtt.subscribe('#', function (err) {
if (!err) {
console.log('Connected...');
mqtt.publish('hass/refresh', '1');
}
})
})
setInterval(()=>{
let o = [];
let date = new Date();
o = o.concat(data)
o.push(date.getHours())
o.push(date.getMonth()+1)
o = o.concat(res);
o = o.map(Number)
redis.get('smartMode', (e, v)=>{
if(v=='0'){
//console.log(date.valueOf(), o);
fs.appendFile('/var/dataset/'+date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+'.dat', '['+o+']\n', ()=>{});
}
});
}, 1000);
mqtt.on('message', function (topic, message) {
// message is Buffer
console.log(topic.toString(), message.toString());
let params = [(new Date()).valueOf(), topic.toString(), message.toString()];
mysql.query(sql,params,function (err, result) {
if(err){
console.log('[INSERT ERROR] - ',err.message);
return;
}
});
if(topic.toString() == 'hass/snsr/hall/p0'){
data[0] = message.toString();
}else if(topic.toString() == 'hass/snsr/hall/p1'){
data[1] = message.toString();
}else if(topic.toString() == 'hass/snsr/hall/p2'){
data[2] = message.toString();
}else if(topic.toString() == 'hass/snsr/hall/p3'){
data[3] = message.toString();
}else if(topic.toString() == 'hass/snsr/din/p0'){
data[4] = message.toString();
}else if(topic.toString() == 'hass/snsr/din/p1'){
data[5] = message.toString();
}else if(topic.toString() == 'hass/snsr/din/p2'){
data[6] = message.toString();
}else if(topic.toString() == 'hass/snsr/din/p3'){
data[7] = message.toString();
}else if(topic.toString() == 'hass/snsr/kit/p0'){
data[8] = message.toString();
}else if(topic.toString() == 'hass/snsr/kit/p1'){
data[9] = message.toString();
}else if(topic.toString() == 'hass/snsr/kit/p2'){
data[10] = message.toString();
}else if(topic.toString() == 'hass/snsr/kit/p3'){
data[11] = message.toString();
}else if(topic.toString() == 'hass/snsr/liv/p0'){
data[12] = message.toString();
}else if(topic.toString() == 'hass/snsr/liv/p1'){
data[13] = message.toString();
}else if(topic.toString() == 'hass/snsr/liv/p2'){
data[14] = message.toString();
}else if(topic.toString() == 'hass/snsr/liv/p3'){
data[15] = message.toString();
}else if(topic.toString() == 'hass/snsr/livb/p0'){
data[16] = message.toString();
}else if(topic.toString() == 'hass/snsr/livb/p1'){
data[17] = message.toString();
}else if(topic.toString() == 'hass/snsr/livb/p2'){
data[18] = message.toString();
}else if(topic.toString() == 'hass/snsr/livb/p3'){
data[19] = message.toString();
}
if(topic.toString() == 'hass/snsr/hall/light'){
res[0] = message.toString();
}else if(topic.toString() == 'hass/snsr/din/light'){
res[1] = message.toString();
}else if(topic.toString() == 'hass/snsr/kit/light'){
res[2] = message.toString();
}else if(topic.toString() == 'hass/snsr/liv/light'){
res[3] = message.toString();
}
if(topic.toString() == 'inner/smartLightMode'){
redis.set('smartMode', message.toString());
}
})

@ -1,11 +1,12 @@
{
"name": "sola_mqtt",
"name": "dataset_generator",
"version": "1.0.0",
"main": "index.js",
"author": "iotcat <i@iotcat.me>",
"license": "MIT",
"dependencies": {
"mqtt": "^3.0.0",
"mysql": "^2.18.1"
"mysql": "^2.18.1",
"redis": "^3.0.2"
}
}

@ -94,6 +94,11 @@ debug@^4.1.1:
dependencies:
ms "^2.1.1"
denque@^1.4.1:
version "1.4.1"
resolved "https://registry.npm.taobao.org/denque/download/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf"
integrity sha1-Z0T/dkHBSMP4ppwwflEjXB9KN88=
duplexify@^3.5.1, duplexify@^3.6.0:
version "3.7.1"
resolved "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
@ -451,6 +456,33 @@ readable-stream@^3.0.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
redis-commands@^1.5.0:
version "1.5.0"
resolved "https://registry.npm.taobao.org/redis-commands/download/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785"
integrity sha1-gNLiBpj+aI8icSf/nlFkp90X54U=
redis-errors@^1.0.0, redis-errors@^1.2.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/redis-errors/download/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
redis-parser@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/redis-parser/download/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=
dependencies:
redis-errors "^1.0.0"
redis@^3.0.2:
version "3.0.2"
resolved "https://registry.npm.taobao.org/redis/download/redis-3.0.2.tgz#bd47067b8a4a3e6a2e556e57f71cc82c7360150a"
integrity sha1-vUcGe4pKPmouVW5X9xzILHNgFQo=
dependencies:
denque "^1.4.1"
redis-commands "^1.5.0"
redis-errors "^1.2.0"
redis-parser "^3.0.0"
reinterval@^1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/reinterval/download/reinterval-1.1.0.tgz#3361ecfa3ca6c18283380dd0bb9546f390f5ece7"

Loading…
Cancel
Save