自动化场景的问题后续没权限问题

小程序开发相关产品技术讨论,包括面板、智能小程序、React Native、Ray跨端框架、Panel SDK、微信小程序、小程序开发工具(IDE)及其他开发技术相关等话题


huangzh
Posts: 13

https://www.tuyaos.com/viewtopic.php?t= ... ba9a675eb2 在这一篇帖子中我提到了需要自动化场景一系列的接口,反馈是需要使用告警的一系列接口的actions字段来添加场景,但是经过测试后发现这几个接口会出现没有权限的问题

1.告警列表可以正常返回
2.新增告警Alarm.addCustomAlarm和删除告警Alarm.deleteCustomAlarm的时候 经常返回 errorCode: "PERMISSION_DENIED"
errorMsg: "没权限",不知道是什么原因,检查了账号是家庭的管理员,并且使用真实设备和虚拟设备都尝试过,均有这个问题,同样的接口同样的请求,在偶发情况下,会发现列表里有之前请求新增的告警,但不知道是什么时候成功的,也排查不出成功的条件是什么
3.setBuiltInAlarmStatus 根据设备 id 启用或禁用该产品内置的告警,这个接口在ide中会报错 请先在小程序开发者平台里添加 API 白名单: tuya.m.linkage.bind.enable ,使用工单让内部人员添加完API白名单后,调用的时候又返回errorCode: "PERMISSION_DENIED"
errorMsg: "没权限"

求助:因为业务需要 希望能提供一套可用的关于场景的增删改查的接口


Tags:
xuanyi
Posts: 122
Location: 涂鸦玄一

Re: 自动化场景的问题后续没权限问题

你好,请提供一下设备id,并提供一下具体的复现时间吧。 我们查下日志,看下有什么问题

huangzh
Posts: 13

Re: 自动化场景的问题后续没权限问题

设备id vdevo173415823603079 调用时间戳 tuya.m.linkage.bind.delete 1739265363832 tuya.m.linkage.bind.enable 1739265408425 麻烦您帮忙看看

xuanyi
Posts: 122
Location: 涂鸦玄一

Re: 自动化场景的问题后续没权限问题

huangzh 2025年 Feb 11日 17:19

设备id vdevo173415823603079 调用时间戳 tuya.m.linkage.bind.delete 1739265363832 tuya.m.linkage.bind.enable 1739265408425 麻烦您帮忙看看

请问在 app 中使用是否有报该错误的情况。 若有该情况,请上传一下 app 日志。没有在云端日志中查询到这两个接口的请求记录。

huangzh
Posts: 13

Re: 自动化场景的问题后续没权限问题

你好,他没有直接报错,只是返回了无权限,我看query接口是成功了,然后调用删除和修改状态的时候就显示无权限,详情见附件

Snipaste_2025-02-11_17-55-52.png
Snipaste_2025-02-11_17-55-44.png
Snipaste_2025-02-11_17-55-31.png
Snipaste_2025-02-11_17-55-23.png
Snipaste_2025-02-11_17-55-06.png
xuanyi
Posts: 122
Location: 涂鸦玄一

Re: 自动化场景的问题后续没权限问题

上述日志是通过 app 调试打印的,还是直接在 IDE 里调试打印的

huangzh
Posts: 13

Re: 自动化场景的问题后续没权限问题

上面图片是直接在IDE里 控制台的network调试打印的,控制台的console会报以下图片这个,然后我用真机远程调试也是一样的情况

Snipaste_2025-02-11_18-22-07.png
xuanyi
Posts: 122
Location: 涂鸦玄一

Re: 自动化场景的问题后续没权限问题

调用新增接口时传了哪些参数。 麻烦贴一下具体的添加时的代码,以及所调用的方法是从哪里导入的。

huangzh
Posts: 13

Re: 自动化场景的问题后续没权限问题

import { home, getLinkageDeviceList, device } from '@ray-js/ray';
import { SmartAlarmAbility, useDevice } from '@ray-js/panel-sdk';

const devInfo = useDevice(device => device.devInfo);
const { getDeviceInfo } = device;

const res = (await home.getCurrentHomeInfo()) as any;

// 得到家庭组下的设备
const linkageDevices = (await getLinkageDeviceList({
gid: res?.homeId,
sourceType: 'wirelessSwitch',
})) as any;

// 筛选品类是温控器或者温控阀
const arr1 = linkageDevices.filter(item => item.category === 'wk' || item.category === 'wkf');

// 自定义告警列表
const Alarm = new SmartAlarmAbility();

// 得到家庭组下品类是温控器或者温控阀的第一个设备 并找到code为temp_set的dpId
const info = (await getDeviceInfo({
deviceId: arr1[0].devId,
})) as any;
let dpId = null;
const obj = info.schema.find(item => item?.code === 'temp_set') as any;
if (obj) {
dpId = obj.id;
}
// 新增自定义场景 如果当前设备dp1<=180 那么设置 品类是温控器或者温控阀的第一个设备的temp_set的dp为240
const result = await Alarm.addCustomAlarm({
devId: devInfo.devId,
name: 'temp_low',
condition: [[1, '<=', 18 * 10]],
actions: [
{
entityId: arr1[0].devId,
actionExecutor: 'dpIssue',
executorProperty: {
[dpId]: 24 * 10,
},
extraProperty: {},
},
],
});

// 列表
const customAlarmList = await Alarm.getCustomAlarmList({ devId: devInfo.devId });

// 测试删除接口
if (customAlarmList[0]) {
await Alarm.deleteCustomAlarm({ bindId: customAlarmList[0].bindId });
}

// 测试状态接口
if (customAlarmList[0]) {
const result = await Alarm.setCustomAlarmStatus({
bindId: customAlarmList[0].bindId,
enable: true,
});
}

xuanyi
Posts: 122
Location: 涂鸦玄一

Re: 自动化场景的问题后续没权限问题

// 自定义告警列表
const Alarm = new SmartAlarmAbility();
这步缺少了 init 的调用。 请仔细查看官方文档。

企业微信20250212-140915@2x.png
Post Reply