master
iotcat 2 years ago
parent 05d8d05e15
commit f25a02d406
  1. 18
      index.js
  2. 7
      lightCtl/core.js
  3. 43
      lightCtl/isolat.js
  4. 15
      mqtt/light.js
  5. 9
      room/din.js
  6. 8
      room/hall.js
  7. 11
      room/kit.js
  8. 23
      room/liv.js

@ -105,24 +105,24 @@ var room = {
/* 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)
//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)
//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),
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),
}

@ -5,6 +5,13 @@ var core = (room, light) => {
LastOffTime: 0,
};
setInterval(()=>{
if(room.state != light.state){
room.state = light.state;
}
room.LastSwiTime = light.LastSwiTime;
}, 50);
room.on('peopleIn', ()=>{
if(room.num == 1){
light.on();

@ -1,6 +1,46 @@
var isolat = (room, light, pir, lightCtl) => {
const endDur = 120 * 1000;
let pirStates = [false, false];
let endT = 0;
let getT = ()=>new Date().valueOf();
let LightSetter = function(ind, val){
pirStates[ind] = val;
console.log(pirStates);
if(pirStates.every((t)=>t)) {
light.on();
endT = getT();
return;
}
if(endDur + endT < getT()){
light.off();
return;
}
}
setInterval(()=>{
if(endDur + endT < getT()){
light.off();
}
}, 1000);
pir.forEach((item, ind)=>{
item.on('peopleIn', ()=>{
LightSetter(ind, true);
});
item.on('peopleOut', ()=>{
LightSetter(ind, false);
});
});
/* reg */
/*
pir.forEach((item)=>{
item.on('peopleIn', ()=>{
if(!room.num){
@ -18,6 +58,7 @@ var isolat = (room, light, pir, lightCtl) => {
}
});
});
*/
}
exports.isolat = isolat;

@ -4,6 +4,7 @@ var light = (client, clientId) => {
state: false,
LastOnTime: new Date().valueOf(),
LastOffTime: new Date().valueOf(),
LastSwiTime: 0,
on: ()=>{
client.publish('hass/autoLight/'+clientId, '1');
},
@ -19,8 +20,22 @@ var light = (client, clientId) => {
if(msg == 1) o.state = true;
if(msg == 0) o.state = false;
}
if(subject == 'hass/snsr/'+clientId+'/light'){
if(msg == 1) o.state = true;
if(msg == 0) o.state = false;
}
if(subject == 'hass/snsr/'+clientId+'/swi'){
o.LastSwiTime = new Date().valueOf();
}
if(subject == 'hass/ctl/'+clientId+'/light'){
o.LastSwiTime = new Date().valueOf();
if(msg == 1) o.state = true;
if(msg == 0) o.state = false;
}
});
return o;
}

@ -5,6 +5,8 @@ var din = (zone, interface, p) => {
id: 'din',
num: 0,
numAct: 0,
state: false,
LastSwiTime: 0,
MaxNum: 5,
LastActTime: new Date().valueOf(),
MaxSensitTime: 1000 * 60 * 2,
@ -91,10 +93,11 @@ var din = (zone, interface, p) => {
if( new Date().getHours() >= 18 && new Date().getHours() <= 20 ) o.isNight = true;
else o.isNight = false;
if((o.numAct && o.act.rate > .2) || o.act.rate > .4){
if( o.act.rate > .4){
if(!o.num) pIn();
}else{
if(o.num) pOut();
}
if(o.act.rate < .02){
// if((o.num || o.state) && o.LastSwiTime < new Date().valueOf() - 1000*60*20) pOut();
}
o.extTime = ((o.num == 1) && o.isNight)*1000*60*1;

@ -5,7 +5,9 @@ var hall = (zone, interface) => {
num: 0,
MaxNum: 2,
LastActTime: new Date().valueOf(),
MaxSensitTime: 1000 * 60 * 1,
state: false,
LastSwiTime: 0,
MaxSensitTime: 1000 * 60 * 3,
func: {
peopleIn: [],
peopleOut: [],
@ -61,11 +63,11 @@ var hall = (zone, interface) => {
})
interface.h.on('backward', ()=>{
pOut();
//pOut();
})
interface.hd.on('forward', ()=>{
pOut();
//pOut();
});
/* 超时衰减 */

@ -7,6 +7,8 @@ var kit = (zone, interface) => {
num: 0,
numAct: 0,
MaxNum: 3,
state: false,
LastSwiTime: 0,
LastActTime: new Date().valueOf(),
MaxSensitTime: 1000 * 60 * 2,
func: {
@ -70,10 +72,11 @@ var kit = (zone, interface) => {
/* 超时衰减 */
setInterval(()=>{
if((o.numAct && o.act.rate > .2) || o.act.rate > .3){
if(!o.num) pIn();
}else{
if(o.num) pOut();
if(o.act.rate > .6){
//if(!o.num) pIn();
}
if(o.act.rate < .02){
//if((o.num || o.state) && o.LastSwiTime < new Date().valueOf() - 1000*60*15) pOut();
}
/*if(o.num
&& o.LastActTime + o.MaxSensitTime * o.act.rate < new Date().valueOf()

@ -7,6 +7,8 @@ var liv = (zone, interface) => {
num: 0,
numAct: 0,
MaxNum: 5,
state: false,
LastSwiTime: 0,
LastActTime: new Date().valueOf(),
MaxSensitTime: 1000 * 60 * 2,
extTime: 0,
@ -25,7 +27,7 @@ var liv = (zone, interface) => {
},
act: {
rate: 0,
maxDetectTime: 1000 * 60 * 30,
maxDetectTime: 1000 * 60 * 25,
actTimeArray: []
}
};
@ -76,27 +78,28 @@ var liv = (zone, interface) => {
if( new Date().getHours() >= 19 && new Date().getHours() <= 21 ) o.isNight = true;
else o.isNight = false;
/*
let r = 0.3;
if(new Date().getHours() == 19) {
r = 0.1;
o.act.maxDetectTime = 1000 * 60 * 15;
o.act.maxDetectTime = 1000 * 60 * 20;
}else if(new Date().getHours() == 20) {
r = 0.05;
o.act.maxDetectTime = 1000 * 60 * 30;
}else if(new Date().getHours() == 21) {
r = 0.05;
o.act.maxDetectTime = 1000 * 60 * 15;
o.act.maxDetectTime = 1000 * 60 * 20;
}else{
r = 0.3;
o.act.maxDetectTime = 1000 * 60 * 10;
o.act.maxDetectTime = 1000 * 60 * 20;
}
if(o.numAct || o.act.rate > r){
if(!o.num) pIn();
}else{
if(o.num) pOut();
*/
if(o.act.rate > .35){
//if(!o.num) pIn();
}
if(o.act.rate < .001){
//if((o.num || o.state) && o.LastSwiTime < new Date().valueOf() - 1000*60*40) pOut();
}

Loading…
Cancel
Save