『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 845|回复: 5

[求助] 关于语音控制调整热水器水温具体数值的问题

[复制链接]

7

主题

59

帖子

352

积分

中级会员

Rank: 3Rank: 3

积分
352
金钱
293
HASS币
0
发表于 2023-2-15 21:03:30 | 显示全部楼层 |阅读模式
本帖最后由 BabyDriver 于 2023-2-15 21:03 编辑

小爱对话实体.jpg 如上图,这是小爱音响对话实体,状态(state)里记录着最近一次语音唤醒后的对话,比如上图里的是“水温调到四十三度”。

这样就可以通过小爱对话自动化(如下)匹配到这句话里如果有“水温调整”,就触发下面对应的调整水温脚本,达到语音调整热水器水温的效果。

小爱对话自动化
------------------------------------------------------------------
alias: 语音唤醒小爱操控接入HA的设备 V2
description: 当语音人为唤醒小爱后 关键词匹配和小爱的对话内容并操作对应的设备
trigger:
  - platform: state
    entity_id: sensor.xiaomi_l15a_b7cf_conversation
condition:
  - condition: template
    value_template: |
      {{ (trigger.to_state|default(0)) and as_timestamp(now()) -
      as_timestamp(trigger.to_state.attributes.timestamp) < 30 }}      {# 限制30秒内的对话 #}
action:
  - if:
      - condition: template
        value_template: |
          {{ '水温调整' in trigger.to_state.state }}
    then:
      - service: script.1676365539882  #调整水温脚本
        data: {}
  - service: system_log.write
    data:
      level: info
      logger: custom_components.xiaomi_miot.xiaoai
      message: |
        {{ trigger.entity_id }}: {{ trigger.to_state.state }}
mode: single

-------------------------------------------------------------------

调整水温脚本
-------------------------------------------------------------------
alias: 设置热水器温度
sequence:
  - service: water_heater.set_temperature
    data:
      temperature: 43
    target:
      entity_id: water_heater.211106234599360_water_heater
mode: single

-------------------------------------------------------------------
那么问题来了,调整水温脚本里  ‘temperature: 43'这一句利用模板语句,怎么写 才能达到
自动提取小爱音响对话实体里“水温调到XXX度”并把中文字符(因为小爱对话实体里识别到的只会是中文字符)转换成相应的罗马数值赋予temperature:xxx。
比如对话实体里是“水温调整到三十八度”,temperature的赋值就自动是38,以此类推。


望各位兄弟,指条路,谢了!
回复

使用道具 举报

30

主题

276

帖子

1675

积分

金牌会员

Rank: 6Rank: 6

积分
1675
金钱
1399
HASS币
0
发表于 2023-2-15 22:38:43 | 显示全部楼层
顶,我也一直有这样的需求,但是不知道要怎么做,先下个标记回来学习
回复

使用道具 举报

76

主题

1364

帖子

1万

积分

元老级技术达人

积分
19271
金钱
17867
HASS币
290
发表于 2023-2-15 23:05:54 | 显示全部楼层
模板还没试过,刚试了在node-red中可以解决。

流程就是先获取文字内容,
再用正则匹配出中文数字 /([零一二三四五六七八九十百千万亿]+)
再找一个函数将这个中文数字转成阿拉数字,网上有js和python的。
再用replace替换一下。

简单点的就是这个句子中只能有一处数字。ha控制中应该一句话中也只需要用到一处数字。
回复

使用道具 举报

35

主题

980

帖子

4561

积分

论坛元老

Rank: 8Rank: 8

积分
4561
金钱
3581
HASS币
20
发表于 2023-2-16 07:30:36 | 显示全部楼层
热水器有加热时间的,我目前的方案是设定定时开关和变换温度,然后自动根据当前温度决定是否加热。可以做到基本无视热水器的存在。
回复

使用道具 举报

7

主题

59

帖子

352

积分

中级会员

Rank: 3Rank: 3

积分
352
金钱
293
HASS币
0
 楼主| 发表于 2023-2-16 08:43:25 | 显示全部楼层
sctale 发表于 2023-2-16 07:30
热水器有加热时间的,我目前的方案是设定定时开关和变换温度,然后自动根据当前温度决定是否加热。可以做到 ...

我是燃气热水器,而且关闭了零冷水功能。不过按照你的思路 可以试着弄个 根据季节、环境温度、管道水温自动调整设定水温的自动化。
回复

使用道具 举报

7

主题

59

帖子

352

积分

中级会员

Rank: 3Rank: 3

积分
352
金钱
293
HASS币
0
 楼主| 发表于 2023-2-16 08:45:31 | 显示全部楼层
dscao 发表于 2023-2-15 23:05
模板还没试过,刚试了在node-red中可以解决。

流程就是先获取文字内容,

谢大佬提供思路,只是我还不会玩NR      我先用笨办法试试搞一下,再去学NR
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-25 15:27 , Processed in 0.059293 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表