news 2026/9/16 18:29:39

Home Assistant Mealie 集成:使用 mealie.get_recipe 动作按 ID 或 Slug 获取完整菜谱

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Home Assistant Mealie 集成:使用 mealie.get_recipe 动作按 ID 或 Slug 获取完整菜谱

Home Assistant Mealie 集成:使用 mealie.get_recipe 动作按 ID 或 Slug 获取完整菜谱

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

本指南以 Home Assistant 的 Mealie 集成为背景,系统讲解mealie.get_recipe动作的完整用法:它如何通过菜谱 ID 或 slug 从自托管的 Mealie 实例中取回包含全部细节与步骤的菜谱数据,并将其存入响应变量供自动化或脚本的后续步骤使用。读完本文,你将掌握在界面与 YAML 两种方式下调用该动作、理解其全部参数与响应数据的含义,并能结合mealie.get_recipesmealie.get_mealplan等关联动作,构建从"搜索菜谱 → 读取详情 → 展示今日晚餐"的完整智能厨房自动化链路。

mealie.get_recipe是 Home Assistant Mealie 集成提供的一组菜谱管理动作之一,其权威使用说明位于 source/_actions/mealie.get_recipe.markdown。Mealie 是一个开源自托管的菜谱管理、膳食规划与购物清单应用;该集成(ha_integration_type: service,质量等级为 platinum,自 2024.7 起可用)允许 Home Assistant 读取并更新 Mealie 实例中保存的数据。本文即围绕"读取菜谱"这一核心动作展开。

动作概述与工作原理

使用mealie.get_recipe动作,可以从 Mealie 按ID 或 slug获取一份菜谱,返回的响应中包含该菜谱的完整细节与步骤(食材、做法步骤等)。其核心特点有两个:

  1. 定位方式灵活:只需提供菜谱的 ID 或 slug(例如roasted-tomato-soup)即可取回菜谱,无需提前知道菜谱在 Mealie 中的完整对象结构。
  2. 结果通过响应变量返回:动作不会创建设备或实体,而是把结果写入你在调用时命名的response variable(响应变量),供同一自动化或脚本中的后续步骤继续使用。这是 Home Assistant 服务调用(service call)的一种标准能力,适合在自动化中"先取数据、再加工使用"的串联式场景。

前置条件:先配置好 Mealie 集成

在调用本动作之前,需要先在 Home Assistant 中完成 Mealie 集成的配置(Config Flow)。配置前提与步骤见 Mealie 集成文档:

  • 支持Mealie 2.0 及更高版本的实例;
  • 在 Mealie 中生成 API Token:登录 Mealie → 进入用户资料页 →Manage Your API Tokens/user/profile/api-tokens)→ 命名(如Home Assistant)→Generate→ 复制 Token;
  • 在 Home Assistant 中通过配置流程填入三个参数:
参数说明
URLMealie 安装实例的访问地址
API token上一步生成的 API Token
Verify SSL certificate默认启用;仅当使用自签名证书时才关闭

完成配置后,Home Assistant 会为每种膳食计划类型创建日历、为每个购物清单创建待办列表,并提供菜谱数、分类、标签、工具、用户等统计传感器。此时mealie.get_recipe等动作即可直接使用,你可以在自动化、脚本或临时服务调用中指定该配置条目的config_entry_id

在界面中使用:从自动化或脚本获取菜谱

如果你偏好可视化方式构建自动化和脚本,Home Assistant 会一步步引导你完成操作,无需掌握 YAML 知识(此引导片段定义于 actions/ui_header.md)。

按照 mealie.get_recipe.markdown 中的步骤操作:

  1. 进入设置(Settings)> 自动化与场景(Automations & scenes)
  2. 打开一个已有的自动化或脚本;或选择创建自动化(Create automation)> 创建新自动化(Create new automation)
  3. 若是新建自动化,需要在When(何时)部分添加一个触发器;脚本不需要触发器,它们在被其他东西调用时运行。
  4. Then do(然后执行)部分,选择添加动作(Add action)
  5. 在搜索框中搜索并选择Mealie: Get recipe
  6. 选择要使用的Mealie 实例(Mealie instance),并设置菜谱 ID 或 slug(Recipe ID or slug)
  7. 响应变量(Response variable)字段中输入一个名称来存放数据,例如recipe
  8. 点击保存(Save)

界面选项一览

界面中出现的选项如下(模板定义于 options_ui.rb):

界面选项说明
Mealie instance要从中获取菜谱的 Mealie 实例
Recipe ID or slug要获取的菜谱的 ID 或 slug

关于 Targets(目标选择)

需要特别说明:本动作不支持 targets(目标选择)。在界面中,它不会提示你选择区域(area)、设备(device)、实体(entity)或标签(label);你直接选择 Mealie 实例即可。这是因为该动作操作的是 Mealie 服务端的数据,而非 Home Assistant 本地实体。

在 YAML 中使用:完整参数参考

如果你直接编写 YAML,或想确切了解 Home Assistant 底层做了什么,请参考本节的技术参考(该段引导定义于 actions/yaml_header.md),其中列出了 YAML 中使用的字段名、类型及必填性。

在 YAML 中,本动作的服务名称为mealie.get_recipe。把结果存入响应变量,以便在后续步骤中使用:

action: mealie.get_recipe data: config_entry_id: YOUR_MEALIE_CONFIG_ENTRY_ID recipe_id: roasted-tomato-soup response_variable: recipe

上述示例通过 slugroasted-tomato-soup获取菜谱,并将其存入recipe响应变量。

YAML 参数表

参数必填类型说明
config_entry_idstring要从中获取菜谱的 Mealie 配置条目(config entry)的 ID
recipe_idstring要获取的菜谱的 ID 或 slug

其中config_entry_id即集成配置完成后生成的配置条目 ID,可在设置 > 设备与服务中查看该 Mealie 条目的详情获取。

响应数据:拿到手的到底是什么

调用mealie.get_recipe后,动作会返回所请求菜谱的完整细节与步骤。这些数据被写入你指定的响应变量(例如recipe),可以在同一自动化/脚本的后续模板、条件或后续服务调用中引用。

值得补充的是:这一"完整详情"与搜索动作返回的"简要描述"形成对比。若你只需要一份菜谱列表或菜谱 ID/slug,应使用mealie.get_recipes;而当需要展开某份菜谱的全部内容(如食材清单、做法步骤)时,再用本动作取回完整数据。这种"先搜索定位、后取详情"的两步式用法,正是这两个动作设计上的搭配关系。

实战组合:先搜索定位,再获取完整菜谱

正如 mealie.get_recipes.markdown 所述,要找到一份菜谱的 ID 或 slug,请使用mealie.get_recipes动作:它会在所有菜谱属性上执行搜索,返回每份菜谱的简要描述,并可通过result_limit控制返回数量(默认 10)。

一个典型的自动化链路可以这样组织:

action: mealie.get_recipes data: config_entry_id: YOUR_MEALIE_CONFIG_ENTRY_ID search_terms: tomato soup result_limit: 5 response_variable: recipes
action: mealie.get_recipe data: config_entry_id: YOUR_MEALIE_CONFIG_ENTRY_ID recipe_id: "{{ recipes[0].id }}" response_variable: recipe

即先用mealie.get_recipes搜索并取回菜谱列表(含 ID/slug),再从中取第一个结果,交给mealie.get_recipe获取完整详情。

两个关联动作的 YAML 参数对比如下:

参数get_recipesget_recipe
config_entry_id必填,string必填,string
search_terms选填,string(在所有属性上搜索)
result_limit选填,integer,默认 10
recipe_id必填,string(ID 或 slug)

关于搜索行为的细节

mealie.get_recipes的搜索行为取决于 Mealie 后端:使用 PostgreSQL 后端时为模糊搜索(fuzzy search),否则为字面搜索(literal search)。因此在依赖搜索结果时,需要注意你的 Mealie 实例所使用的数据库类型。

深度应用:把菜谱接入"今日晚餐"展示与通知

mealie.get_recipe擅长取回单份菜谱的完整细节;若你想读取某天的膳食计划(例如"今天晚饭吃什么"),则可以与mealie.get_mealplan动作配合使用。

mealie.get_mealplan会按日期范围返回膳食计划条目,响应数据位于mealplan键下,每条包含膳食类型(如breakfastdinner)、日期,以及计划中的菜谱或备注。其 YAML 参数为:config_entry_id(必填)、start_date(选填,默认今天)、end_date(选填,默认今天)。

mealie.get_mealplan.markdown 给出了一个实用的模板传感器示例——每小时触发一次,读取今天的膳食计划,并把晚餐菜名展示为传感器状态:

template: - triggers: - trigger: time_pattern hours: /1 actions: - action: mealie.get_mealplan data: config_entry_id: YOUR_MEALIE_CONFIG_ENTRY_ID response_variable: result sensor: - name: "Dinner today" unique_id: mealie_dinner_today state: > {% for meal in result.mealplan if meal.entry_type == "dinner" -%} {{ meal.recipe['name'] if meal.recipe is not none else meal.title -}} {{ ", " if not loop.last }} {%- endfor %}

在这个链路中,mealie.get_mealplan返回的计划条目里带有菜谱引用;若需要在仪表板或通知中展示完整菜谱细节,则可在后续步骤调用mealie.get_recipe,以计划条目中携带的菜谱 ID 或 slug 取回完整数据,用于展示做法步骤、食材清单或生成购物提醒。

关联的膳食计划动作族

围绕膳食计划,Mealie 集成还提供了一组可与本动作搭配的动作(见 mealie.set_mealplan.markdown、mealie.set_random_mealplan.markdown、mealie.update_mealplan.markdown、mealie.delete_mealplan.markdown):

动作作用关键参数
mealie.set_mealplan在指定日期安排一份菜谱或膳食备注dateentry_typebreakfast/lunch/dinner/side/dessert/snack/drink)、recipe_idnote_title/note_text
mealie.set_random_mealplan在指定日期随机安排一份菜谱dateentry_type
mealie.update_mealplan更新已有膳食计划(菜谱或备注)mealplan_iddateentry_typerecipe_idnote_title/note_text
mealie.delete_mealplan删除已有膳食计划mealplan_id
mealie.import_recipe从 URL 将菜谱导入 Mealie(可选返回导入的菜谱)url(必填)、include_tags(选填,boolean,默认 false)

这些动作与本动作共享同一config_entry_id参数与"响应变量"机制:set_mealplanset_random_mealplanupdate_mealplanimport_recipe均可选择性地把结果写入响应变量;而get_recipeget_recipesget_mealplan则始终通过响应变量返回结果。整体上构成"查询 → 规划 → 更新 → 展示"的完整闭环。

Good to know:使用要点与排障

  • 如何找到菜谱 ID 或 slug:使用mealie.get_recipes动作搜索菜谱,即可从响应中取得菜谱 ID 或 slug,再传入mealie.get_recipe获取完整详情。
  • 本动作不产生实体:它属于纯服务调用,结果只进入响应变量;若需要把菜谱数据可视化,应结合模板传感器(如上面"今日晚餐"示例)或模板卡片输出。
  • Mealie 版本要求:集成仅支持 Mealie 2.0 及更高版本(见 Mealie 集成文档)。
  • 连接排查:若你使用的是 Home Assistant 的 Mealie 应用(原 Mealie 插件),请使用带端口号的直连 URL(默认 9090),不要使用以/xxx_mealie结尾的 ingress 地址。
  • 排障方式:如遇问题,可启用调试日志并重启集成,复现问题后停止调试日志,并(如有可能)下载诊断数据一并提交问题报告。

小结

mealie.get_recipe是 Home Assistant Mealie 集成中用于按 ID 或 slug 取回完整菜谱细节的核心动作:界面操作只需选择实例、填写菜谱标识并命名响应变量;YAML 调用只需config_entry_idrecipe_id两个必填参数。将其与mealie.get_recipes(搜索定位)、mealie.get_mealplan(读取膳食计划)以及mealie.set_mealplan等规划类动作配合,即可在自动化中实现从菜谱搜索、详情读取到"今日晚餐"展示与提醒的完整智能厨房工作流。相关动作的权威参数说明与界面操作步骤,均可在仓库的 source/_actions/ 目录下按动作名逐一查阅。

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 18:28:11

硬件岗电路分析笔试面试核心考点与实战技巧

每年秋招春招,硬件岗的笔试面试题库里,电路分析永远是那座绕不过去的大山。不管是嵌入式硬件、电源方向、还是做板级设计的岗位,JD里写着一句“扎实的电路分析基础”,等真到了卷子上,考的就是戴维南定理、暂态响应、运…

作者头像 李华
网站建设 2026/9/16 18:27:54

Proteus仿真STM32点灯入门:从GPIO配置到LED闪烁

简介:一套面向零基础或 51 单片机转学者的 STM32 入门仿真工程,对应教程第一讲 LED 点亮与闪烁。以 Proteus 无实物方式搭建 STM32F103R6 最小验证环境,重点解决没有开发板也能完成 IO 输出初始化、延时与闪烁控制学习的问题。工程文件共 163…

作者头像 李华
网站建设 2026/9/16 18:27:42

STM32驱动OLED滚动显示:SSD1306显存操作与常见坑解析

简介:面向STM32开发者的一套完整0.96寸OLED滚动显示工程,解决小屏上长文本展示受限的问题,适合嵌入式入门者快速上手,也适合有基础工程师参考其驱动设计。压缩包共90个文件,整包1.72MB,包含C源文件、头文件…

作者头像 李华
网站建设 2026/9/16 18:27:04

Unity UI位置设置全解析:RectTransform坐标体系与避坑指南

刚接触Unity3D那会儿,我干过一件特别蠢的事:想在屏幕正上方摆一个按钮,直接用transform.position new Vector3(0, 200, 0),结果按钮飞到了屏幕外面,怎么调都回不来。后来翻了RectTransform的文档才明白,UI…

作者头像 李华
网站建设 2026/9/16 18:26:52

大模型system prompt泄漏现象与防御实践

1. 这不是“泄露”,而是大模型时代的一次集体认知校准最近在多个技术社区、AI开发者群和内部分享会上,“system_prompts_leaks”这个短语高频出现,它既不是某起安全事件的代号,也不是某个漏洞的CVE编号,而是一类现象的…

作者头像 李华
网站建设 2026/9/16 18:26:49

CentOS普通用户添加sudo权限的三种方案与避坑指南

服务器刚到手那会儿,我习惯直接拿 root 干活,图省事。直到有一次手滑,一条rm -rf差点把线上数据库目录清空,才老老实实给普通用户配好 sudo 权限。CentOS 给普通用户添加 sudo 权限这件事,看着简单,但里面有…

作者头像 李华