您好,
我一直在咨询 Danfoss 数据表,我发现一些有趣的命令/属性,但它们被标记为可选。
事实上,当我尝试读取属性时,我得到0x86作为返回值。
要实现可选属性或访问该属性,我需要做些什么?
(我正在编写的源代码是 Java。)
硬件:
- CC2562P 声输出转换器
- Danfoss 恒温器
固件:
- ZStack 3.0.x (购买加密狗时默认获得)
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
我一直在咨询 Danfoss 数据表,我发现一些有趣的命令/属性,但它们被标记为可选。
事实上,当我尝试读取属性时,我得到0x86作为返回值。
要实现可选属性或访问该属性,我需要做些什么?
(我正在编写的源代码是 Java。)
硬件:
固件:
明天我将尝试寻找一种设置嗅探器的方法。
我明天会为你更新。
如果不实施该属性,则是 Danfoss 阀的问题,我无法对此采取任何措施?
注意:AF_ING_MSG 的成分很奇怪。 无法理解报告制造商代码时始终存在的[0x0C 0x46]和0x1C。
fe 1d 44 81 --> INCOMING MSG 0 0 1 2 67 87 1 1 0 3f 0 71 f0 16 0 0 --> VARIOUS DATA 9 --> LEN OF PAYLOAD c 46 --> DON'T KNOW WHAT IT IS 12 19 a --> ZIGBEE ATTRIBUTE REPORT COMMAND 31 40 --> OPTIONAL ATTRIBUTE 10 1 --> VALUE cf b1 --> END-DEVICE NWK ADDR 1c ---> DON'T KNOW WHAT IT IS d3 --> FCS
Luca Vetri 在检查 ZCL 规范并使用 ZTool 进行测试后,我认为正确的有效负载应为“00 01 00 15 40”
您好,
我 试过这条命令,但仍然是0x86。
YiKai ChenRyanBrown1I现在将使用 CC2531EMK 卡设置嗅探器。 您是否更喜欢 Wireshark 或 TI 数据包监听器?
巴西,
卢卡·维特里
以下是嗅探器日志:对制造商属性进行多次读取和写入。
0x90C1是恒温器的网络地址
我使用了 TI 数据包监听器。 (不是版本2)
就在这里。
*** WARNING ***
Unsupported or unformatted message received. Raw data:
0C 45 CA 36 18 41 56 39 FE FF CC CC CC 00 00
*** WARNING ***
Unsupported or unformatted message received. Raw data:
0C 45 CA 36 18 41 56 39 FE FF CC CC CC 00 00
*** WARNING ***
Unsupported or unformatted message received. Raw data:
0C 45 CA 36 18 41 56 39 FE FF CC CC CC 00 00
<RX>11:24:36.19 COM4 ZDO_END_DEVICE_ANNCE_IND (0x45C1)
SrcAddr: 0x1836
NwkAddr: 0x1836
IEEEAddr: 0xCCCCCCFFFE395641
Capabilities: 0x80
<TX>11:25:46.67 COM4 AF_DATA_REQUEST (0x2401)
DstAddr: 0x1836
DestEndpoint: 0x01
SrcEndpoint: 0x01
ClusterID: 0x0201
TransID: 0x01
Options: 0x00
Radius: 0x1E
Len: 0x05
Data: ....@ (0x00, 0x01, 0x00, 0x15, 0x40)
<RX>11:25:46.68 COM4 AF_DATA_REQUEST_SRSP (0x6401)
Status: afStatus_SUCCESS (0x0)
<RX>11:25:46.7 COM4 AF_DATA_CONFIRM (0x4480)
Status: afStatus_SUCCESS (0x0)
Endpoint: 0x01
TransID: 0x01
<RX>11:25:46.72 COM4 AF_INCOMING_MSG (0x4481)
GroupID: 0x0000
ClusterID: 0x0201
SrcAddr: 0x1836
SrcEndpoint: 0x01
DstEndpoint: 0x01
WasBroadcast: 0x00
LinkQuality: 0x56
SecurityUse: 0x00
Timestamp: 0x0007F6D8
TransSeqNumber: 0x00
Len: 0x06
Data: ....@. (0x08, 0x01, 0x01, 0x15, 0x40, 0x86) <-- HERE.实际上它是有效的! 不知道 Z2M 是如何制作数据包的,但它是有效的。
看起来,当您读取数据时,开头会显示0xC 0x46。
同时,如果要更改值,则必须在开头添加0x14和0x46。 很奇怪,不会说谎哈哈
<TX>11:50:30.36 COM4 AF_DATA_REQUEST (0x2401)
DstAddr: 0x1836
DestEndpoint: 0x01
SrcEndpoint: 0x01
ClusterID: 0x0201
TransID: 0x01
Options: 0x00
Radius: 0x1E
Len: 0x07
Data: .F....@ (0x14, 0x46, 0x12, 0x17, 0x00, 0x15, 0x40)
<RX>11:50:30.37 COM4 AF_DATA_REQUEST_SRSP (0x6401)
Status: afStatus_SUCCESS (0x0)
<RX>11:50:32.39 COM4 AF_DATA_CONFIRM (0x4480)
Status: afStatus_SUCCESS (0x0)
Endpoint: 0x01
TransID: 0x01
<RX>11:50:32.4 COM4 AF_INCOMING_MSG (0x4481)
GroupID: 0x0000
ClusterID: 0x0201
SrcAddr: 0x1836
SrcEndpoint: 0x01
DstEndpoint: 0x01
WasBroadcast: 0x00
LinkQuality: 0x59
SecurityUse: 0x00
Timestamp: 0x0006D70F
TransSeqNumber: 0x00
Len: 0x0B
Data: .F....@.).. (0x0C, 0x46, 0x12, 0x17, 0x01, 0x15, 0x40, 0x00, 0x29, 0xC0, 0xE0)考虑到帧控制是 ZCL 数据包的第一个字节,这些结果是有意义的。
// ZCL header - frame control field
/// The frame control field is 8 bits in length and contains information defining
/// the command type and other control flags.
typedef struct
{
unsigned int type:2; //!< Frame type
unsigned int manuSpecific:1; //!< Manufacturer specific
unsigned int direction:1; //!< Direction
unsigned int disableDefaultRsp:1; //!< Disable Default Response
unsigned int reserved:3; //!< Reserved
} zclFrameControl_t;
传感器要求设置手动规格位,在这种情况下,ZCL 帧头的下两个字节需要为手动代码
// ZCL header
/// The ZCL frame format is composed of a ZCL header and a ZCL payload
typedef struct
{
zclFrameControl_t fc; //<! The frame control field is 8 bits in length and contains information defining the command type and other control flags.
uint16_t manuCode; //<! The manufacturer code field is 16 bits in length and specifies the assigned manufacturer code for proprietary extensions.
uint8_t transSeqNum; //<! The Transaction Sequence Number field is 8 bits in length and specifies an identification number for a single transaction that includes one or more frames in both directions.
uint8_t commandID; //<! The Command Identifier field is 8 bits in length and specifies the cluster command being used.
} zclFrameHdr_t;
接下来是 ZCL 有效负载本身之前的 transSeqNum 和命令 ID。
此致,
瑞安