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

 找回密码
 立即注册
查看: 3988|回复: 14

[流程系列] 请教关于状态之间转变的条件判断写法

[复制链接]

3

主题

37

帖子

620

积分

高级会员

Rank: 4

积分
620
金钱
583
HASS币
0
发表于 2021-9-1 13:34:49 | 显示全部楼层 |阅读模式
在HASS自动化上面有 设备状态 从 on变成off 这个条件满足后再触发机制(不是单纯一个oFF状态)。 请问node上面 怎么写这种状态转变条件,感谢大婶帮助。谢谢

回复

使用道具 举报

76

主题

1356

帖子

1万

积分

元老级技术达人

积分
18115
金钱
16719
HASS币
290
发表于 2021-9-1 13:59:18 | 显示全部楼层
用下面的两个值可实现:
msg.data.old_state.state;
msg.data.new_state.state;
回复

使用道具 举报

3

主题

37

帖子

620

积分

高级会员

Rank: 4

积分
620
金钱
583
HASS币
0
 楼主| 发表于 2021-9-1 14:02:25 | 显示全部楼层
dscao 发表于 2021-9-1 13:59
用下面的两个值可实现:
msg.data.old_state.state;
msg.data.new_state.state;

有例子吗?不知怎么用
回复

使用道具 举报

2

主题

239

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
573
HASS币
20
发表于 2021-9-1 14:27:33 | 显示全部楼层
nodered是基于事件机制的,如果没有发生状态改变,是不会触发的

当满足这个条件后,可以获取所需要的其他节点状态,然后靠change节点移动,然后全部状态都存下来后,执行switch节点
回复

使用道具 举报

3

主题

37

帖子

620

积分

高级会员

Rank: 4

积分
620
金钱
583
HASS币
0
 楼主| 发表于 2021-9-1 14:37:11 | 显示全部楼层
jack9603301 发表于 2021-9-1 14:27
nodered是基于事件机制的,如果没有发生状态改变,是不会触发的

当满足这个条件后,可以获取所需要的其他 ...

这种机制是判断同一个节点的状态变化。 这样就是锁定 这个设备必须是从 on状态变成off状态才触发(也就是说这个off状态不一定是从on转变过来的,也可能是其它如:unavailable 状态变成off,当设备出现某些故障时候就报unavailable状态)。
所以要限定传感器必须是从一个状态到另一个状态才触发机制。
不知是不是讲明白了。
回复

使用道具 举报

2

主题

239

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
573
HASS币
20
发表于 2021-9-1 14:42:48 | 显示全部楼层
sea_dark 发表于 2021-9-1 14:37
这种机制是判断同一个节点的状态变化。 这样就是锁定 这个设备必须是从 on状态变成off状态才触发(也就是 ...
msg.data.old_state.state;
msg.data.new_state.state;


查查有没有这两个字段 一个function节点 或者2个switch
回复

使用道具 举报

3

主题

37

帖子

620

积分

高级会员

Rank: 4

积分
620
金钱
583
HASS币
0
 楼主| 发表于 2021-9-1 14:58:52 | 显示全部楼层
jack9603301 发表于 2021-9-1 14:42
查查有没有这两个字段 一个function节点 或者2个switch

function不知怎么写, 试试2个switch ,串联先on后off 不行。
回复

使用道具 举报

2

主题

239

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
573
HASS币
20
发表于 2021-9-1 15:50:45 | 显示全部楼层
sea_dark 发表于 2021-9-1 14:58
function不知怎么写, 试试2个switch ,串联先on后off 不行。

js代码而已
回复

使用道具 举报

3

主题

37

帖子

620

积分

高级会员

Rank: 4

积分
620
金钱
583
HASS币
0
 楼主| 发表于 2021-9-1 15:54:13 | 显示全部楼层

高人指导下,谢谢
回复

使用道具 举报

2

主题

239

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
573
HASS币
20
发表于 2021-9-1 16:18:09 | 显示全部楼层
sea_dark 发表于 2021-9-1 15:54
高人指导下,谢谢
var setting = msg.setting.time
var query = msg.query.time
if ((query.hours >= setting.hours) || ((setting.hours == query.hours) && (query.minutes >= setting.minutes))) {
    msg.payload = "on"
} else {
    msg.payload = "off"
}
return msg;


这是我其他功能的function代码
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-20 00:55 , Processed in 0.066411 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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