From 1d71d971ebbeb534b460bb586a0a82a0734a3ea7 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Fri, 22 Jul 2022 18:46:43 -0400 Subject: [PATCH 1/3] Perform backups using the zigpy backup API --- zigpy_cli/radio.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/zigpy_cli/radio.py b/zigpy_cli/radio.py index fe676df..5cc87a7 100644 --- a/zigpy_cli/radio.py +++ b/zigpy_cli/radio.py @@ -87,17 +87,19 @@ async def info(app): @radio.command() +@click.option("-z", "--zigpy-format", is_flag=True, type=bool, default=False) @click.argument("output", type=click.File("w")) @click.pass_obj @click_coroutine -async def backup(app, output): +async def backup(app, zigpy_format, output): await app.connect() - await app.load_network_info(load_devices=True) - obj = zigpy.state.network_state_to_json( - network_info=app.state.network_info, - node_info=app.state.node_info, - ) + backup = await app.backups.create_backup(load_devices=True) + + if zigpy_format: + obj = backup.as_dict() + else: + obj = backup.as_open_coordinator_json() output.write(json.dumps(obj, indent=4)) @@ -109,12 +111,10 @@ async def backup(app, output): @click_coroutine async def restore(app, frame_counter_increment, input): obj = json.load(input) - - network_info, node_info = zigpy.state.json_to_network_state(obj) - network_info.network_key.tx_counter += frame_counter_increment + backup = zigpy.backups.NetworkBackup.from_dict(obj) await app.connect() - await app.write_network_info(network_info=network_info, node_info=node_info) + await app.backups.restore_backup(backup, counter_increment=frame_counter_increment) @radio.command() From 88719bc04a56510ae4915b73daca7dc8b454dccb Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Mon, 25 Jul 2022 14:02:09 -0400 Subject: [PATCH 2/3] Bump minimum zigpy version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0c85c17..3338a16 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ "click", "coloredlogs", "scapy", - "zigpy>=0.47.1", + "zigpy>=0.48.0", "bellows>=0.31.0", "zigpy-deconz>=0.18.0", "zigpy-znp>=0.8.0", From 941425c5cc47c3962d9ad7b707bb58bffa7e2edf Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Wed, 27 Jul 2022 18:35:39 -0400 Subject: [PATCH 3/3] Default to STDOUT and add a newline after the backup JSON --- zigpy_cli/radio.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zigpy_cli/radio.py b/zigpy_cli/radio.py index 5cc87a7..06c377d 100644 --- a/zigpy_cli/radio.py +++ b/zigpy_cli/radio.py @@ -88,7 +88,7 @@ async def info(app): @radio.command() @click.option("-z", "--zigpy-format", is_flag=True, type=bool, default=False) -@click.argument("output", type=click.File("w")) +@click.argument("output", type=click.File("w"), default="-") @click.pass_obj @click_coroutine async def backup(app, zigpy_format, output): @@ -101,7 +101,7 @@ async def backup(app, zigpy_format, output): else: obj = backup.as_open_coordinator_json() - output.write(json.dumps(obj, indent=4)) + output.write(json.dumps(obj, indent=4) + "\n") @radio.command()