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

 找回密码
 立即注册
12
返回列表 发新帖
楼主: qawsedfffrr

[流程系列] function 运行函数问题

[复制链接]

9

主题

55

帖子

178

积分

注册会员

Rank: 2

积分
178
金钱
123
HASS币
0
 楼主| 发表于 2025-1-2 11:05:57 | 显示全部楼层
dandymin 发表于 2025-1-2 10:21
没看懂你写的是啥- -#。 逻辑就有问题吧。

就是2个设备的开关状态同时输出到function里,然后在function里面进行判断2个设备是否开,如果都是开的话就输出一个on
回复

使用道具 举报

0

主题

21

帖子

84

积分

注册会员

Rank: 2

积分
84
金钱
63
HASS币
0
发表于 2025-1-2 11:35:42 | 显示全部楼层
本帖最后由 dandymin 于 2025-1-2 11:37 编辑

先获取到第一个设备的状态 赋值状态变量 msg.topic1 =true  然后获取第二个设备状态 赋值到变量msg.topic2=true

然后做判断


if(msg.topic1 ==true && msg.topic2==true){
###执行的操作
}
回复

使用道具 举报

9

主题

55

帖子

178

积分

注册会员

Rank: 2

积分
178
金钱
123
HASS币
0
 楼主| 发表于 2025-1-2 11:46:16 | 显示全部楼层
dandymin 发表于 2025-1-2 11:35
先获取到第一个设备的状态 赋值状态变量 msg.topic1 =true  然后获取第二个设备状态 赋值到变量msg.topic2= ...

这个是AI给的,请问要怎么改才能使用呢?
// 获取当前消息的 payload
var deviceStatus = msg.payload;

// 创建一个新消息对象
var newMsg = {};

// 根据 topic 判断是哪个设备
if (msg.topic === 'device1/status') {
    context.set('device1', deviceStatus);
} else if (msg.topic === 'device2/status') {
    context.set('device2', deviceStatus);
}

// 检查两个设备的状态
if (context.get('device1') !== undefined && context.get('device2') !== undefined) {
    var device1 = context.get('device1');
    var device2 = context.get('device2');

    // 如果两个设备都是打开状态
    if (device1 === 'ON' && device2 === 'ON') {
        newMsg.payload = "Both devices are ON";
        return [null, newMsg]; // 返回一个空消息和包含结果的消息
    } else {
        return null; // 不输出任何消息
    }
}

return null; // 不输出任何消息
回复

使用道具 举报

0

主题

21

帖子

84

积分

注册会员

Rank: 2

积分
84
金钱
63
HASS币
0
发表于 2025-1-2 13:57:43 | 显示全部楼层
qawsedfffrr 发表于 2025-1-2 11:46
这个是AI给的,请问要怎么改才能使用呢?

首先要知道两个设备msg的输出的是什么。你把一个查询设备状态的msg.payload改成msg.payload1和msg.payload2 这样就两个设备查询出来的结果不会覆盖了。

然后直接判断就行了
if(msg.payload1=="xxxx" && msg.payload2=='xxxx'){


###
}

回复

使用道具 举报

12

主题

272

帖子

2086

积分

金牌会员

Rank: 6Rank: 6

积分
2086
金钱
1814
HASS币
10
QQ
发表于 2025-1-7 08:54:38 | 显示全部楼层
我是用topic + join  2个条件都满足的情况下才执行 function
回复

使用道具 举报

4

主题

70

帖子

273

积分

论坛分享达人

积分
273
金钱
203
HASS币
0
发表于 2025-1-7 10:11:57 | 显示全部楼层
let device1status = context.get('device1status') || "off";
let device2status = context.get('device2status') || "off";

deviceStatus = msg.payload;
if(msg.topic === "device1")
{
    context.set('device1status', deviceStatus);
    device1status = deviceStatus;
}
else if(msg.topic === "device2")
{
    context.set('device2status', deviceStatus);
    device2status = deviceStatus;
}

//下面的不用改
if 。。。。。


回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-1-22 09:07 , Processed in 0.096601 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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