NodeRed自动化——根据光照亮度及人体感应存在状态控制开关

 1 前言

本文章原文发表于我的微信公众号,请大家关注阅读,涉及的源代码等都在公众号,扫描以下二维码即可关注。

也可点击链接访问:NodeRed自动化——根据光照亮度及人体感应存在状态控制开关

2.概述

开篇前先感谢新老朋友的支持与关注,您的持续支持与关注是我坚持下去的动力,如果您喜欢该篇文章,还请点赞、转发,再次表示感谢!

前面硬件篇讲到人体感应探测器控制灯具的与方式与原理,这是我目前在用的方案,当然你可能采用的是其他方案,但是这个方案是两年前的,目前工作的很好,下面讲解如何在NodeRed中实现自动化控制。

3.方案流程

方案的流程:控制开关和人体存在探测器接入zigbee2mqtt⟶在NodeRed中订阅人体存在探测器的主题⟶解析Json数据⟶NodeRed判断执行⟶发布至zigbee2mqtt控制开关的开启或关闭。

4.自动化流程

首先订阅来自zigbee2mqtt的主题,值得注意的订阅主题连接的MQTT服务器不能是zigbee2mqtt的地址,而是zigbee2mqtt所连接的MQTT服务器,例如:z2m连接到了HA就填写HA的MQTT服务器地址,因为我在Z2m主机上也同时部署了MQTT服务器所以我的MQTT的IP地址和z2m服务器IP地址相同。

我订阅主题为:zigbee2mqtt/入户感应探测器,如果发现订阅到数据可以触发一次感应探测器,订阅到主题的数据格式如下:

{"led_status":"OFF","light_off_luminance_prefer":1037,"light_on_luminance_prefer":85,"linkquality":48,"luminance_level":1,"mode":"basic_detection","o_sensitivity":"normal","occupancy":false,"reference_luminance":423,"v_sensitivity":"normal_priority","vacancy_delay":10,"vacant_confirm_time":10}

以上Json数据中虽然信息量大,但是我只需要reference_luminance(参考亮度)和occupancy(存在状态),然后用template节点提取这个两个值,流程图如下:

图片

流程中采用change节点和函数节点进行分析判断,当亮度小于等于85且检测到有人时就立即发送ON指令开启开关,然后在10S内如果再次有状态发生变化即出现人体存在触发则重新计时判断,期间不会关闭开关,如果超过10S检测到没有人存在则关闭开关。

当然MQTT发布可以是控制z2m中的开关也可以是其他非z2m的的设备,例如支持触发开启Modbus设备;如果是z2m设备,发布的主题应该加控制路径+/set,例如我的发布主题为:zigbee2mqtt/入户感应开关/set。

5.测试

我采用函数节点模拟了亮度值和存在状态,流程如下:

图片

大家可以导入流程自行测试,流程源代码请关注公众号获取。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值