flows (5).json (5.2 KB)
这个是我现在正常用的流 你看看可以优化下不 也就是重启服务器后会有要手动开关设备获取状态的问题
要么你就把它存到数据库中,这样就和hass完全一样了。我不知道语句是什么样子的,我记得哪位大佬发过一个教程,node-red数据库存取。应该不难。我是从来不停node-red的,所以没考虑过这个问题 我做的一些自动控制,一般都不太考虑反馈问题,除非它的反馈特别重要。家里面哪个灯亮着,哪个灯关着。看都看到了啊
设备少 没问题 设备多了 比如100来个 你服务器出问题 或者有需要重启服务器的时候 每个设备都要手动开关获取一次状态 得多坑啊
厉害啊,兄弟,这做的多好啊。我不知道我理解的对不对啊,你是有一堆插座或者类似的东西进行控制。我有几个建议供你参考啊
- 设备端的主动反馈。如果是sonoff,默认是5分钟刷新一次,我自己的改成了2分钟。所以,如果node-red主机重启,你不用管他,最多5分钟就会刷新过来。
- hass的机制。我理解hass也不是通过记录设备端最后一次状态进行控制的,一般是通过mqtt的保留配置进行判断。而且mqtt的保留很绕的,很多逻辑都是超出我们的想象。
- node-red重启后如何决定各设备的状态,它需要一套机制,就像mqtt一样。因为所谓的最后状态并不靠谱。
- 其实你的这个问题也曾经是困扰我的问题。但最后我“明白了”。是我多虑了,家庭自动化控制也相当于设备级的自动化控制,要想精准,就必须要拿到设备的实时反馈,否则都是不靠谱的;另一方面,现在家电市场上几乎所有的产品,几乎都“没有反馈”,比如315/433类的,红外类的。大多数家电的控制反馈,一旦断电重启,一定会给一个“初始状态。最重要的一点,也是让我最终放弃大多数的反馈方案的原因,就是我们完全可以看见它的状态。从安全角度,一定要谨记一点,设备在控制系统重启后恢复停止服务前的状态,是最危险的,在企业应用中,是绝对被禁止的。至少在家里可能会半夜自己亮灯 。我开始的时候经常半夜亮灯。
所以,建议你
- 查查你的设备mqtt多长时间刷新一次,在这个时间内,能不能忍受这个时间的状态与设备不匹配
- 制定一个服务器重启策略,比如每周六凌晨5点。主动重启,清理潜在的垃圾
感谢 医生大佬有做一个一键获取所有设备状态的流 你懂代码 估计很快就懂 但是他做的是zigbee网关的 dc1 tc1 还有其他一些灯具设备的状态的原理应该一样 我不懂代码 只能等着大佬门喂招了
花开堪折枝
#26
学习是一个过程,而不单单只要结果,学习以下医生,半年前他啥也不懂
大佬 教一招呗 nr如何主动获取mqtt设备的状态,好用于控制设备开和关