首先给esp32c6烧录一个zigbee console的固件,可以在zigbee sdk里面找到
然后可以用network scan 25
扫描需要连入的网络,25是信道值,panid和信道都在协调器那里可以看到
然后再协调器那里打开设备允许接入的开关,esp> panid 0x25d1
esp> channel 25
esp> bdb_comm start steer
连入zigbee网络
连进来以后看到关心的那个设备,用下面三条指令扫描这个设备
esp> zdo request active_ep -d 0x624b
active_ep request to [addr:0x624b] status: 0
active ep: [1, 2, 3, 242]
esp> zdo request node_desc -d 0x624b
node_desc request to [addr:0x624b] status: 0
I (77940) : 0x408244d4 01 40 8e 54 12 52 52 00 00 2c 52 00 00 |.@.T.RR..,R..|
esp> zdo request ieee_addr -d 0x624b
ieee_addr request to [addr:0x624b] status: 0
ieee address: 0xb0c7defffee339a8
然后用这三个指令扫描三个端点,因为是一个三键的开关,所以三个端点对应三个按键的状态
esp> zdo request simple_desc -e 1 -d 0x624b
simple_desc request to [addr:0x624b] status: 0
ep:1 profile:0x0104 dev:0x2 dev_ver:0x0
in: [0x0000, 0x0003, 0x0004, 0x0005, 0x0006, 0xfc56]
out: [0x0019]
esp> zdo request simple_desc -e 2 -d 0x624b
simple_desc request to [addr:0x624b] status: 0
ep:2 profile:0x0104 dev:0x2 dev_ver:0x0
in: [0x0000, 0x0003, 0x0004, 0x0005, 0x0006, 0xfc56]
out: [0x0019]
esp> zdo request simple_desc -e 3 -d 0x624b
simple_desc request to [addr:0x624b] status: 0
ep:3 profile:0x0104 dev:0x2 dev_ver:0x0
in: [0x0000, 0x0003, 0x0004, 0x0005, 0x0006, 0xfc56]
out: [0x0019]
esp> zdo request simple_desc -e 242 -d 0x624b
simple_desc request to [addr:0x624b] status: 0
ep:242 profile:0xa1e0 dev:0x61 dev_ver:0x0
in: []
out: [0x0021]
发现有三个endpoint 01 02 03,每个都有 00 03 04 05 06 fc56这几个输入cluster,和一个19的输出集群。因为是一个三键的开关,所以是正确的,242那个端点不知道是干什么的。
根据zigbee协议,06这个集群的控制开关的,zcl send_raw -d 0x624b --dst-ep 2 -e 1 -c 6 --cmd 0x01
可以打开中间的灯。--dst-ep 2是第二个开关,--cmd 0x01是打开 0x00是关闭。
对于另外一个窗帘控制器zcl send_raw -d 0xe30a --dst-ep 1 -e 1 -c 0x0102 --cmd 0x00
可以开关窗帘
如果要读取的话,在启动之前先在本地创建一个端点zha add 2 on_off_switch``dm register
,然后bdb_comm start steer 连入网络,zcl send_gen read -d 0x624b --dst-ep 1 -e 2 -c 0x0006 -a 0
就可以读取到了