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