构建 Home Assistant 自定义组件(第五部分):调试
引言
这是构建 Home Assistant 自定义组件多部分教程的第五部分,也是最后一部分。本文将介绍如何调试自定义组件,以确保其按预期工作,并找出某些功能可能不如预期的原因。
我必须承认,我最近才了解到 Home Assistant 提供的用于本地开发的开发容器(devcontainer)。在了解之前,我会在本地修改文件,然后通过 scp 将它们复制到 Home Assistant 实例上的正确文件夹中,然后重新启动实例。这不仅速度慢,而且意味着在调试问题时,由于我尝试更改,为我家提供服务的 Home Assistant 实例将不得不不断关闭。事实证明,Home Assistant 已经开发了一种本地开发解决方案,无需关闭你的 “生产” 实例。这就是开发容器。
Visual Studio Code + devcontainer
要使用开发容器,你首先需要安装 Visual Studio Code。Visual Studio Code 是一款免费的集成开发环境(IDE),非常受欢迎,并且有大量扩展可用于加速和改进开发。安装后,还必须安装其他一些要求,更多详细信息请查看官方文档。
在安装了先决条件并克隆了 home - assistant/core 存储库后,你可以启动 Visual Studio Code 并打开克隆的目录。首次打开文件夹时,Visual Studio Code 将检测到开发容器,并询问你是否要在容器中打开编辑器,选择 “是”。首次打开将构建容器,这可能需要一两分钟。后续打开将快得多,因为它将重用已构建的容器。
配置开发容器
在继续之前,我们需要将自定义组件复制到克隆的 home - assistant/core 存储库根目录下的config目录中。请注意,你可能需要提升权限,因为 docker 将在config目录中创建由 root 拥有的文件。或者,你可以使用 IDE 中的内置终端,它会为你提供具有正确权限的 root 提示符。
首先导航到/path/to/cloned/home-assistant/config并创建一个custom_components目录。然后将你的自定义组件直接复制到这个新文件夹中。对于我们的教程项目,我们将复制整个github_custom目录。
接下来,将任何必要的配置添加到configuration.yaml文件中。由于我们的教程自定义组件使用配置流程,我们不需要添加任何内容,因为我们可以在配置 UI 中添加集成并进行设置。
运行 Home Assistant
现在我们已经复制了文件并更新了配置,返回 Visual Studio Code 并点击左侧面板中的 “运行” 选项卡(Ctrl+Shift+D)。你将看到一个几乎为空的面板,顶部有一个下拉列表,其中包含可以运行的调试配置。在撰写本文时,有两个选项,“Home Assistant” 用于运行本地实例,“Preview (nodejs)” 用于运行文档站点的本地实例。
Visual Studio Code 运行面板
选择 “Home Assistant” 从下拉列表中,然后点击绿色三角形开始调试器。这也将在底部打开 “终端” 面板,你可以在其中看到 Home Assistant 日志。现在,你可以在浏览器中导航到http://localhost:8123,你将被引导完成 Home Assistant 的初始设置(创建用户等)。在 Visual Studio Code 中,你还将在 IDE 的顶部中心附近看到一个调试工具栏弹出。
Visual Studio Code 调试工具栏
调试工具栏包含以下操作的控件,按图标从左到右的顺序:
暂停 / 继续
单步跳过
单步进入
单步跳出
重新启动
停止
查看 Visual Studio Code 文档以获取有关每个操作功能的更多详细信息。最常用的按钮将是在遇到断点后继续程序执行,以及在更改 Python 代码后重新启动 Home Assistant。
断点
断点对于能够停止程序执行并检查代码中特定位置的变量非常有用。要设置断点,请找到你希望暂停程序流并检查变量的行,然后点击行号左侧。这将添加一个红色圆点,表示断点。当你在浏览器中浏览 Home Assistant 并遇到该代码时,它将自动暂停程序并允许你在运行面板中检查值。
断点
在上面的屏幕截图中,你可以看到局部和全局变量及其值。检查完值后,你可以点击调试工具栏中的 “继续” 按钮以继续程序执行,直到遇到另一个断点。
总结
如你所见,Visual Studio Code 中的开发容器使调试自定义组件更加简单和快速。
我真诚地希望这些文章帮助你了解如何开发自己的自定义组件(甚至可能在未来某个时候将其添加到 Home Assistant 中)。这些文章中记录的许多概念也适用于官方 Home Assistant 代码库,因此我强烈鼓励你进行贡献或成为现有集成的代码所有者。
构建 Home Assistant 自定义组件(第五部分):调试
最新推荐文章于 2025-10-03 09:40:22 发布
2131

被折叠的 条评论
为什么被折叠?



