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.
 

128 lines
3.2 KiB

const mqtt = require('mqtt');
const pir = require('./people/pir.js').pir;
const zoneObj = require('./people/zone.js').zone;
const lightObj = require('./mqtt/light.js').light
const matchObj = require('./match.js').match;
const interface = require('./people/interface.js').interface;
const lightCtlObj = require('./lightCtl/core.js').core;
const peo = require('./mqtt/peo.js').peo;
const isolatObj = require('./lightCtl/isolat.js').isolat;
process.setMaxListeners(0);
var client = mqtt.connect('mqtt://127.0.0.1');
var light = {
hall: lightObj(client, 'hall'),
din: lightObj(client, 'din'),
liv: lightObj(client, 'liv'),
kit: lightObj(client, 'kit')
};
var p = {
hall: [
pir(client, 'hall', 0),
pir(client, 'hall', 1),
pir(client, 'hall', 2),
pir(client, 'hall', 3),
],
din: [
pir(client, 'din', 0),
pir(client, 'din', 1),
pir(client, 'din', 2),
pir(client, 'din', 3)
],
liv: [
pir(client, 'liv', 0),
pir(client, 'liv', 1),
pir(client, 'liv', 2),
pir(client, 'liv', 3)
],
livb: [
pir(client, 'livb', 0),
pir(client, 'livb', 1),
pir(client, 'livb', 2),
pir(client, 'livb', 3)
],
kit: [
pir(client, 'kit', 0),
pir(client, 'kit', 1),
pir(client, 'kit', 2),
pir(client, 'kit', 3)
]
}
var zone = {
hall: [
zoneObj('h0', [p.hall[0], p.hall[1]]),
zoneObj('h1', [p.hall[2]])
],
din: [
zoneObj('d0', [p.hall[3], p.kit[0], p.kit[1], p.din[0], p.din[1], p.livb[0]]),
zoneObj('d1', [p.din[2], p.din[3]])
],
kit: [
zoneObj('k0', [/*p.kit[2],*/ p.kit[3]])
],
liv: [
zoneObj('l0', [p.liv[0], p.livb[1]]),
zoneObj('l1', [p.livb[2], p.livb[3], p.liv[2], p.liv[3]])
]
};
client.on('connect', ()=>{
client.subscribe('hass/snsr/#', (err)=>{
if(!err){
client.publish('autoLight/state', 'online');
console.log(new Date().toTimeString() + ' - MQTT Connected!!');
}
});
});
//var match = matchObj(zone, light);
var i = {
h: interface(zone.hall[0], zone.hall[1]),
hd: interface(zone.hall[1], zone.din[0]),
d: interface(zone.din[0], zone.din[1]),
dk: interface(zone.din[1], zone.kit[0]),
dl: interface(zone.din[0], zone.liv[1]),
l: interface(zone.liv[0], zone.liv[1])
}
/* room reg */
var room = {
hall: require('./room/hall.js').hall(zone, i),
din: require('./room/din.js').din(zone, i, p),
liv: require('./room/liv.js').liv(zone, i),
kit: require('./room/kit.js').kit(zone, i),
}
/* lightCtl reg */
var lightCtl = {
//hall: lightCtlObj(room.hall, light.hall),
//din: lightCtlObj(room.din, light.din),
//liv: lightCtlObj(room.liv, light.liv),
//kit: lightCtlObj(room.kit, light.kit)
}
/* peo mqtt */
var peo_mqtt = {
//hall: peo(client, room.hall),
//din: peo(client, room.din),
//liv: peo(client, room.liv),
//kit: peo(client, room.kit)
}
/* 走廊入口 */
var isolat = {
hall: isolatObj(room.hall, light.hall, [p.hall[0], p.hall[1]], lightCtl.hall)
//door: isolatObj(room.din, light.din, [p.din[0], p.livb[0]], lightCtl.din),
}