Music Assistant에서 구글홈스피커 그룹과 오디오 리시버등 2개 이상의 플레이어를 가지고 있을 때 현재 재생되고 있는 미디어 플레이어에 입력한 playlist가 재생되도록 entity_id를 동적으로 연결하는 자동화.
재생중인 플레이어가 없으면 디폴트값인 미디어플레이어를 켜고 playlist재생.
무선 볼륨 버튼에 등록한 이전 트랙과 다음 트랙 재생은 현재 재생중인 플레이어에 적용되는데 input_select에 만들어 놓은 playlist는 previous playlist와 next playlist를 이용해 이동하려면 플레이어를 지정해 줄 필요가 생겨 만든 자동화.
** 현재 무선 볼륨버튼은 클릭시 미디어 플레이어 on/off, 더블클릭시 미디어 재생중일 때는 next track 이외의 경우는 특정 playlist 재생, 트리플클릭시 미디어 재생중일 때는 next playlist 이외의 경우는 특정 playlist 재생, 볼륨컨트롤시 현재 재생중인 미디어플레이어 볼륨조절.
** 이번 자동화에 chat gpt로 간소화해봤는데 3배정도의 길이의 코드를 변수 선언하고 파이썬의 딕셔너리 자료형을 사용해 현재길이로 줄여놓음. 덕분에 기존에 만들어놨던 자동화들도 다 테스트해보고 괜찮은 건 적용해봄. 간소화 장점이 가독성과 유지관리가 편함.
input_select.yaml
ma_playlist:
name: MA Playlist
initial: inst
options:
- classic
- inst
- comp
- fork
- pops
- mymix
automation.yaml
- id: 입력-Playlist/MA
alias: 입력-Playlist/MA
mode: single
triggers:
- trigger: state
entity_id: input_select.ma_playlist
actions:
- action: media_player.play_media
target:
entity_id: >
{{ states.media_player |
selectattr('entity_id','in', ['media_player.all_2', 'media_player.castaudio_2']) |
selectattr('state', 'equalto', 'playing') | map(attribute='entity_id') | first |
default('media_player.all_2') }}
data:
media_content_type: playlist
media_content_id: >
{% set playlists = {
'classic': '18',
'inst': '22',
'comp': '2',
'fork': '14',
'pops': '26',
'mymix': '6'
} %}
library://playlist/{{ playlists[trigger.to_state.state] }}