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

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

[技术探讨] 求教怎样用function控制call service节点

[复制链接]

8

主题

67

帖子

727

积分

高级会员

Rank: 4

积分
727
金钱
660
HASS币
0
发表于 2024-3-28 13:43:28 | 显示全部楼层 |阅读模式
本帖最后由 飞叶 于 2024-3-28 13:45 编辑

如图,在function中有个判断,然后想通过传参控制call service节点,不知道该怎么实现了,请教大神给指点下。
function节点代码:

function节点

function节点

需要传的参数:

需要控制的参数

需要控制的参数


参数:

service参数

service参数



回复

使用道具 举报

8

主题

67

帖子

727

积分

高级会员

Rank: 4

积分
727
金钱
660
HASS币
0
 楼主| 发表于 2024-3-28 13:58:47 | 显示全部楼层

求教怎样用function控制call service节点

如图,在function中有个判断,然后想通过传参控制call service节点,不知道该怎么实现了,请教大神给指点下。
function节点代码:
Snipaste_2024-03-28_13-38-23.png

需要传的参数:
Snipaste_2024-03-28_13-39-10.png

参数:
Snipaste_2024-03-28_13-41-52.png
回复

使用道具 举报

11

主题

246

帖子

1971

积分

金牌会员

Rank: 6Rank: 6

积分
1971
金钱
1725
HASS币
10
QQ
发表于 2024-3-28 15:45:48 | 显示全部楼层
我这个是控制散热器的

var status = msg.payload
var data = msg.data

if (status <= 28) {
  msg.payload = {
    "domain": "fan",
    "service": "turn_off",
    "target": {
      "entity_id": "fan.n2_fan"
    }
  };
  node.send(msg);
} else {
  var targetPercentage = Math.round((status - 28) * 6.5) + 25;
  targetPercentage = Math.min(100, Math.max(25, targetPercentage)); // 确保目标百分比在范围内
  
  if (data.attributes.percentage !== targetPercentage) {
    msg.payload = {
      "domain": "fan",
      "service": "set_percentage",
      "data": {
        "percentage": targetPercentage
      },
      "target": {
        "entity_id": "fan.n2_fan"
      }
    };
    node.send(msg);
  }
}

评分

参与人数 1金钱 +12 收起 理由
隔壁的王叔叔 + 12 感谢楼主分享!

查看全部评分

回复

使用道具 举报

40

主题

2176

帖子

8286

积分

元老级技术达人

积分
8286
金钱
6095
HASS币
110
发表于 2024-3-28 15:57:33 | 显示全部楼层
function节点输出1或0,后面加个switch节点,然后加两个call service节点不就可以了
也可以精简去掉switch节点,function按照call service节点要求输出payload,是turn_on还是turn_off,后接一个call service节点

具体代码 自己尝试或者gpt辅助
回复

使用道具 举报

40

主题

2176

帖子

8286

积分

元老级技术达人

积分
8286
金钱
6095
HASS币
110
发表于 2024-3-28 15:57:39 | 显示全部楼层
function节点输出1或0,后面加个switch节点,然后加两个call service节点不就可以了
也可以精简去掉switch节点,function按照call service节点要求输出payload,是turn_on还是turn_off,后接一个call service节点

具体代码 自己尝试或者gpt辅助
回复

使用道具 举报

7

主题

188

帖子

2344

积分

金牌会员

Rank: 6Rank: 6

积分
2344
金钱
2156
HASS币
0
发表于 2024-3-28 16:28:26 | 显示全部楼层
msg.payload = {
  "domain": `${dom}`,  //对应callservice里范围的switch、light等
  "service": `${serv}` , //对应callservice里服务 turn_off等
  "data": {
    "entity_id": `${entid}`  //对应callservice里 Entity Id
  }
}
return msg;
回复

使用道具 举报

8

主题

67

帖子

727

积分

高级会员

Rank: 4

积分
727
金钱
660
HASS币
0
 楼主| 发表于 2024-3-28 17:05:30 | 显示全部楼层
xlsj519 发表于 2024-3-28 16:28
msg.payload = {
  "domain": `${dom}`,  //对应callservice里范围的switch、light等
  "service": `${serv ...

我去试试,感谢大佬指点
回复

使用道具 举报

22

主题

473

帖子

6295

积分

元老级技术达人

略懂一些皮毛而已!

积分
6295
金钱
5812
HASS币
40
发表于 2024-3-28 23:58:41 来自手机 | 显示全部楼层
现在GPT真的很方便,你把需求一写,直接代码就帮你写好了  GPT支持帮你写homeassistant和nodered里的代码的
回复

使用道具 举报

0

主题

14

帖子

116

积分

注册会员

Rank: 2

积分
116
金钱
102
HASS币
0
发表于 2024-8-17 14:08:11 | 显示全部楼层
请问你成功了吗?我也想用一个call service节点控制开和关,不然每个开关要用两个节点,太多了,太麻烦,如果你成功了请告诉我一下。谢谢!
回复

使用道具 举报

8

主题

67

帖子

727

积分

高级会员

Rank: 4

积分
727
金钱
660
HASS币
0
 楼主| 发表于 2024-8-21 13:56:14 | 显示全部楼层
colaq 发表于 2024-8-17 14:08
请问你成功了吗?我也想用一个call service节点控制开和关,不然每个开关要用两个节点,太多了,太麻烦,如 ...

成功了,具体的参考截图就好 1.png
2.png

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 04:21 , Processed in 0.127943 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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