You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

115 lines
3.2 KiB

const mqtt = require('mqtt').connect('mqtt://192.168.3.4');
const fs = require('fs');
const redis = require('redis').createClient(6379, '127.0.0.1');
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('#', 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());
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());
}
})