Page 1 of 1

关于Ray-js 中获取家庭中所有场景 getSceneList API接口结果为空

Posted: 2024年 May 16日 16:12
by 18565078111
  • Tuya MiniApp Tools 版本信息:0.6.4
    • @ray-js/ray@1.5.4
      @ray-js/cli@1.5.4
    • 相关代码:

Code: Select all

    const { homeId } = await home.getCurrentHomeInfo();
    const devId = 'xxxxx'
    getSceneList({
      devId: devId,
      gid: homeId,
    })
      .then((res) => {
        console.log(res);
        setSceneList(res);
      })
      .catch(console.error);
 

Code: Select all

- 日志信息:无

- 问题描述(复现步骤):

- 预期结果: 查询出该家庭中的场景数据

- 实际结果:查询结果是一个空数组。

之前在后台提交工单咨询关于查询家庭中所有场景的问题,得到工作人员的答复是在这个接口中加入gid 的参数。如今文档上已经加入该参数说明,NPM包也发布新版了。在升级本地NPM包之后,利用以上代码进行查询,得到的结果仍旧为空。


Re: 关于Ray-js 中获取家庭中所有场景 getSceneList API接口结果为空

Posted: 2024年 May 16日 16:12
by 18565078111

补充:homeId 176170055, devId:vdevo171516122052680


Re: 关于Ray-js 中获取家庭中所有场景 getSceneList API接口结果为空

Posted: 2024年 May 16日 19:05
by lshinylee

当前基础库版本是多少?看看是否在 2.18.4 以上


Re: 关于Ray-js 中获取家庭中所有场景 getSceneList API接口结果为空

Posted: 2024年 May 16日 23:25
by 18565078111
lshinylee 2024年 May 16日 19:05

当前基础库版本是多少?看看是否在 2.18.4 以上

改到2.18.5 ,可以查到数据了。谢谢。


Re: 关于Ray-js 中获取家庭中所有场景 getSceneList API接口结果为空

Posted: 2024年 May 17日 00:18
by 18565078111

顺便在咨询个问题: 我想实现一个功能,将场景和一个DP点关联起来,从而实现点击DP点对应UI的时候,触发场景。Ray-js 的API中ray/api/scenes/rule/bindRule 似乎满足需求,但是参数我不太明白。

Code: Select all


bindRule({
  associativeEntityId: '1#single_click',
  ruleId: 'xxxxx',
  entitySubIds: '1',
  expr: [['$dp1', '==', '单击']],
  bizDomain: 'wirelessSwitchBindScene',
})
  • 这里的associativeEntityId 1应该是DPID,那#后面的可选值有哪些?
  • expr 的规则是什么?
  • 以及bizDomain 的可选值有哪些?分别代表什么

Re: 关于Ray-js 中获取家庭中所有场景 getSceneList API接口结果为空

Posted: 2024年 May 17日 09:29
by lshinylee

类似下面这样,

associativeEntityId #后面的可选值为 # 之前对应 dpId 功能的可选值,即 dpValue,相当于在满足指定功能点接受到指定的上报值时会自动触发场景。
expr 的规其实也就是 associativeEntityId 的规则化版本
bizDomain 代表业务域,目前先固定使用 wirelessSwitchBindScene,其余业务域暂未开放,滥用会导致功能异常。

associativeEntityId: ${dpId}#${dpValue},
entitySubIds: ${dpId},
expr: [[$dp${dpId}, '==', ${dpValue}]]

另外这块功能我们近期也在筹备开放教程,后续会进一步简化调用模式。