小朋友假期到了,在家看电视实在没办法自我控制,有时会连续观看5,6小时,靠小朋友自觉太难了,实在忍无可忍,决心学用node-red控制一下,现分享一个控制电视时间流的思路,供参考和指正;
1)时间控制:控制过去4小时,电视总在线时间;总在线时间根据时间段调整为1或2小时,也可手动临时关闭;
2)到时间先用小爱提醒,如果未主动关闭电视,超过5分钟就用小爱来关闭;
监听电视在线时间,用的是HA的历史传感器,可以统计过去4小时的在线时间;
判断执行的节点函数,也是第一次学着写的。
var time_tip = flow.get('WatchTV_time')||0.75;
var blClose = context.get('countClose')||0;
var blTip = context.get('countTip')||0;
var oldmsg = context.get('oldmsgTime')||msg.payload;
var NewMsg = {};
var time_Close = time_tip + 0.15;
NewMsg.payload = 0;
if (msg.payload >= time_tip && blTip == 0){
NewMsg.payload = 1;
blTip += 1;
}
if (msg.payload >= time_Close && blClose == 0){
NewMsg.payload = 2;
blClose += 1;
}
//未到设定时间或超过设定时间后未关电视,则清除次数(再次动作)
if (msg.payload < time_tip ||(oldmsg > time_tip && msg.payload > oldmsg)){
blTip = 0;
}
if (msg.payload < time_Close || (oldmsg > time_Close && msg.payload > oldmsg)){
blClose = 0;
}
context.set('oldmsgTime',msg.payload);
context.set('countTip',blTip);
context.set('countClose',blClose);
return NewMsg;
运行了几天,感觉还可以,基本控制住了。
|