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

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

[求助] 【已解决】小爱音箱极简报时加提示音

[复制链接]

5

主题

39

帖子

159

积分

注册会员

Rank: 2

积分
159
金钱
120
HASS币
0
发表于 2024-12-21 20:44:47 | 显示全部楼层 |阅读模式
本帖最后由 sanmoking 于 2024-12-29 22:12 编辑

老铁们,帮忙看一下哈:

action: notify.send_message
metadata: {}
data:
  message: "["现在时间{{states("sensor.time")}}"]"
target:
  entity_id: notify.xiaomi_cn_801046203_l05c_play_text_a_5_3
这个脚本可以正常实现小爱音箱播报【现在时间20点26分】,然后我在/homeassistant/configuration.yaml里面加了一段这个:

# 自定义Sensor.
template:
  - sensor:
    - name: "zzhour"
      state: "{% if now().hour + 0 == 2 or now().hour + 0 == 14 %}两点{% elif now().hour + 0 <= 12 %}{{now().hour + 0}}点{% elif now().hour + 0 >= 13 %}{{now().hour - 12}}点{% endif %}"
  - sensor:
    - name: "zzminute"
      state: "{% if now().minute + 0 == 0 %}。{% elif now().minute + 0 >= 1 and now().minute + 0 <= 9 %}零{{now().minute + 0}}{% elif now().minute + 0 == 10 %}十分{% elif now().minute + 0 == 30 %}半{% else %}{{now().minute + 0}}{% endif %}"
        

想要实现精简报时:三点15、两点零6,四点半,这样的语法,改了一下脚本:

action: notify.send_message
metadata: {}
data:
  message: "["{{states("sensor.zzhour")}}{{states("sensor.zzminute")}}"]"
target:
  entity_id: notify.xiaomi_cn_801046203_l05c_play_text_a_5_3


然而并没有成功,。。小爱播报【现在时间unknow】,老铁们帮忙看看,我是哪里写的不对还是哪哪都没写对。


【实现过程请往后翻】


回复

使用道具 举报

5

主题

39

帖子

159

积分

注册会员

Rank: 2

积分
159
金钱
120
HASS币
0
 楼主| 发表于 2024-12-24 01:29:32 | 显示全部楼层
本帖最后由 sanmoking 于 2024-12-24 02:28 编辑

操操操,原来还要搞好语法缩进,差一个空格都不行,草擦擦哦,然后第一次添加sensor还要重启系统,只快速重载YAML不行,添加过一次之后才可以用快速重载,,,,


又改了一下bug,之前没考虑00分:
# 自定义Sensor.
template:
  - sensor:
    - name: "zzhour"
      state: "{% if now().hour == 2 or now().hour == 14 %}两点{% elif now().hour <= 12 %}{{now().hour}}点{% elif now().hour >= 13 %}{{now().hour - 12}}点{% endif %}"
  - sensor:
    - name: "zzminute"
      state: "{% if now().minute == 0 %}。{% elif now().minute >= 1 and now().minute <= 9 %}零{{now().minute}}{% elif now().minute == 10 %}十分{% elif now().minute == 30 %}半{% else %}{{now().minute}}{% endif %}"
    
    





20241224_012920.png

20241224_013056.png


回复

使用道具 举报

5

主题

39

帖子

159

积分

注册会员

Rank: 2

积分
159
金钱
120
HASS币
0
 楼主| 发表于 2024-12-24 02:36:26 | 显示全部楼层
操操操,根本不用搞那么个自定义sensor,直接小爱音箱播报就可以了。。。。



action: notify.send_message
metadata: {}
data:
  message: "["{% if now().hour == 2 or now().hour == 14 %}两点{% elif now().hour <= 12 %}{{now().hour}}点{% elif now().hour >= 13 %}{{now().hour - 12}}点{% endif %}{% if now().minute == 0 %}。{% elif now().minute >= 1 and  now().minute <= 9 %}零{{now().minute}}{% elif now().minute == 10 %}十分{% elif now().minute == 30 %}半{% else %}{{now().minute}}{% endif %}"]"
target:
  entity_id: notify.xiaomi_cn_801046203_l05c_play_text_a_5_3




20241224_023604.png
回复

使用道具 举报

5

主题

39

帖子

159

积分

注册会员

Rank: 2

积分
159
金钱
120
HASS币
0
 楼主| 发表于 2024-12-29 00:40:52 | 显示全部楼层


最新进展:

action: media_player.play_media
metadata: {}
data:
media_content_id: media-source://media_source/local/mpd/media/Confirm.mp3
media_content_type: music
target:
entity_id: media_player.xiaomi_l05c_a7a4_play_control_2

我想着在小爱音箱语音报时前边加一个叮铃铃的提示音,免得突然说话吓人,但是这个铃声会一直单曲循环狂响个不停,就算是后边再多加一步停止播放的动作,但是前边这个铃声文件长度只有不到一秒,

而且有时候后边即便加了暂停播放的动作,会经常性失效,可能是前边的播放动作占用了进程???还是啥没找出来的原因,后边得加四五个暂停的动作才能确保把音乐停掉。
这个时间间隙铃声都响了好几遍,然后突然又被暂停的操作终止,不是那种自然渐弱的,停顿感很强,效果很不好,

我现在用的是文字指令让小爱播放个门铃声,后边再加一个1秒延迟,然后再文字播报,但是这样就没办法完全本地化,那个门铃声文字指令必须走云端。

大家给我透露点有啥办法解决一下,。。。。。


20241229_124003.png

这一窜暂停和停止太傻逼了,根本不是ha的风格


回复

使用道具 举报

5

主题

39

帖子

159

积分

注册会员

Rank: 2

积分
159
金钱
120
HASS币
0
 楼主| 发表于 2024-12-29 21:37:37 | 显示全部楼层
本帖最后由 sanmoking 于 2024-12-29 22:10 编辑

没办法搞定这个疯狂循环播放,目前智能先用延时大法凑合着先跑起来:
先用音频编辑的软件【goldwave】把前边那个提示音铃声,从0.5秒,后边加2.5秒的静音:
20241229_092927.png

上传到media里面:
20241229_093015.png
然后用Xiaomi Miot Auto的集成把小爱音箱链接进来, 用xiaomihome那个不能播放自定义音频,只能播报文字:

20241229_092543.png
20241229_092603.png
20241229_092614.png

先播放音频,只有前0.5秒是提示音呗,后边静音先让他响着,
然后延迟300毫秒,播放tts文字,因为有延迟,差不多放出来就刚好赶上提示音结束,然后延迟2秒开始疯狂暂停音箱的播放,因为只暂停一次的话容易失败,后果就是疯狂循环播放音频。

我因为之前用米家app做的很多自动化,这个报时一天下来太多时间点要报,比如早上上班上学重要事件点都是5分钟报一次,晚上睡觉时间10分钟报一次,还要区分工作日,所以前端触发的部分懒得往ha转移的,就直接搞了个中枢虚拟事件,传递给ha,ha接收到之后播放这个脚本:
20241229_095114.png
另外遇到一个坑就是,这个虚拟事件接收到之后,报时结束要再搞个新的虚拟事件把前边的值替换掉,要不下次米家又传递过来报时的事件,ha接收到没有变化就不会触发自动化。。。。

米家app那边,我还搞了个小圆饼无线按钮开关,给小孩用来对照着小爱音箱上面的电子钟,学数字,小孩子看到数字变了就按一下开关,听听几点了,哈哈哈
772ddf9fc9f70c2b5aa9a7ef3c45462.jpg 4827332d57a1a3fa06dbb43640dca95.jpg ChMkLGJTlCyIO_IXAAEYQDpY1ZcAACWsgP6XpcAARhY880.jpg


当然还有简单一点的脚本,不用自定义前奏提示音,直接用文本指令让小爱音箱播放个门铃声,然后延迟200,再语音报时就行,但是这个提示音没得选,只有四个,都巨难听:
20241229_100456.png
20241229_100515.png 16118506ca4ececee267bf1549f0148.jpg



回复

使用道具 举报

5

主题

39

帖子

159

积分

注册会员

Rank: 2

积分
159
金钱
120
HASS币
0
 楼主| 发表于 7 天前 | 显示全部楼层
问了一下deepseek给的回答:

要让小爱音响通过Xiaomi Miot Auto集成在Home Assistant中播放本地音频时只播放一次,而不是循环播放,你可以尝试以下方法:

### 方法1:使用`media_player.play_media`服务
在Home Assistant中,使用`media_player.play_media`服务播放音频时,可以通过设置`enqueue`参数为`play`来确保音频只播放一次。

```yaml
service: media_player.play_media
target:
  entity_id: media_player.xiaoai_speaker
data:
  media_content_id: 'http://your-local-server/path/to/audio.mp3'
  media_content_type: 'music'
  enqueue: 'play'

```

### 方法2:使用自动化脚本
你可以创建一个自动化脚本,在音频播放完成后自动停止播放器。

```yaml
automation:
  - alias: Play audio once
    trigger:
      - platform: state
        entity_id: media_player.xiaoai_speaker
        to: 'playing'
    action:
      - service: media_player.media_stop
        target:
          entity_id: media_player.xiaoai_speaker
        data:
          delay: '00:00:10'  # 假设音频长度为10秒

```

### 方法3:使用`media_extractor`集成
如果你使用的是`media_extractor`集成,可以通过设置`extra`参数来控制播放行为。

```yaml
service: media_extractor.play_media
target:
  entity_id: media_player.xiaoai_speaker
data:
  media_content_id: 'http://your-local-server/path/to/audio.mp3'
  media_content_type: 'music'
  extra:
    repeat: 'off'

```

### 方法4:手动停止
如果以上方法都不奏效,你可以手动在音频播放完成后调用`media_player.media_stop`服务。

```yaml
service: media_player.media_stop
target:
  entity_id: media_player.xiaoai_speaker

```

### 方法5:检查设备设置
有些设备可能有自己的循环播放设置,检查小爱音响的设置,确保没有启用循环播放。

### 总结
通过以上方法,你应该能够控制小爱音响只播放一次音频而不循环播放。如果问题仍然存在,建议检查Xiaomi Miot Auto集成的文档或社区支持,以获取更多帮助。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-1-22 23:38 , Processed in 0.082477 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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