编写 Home Assistant Core 集成:第 1 部分

主要观点:作者搬进新家,希望将各种应用整合到 Home Assistant 中,因无 Roth Touchline SL 系统的集成,于是编写了 pytouchlinesl 库。
关键信息

  • 新家有太阳能板、空气源热泵和带互联网连接的设备。
  • 作者运行 Home Assistant 并编写自定义集成来控制地板采暖和太阳能逆变器。
  • Roth Touchline SL 系统的移动应用和在线门户可交互,其还提供 API,但文档与实际行为有差异。
  • 作者设计的 pytouchlinesl 库需满足基本功能,如认证、获取模块等。
  • 介绍了用于项目的 Python 工具/库,如 uv、pydantic、ruff。
  • 实现了 pytouchlinesl 库,包括客户端实现和缓存机制。
  • 测试采用抽象基类和假 API 后端,CI 用 Github Actions 进行代码检查和测试,发布通过 Trusted Publisher 到 PyPI。
  • 为在 NixOS 上方便打包,向 nixpkgs 提交了包含 pytouchlinesl 的 PR。
    重要细节
  • Touchline SL 系统中,模块包含多个区域,可设置温度和安排日程。
  • uv 可处理 Python 版本管理等问题,ruff 用于代码检查和格式化。
  • 缓存在 Module 类中实现,通过 _raw_data 和 _last_fetched 属性控制。
  • 测试中用 fixture 数据和 fake API 后端,避免传统 mocking。
  • CI 流水线用 ruff 检查代码,uv 运行测试。
  • 发布到 PyPI 采用 Trusted Publisher 方式,无需 API 令牌。
  • nixpkgs 中的 pytouchlinesl 推导式较为紧凑。
阅读 14
0 条评论