ZLL设备Group、Scene控制、以及设备状态返回问题
1.我现在用的是Z-Stack Lighting 1.0.2这个版本修改的一个调光调色的设备,然后拿一个遥控器,这个遥控器是可以设置别人的设备的Group和Scene以及控制的。
遥控器设置我们的设备的Group和Scene是可以的,但是控制Group、Scene的时候我们的设备接收不到任何数据,这个问题可能是哪方面的原因呢?
2.我用上面同样的版本修改了一个触控开关设备,想实现触摸开关的时候,把开/关的命令反馈给网关,需要怎么做?
1, 是收不到,还是收到了没有响应,能否提供下测试的空中sniffer报文呢。
开关的命令反馈?还是开关的状态?一般都是网关来read attribute来开关的状态。
1、我是用debug打断点的方式测试的,设备查询、添加、删除群组是zclGeneral_HdlInSpecificCommands中的断点能收到数据,遥控器控制的时候,zclGeneral_HdlInSpecificCommands中的断点就无反应,遥控器在客户那边可以跟别的设备配对、控制ok的。
2、是触控开关的时候,自己发一个开关的状态给网关,网关来通知手机软件,然后软件界面更新状态。我通过这种方式发送始终不成功,是否因为调用该方法不能发给网关,还是传参错误,还是里面的zcl_destAddr赋值错误。cl_SendCommand( endPoint, &zcl_destAddr, ZCL_CLUSTER_ID_GEN_ON_OFF,cmd, TRUE, ZCL_FRAME_CLIENT_SERVER_DIR,TRUE, 0, zcl_SeqNum, 0, NULL);
1,你在应用层是否有注册对Scene命令的处理
参考Z-Stack Lighting 1.0.2里面的代码
static zclGeneral_AppCallbacks_t zllSampleLight_GenCmdCBs =
{
zllSampleLight_BasicResetCB, // Basic Cluster Reset command
zllSampleLight_IdentifyCB, // Identify command
#ifdef ZCL_EZMODE
NULL, // Identify EZ-Mode Invoke command
NULL, // Identify Update Commission State command
#endif
zllSampleLight_IdentifyEffectCB, // Identify Trigger Effect command
zllSampleLight_IdentifyQueryRspCB, // Identify Query Response command
zllSampleLight_OnOffCB, // On/Off cluster commands
zllSampleLight_OnOff_OffWithEffectCB, // On/Off cluster enhanced command Off with Effect
zllSampleLight_OnOff_OnWithRecallGlobalSceneCB, // On/Off cluster enhanced command On with Recall Global Scene
zllSampleLight_OnOff_OnWithTimedOffCB, // On/Off cluster enhanced command On with Timed Off
#ifdef ZCL_LEVEL_CTRL
zclLevel_MoveToLevelCB, // Level Control Move to Level command
zclLevel_MoveCB, // Level Control Move command
zclLevel_StepCB, // Level Control Step command
zclLevel_StopCB, // Level Control Stop command
#endif
#ifdef ZCL_GROUPS
NULL, // Group Response commands
#endif
#ifdef ZCL_SCENES
zllSampleLight_SceneStoreCB, // Scene Store Request command
zllSampleLight_SceneRecallCB, // Scene Recall Request command
NULL, // Scene Response command
#endif
#if ZCL_ALARMS
NULL, // Alarm (Response) commands
#endif
#ifdef SE_UK_EXT
NULL, // Get Event Log command
NULL, // Publish Event Log command
#endif
NULL, // RSSI Location command
NULL // RSSI Location Response command
};
2,目的地址的endpoint对吗?另外网关On/OFF应该是client,你的开关的ON/OFF应该是server吧。你可以report Attribute试试。
1.注册了Scene、Group部分,用的是初始代码,没有修改过,Scene和Group可以获取、编辑,但就是按遥控器Group开,Scene选择的时候,设备无反应,但是遥控器在客户那边与ZLL设备,可以正常配对,控制。
2.目的地址的endpoint怎么来赋值,还有就是zcl_destAddr怎么赋值,report Attribute怎么用?
可以调用report 对开关状态进行返回
我也试过这种做法,但是始终没有成功。。
查看你返回使用的目的地址还有发送方式对不对。如果使用zclSampleLight_DstAddr.addrMode = (afAddrMode_t)AddrNotPresent; 查看目的地址是否正确
能否把你测试的空中抓包数据发下出来,你是怎么做的测试?把步骤也描述下。
好的,还有就是另外一个问题,返回值的问题客户那边说:“在刚开始入网的时候网关会发送config reprot信息,如果设备支持config report,那么当设备状态改变时,设备会主动上报。”但是设备这边怎么进行设置这个config reprot呢?