home-assistant-variables

home-assistant-variables

Home Assistant的灵活变量管理解决方案

home-assistant-variables是一个专为Home Assistant设计的自定义组件,用于管理通用变量实体。该组件支持手动设置和自动更新变量,提供模板和SQL查询功能,并具有灵活的配置选项。它与Home Assistant的场景和Lovelace UI无缝集成,为智能家居自动化提供强大的变量管理能力。

Home Assistant变量自动化模板SQL查询Github开源项目

home-assistant-variables

var 组件是一个 Home Assistant 集成,用于声明和设置通用变量实体。变量可以使用 var.set 服务手动设置,也可以使用模板或 SQL 查询设置,这些查询会在指定事件触发时自动运行。var 组件依赖于 recorder 组件以获取最新的 SQL 查询,并使用相同的数据库设置。

<a href="https://www.buymeacoffee.com/snarkysnark" target="_blank"><img src="https://yellow-cdn.veclightyear.com/87312a0a/7954e547-6630-4c17-b13a-53166298769c.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a><br>

目录

安装

手动安装

  1. 下载最新版本
  2. 解压release包,将 custom_components/var 目录复制到 Home Assistant 安装目录的 custom_components 目录中。
  3. configuration.yaml 中添加 var 条目。
  4. 重启 Home Assistant。

通过 HACS 安装

  1. 确保已安装 HACS
  2. 搜索并安装 "Variable" 集成。
  3. configuration.yaml 中添加 var 条目。
  4. 重启 Home Assistant。

配置

要添加变量,请在 configuration.yamlvar 组件下包含它。以下示例添加了两个变量实体,xy

# configuration.yaml 示例条目 var: x: friendly_name: 'X' initial_value: 0 icon: mdi:bug y: friendly_name: 'Y' initial_value: 'Sleeping' entity_picture: '/local/sleep.png'

配置变量

var (map) (必需)

  • unique_id (string)(可选) VAR 实体的唯一标识符,用于从 UI 内覆盖设置,如实体名称或房间。请谨慎使用,仅在明确需要时使用!
  • friendly_name (string)(可选) 在前端使用的名称。
  • friendly_name_template (template)(可选) 定义前端使用的名称模板(覆盖 friendly_name)。

注意:每次触发变量更新时(即通过 tracked_entity_idtracked_event_typevar.update),都会评估 friendly_name_template。要传递一个由 var.set 评估一次的模板,请在 data_template 中使用 friendly_name 参数。

  • initial_value (match_all)(可选) Home Assistant 启动时的初始值。
  • value_template (template)(可选) 定义值的模板(覆盖 initial_value)。

注意:每次触发变量更新时(即通过 tracked_entity_idtracked_event_typevar.update),都会评估 value_template。要传递一个由 var.set 评估一次的模板,请在 data_template 中使用 value 参数。

value_template 类似,每次更新时都会评估属性。

  • tracked_entity_id (string | list)(可选) 实体 ID 列表,使变量对这些实体的状态变化做出反应。
  • tracked_event_type (string | list)(可选) 事件类型列表,使变量对这些事件的触发做出反应。
  • query (string)(可选) SQL 查询字符串,最多应返回 1 个结果。
  • column (string)(可选) 从 SQL 查询结果中选择的列。
  • restore (boolean)(可选) 每当 Home Assistant 重启时恢复变量的值。

默认值:true

  • force_update (boolean)(可选) 每次更新变量值时触发状态变化事件,即使值没有改变。如果为 false,只有在值发生明显变化时才会触发状态变化事件。

默认值:false

  • unit_of_measurement (string)(可选) 定义变量的度量单位(如果有)。这也会影响历史可视化中的图形表示,显示为连续值。缺少 unit_of_measurement 的变量显示为离散值。

默认值:None

  • icon (string)(可选) 组件显示的图标。
  • icon_template (template)(可选) 定义前端使用的图标模板(覆盖 icon)。

注意:每次触发变量更新时(即通过 tracked_entity_idtracked_event_typevar.update),都会评估 icon_template。要传递一个由 var.set 评估一次的模板,请在 data_template 中使用 icon 参数。

  • entity_picture (string)(可选) 组件显示的图片。
  • entity_picture_template (template)(可选) 定义前端使用的 entity_picture 模板(覆盖 entity_picture)。

注意:每次触发变量更新时(即通过 tracked_entity_idtracked_event_typevar.update),都会评估 entity_picture_template。要传递一个由 var.set 评估一次的模板,请在 data_template 中使用 entity_picture 参数。

服务

var.set

set 服务可用于从自动化或脚本中设置变量实体的状态或属性。所有配置参数也可以使用 var.set 设置。

参数

  • entity_id (string | list)(必需) 要由服务设置的 var 实体 ID 列表。
  • friendly_name (string)(可选)
  • friendly_name_template (template)(可选)
  • value (match_all)(可选)
  • value_template (template)(可选)
  • attributes (map)(可选)
  • tracked_entity_id (string | list)(可选)
  • tracked_event_type (string | list)(可选)
  • query (string)(可选)
  • column (string)(可选)
  • restore (boolean)(可选)
  • force_update (boolean)(可选)
  • unit_of_measurement (string)(可选)
  • icon (string)(可选)
  • icon_template (template)(可选)
  • entity_picture (string)(可选)
  • entity_picture_template (template)(可选)

示例

这个例子设置了一个自动化,在午夜重置变量的值。

var: daily_diaper_count: friendly_name: "每日尿布数量" initial_value: 0 icon: mdi:toilet daily_bottle_feed_volume_formula: friendly_name: "每日配方奶摄入量" initial_value: 0 unit_of_measurement: '盎司' icon: mdi:baby-bottle-outline automation: - alias: "重置婴儿计数器" trigger: - platform: time at: '00:00:00' action: - service: var.set data: entity_id: - var.daily_diaper_count - var.daily_bottle_feed_volume_formula value: 0 icon: mdi:null

var.update

update 服务可用于从自动化或脚本中强制更新变量实体。

参数

  • entity_id (string | list)(必需) 要由服务更新的 var 实体 ID 列表。

示例

这个例子设置了一个自动化,每 5 分钟更新一次变量。

var: temp_sensor_battery: friendly_name: "温度传感器电池" value_template: "{{ state.attr('sensor.temperature', 'battery') }}" automation: - alias: "每 5 分钟更新温度传感器电池变量" trigger: - platform: time_pattern minutes: '/5' action: - service: var.update data: entity_id: var.temp_sensor_battery

注意:homeassistant.update_entity 服务可以更普遍地用于更新任何实体,包括 var 实体。

自动更新

使用追踪实体更新

可以设置变量在实体状态改变时更新。这个例子计算 input_boolean.fooinput_boolean.bar 的状态变化次数。

var: toggle_count: friendly_name: "切换次数" initial_value: 0 value_template: "{{ (states('var.toggle_count') | int) + 1 }}" tracked_entity_id: - input_boolean.foo - input_boolean.bar

使用追踪事件类型更新

可以设置变量在事件触发时更新。这个例子在 my_custom_event 触发时将变量 yz 相乘。

var: x: friendly_name: 'yz' value_template: "{{ (states('var.y') | int) * ( states('var.z') | int) }}" tracked_event_type: my_custom_event attributes: y: "{{ states('var.y') }}" z: "{{ states('var.z') }}"

模板

var 组件与模板传感器共享特性。变量的许多属性可以使用模板设置。

使用模板选择实体/值

模板可以与变量 set 服务一起使用,以选择 entity_id 并设置变量实体的任何属性。这个例子展示了通过模板选择 entity_idvalue

automation: - alias: "处理奶瓶喂食事件" trigger: platform: event event_type: bottle_feed_event action: service: var.set data_template: entity_id: >- {% if trigger.event.data.contents == 'milk' %} var.daily_bottle_feed_volume_milk {% elif trigger.event.data.contents == 'formula' %} var.daily_bottle_feed_volume_formula {% endif %} value: >- {% if trigger.event.data.contents == 'milk' %} {{ (states('var.daily_bottle_feed_volume_milk') | int) + (trigger.event.data.volume | int) }} {% elif trigger.event.data.contents == 'formula' %} {{ (states('var.daily_bottle_feed_volume_formula') | int) + (trigger.event.data.volume | int) }} {% endif %} attributes: >- last_feed_volume: "{{ trigger.event.data.volume }}"

使用模板动态更新变量

这个例子展示了如何根据另一个实体的状态自动更新变量的值和其他属性。模板值将在 tracked_entity_id 下列出的任何追踪实体的状态发生变化时更新。

var: waldo_location_status: friendly_name: "Waldo 位置状态" value_template: >- {% if states('device_tracker.waldo_phone_wifi') == 'home' and states('device_tracker.waldo_phone_bluetooth') == 'home' %} {% else %} 未知 {% endif %} entity_picture_template: >- {% if states('var.waldo_location_status') == '家' %} /local/home.jpg {% else %} /local/question_mark.jpg {% endif %} tracked_entity_id: - device_tracker.waldo_phone_wifi - device_tracker.waldo_phone_bluetooth - var.waldo_location_status

SQL 查询

var 组件还与 SQL 传感器共享特

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多