备份
集成实现备份平台主要有两个目的:
- 添加一个备份代理,用于将备份上传到本地或远程位置。
- 在创建备份前暂停或准备集成相关操作,并在备份后执行必要的后续操作。
备份代理
要添加一个或多个备份代理,请在 backup.py 中实现 async_get_backup_agents 和 async_register_backup_agents_listener 这两个方法。例如:
每当需要重新加载备份代理、移除过期代理并添加新代理时,都应调用在 async_register_backup_agents_listener 中注册的监听器。这可以通过在 async_setup_entry 期间注册状态变更监听来实现:
备份代理应实现 BackupAgent 基类定义的抽象接口,如下例所示:
备份代理在发生错误时应抛出 BackupAgentError(或其子类)。不应让其他异常从备份代理中泄漏出来。
报告上传进度
async_upload_backup 方法会接收一个 on_progress 回调,代理可以用它来报告上传进度。调用时传入截至当前已上传的总字节数:
备份管理器会利用这些信息触发 UploadBackupEvent 事件,从而让前端向用户显示上传进度。代理应在上传期间定期调用该回调,例如在发送每个数据块之后。
备份前后操作
当 Home Assistant 创建备份时,可能需要暂停集成中的某些操作,或者先导出数据,以确保之后能够正确恢复。
这可以通过在 backup.py 中添加两个函数(async_pre_backup 和 async_post_backup)来实现。
添加支持
为新集成添加备份支持的最快方式,是使用内置脚手架模板。在 Home Assistant 开发环境中,运行 python3 -m script.scaffold backup 并按照提示操作。
如果你更希望手动完成,请在集成目录中创建一个名为 backup.py 的新文件,并实现以下方法:

