- 积分
- 221
- 金钱
- 179
- 威望
- 0
- 贡献
- 0
- HASS币
- 0
中级会员
- 积分
- 221
- 金钱
- 179
- HASS币
- 0
|
楼主 |
发表于 2025-11-20 00:51:48
|
显示全部楼层
本帖最后由 aaaabmvdfgbvgvv 于 2025-12-3 09:43 编辑
# 【核心功能】小爱语音控制美的热水器调温自动化
# 适用场景:通过小爱音箱说"热水器温度XX度"(XX支持32-65的阿拉伯数字/中文数字),自动同步设置美的热水器温度
# 依赖设备:小米小爱音箱(对话传感器)、美的智能热水器(支持米家/HA接入)
alias: 小爱对话触发热水器调温
description: 当小爱对话含“热水器温度XX度”时,自动调整美的热水器温度(支持中文数字+32-65度限制)
triggers:
- entity_id: sensor.xiaomi_s12_0121_conversation # 替换为你的小爱音箱对话传感器实体ID
trigger: state # 触发类型:传感器状态变化(即小爱收到新对话时触发)
conditions:
- condition: template # 条件类型:模板判断(筛选有效指令)
value_template: |
{{
'热水器温度' in trigger.to_state.state and # 1. 对话中必须包含"热水器温度"关键词
# 2. 能提取到32-65之间的阿拉伯数字或中文数字(仅匹配有效温度范围)
(trigger.to_state.state | regex_findall('(\\d+|三十二|三十三|三十四|三十五|三十六|三十七|三十八|三十九|四十|四十一|四十二|四十三|四十四|四十五|四十六|四十七|四十八|四十九|五十|五十一|五十二|五十三|五十四|五十五|五十六|五十七|五十八|五十九|六十|六十一|六十二|六十三|六十四|六十五)') | first != none)
}}
actions:
- data:
entity_id: water_heater.211106249939043_water_heater # 替换为你的美的热水器实体ID
temperature: >
{% set chinese_num = trigger.to_state.state |
regex_findall('(\\d+|三十二度|三十三度|三十四度|三十五度|三十六度|三十七度|三十八度|三十九度|四十度|四十一度|四十二度|四十三度|四十四度|四十五度|四十六度|四十七度|四十八度|四十九度|五十度|五十一度|五十二度|五十三度|五十四度|五十五度|五十六度|五十七度|五十八度|五十九度|六十度|六十一度|六十二度|六十三度|六十四度|六十五度)')
| first %} # 提取对话中的温度关键词(含"度"字,确保匹配准确性)
{% set num_map = { # 中文数字+度 → 阿拉伯数字映射表(用于转换识别)
'三十二度':32, '三十三度':33, '三十四度':34, '三十五度':35, '三十六度':36, '三十七度':37, '三十八度':38, '三十九度':39,
'四十度':40, '四十一度':41, '四十二度':42, '四十三度':43, '四十四度':44, '四十五度':45, '四十六度':46, '四十七度':47, '四十八度':48, '四十九度':49,
'五十度':50, '五十一度':51, '五十二度':52, '五十三度':53, '五十四度':54, '五十五度':55, '五十六度':56, '五十七度':57, '五十八度':58, '五十九度':59,
'六十度':60, '六十一度':61, '六十二度':62, '六十三度':63, '六十四度':64, '六十五度':65
} %}
{% set raw_temp = num_map.get(chinese_num, chinese_num | int(default=40)) %} # 转换温度:优先查映射表,无匹配则转阿拉伯数字(默认40度)
{% set limited_temp = raw_temp if 32 <= raw_temp <= 65 else 32 if raw_temp < 32 else 65 %} # 温度限制:低于32→32,高于65→65,中间值保持不变
{{ limited_temp }} # 输出最终要设置的温度
action: water_heater.set_temperature # 执行动作:设置热水器温度
- delay: # 延迟等待:给热水器响应时间,避免后续语音反馈时温度未更新
hours: 0
minutes: 0
seconds: 2
milliseconds: 500
- action: xiaomi_miot.intelligent_speaker # 执行动作:小爱音箱语音反馈
metadata: {}
data:
execute: false
silent: false
entity_id: media_player.xiaomi_s12_0121_play_control # 替换为你的小爱音箱媒体播放器实体ID
text: >-
已设置热水器温度为{{ state_attr('water_heater.211106249939043_water_heater', 'temperature') }}摄氏度 # 语音播报实际设置的温度(读取设备当前温度属性)
mode: single # 运行模式:单次执行(避免重复触发时冲突)
# 【使用说明】
# 1. 替换3处实体ID:小爱对话传感器、热水器、小爱媒体播放器(在HA的"设置→设备与服务→实体"中查找)
# 2. 支持语音指令示例:"热水器温度45度"、"热水器温度五十五度"、"把热水器温度调到38度"
# 3. 温度限制:默认32-65度(可修改value_template和num_map中的数值调整范围)
# 4. 若中文数字识别失败:检查num_map是否包含目标中文数字+度的组合,确保无错别字 |
|