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

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

[流程系列] 子流程的输入参数怎么传进去?

[复制链接]

7

主题

56

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
金钱
240
HASS币
0
发表于 2020-12-31 09:59:28 | 显示全部楼层 |阅读模式

这是个Node-RED的问题,不知是发在本讨论区还是应该发在疑问讨论区,如果发错地方了,请版主移到其他版块。谢谢!


简化问题模型:我建了一个子流程,设置了三个入口参数a、b、c,这里似乎只能是环境变量。
abc.png
[{"id":"6b4c9ba4.deb134","type":"subflow","name":"abc","info":"","category":"","in":[{"x":80,"y":80,"wires":[{"id":"9eff8f77.86c6c"}]}],"out":[{"x":300,"y":80,"wires":[{"id":"9eff8f77.86c6c","port":0}]}],"env":[{"name":"a","type":"str","value":""},{"name":"b","type":"str","value":""},{"name":"c","type":"str","value":""}],"color":"#DDAA99"},{"id":"9eff8f77.86c6c","type":"function","z":"6b4c9ba4.deb134","name":"","func":"// use a, b, c\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":200,"y":80,"wires":[[]]}]


使用这子流程,在前面添加一个比如function节点,想要设置好abc的参数,该怎么写?
use.png

[{"id":"6b4c9ba4.deb134","type":"subflow","name":"abc","info":"","category":"","in":[{"x":80,"y":80,"wires":[{"id":"9eff8f77.86c6c"}]}],"out":[{"x":300,"y":80,"wires":[{"id":"9eff8f77.86c6c","port":0}]}],"env":[{"name":"a","type":"str","value":""},{"name":"b","type":"str","value":""},{"name":"c","type":"str","value":""}],"color":"#DDAA99"},{"id":"9eff8f77.86c6c","type":"function","z":"6b4c9ba4.deb134","name":"","func":"// use a, b, c\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":200,"y":80,"wires":[[]]},{"id":"1c05f6a2.f4ef79","type":"tab","label":"use","disabled":false,"info":""},{"id":"b6e78133.51754","type":"subflow:6b4c9ba4.deb134","z":"1c05f6a2.f4ef79","name":"abc","env":[],"x":470,"y":60,"wires":[[]]},{"id":"63c4d8fc.e559f8","type":"function","z":"1c05f6a2.f4ef79","name":"如何设置后面节点所需的abc参数","func":"//这里如何设置后面节点所需的abc参数?\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":220,"y":60,"wires":[["b6e78133.51754"]]}]


我试了下环境变量、flow变量等都不行。请大神们指点下,这里如何将变量传给a、b、c。

回复

使用道具 举报

46

主题

641

帖子

4411

积分

元老级技术达人

积分
4411
金钱
3740
HASS币
120
发表于 2020-12-31 10:12:00 | 显示全部楼层
顶一下,我也想知道这个问题
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-12-31 10:27:31 | 显示全部楼层
Nero
回复

使用道具 举报

7

主题

56

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
金钱
240
HASS币
0
 楼主| 发表于 2020-12-31 10:47:49 | 显示全部楼层
本帖最后由 discuz 于 2020-12-31 10:54 编辑

感谢大神指导,不过这个似乎只能在子流程中获得数据,在子流程之前好像获得不了它的值。
set.png
function节点设置ab的值
assign.png
直接设置subflow节点中c的值



subf.png
这是subflow子流程中获得abc的值合并到msg中


打印出来,a和b的值没有设置上,不知道是不是哪里弄错了

回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-12-31 11:41:34 | 显示全部楼层
discuz 发表于 2020-12-31 10:47
感谢大神指导,不过这个似乎只能在子流程中获得数据,在子流程之前好像获得不了它的值。

function节点设置 ...

之前肯定不行。
Nero
回复

使用道具 举报

16

主题

168

帖子

1409

积分

金牌会员

Rank: 6Rank: 6

积分
1409
金钱
1241
HASS币
0
发表于 2020-12-31 12:03:04 来自手机 | 显示全部楼层
通过msg传递,需要啥就设置啥属性
回复

使用道具 举报

7

主题

56

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
金钱
240
HASS币
0
 楼主| 发表于 2020-12-31 16:36:21 | 显示全部楼层
pikaq 发表于 2020-12-31 12:03
通过msg传递,需要啥就设置啥属性

前面节点设置msg.xxx,subflow变量名设置为msg.xxx,两个不是一样的东西,传不进去。

你说的msg具体怎么操作?
回复

使用道具 举报

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
发表于 2021-1-7 23:41:22 | 显示全部楼层
子流程只能设置静态的值,无法设置动态的值,如果需要有动态的值,可以通过msg传递,或者存到flow里,在子流程里面通过$flowContext('$parent.logModule')这样的方式获取
回复

使用道具 举报

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
发表于 2021-1-7 23:43:39 | 显示全部楼层
discuz 发表于 2020-12-31 16:36
前面节点设置msg.xxx,subflow变量名设置为msg.xxx,两个不是一样的东西,传不进去。

你说的msg具体怎么 ...

在子流程外面,设置msg.xx,在子流程里面直接读取msg.xx就行了
回复

使用道具 举报

7

主题

56

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
金钱
240
HASS币
0
 楼主| 发表于 2021-1-7 23:50:14 | 显示全部楼层
seon 发表于 2021-1-7 23:43
在子流程外面,设置msg.xx,在子流程里面直接读取msg.xx就行了

我需要的是动态的,能在子流程的节点上设置的值,如上图的a、b、c等的值,不是流程外面传来的值
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 17:57 , Processed in 0.057784 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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