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

 找回密码
 立即注册
查看: 304|回复: 7

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

[复制链接]

7

主题

61

帖子

547

积分

高级会员

Rank: 4

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

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

function节点

function节点

需要传的参数:

需要控制的参数

需要控制的参数


参数:

service参数

service参数



回复

使用道具 举报

7

主题

61

帖子

547

积分

高级会员

Rank: 4

积分
547
金钱
486
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

主题

247

帖子

1932

积分

金牌会员

Rank: 6Rank: 6

积分
1932
金钱
1685
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 感谢楼主分享!

查看全部评分

回复

使用道具 举报

39

主题

2049

帖子

7695

积分

元老级技术达人

积分
7695
金钱
5631
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辅助
回复

使用道具 举报

39

主题

2049

帖子

7695

积分

元老级技术达人

积分
7695
金钱
5631
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

主题

181

帖子

2162

积分

金牌会员

Rank: 6Rank: 6

积分
2162
金钱
1981
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;
回复

使用道具 举报

7

主题

61

帖子

547

积分

高级会员

Rank: 4

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

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

使用道具 举报

21

主题

444

帖子

4864

积分

元老级技术达人

略懂一些皮毛而已!

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 18:59 , Processed in 0.055763 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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