备份
集成实现备份平台有两个主要目的:
- 添加一个 backup agent,可以将备份上传到某个本地或远程位置。
- 在创建备份之前暂停或准备集成操作,和/或在备份后运行某些操作。
备份代理
要添加一个或多个 backup agents,请在 backup.py 中实现 async_get_backup_agents 和 async_register_backup_agents_listener 这两个方法。示例:
存储在 async_register_backup_agents_listener 中的 listener 应在每次需要重新加载 backup agents 时被调用,以移除过期的 agents 并添加新的 agents。这可以通过在 async_setup_entry 期间注册 listeners 来完成:
Backup agent 应实现 BackupAgent 基类的抽象接口,如下例所示:
Backup agents 应在出错时抛出 BackupAgentError(或 BackupAgentError 的子类)异常。其他异常不应从 backup agent 中抛出。
报告上传进度
async_upload_backup 方法接收一个 on_progress callback,agents 可以使用它来报告上传进度。调用 callback 时传入到目前为止上传的总字节数(整数):
备份管理器使用此信息来触发 UploadBackupEvent 事件,允许 frontend 向用户显示上传进度。Agents 应在上传过程中定期调用此 callback,例如在每次发送数据块之后。
预操作和后操作
当 Home Assistant 正在创建备份时,可能需要暂停集成中的某些操作,或 dump 数据以便正确恢复。
这是通过在 backup.py 中添加两个函数(async_pre_backup 和 async_post_backup)来完成的。
添加支持
为新集成添加备份支持的最快方法是使用我们内置的 scaffold 模板。从 Home Assistant 开发环境运行 python3 -m script.scaffold backup 并按照说明操作。
如果你更喜欢手动方式,请在集成文件夹中创建一个名为 backup.py 的新文件,并实现以下方法:

