일상생활 (EveryDay)

Home Assistant에서 MP3 파일 Google 스피커로 재생 설정 가이드

날으는물고기 2025. 1. 3. 00:15

1. Home Assistant 설정 준비

Home Assistant와 Google 스피커를 이용하여 특정 MP3 파일을 재생하려면 아래 조건을 충족해야 합니다.

  • Home Assistant와 Google 스피커가 같은 네트워크에 연결되어 있어야 합니다.
  • MP3 파일은 Home Assistant가 접근 가능한 위치에 저장되어야 하며, 기본적으로 /media 폴더를 활용합니다.
  • Google 스피커는 정상적으로 작동 중이어야 하며, Home Assistant에서 해당 스피커가 발견될 수 있어야 합니다.

/media 폴더 사용 이유

Home Assistant는 /media 폴더를 미디어 관리의 기본 경로로 지정합니다. 이를 통해 파일 접근 및 재생이 보다 간단해집니다. 이 폴더에 저장된 모든 파일은 "media-source://media/local" 경로로 쉽게 참조할 수 있습니다.

참고사항

  • 네트워크 설정에서 Google 스피커와 Home Assistant 간의 연결이 차단되지 않았는지 확인하세요.
  • Home Assistant가 실행 중인 장치에서 /media 폴더가 올바르게 마운트되었는지 확인하세요.

2. MP3 파일 Home Assistant에 추가

  1. 원하는 MP3 파일을 /media 디렉토리에 업로드합니다.
    • 예: example.mp3 파일을 업로드
  2. 업로드한 파일의 경로 확인
    • 파일 경로: /media/example.mp3

파일 업로드 방법

  • Home Assistant 웹 UI를 통해 파일 관리 플러그인을 사용하여 업로드
  • FTP 또는 SFTP를 사용하여 /media 디렉토리에 파일 복사
  • Home Assistant가 Docker 컨테이너에서 실행 중인 경우, Docker 볼륨을 통해 파일을 복사

파일 접근 확인

Home Assistant Developer Tools에서 media_source 서비스 호출을 테스트하여 업로드된 파일이 올바르게 감지되는지 확인합니다.


3. Google Cast 통합 설정

Google 스피커와 Home Assistant를 연결하려면 Google Cast 통합을 설정해야 합니다.

  1. Home Assistant 메뉴로 이동
    • 설정 > 장치 및 서비스 > 통합
  2. "Google Cast"를 검색하여 추가
  3. 통합이 완료되면 네트워크 내 Google 스피커가 자동으로 검색됩니다.

Google Cast 통합 과정에서 주의점

  • 네트워크에 동일한 이름의 Google 스피커가 여러 개 있을 경우, 특정 엔터티 ID를 확인하여 혼동을 방지하세요.
  • Google Cast 통합이 실패하는 경우, Home Assistant 로그를 확인하여 문제를 진단하세요.

이미 통합된 경우

설정을 생략해도 됩니다. 기존에 설정된 스피커의 엔터티 ID를 확인하세요. 이를 위해 Home Assistant의 설정 > 장치 및 서비스에서 해당 스피커를 찾아 엔터티 ID를 확인합니다.


4. 특정 MP3 파일 재생 스크립트 작성

Google 스피커에서 MP3 파일을 재생하려면 아래 스크립트를 사용합니다.

예제 스크립트

script:
  play_example_mp3:
    alias: Example MP3 재생
    sequence:
      - service: media_player.play_media
        data:
          entity_id: media_player.YOUR_GOOGLE_SPEAKER_ENTITY_ID  # Google 스피커 엔터티 ID
          media_content_id: "media-source://media/local/example.mp3"  # MP3 파일 경로
          media_content_type: "music"
  • entity_id: Google 스피커의 엔터티 ID (예: media_player.living_room_speaker)
  • media_content_id: MP3 파일 경로를 media-source://media/local/파일명 형식으로 입력
  • media_content_type: "music"으로 설정

추가 테스트

스크립트 실행 후 Google 스피커에서 음악이 제대로 재생되지 않으면 다음 사항을 확인하세요.

  • Google 스피커의 볼륨 설정
  • MP3 파일 형식이 스피커에서 지원되는지 여부
  • 네트워크 연결 상태

5. MP3 파일 재생 자동화 설정

특정 시간에 MP3 파일을 자동으로 재생하려면 아래와 같이 설정합니다.

자동화 예제

automation:
  - alias: 특정 시간에 MP3 재생
    trigger:
      - platform: time
        at: "08:00:00"  # 매일 오전 8시에 재생
    action:
      - service: script.play_example_mp3

트리거 조건

  • time: 특정 시간
  • event: 센서나 버튼 이벤트로도 트리거 설정 가능

자동화 추가 설정

  • 자동화를 한정된 날짜나 요일에만 동작하도록 설정하려면 condition을 추가하세요.
    condition:
      - condition: time
        weekday: 
          - mon
          - wed
          - fri

6. 여러 MP3 파일 순차 재생 설정

여러 개의 MP3 파일을 순차적으로 Google 스피커에서 재생하려면, 파일 리스트를 순환하며 재생할 수 있는 스크립트를 설정할 수 있습니다.

MP3 파일 리스트 작성

  • /media 폴더에 여러 MP3 파일을 저장 (예: song1.mp3, song2.mp3, song3.mp3)

순차 재생 스크립트

여러 MP3 파일을 순차적으로 재생하려면, repeat 기능을 사용해 리스트를 순환할 수 있습니다. 아래 예시에서는 MP3 파일 경로 리스트를 설정하고 순차적으로 재생합니다.

script:
  play_multiple_mp3:
    alias: 여러 MP3 파일 순차 재생
    sequence:
      - repeat:
          count: 3  # 파일 수
          sequence:
            - service: media_player.play_media
              data_template:
                entity_id: media_player.YOUR_GOOGLE_SPEAKER_ENTITY_ID
                media_content_id: >
                  {% set files = ['song1.mp3', 'song2.mp3', 'song3.mp3'] %}
                  media-source://media/local/{{ files[repeat.index - 1] }}
                media_content_type: "music"
            - delay: "00:03:00"  # 각 파일 재생 시간 (예: 3분)

위 스크립트를 직접 실행하거나 특정 시간에 자동으로 시작하도록 자동화 설정을 추가할 수 있습니다. 아래와 같이 설정하여 매일 아침 8시에 지정된 MP3 파일들이 순차적으로 Google 스피커에서 재생할 수 있습니다.

automation:
  - alias: 아침에 여러 MP3 파일 재생
    trigger:
      - platform: time
        at: "08:00:00"  # 매일 오전 8시에 시작
    action:
      - service: script.play_multiple_mp3
  • repeat.count: 재생할 파일 개수로 설정합니다. 위 예시에서는 3개의 파일이므로 count: 3으로 설정했습니다.
  • delay: 각 파일 재생 후 대기 시간을 설정합니다. 예를 들어, 3분으로 설정하여 파일이 끝난 후 다음 파일로 이동하게 설정합니다.

조건부 순차 재생

특정 상황에서만 MP3 파일을 순차 재생하려면 조건을 추가합니다.

condition:
  - condition: state
    entity_id: binary_sensor.motion_sensor_1
    state: "on"

7. Python 스크립트를 이용한 동적 파일 재생

특정 폴더 내의 MP3 파일을 동적으로 불러와 순차적으로 재생하려면, python_script 또는 template을 사용하여 폴더 내 파일 목록을 가져오는 방법을 사용할 수 있습니다.

Python 스크립트 활성화

Home Assistant 설정 파일인 configuration.yamlpython_script를 활성화합니다.

  1. configuration.yaml에 추가
    python_script:
  2. python_scripts 폴더 생성 후 스크립트 작성

Home Assistant 구성 폴더의 python_scripts 디렉토리에 play_mp3_list.py 파일을 생성하고, 아래와 같은 코드를 작성합니다. 이 스크립트는 특정 폴더 내의 MP3 파일을 순차적으로 재생하도록 설정합니다.

Python 스크립트 예제

import os

media_folder = "/media/your_mp3_folder"
media_player_id = "media_player.YOUR_GOOGLE_SPEAKER_ENTITY_ID"

mp3_files = [f for f in os.listdir(media_folder) if f.endswith(".mp3")]
mp3_files.sort()

for mp3_file in mp3_files:
    media_content_id = f"media-source://media/local/{mp3_file}"
    hass.services.call(
        "media_player",
        "play_media",
        {
            "entity_id": media_player_id,
            "media_content_id": media_content_id,
            "media_content_type": "music"
        }
    )
    time.sleep(180)
  • mp3_files.sort(): 파일 이름 기준 정렬
  • time.sleep(180): 파일 재생 시간을 조정

자동화로 스크립트 실행

automation:
  - alias: 동적 MP3 파일 순차 재생
    trigger:
      - platform: time
        at: "08:00:00"
    action:
      - service: python_script.play_mp3_list
  1. 폴더 내 파일 목록 가져오기: Python 스크립트에서 특정 폴더의 모든 MP3 파일을 불러옵니다.
  2. 파일 정렬: sort()를 통해 파일 이름 순으로 정렬하여 재생 순서를 지정할 수 있습니다.
  3. 재생 시간 대기: 각 파일이 재생될 동안 time.sleep()으로 대기 시간을 설정합니다. 이 시간을 각 MP3 파일의 평균 길이에 맞추어 조정할 수 있습니다.

위 방법을 통해 Home Assistant와 Google 스피커를 활용하여 MP3 파일을 자동화하고 동적으로 재생할 수 있습니다. 이 설정으로 스마트 홈 경험을 더욱 풍부하게 만들어보세요.

728x90