ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

在 Home Assistant 中安装 Tandoor Recipes:社区 Add-on 部署指南

在 Home Assistant 中安装 Tandoor Recipes:社区 Add-on 部署指南 在 Home Assistant 中安装 Tandoor Recipes社区 Add-on 部署指南【免费下载链接】recipesApplication for managing recipes, planning meals, building shopping lists and much much more!项目地址: https://gitcode.com/GitHub_Trending/re/recipes本指南面向希望把 Tandoor RecipesTandoorRecipes食谱管理与烹饪规划应用直接部署在 Home Assistant 设备上的用户完整介绍基于 alexbelgium 社区维护的 hassio-addons 仓库的 Add-on 安装、配置、更新与备份流程。读完本文你将能够把 Tandoor 以本地 Add-on 形式运行在 Home Assistant 上并理解其与 HA 之间双向联动的底层实现购物清单与 HA Todo 列表的同步连接器。背景为什么在 Home Assistant 上运行 TandoorHome Assistant 是一款免费开源的智能家居自动化软件定位为智能家居设备的集中控制中枢重点关注本地控制与隐私。它可以通过 Web 界面访问也支持 Android / iOS 配套 App或通过 Google Assistant、Amazon Alexa 等虚拟助手进行语音控制。Home Assistant 有两种主流部署形态独立操作系统HA OS部署在专用设备上通过 Over The AirOTA方式即可完成系统更新安装与维护都极其简单Docker 容器运行在已有 Docker 环境中的容器形态。除了丰富的原生功能外HA 通过**模块化 Add-on附加组件**体系可以不断扩展能力。社区为 Tandoor Recipes 专门编写了 Add-on让你可以直接把 Tandoor 的服务端托管在运行 Home Assistant 的设备上并通过两种方式访问界面Ingress直接在 Home Assistant 的 Web 界面内嵌访问更安全免端口暴露直连 Web UI通过http://homeassistant.local:9928访问。说明本文档属于社区贡献内容并非官方维护、也未经官方持续更新和测试。特别感谢 alexbelgium 实现并维护了让 Tandoor 在 HA 中运行所需的一切。兼容性提示Tandoor 2 与端口变化!!! danger Tandoor 2 兼容性 本指南尚未针对Tandoor 2进行验证/测试。Tandoor 2 在默认 Docker 容器内集成了 nginx 服务并将服务端口从8080改为80暴露。在跟随本指南配置前请确认你将要运行的 Tandoor 版本。Add-on 支持的硬件架构包括aarch64、amd64、armv7对应的 HA 设备如树莓派 4 / 5、x86 主机等均可覆盖。安装步骤在开始之前请确保你已有一个正常运行的 Home Assistant 系统HA OS 或 Docker 形态均可前提是具备 Supervisor / Add-on 能力。然后按以下步骤操作添加自定义仓库将 alexbelgium 的自定义 Add-on 仓库添加到你的 HA 系统。HA 官方提供了带预填仓库 URL 的添加仓库对话框跳转按钮点击后只需填入你的 HA 地址即可完成添加也可以直接在 HA 的 Supervisor 界面中手动添加仓库地址。安装 Add-on在商店中找到该 Add-on 并点击安装。按需配置选项根据你的使用场景设置 Add-on 选项配置项含义见下文「配置详解」章节。启动 Add-on。检查日志打开 Add-on 的日志页面确认启动过程一切正常、没有报错。打开 WebUI通过 Ingress内嵌于 HA 界面或直连http://homeassistant.local:9928访问 Tandoor 界面并在应用内完成语言、账号等初始设置。网络访问前提由于 Tandoor 运行在 HA 设备本地WebUI 直连地址使用 HA 设备在局域网内的主机名homeassistant.local。如果你的 HA 设备主机名不同请以实际主机名为准。若要通过 HA 的 Ingress 机制访问需要在配置中把 Home Assistant 的访问 URL含端口填入ALLOWED_HOSTS见下节否则 Ingress 请求会被 Tandoor 拒绝。配置详解Add-on 的配置通过环境变量暴露可在 Add-on 的「Configuration」选项卡中填写。下表列出了全部可配置项其中带#注释的行为 JSON 配置键及填写说明Required : ALLOWED_HOSTS: your system url, # 必填。填入你的 homeassistant urls逗号分隔、不要有空格Ingress 才能正常工作 DB_TYPE: list(sqlite|postgresql_external|mariadb_addon) # 数据库类型。mariadb_addon 会在已安装 maria_db addon 时自动配置sqlite 为内置数据库postgresql_external 需填写下方设置 SECRET_KEY: str, # 你的加密密钥务必设置为随机长字符串 PORT: 9928 # 默认 WebUI 端口 http://homeassistant.local:9928。如需改端口绝不能改应用内部只能通过此选项修改 Optional : POSTGRES_HOST: str?, # 使用 postgresql_external 时必需 POSTGRES_PORT: str?, # 使用 postgresql_external 时必需 POSTGRES_USER: str?, # 使用 postgresql_external 时必需 POSTGRES_PASSWORD: str?, # 使用 postgresql_external 时必需 POSTGRES_DB: str? # 使用 postgresql_external 时必需关键配置项说明配置项必填说明与取值范围ALLOWED_HOSTS是HA 的访问地址列表逗号分隔且不含空格。不配置或配置错误会导致 Ingress 页面打不开DB_TYPE是三选一sqlite内置、零依赖适合测试/轻量、postgresql_external外部 PostgreSQL需配下方 5 项、mariadb_addon若系统已装 maria_db addon 则自动对接SECRET_KEY是Django 签名密钥用于会话与安全机制请使用足够长的随机串PORT是WebUI 监听端口默认9928。注意端口只能在此处修改不要通过应用内部设置更改否则会导致访问失效POSTGRES_*否仅当DB_TYPEpostgresql_external时必需分别指定数据库主机、端口、用户、密码与库名关于环境变量的底层作用机制可参考官方 Docker 安装文档Add-on 本质上是把同一套 Tandoor 镜像以受限容器方式跑在 HA 中因此环境变量体系与 Docker 部署一致以及 配置文档。更新与备份自动更新alexbelgium 的仓库内置了一个脚本每 3 天将 Add-on 与官方发布的容器镜像对齐同步。这意味着你无需手动跟踪版本只要等待几个小时后HA 刷新仓库列表更新就会自动出现在你的 HA 系统中届时在 Add-on 页面点击更新即可。备份策略官方强烈建议频繁备份。Tandoor 的所有数据都存放在 Add-on 之外的主目录/config/addons_config/tandoor_recipes下因此更新前必须备份该目录而不仅仅是备份 Add-on 本身如果你选择了mariadb数据库选项不要忘记同时备份数据库数据文件在 maria_db Add-on 的存储目录中使用 HA 官方「备份」功能时请确认上述外部目录与数据库都被纳入备份范围。支持渠道遇到问题时的反馈路径如下按问题归属分流Add-on 本身的问题报告到维护者仓库alexbelgium/hassio-addonsHome Assistant 的问题报告到 HA 官方社区论坛Tandoor Recipes 本身的问题报告到本仓库TandoorRecipes/recipes。纵深Tandoor 与 Home Assistant 的双向联动Connectors安装好 Add-on 之后Tandoor 与 Home Assistant 之间还有一层值得了解的深度集成Connectors连接器。它把 Tandoor 的购物清单操作转换为对 HA 外部服务的 API 调用实现「Tandoor 操作 → HA Todo 列表」的自动同步。该功能目前处于beta 阶段详见 Connectors 特性文档。连接器支持的能力当前 HomeAssistant 连接器源码见 cookbook/connectors/homeassistant.py支持以下三种动作新建购物清单条目时把新条目推送到 HA 的 Todo 列表把食谱加入购物清单时将该食谱的所有食材条目一并推送删除 Todo 项时仅当该项自 Tandoor 侧移除、且内容未被外部修改时才从 HA Todo 中删除。安全警告连接器需要存储认证信息才能向外部服务推送数据请在可行时尽量使用只读/独立账号或应用专用密码避免泄漏主账号凭证。配置一个 HomeAssistant 连接器在 Tandoor 界面中进入 Connectors 管理页新建 HomeAssistant 类型连接器按三步完成第 1 步生成 HA 长生命周期访问令牌Long-Lived Access Token在 HA 用户资料页 → 安全Security→ 长期访问令牌Long-Lived Access Tokens处创建并复制保存只显示一次。第 2 步准备目标 Todo 列表在 HA 中创建/获取一个需要同步的 Todo 列表条目记住它的完整实体 IDEntity ID。第 3 步填写连接器字段URL你的 Home Assistant 地址必须包含/api后缀。例如http://homeassistant.local:8123/api或https://homeassistant.example.com/api注意较新版本的连接器界面不再明确提示要加/api但 URL 中缺少/api会导致连接器无法工作。Access Token粘贴第 1 步生成的 Long-Lived Access Token。Name of Todo List填写 HA Todo 的完整实体 ID如todo.shopping而不是显示名称shopping。填错将导致找不到目标列表。源码层面的实现细节从源码结构看cookbook/models.pyConnectorConfig模型记录了连接器的全部配置字段urlHA 地址模型字段为URLFieldtoken长生命周期访问令牌CharField(max_length512)在序列化器中标记为write_only即 API 返回时永不回显见 cookbook/serializer.pytodo_entityTodo 实体 IDCharField(max_length128)三个布尔开关on_shopping_list_entry_created_enabled/on_shopping_list_entry_updated_enabled/on_shopping_list_entry_deleted_enabled分别控制三种动作是否启用supports_description_field目标 Todo 实体是否支持 description 字段默认True。在运行层cookbook/connectors/homeassistant.py 中HomeAssistant类的 API 调用逻辑为通过urljoin拼接请求路径请求头携带Authorization: Bearer token新增条目时调用POST services/todo/add_item数据体包含entity_id与item若目标支持 description 字段则附带形如From TandoorRecipes, by 用户的描述删除条目时调用POST services/todo/remove_item若 HA 中不存在该条目ClientResponseError一定会被抛出此时按debug级别记录属于预期行为条目文本会带上数量与单位例如牛奶 (1.50 l)数量小数末尾的 0 会被自动去除见 homeassistant.py。连接器的调度架构连接器的触发与调度由 cookbook/connectors/connector_manager.py 中的ConnectorManager完成其工作方式源码注释中亦有说明为应用启动时见 cookbook/apps.py通过 Django 的post_save/post_delete信号把ConnectorManager挂接为处理器任何ShoppingListEntry或ConnectorConfig的增删改都会把Work(actionType, instance)非阻塞地推入一个queue.Queue队列上限由EXTERNAL_CONNECTORS_QUEUE_SIZE控制默认 100见 recipes/settings.py后台线程中的 worker 逐个消费队列如果是ConnectorConfig变化则清空并按 space 维度重建该空间的连接器缓存如果是购物清单条目变化则异步并发地触发该空间所有已启用连接器的对应回调总耗时取决于最慢的那个连接器可通过DISABLE_EXTERNAL_CONNECTORS环境变量默认False整体关闭连接器功能。对应的调度正确性由测试覆盖见 cookbook/tests/other/test_connector_manager.py例如test_run_connectors验证了对一个ShoppingListEntry执行DELETED动作时只会调用连接器的on_shopping_list_entry_deleted而不会误触created/updated回调。总结在 Home Assistant 上部署 Tandoor Recipes 的完整路径是添加 alexbelgium 社区仓库 → 安装 Add-on → 配置ALLOWED_HOSTS/DB_TYPE/SECRET_KEY/PORT及可选的 PostgreSQL 参数→ 启动并检查日志 → 通过 Ingress 或http://homeassistant.local:9928使用。日常维护只需记住两件事更新由每 3 天一次的镜像对齐自动推送以及务必备份/config/addons_config/tandoor_recipes目录以及 mariadb 数据库。如果需要让购物清单在 Tandoor 与 HA Todo 列表之间自动同步再在应用内配置 HomeAssistant 连接器即可。安装部署细节可进一步参考 Docker 安装文档 与 配置文档。【免费下载链接】recipesApplication for managing recipes, planning meals, building shopping lists and much much more!项目地址: https://gitcode.com/GitHub_Trending/re/recipes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表