zigpy无线电的统一命令行界面
项目描述
zigpy-cli
zigpy无线电的统一命令行界面。此项目的目标是允许从直观的命令行界面进行低级网络管理,并将有用的Zigbee工具组合到一个二进制文件中。
安装
$ pip install zigpy-cli
使用
$ zigpy --help
Usage: zigpy [OPTIONS] COMMAND [ARGS]...
Options:
-v, --verbose
--help Show this message and exit.
Commands:
ota
radio
pcap
确保ZHA、Zigbee2MQTT、deCONZ等已禁用。任何控制您无线电的软件都需要对硬件的独占访问:如果同时运行,则两者都无法工作。
网络命令
网络命令需要指定无线电类型。有关支持类型的列表,请参阅zigpy radio --help
。如果您的无线电需要与无线电库默认值(主要是EZSP)不同的波特率,您必须将其指定为命令行选项。例如,zigpy radio --baudrate 115200 ezsp backup -
。
网络备份
$ zigpy radio deconz /dev/ttyUSB0 backup deconz-backup.json
网络恢复
$ zigpy radio znp /dev/ttyUSB1 restore deconz-backup.json
读取网络信息
$ zigpy radio znp /dev/ttyUSB0 info
PAN ID: 0x718B
Extended PAN ID: 33:29:33:5e:30:42:64:48
Channel: 15
Channel mask: [15]
NWK update ID: 0
Device IEEE: 00:12:4b:00:1c:ce:33:85
Device NWK: 0x0000
Network key: cc:44:a6:4e:23:82:30:9e:35:0f:c6:6a:89:c8:dd:7d
Network key sequence: 0
形成网络
$ zigpy -vvvv radio znp /dev/cu.usb* form
2021-07-12 13:24:54.764 host asyncio DEBUG Using selector: KqueueSelector
2021-07-12 13:24:54.933 host zigpy_znp.uart DEBUG Connecting to /dev/ttyUSB0 at 115200 baud
2021-07-12 13:24:54.940 host zigpy_znp.uart DEBUG Opened /dev/ttyUSB0 serial port
2021-07-12 13:24:54.941 host zigpy_znp.uart DEBUG Toggling RTS/CTS to skip CC2652R bootloader
2021-07-12 13:24:55.404 host zigpy_znp.uart DEBUG Connected to /dev/ttyUSB0 at 115200 baud
2021-07-12 13:24:55.404 host zigpy_znp.api DEBUG Waiting 1s before sending anything
2021-07-12 13:24:56.409 host zigpy_znp.api DEBUG Sending bootloader skip byte
...
PAN ID: 0xAA8A
Extended PAN ID: 35:8f:dc:b6:7a:19:33:c3
Channel: 15
Channel mask: [15]
NWK update ID: 0
Device IEEE: 00:12:4b:00:1c:ce:33:85
Device NWK: 0x0000
Network key: 8c:2d:2d:a6:ca:95:30:04:11:6b:d5:dd:32:9e:b6:a8
Network key sequence: 0
2021-07-12 13:25:15.316 host zigpy_znp.uart DEBUG Closing serial port
执行能量扫描
$ zigpy radio znp /dev/cu.usbserial-1420 energy-scan
Channel energy (mean of 1 / 5):
------------------------------------------------
+ Lower energy is better
+ Active Zigbee networks on a channel may still cause congestion
+ TX on 26 in North America may be with lower power due to regulations
+ Zigbee channels 15, 20, 25 fall between WiFi channels 1, 6, 11
+ Some Zigbee devices only join networks on channels 15, 20, and 25
------------------------------------------------
- 11 80.00% ################################################################################
- 12 83.53% ###################################################################################
- 13 83.14% ###################################################################################
- 14 78.82% ##############################################################################
- 15 76.47% ############################################################################
- 16 72.16% ########################################################################
- 17 76.47% ############################################################################
- 18 75.69% ###########################################################################
- 19 72.16% ########################################################################
- 20 65.49% #################################################################
- 21 66.67% ##################################################################
- 22 70.59% ######################################################################
- 23 80.00% ################################################################################
- 24 64.31% ################################################################
- 25 77.25% #############################################################################
- 26* 81.96% #################################################################################
重置无线电
$ zigpy radio --baudrate 115200 ezsp /dev/serial/by-id/some-radio reset
允许加入
主要用于测试请求。
$ zigpy radio deconz /dev/ttyUSB0 permit -t 60
更改网络频道
某些设备(如较旧的Aqara传感器)可能无法迁移。
$ zigpy radio znp /dev/ttyUSB0 change-channel --channel 25
OTA
显示OTA文件的基本信息
$ zigpy ota info 10047227-1.2-TRADFRI-cv-cct-unified-2.3.050.ota.ota.signed
Header: OTAImageHeader(upgrade_file_id=200208670, header_version=256, header_length=56, field_control=<FieldControl.0: 0>, manufacturer_id=4476, image_type=16902, file_version=587531825, stack_version=2, header_string='GBL GBL_tradfri_cv_cct_unified', image_size=208766, *device_specific_file=False, *hardware_versions_present=False, *key=ImageKey(manufacturer_id=4476, image_type=16902), *security_credential_version_present=False)
Number of subelements: 1
Validation result: ValidationResult.VALID
转储嵌入式固件以进行进一步分析
$ zigpy ota dump-firmware 10047227-1.2-TRADFRI-cv-cct-unified-2.3.050.ota.ota.signed - \
| commander ebl print /dev/stdin \
| grep 'Ember Version'
Ember Version: 6.3.1.1
生成OTA索引文件
为给定的固件目录创建JSON索引
$ zigpy ota generate-index --ota-url-root="https://example.org/fw" path/to/firmwares/**/*.ota
2023-02-14 12:02:03.532 ubuntu zigpy_cli.ota INFO Parsing path/to/firmwares/fw/test.ota
2023-02-14 12:02:03.533 ubuntu zigpy_cli.ota INFO Writing path/to/firmwares/fw/test.ota
[
{
"binary_url": "https://example.org/fw/test.ota",
"file_version": 1762356,
"image_type": 1234,
"manufacturer_id": 5678,
"changelog": "",
"checksum": "sha3-256:1ddaa649eb920dea9e5f002fe0d1443cc903ac0c1b26e7ad2c97b928edec2786"
},
...
从一系列数据包捕获中重建OTA镜像
需要可用的tshark
二进制文件。
$ zigpy ota reconstruct-from-pcaps --add-network-key aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99 --output-root ./extracted/ *.pcap
Constructing image type=0x298b, version=0x00000005, manuf_code=0x115f: 157424 bytes
2023-02-22 03:39:51.406 ubuntu zigpy_cli.ota ERROR Missing 48 bytes starting at offset 0x0000ADA0: filling with 0xAB
2023-02-22 03:39:51.406 ubuntu zigpy_cli.ota ERROR Missing 48 bytes starting at offset 0x000106B0: filling with 0xAB
Constructing image type=0x298b, version=0x00000009, manuf_code=0x115f: 163136 bytes
PCAP
重新计算数据包捕获中的FCS
修复当前EmberZNet SDK发布中的错误
$ # Fix an existing capture
$ zigpy pcap fix-fcs input.pcap fixed.pcap
$ # Fix a capture from stdin and send it to stdout
$ bellows -d /dev/cu.GoControl_zigbee dump -w /dev/stdout | zigpy pcap fix-fcs - - | wireshark -k -S -i -
数据库
尝试恢复损坏的zigbee.db
数据库
$ zigpy -v db recover broken.db fixed.db
2022-05-07 13:01:22.907 host zigpy_cli.database ERROR Failed to insert INSERT INTO "attributes_cache_v7"("_rowid_", "ieee", "endpoint_id", "cluster", "attrid", "value") VALUES( 14507477, '00:15:8d:00:02:5e:f9:ff', 1, 1027, 0, 1001.78 );: IntegrityError('UNIQUE constraint failed: attributes_cache_v7.ieee, attributes_cache_v7.endpoint_id, attributes_cache_v7.cluster, attributes_cache_v7.attrid')
2022-05-07 13:01:22.916 host zigpy_cli.database INFO Done
最终数据库将没有无效约束,但数据可能会丢失。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
zigpy_cli-1.0.5.tar.gz (28.3 kB 查看哈希值)
构建分发
zigpy_cli-1.0.5-py3-none-any.whl (27.1 kB 查看哈希值)
关闭
zigpy_cli-1.0.5.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d88047183ace692f2ddb953ee4ad22b8623956ac4cd85d9067f97ca56304a467 |
|
MD5 | aebd1506c7c9ddb29b2ae3de65657c45 |
|
BLAKE2b-256 | c129df556f0847bb3f03c32d1f4f8c8d99105f2e2abe02676681db9613878d86 |
关闭
zigpy_cli-1.0.5-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 986878b5c0158270b236c8700c31c9ddb8fbdf58d2de01ba2c63c141ed9134c0 |
|
MD5 | 84e966aeb24d4571b021c8b1416481a5 |
|
BLAKE2b-256 | b07839730e80b17825160587e0dfdef239bbff60d666ce6a4cda2b31a7414098 |