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

 找回密码
 立即注册
查看: 3119|回复: 9

[流程系列] 如何通过节点启动多个设备

[复制链接]

13

主题

220

帖子

644

积分

高级会员

Rank: 4

积分
644
金钱
422
HASS币
0
发表于 2021-9-28 20:13:24 | 显示全部楼层 |阅读模式
本帖最后由 zhouhui920 于 2021-9-29 14:45 编辑

目前想通过function节点函数 if判断一个开关状态(开 所有灯开 关 所有灯关闭),然后启动或者关闭一系列的灯,间隔2ms 毫秒    函数要怎么写?直接在函数里面可否启动turn_on多个id实体么?麻烦大佬给个参考。  后期可能通过遥控器开关门状态,全部启动设备,不想搞好几个call节点,想一个函数里面全部解决,高手支招下。给个思路也行。


自己写了下子流程,好大。
Node-RED _ zh920.synology.me_2021929639292.png
回复

使用道具 举报

21

主题

166

帖子

2228

积分

论坛DIY达人

积分
2228
金钱
2057
HASS币
30
发表于 2021-9-28 21:31:29 | 显示全部楼层
可以做,但是没必要,放节点调试也方便看的也清楚,看文档自己写吧
All properties need to be under msg.payload.
Merging
If the incoming message has a payload property with domain, service set it will override any config values if set.
If the incoming message has a payload.data that is an object or parsable into an object these properties will be merged with any config values set.
If the node has a property value in its config for Merge Context then the flow and global contexts will be checked for this property which should be an object that will also be merged into the data payload.
Merge Resolution
As seen above the data property has a lot going on in the way of data merging, in the end, all of these are optional and the rightmost will win if a property exists in multiple objects
Config Data, Global Data, Flow Data, Payload Data ( payload data property always wins if provided
domainstring
Service domain to call
servicestring
Service service to call
dataObject
Service data to send with API call
回复

使用道具 举报

27

主题

2126

帖子

8688

积分

论坛元老

Rank: 8Rank: 8

积分
8688
金钱
6557
HASS币
30

论坛元老

发表于 2021-9-29 08:09:03 | 显示全部楼层
是批量控制多个实体的意思么,、

entity_id:
    - 1111
    - 2222
    - 3333

同一类型是这样,不同类型就在action里再加
回复

使用道具 举报

13

主题

220

帖子

644

积分

高级会员

Rank: 4

积分
644
金钱
422
HASS币
0
 楼主| 发表于 2021-9-29 09:00:10 | 显示全部楼层
本帖最后由 zhouhui920 于 2021-9-29 09:02 编辑
情非殇 发表于 2021-9-29 08:09
是批量控制多个实体的意思么,、

entity_id:

就是在函数节点里面,如何通过命令能一次性开关多个设备,而不需要用call节点,使用call节点要建立好几个,挺麻烦。
回复

使用道具 举报

13

主题

220

帖子

644

积分

高级会员

Rank: 4

积分
644
金钱
422
HASS币
0
 楼主| 发表于 2021-9-29 09:04:58 | 显示全部楼层
innx 发表于 2021-9-28 21:31
可以做,但是没必要,放节点调试也方便看的也清楚,看文档自己写吧

看来要自己弄个了,想说有没有大神直接有给个参考,那我只能做个子流程弄出来使用
回复

使用道具 举报

76

主题

1372

帖子

2万

积分

元老级技术达人

积分
20491
金钱
19079
HASS币
290
发表于 2021-9-29 12:54:31 | 显示全部楼层
本帖最后由 dscao 于 2021-9-29 13:02 编辑
zhouhui920 发表于 2021-9-29 09:00
就是在函数节点里面,如何通过命令能一次性开关多个设备,而不需要用call节点,使用call节点要建立好几个 ...

函数写好后,最后还是要加一个call节点才能控制。只是call节点中的参数保持空白,全部从函数中传过来的。本质上是一样的,一个call就可以处理。如果是同一操作同一域,call节点的多个实体id用逗号分隔就可以了。
0.jpg
call service节点中填写的方式


0.jpg

函数+空白call节点的方式。


回复

使用道具 举报

27

主题

2126

帖子

8688

积分

论坛元老

Rank: 8Rank: 8

积分
8688
金钱
6557
HASS币
30

论坛元老

发表于 2021-9-29 14:08:44 | 显示全部楼层
zhouhui920 发表于 2021-9-29 09:00
就是在函数节点里面,如何通过命令能一次性开关多个设备,而不需要用call节点,使用call节点要建立好几个 ...
msg.payload = {
    "domain": switch,
    "service": switch.turn_on,
    "data": {
        "entity_id": switch.xxx
        }
    }


这个在call节点的说明中作者已经写过例子了,就这种,跟下面dscao说的一样,函数+空白call
回复

使用道具 举报

13

主题

220

帖子

644

积分

高级会员

Rank: 4

积分
644
金钱
422
HASS币
0
 楼主| 发表于 2021-9-29 14:45:12 | 显示全部楼层
本帖最后由 zhouhui920 于 2021-9-29 14:48 编辑
dscao 发表于 2021-9-29 12:54
函数写好后,最后还是要加一个call节点才能控制。只是call节点中的参数保持空白,全部从函数中传过来的。 ...

函数多个id要怎么添加?函数也可以用逗号写多个,也就是call节点全部留空就好了。了解了,我自己写了个,好大,每个call搞个,大大泡泡糖啦
回复

使用道具 举报

13

主题

220

帖子

644

积分

高级会员

Rank: 4

积分
644
金钱
422
HASS币
0
 楼主| 发表于 2021-9-29 15:08:36 | 显示全部楼层
情非殇 发表于 2021-9-29 14:08
这个在call节点的说明中作者已经写过例子了,就这种,跟下面dscao说的一样,函数+空白call ...

了解了,感谢,也就是还是要用call节点,只是节点就只有1个即可。多个entity_id如何添加注解,后期要不然不知道哪个是什么设备?可以多个逗号添加//注释么?另外同时触发,是否需要添加延时?
回复

使用道具 举报

27

主题

2126

帖子

8688

积分

论坛元老

Rank: 8Rank: 8

积分
8688
金钱
6557
HASS币
30

论坛元老

发表于 2021-9-30 19:25:11 | 显示全部楼层
zhouhui920 发表于 2021-9-29 15:08
了解了,感谢,也就是还是要用call节点,只是节点就只有1个即可。多个entity_id如何添加注解,后期要不然 ...

多设备可以用逗号,也可以用回车加横线,你试试
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-6-26 17:24 , Processed in 0.196700 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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