Page 1 of 1

关于zigbee网关,子设备的一些问题

Posted: 2024年 Aug 5日 18:28
by silverlight
  • Tuya MiniApp Tools 版本信息:Node: v18.17.0 Tools: 0.7.0 Ray: 1.5.20 插件版本1.7.3-beta
    使用的demo是以public-sdm作为基础制作的
    一:
    问题描述:
    当我的网关子设备离线的时候,开发者工具中会有离线弹窗,且重新上线之后,刷新页面仍有离线弹窗;但是真机调试并不会弹窗,想知道哪边呈现的效果是正确的。
    想要达成的效果:
    我想,在网关的面板中,只有网关离线才会有离线弹窗,只需要显示子设备的在线状态,要如何修改。
    Image
    二:
    想要达成的效果:
    我想在网关面板中显示子设备的信息,调用了onSubDeviceDpUpdate,onSubDeviceInfoUpdate,onSubDeviceRemoved。分别监听子设备的dp状态变化,子设备信息变化,子设备移除。
    实际的效果:
    1:我的依赖数组应该是错误的,但测试下来,在开发者工具中onSubDeviceDpUpdate可以监听到dp的变化(真题调试监听不到)。onSubDeviceInfoUpdate只能监听到子设备的名称修改,dp和在线状态都没能监听到。且在子设备离线状态,依然能监听到子设备的名称修改。
    2:onSubDeviceRemoved没有成功监听到子设备的移除。

    Code: Select all

      useEffect(() => {
        const handleSubDeviceDpUpdate = (data) => {
          console.log('有dp变更:', data);
          // console.log('up id:', data.deviceId);
          // console.log('up dps:', data.dps);
          setNewData(data);
        };
    
        const handleSubDeviceInfoUpdate = (data) => {
          console.log('有信息更新:', data);
          getchSubDeviceInfo();
        };
        const handlesubremov =(data) =>{
          console.log('子设备移除:', data);
        };
    
        onSubDeviceDpUpdate(handleSubDeviceDpUpdate);
        onSubDeviceInfoUpdate(handleSubDeviceInfoUpdate);
        onSubDeviceRemoved(handlesubremov); 
    
        return () => {
          offSubDeviceDpUpdate(handleSubDeviceDpUpdate);
          offSubDeviceInfoUpdate(handleSubDeviceInfoUpdate);
          offSubDeviceRemoved(handlesubremov); 
        };
      }, [devInfo.devId]);

Re: 关于zigbee网关,子设备的一些问题

Posted: 2024年 Aug 7日 09:38
by xuanyi

感谢反馈

  1. IDE中关于子设备相关问题及接口我们会尽快安排排查修复,后续修复问题后会升级面板开发工具插件版本,可关注后续beta版本进行手动更新,或发布正式版本后IDE会进行强制更新
  2. 在注册监听之前,请先调用 registerGateWaySubDeviceListener 进行网关设备的注册,并在注册后尝试是否可正常接收到,若注册后真机调试中依然有无法接收到监听的情况,请提供一下所使用的 app 及版本号,以及无效方法列表。方便的话可上传一下 app 日志(我的>右上角设置>关于>上传日志),并提供一下上传时弹窗的截图。

Re: 关于zigbee网关,子设备的一些问题

Posted: 2024年 Aug 7日 09:40
by xuanyi

registerGateWaySubDeviceListener参照:
https://developer.tuya.com/cn/miniapp/d ... celistener
子设备相关接口使用参照:
https://github.com/Tuya-Community/tuya- ... s/index.ts


Re: 关于zigbee网关,子设备的一些问题

Posted: 2024年 Aug 7日 12:13
by silverlight
xuanyi 2024年 Aug 7日 09:38

感谢反馈

  1. IDE中关于子设备相关问题及接口我们会尽快安排排查修复,后续修复问题后会升级面板开发工具插件版本,可关注后续beta版本进行手动更新,或发布正式版本后IDE会进行强制更新
  2. 在注册监听之前,请先调用 registerGateWaySubDeviceListener 进行网关设备的注册,并在注册后尝试是否可正常接收到,若注册后真机调试中依然有无法接收到监听的情况,请提供一下所使用的 app 及版本号,以及无效方法列表。方便的话可上传一下 app 日志(我的>右上角设置>关于>上传日志),并提供一下上传时弹窗的截图。

谢谢,已经成功监听了子设备信息变化。但还有一些疑问。
一:当子设备处于离线状态的时候,修改子设备的名称,为什么网关依然能监听到子设备信息变化。
二:onSubDeviceInfoUpdate在文档中,回调参数有deviceid和dps,但实际测试,我修改子设备名称的时候,只有返回deviceid,想知道onSubDeviceInfoUpdate 能监听获取到哪些信息。

Code: Select all

  {
    title: Strings.getLang('onSubDeviceInfoUpdate'),
    functionName: 'onSubDeviceInfoUpdate',
    func: () => {
      return new Promise((resolve, reject) => {
        registerGateWaySubDeviceListener({ deviceId })
        onSubDeviceInfoUpdate((event) => {
          console.log('============onSubDeviceInfoUpdate', event)
        })
        resolve(true)
      })
    },
  },

Re: 关于zigbee网关,子设备的一些问题

Posted: 2024年 Aug 7日 14:05
by silverlight

(发了重复内容,但没法删除)


Re: 关于zigbee网关,子设备的一些问题

Posted: 2024年 Aug 7日 14:27
by xuanyi
  1. 修改名称并不依赖子设备在线, 只要网关在线就可以触发到onSubDeviceInfoUpdate。
  2. onSubDeviceInfoUpdate 子设备信息(名称、标题、房间等信息)变更时会触发,但不一定会携带变动的内容。可以通过getDeviceInfo去获取最新的设备信息。

Re: 关于zigbee网关,子设备的一些问题

Posted: 2024年 Aug 7日 15:34
by silverlight
xuanyi 2024年 Aug 7日 14:27
  1. 修改名称并不依赖子设备在线, 只要网关在线就可以触发到onSubDeviceInfoUpdate。
  2. onSubDeviceInfoUpdate 子设备信息(名称、标题、房间等信息)变更时会触发,但不一定会携带变动的内容。可以通过getDeviceInfo去获取最新的设备信息。

非常感谢