본문 바로가기
일상생활 (EveryDay)

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

by 날으는물고기 2025. 1. 3.

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

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

댓글