“线程:测试”中讨论的其它部件
使用读取属性时,响应正常:
命令:读取属性响应(0x01)
状态记录,提示:500
属性:客户端:功能通知标志/服务器:提供的当前汇总(0x0000)
状态:成功(0x00)
数据类型:48位无符号整数(0x25)
Uint48:500 (0x00000000000001f4)
但是,当报告相同的属性以及入口温度时,“随机”数据将从第5个字节向上添加:
命令:报告属性(0x0a)
属性字段,Int24:2358
属性:入口温度(0x0017)
数据类型:24位签名整数(0x2a)
国际电话:2358
属性字段,提示:179869684
属性:客户端:功能通知标志/服务器:提供的当前汇总(0x0000)
数据类型:48位无符号整数(0x25)
Uint48:179869684 (0x00000004000001f4)
短时间内的其他唯一无效值包括:
Uint48:179869684 (0x00000004000001f4)
Uint48:390842024436 (0x0000005b000001f4)
Uint48:880468296180 (0x000000cd000001f4)
Uint48:93458488361460 (0x00005500000001f4)
Uint48:94227287507444 (0x000055b3000001f4)
Uint48:94373316395508 (0x000055d5000001f4)
Uint48:94386201297396 (0x000055d8000001f4)
我检查了48位值所在的数据存储器(在属性定义中指向),它始终正确显示“500”值。
在将入口温度添加到报告中之前,报告的该值为正常值。 我想,BDB 报告代码中存在问题。
{
ZCL_cluster_ID_SE_计 量,//群集 ID -在基础(即 zcl.h)中定义-智能能源(SE)群集
{//属性记录
ATTRID_SE_计 量_CURR_SUMM_DLVD,// 0x0000
ZCL_datatype_UINT48,
ACCESS_CONTACT_READ | ACCESS_REPORTable,
(void *)测量信息。Wh_meter
}
},
{
ZCL_cluster_ID_SE_计 量,
{//属性记录
ATTRID_SE_计 量_进口温度,// 0x0017
ZCL_datatype _INT24,//字符串足够 int24,但在 ZCL 中也是如此
ACCESS_CONTACT_READ | ACCESS_REPORTable,
(void *)内含温度(&I)
}
},
此外,以下代码将放置在适当的位置以通知更改:
UINT8状态= bdb_RepChangedAttrValue()
APP_EndPoint,
ZCL_cluster_ID_SE_计 量,
ATTRID_SE_计 量_INVE_TEMP
);
UINT8状态= bdb_RepChangedAttrValue()
APP_EndPoint,
ZCL_cluster_ID_SE_计 量,
ATTRID_SE_计 量_INST_DMD
);
它们在初始化过程中设置:
BDB_RepAddAttrCfgRecordDefaultToList (app_endpoint,ZCL_cluster_ID_SE_godgy,ATTRID_SE_goding_INST_DMD,REP_INTERVAL_60s,REP_INTERVAL_5M, 报告更改1);
BDB_RepAddAttrCfgRecordDefaultToList (app_endpoint,ZCL_cluster_ID_SE_goding_ATTRID_SE_goding_Curr_SUMM_DLVD,REP_INTERVAL_60s,REP_INTERVAL_5M, 报告 Change50);
BDB_RepAddAttrCfgRecordDefaultToList (app_endpoint,ZCL_cluster_ID_SE_goding_Matgering,ATTRID_SE_Meting_Inlet _TEMP,REP_INTERVAL_60s,REP_INTERVAL_5M, 报告 Change50);
您对此有何建议?
我在最新的 ZStack 3.0.2中安装了补丁程序。
