- 积分
- 144
- 金钱
- 132
- 威望
- 0
- 贡献
- 0
- HASS币
- 0
注册会员
- 积分
- 144
- 金钱
- 132
- HASS币
- 0
|
本帖最后由 zhmx 于 2024-5-27 21:12 编辑
安装了https://github.com/shaonianzhentan/ha_cloud_music 网易云音乐插件,在用咸鱼淘来的漫步者EDIFIER_MA3播放歌单时不能自动下一曲,涉及自动下一曲的音箱播放器属性有两个media_duration和media_position,media_duration是当前播放音乐的总时长,media_position是当前播放进度,通过观察这两个属性数值变化发现media_position数值不能走到和media_duration一样,根据不同情况一般差1-10秒的样子,原因我分析了下可能漫步者EDIFIER_MA3每10秒向home assistant报告一次属性,如果media_position还没到报告时间歌曲就播放完了,media_position就停在上一次报告数值不会再刷新了,造成home assistant认为歌曲还没播放完就不会下一曲了,于是我尝试的写了一个自动化脚本,判断media_duration和media_position两个属性的值的差值(剩余时间)小于某个数值就执行下一曲。脚本如下,实体名称是我自己的,初次写脚本不对的地方请大家指正:
- id: '1715705669965'
alias: 自动下一曲
description: ''
trigger:
- platform: time_pattern
seconds: /5 # 每5秒触发一次
condition:
- condition: state
entity_id: media_player.yun_yin_le_edifier_ma3_can_ting
state: playing # 检查播放器状态为播放状态
- condition: numeric_state
entity_id: media_player.yun_yin_le_edifier_ma3_can_ting
attribute: media_duration
above: 0 # 检查播放器属性media_duration的值不为零
- condition: template
value_template: '{{ (state_attr(''media_player.yun_yin_le_edifier_ma3_can_ting'',''media_duration'') - state_attr(''media_player.yun_yin_le_edifier_ma3_can_ting'',''media_position'')) <11 }}'
# 比较媒体播放器两个属性的差值(剩余时间)是否小于11,由于播放器每10秒报送一次属性状态,故数值为11,如果设置为小于11的数可能就不能执行下一曲了,如果大于11的数值就会过早切换歌曲
action:
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
enabled: false # 根据情况看是否延时5秒再执行下一曲动作,如果要延时把 enabled: false 这行删了就行
- service: media_player.media_next_track
target:
entity_id: media_player.yun_yin_le_edifier_ma3_can_ting
data: {}
delay:
hours: 0
minutes: 0
seconds: 15
milliseconds: 0 # 执行下一曲动作后,延时15秒,等待播放器将属性数值报告上来。
|
评分
-
查看全部评分
|