『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 600|回复: 4

[流程系列] 分享一个用实时更新的全局变量来触发流程的笨方法

[复制链接]

13

主题

49

帖子

430

积分

论坛分享达人

积分
430
金钱
381
HASS币
0
发表于 2024-7-19 11:24:50 | 显示全部楼层 |阅读模式
(在我捣鼓这个之前,我还不知道events:state节点是一有变化即触发,这点跟HA自动化的“每当。。。就”不一样)
刚玩nodered没几天,在gpt帮助下整了这么一出
这套东西,可以实时维护一个全局变量表,给后续或流的其他地方调用
大概就是用event:all监听state_changed事件,然后通过switch或者其他方法提取需要的实体的数据,再用一个function赋值给全局变量
这样一旦有符合条件的实体状态变化,就会更新全局变量表,又或者每30s刷新一下
因为全局变量表输出是实时的,后接的流也能同步触发,对一些依赖数值变化来执行的流,响应速度好一些(大概)

应该会有更简洁的方法吧,这个搞复杂了,不过也算我这个小白进步的一大步了
微信截图_20240719105456.png 微信截图_20240719112136.png

flows (1).zip (32.32 KB, 下载次数: 4)

评分

参与人数 2金钱 +17 收起 理由
xiangboshi + 5 以为是青铜,原来是王者!
隔壁的王叔叔 + 12 感谢楼主分享!

查看全部评分

回复

使用道具 举报

46

主题

1654

帖子

6672

积分

论坛元老

Rank: 8Rank: 8

积分
6672
金钱
5008
HASS币
40
发表于 2024-7-19 12:46:54 | 显示全部楼层
其实可以优化成只用一个函数节点
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

13

主题

49

帖子

430

积分

论坛分享达人

积分
430
金钱
381
HASS币
0
 楼主| 发表于 2024-7-19 17:30:58 | 显示全部楼层
jjcs 发表于 2024-7-19 12:46
其实可以优化成只用一个函数节点

是的,在学习了一下js语法,可以用if语句代替switch节点,将switch与global.set都缝合进去一个function后集合输出
微信截图_20240719172751.png
回复

使用道具 举报

15

主题

108

帖子

1351

积分

论坛技术达人

积分
1351
金钱
1238
HASS币
20

教程狂人

发表于 2024-7-19 22:26:59 | 显示全部楼层
全局变量里面本身就是有这些数据的,有一个 homeassistant 的 key ,存储了所有 ha 实体的信息
回复

使用道具 举报

26

主题

266

帖子

1471

积分

金牌会员

Rank: 6Rank: 6

积分
1471
金钱
1205
HASS币
0
发表于 2024-7-20 22:17:06 | 显示全部楼层
楼主完全没必要搞这么复杂啊,
在全局变量里,有一项 homeassistant.hassio.states...........
里面全部实体的状态本来就都有啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 20:19 , Processed in 0.611062 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表