Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apple TV Integration Breaks on HomePod OS 18 #126154

Open
Colorado4Wheeler opened this issue Sep 17, 2024 · 23 comments
Open

Apple TV Integration Breaks on HomePod OS 18 #126154

Colorado4Wheeler opened this issue Sep 17, 2024 · 23 comments

Comments

@Colorado4Wheeler
Copy link

The problem

After updating to HomePod OS 18, the devices show as "Off" in Home Assistant and cannot be turned on and will not answer TTS requests from "Browse Media". HomePod OS 17 devices still work fine. Reloading the integration or Home Assistant does not resolve the issue.

image

What version of Home Assistant Core has the issue?

core-2024.9.1

What was the last working version of Home Assistant Core?

core-2024.9.1

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Apple TV

Link to integration documentation on our website

https://www.home-assistant.io/integrations/apple_tv

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

@home-assistant
Copy link

Hey there @postlund, mind taking a look at this issue as it has been labeled with an integration (apple_tv) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of apple_tv can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign apple_tv Removes the current integration label and assignees on the issue, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


apple_tv documentation
apple_tv source
(message by IssueLinks)

@abuchanan920
Copy link

I have encountered the same issue. It looks like removing and re-adding the device (along with typing the codes in again) worked for me

@kersten-lohmeyer
Copy link

Same for me. I used to call this script:

homepod_post_ist_da:
  alias: HomePod - Post ist da
  sequence:
  - service: media_player.media_pause
    metadata: {}
    data: {}
    target:
      device_id: e3f025cf4e757572b74afa9eb084a34f
  - service: media_player.volume_set
    metadata: {}
    data:
      volume_level: 0.7
    target:
      device_id: e3f025cf4e757572b74afa9eb084a34f
  - service: tts.google_translate_say
    data:
      cache: false
      entity_id: media_player.homepod_mini_wohnzimmer
      message: Die Post ist da! Die Post ist da!
      language: de
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - service: media_player.volume_set
    metadata: {}
    data:
      volume_level: 0.5
    target:
      device_id: e3f025cf4e757572b74afa9eb084a34f
  mode: single

I also removed my 2 HomePod minis and added them again. Once in a while it works for some reason but most of the time there's a 403 Forbidden error.

@Bobettemcnugget
Copy link

Bobettemcnugget commented Sep 20, 2024

Hello!

I am having the same issue with homepods trying to setup TTS.

2024-09-19 11:25:38.255 WARNING (MainThread) [homeassistant.components.apple_tv] Connection lost to Apple TV "Salon (3)"
2024-09-19 11:25:48.269 ERROR (MainThread) [pyatv.protocols.airplay] Failed to se
t up remote control channelTraceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/pyatv/support/http.py", line 464,
 in send_and_receive    await pending_request.event.wait()
  File "/usr/local/lib/python3.12/asyncio/locks.py", line 212, in wait
    await fut
asyncio.exceptions.CancelledErrorDuring handling of the above exception, another exception occurred:
Traceback (most recent call last):  File "/usr/local/lib/python3.12/site-packages/pyatv/support/http.py", line 463, in send_and_receive    async with async_timeout.timeout(timeout):
  File "/usr/local/lib/python3.12/site-packages/async_timeout/__init__.py", line 141, in __aexit__    self._do_exit(exc_type)
  File "/usr/local/lib/python3.12/site-packages/async_timeout/__init__.py", line 228, in _do_exit    raise asyncio.TimeoutErrorTimeoutError
  
  The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/airplay/__init__.py", line 347, in _connect_rc
    await session.connect()
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/airplay/ap2_session.py", line 71, in connect
    self.verifier = await verify_connection(self._credentials, self.connection)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/airplay/auth/__init__.py", line 105, in verify_connection    has_encryption_keys = await verifier.verify_credentials()
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/airplay/auth/hap_transient.py", line 49, in verify_credentials    await self.http.post("/pair-pin-start", headers=_AIRPLAY_HEADERS)  File "/usr/local/lib/python3.12/site-packages/pyatv/support/http.py", line 433,
 in post    return await self.send_and_receive(           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/support/http.py", line 475, in send_and_receive    raise TimeoutError(f"no response to {method} {uri} ({protocol})") from exTimeoutError: no response to POST /pair-pin-start (HTTP/1.1)

Here's what I found in the logs. I've tried adding/readding to no avail. The homepod in question is called "Salon (3)"

Not super familiar with any of this, but looks like /pair-pin-start is timing out. Looks auth related.

@metawops
Copy link

metawops commented Sep 20, 2024

I'm having similar problems with all my original HomePods and HomePods mini.

  • I can't access (read) or set the volume with the set volume service anymore.
  • I can't access (read) the media_title or media_artist attributes anymore (they're simply not there anymore)

Re-adding the HomePod to HA seems to solve this (for now, tested with one of my 8 HomePods).

@fabian1512
Copy link

fabian1512 commented Sep 20, 2024

here is a solution:
https://community.home-assistant.io/t/how-to-edit-remove-an-area/287453/4

deleting an re-adding my HomePods worked for me as well.

@kersten-lohmeyer
Copy link

kersten-lohmeyer commented Sep 20, 2024

here is a solution: https://community.home-assistant.io/t/how-to-edit-remove-an-area/287453/4

deleting an re-adding my HomePods worked for me as well.

No, it doesn't, at least not for me. HomePods stay either silent or there's an 403 Forbidden error. Very very rarely it works. Also what's that link?

@Saharok14
Copy link

re-adding into the HA worked. You don’t need to reset your homepod and re-add it to the Homekit. Just remove it from the HA and re-add again. Worked for me.

@kersten-lohmeyer
Copy link

Nice, that it works for some of you but using this script it does not work but did before iOS 18:

homepod_post_ist_da:
  alias: HomePod - Post ist da
  sequence:
  - service: media_player.media_pause
    metadata: {}
    data: {}
    target:
      device_id: e3f025cf4e757572b74afa9eb084a34f
  - service: media_player.volume_set
    metadata: {}
    data:
      volume_level: 0.7
    target:
      device_id: e3f025cf4e757572b74afa9eb084a34f
  - service: tts.google_translate_say
    data:
      cache: false
      entity_id: media_player.homepod_mini_wohnzimmer
      message: Die Post ist da! Die Post ist da!
      language: de
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - service: media_player.volume_set
    metadata: {}
    data:
      volume_level: 0.5
    target:
      device_id: e3f025cf4e757572b74afa9eb084a34f
  mode: single

Most of the time it simply does not work, script does not produce any errors but the HomePod mini remains silent.

@Colorado4Wheeler
Copy link
Author

@kersten-lohmeyer have you tried it without using device ID's and using the entity ID instead? This is exactly the type of issue/possible resolution/situation that makes using device ID's problematic since they can and will change under these circumstances.

@kersten-lohmeyer
Copy link

@kersten-lohmeyer have you tried it without using device ID's and using the entity ID instead? This is exactly the type of issue/possible resolution/situation that makes using device ID's problematic since they can and will change under these circumstances.

No I haven't but I did update the device ids when I re-added my HomePod.

@TesLocker
Copy link

I’m experiencing the same, even though my automations all use entity and not device IDs.

@odegraciajr
Copy link

I have the same issue, re-adding works for a while, then once the homepod gets restarted(i guess) it starts should offline again can can access it.

@Beertje135
Copy link

Same problem here. Re-addaing works for Some time but problem Comes back

@VeniceNerd
Copy link

here is a solution: https://community.home-assistant.io/t/how-to-edit-remove-an-area/287453/4

deleting an re-adding my HomePods worked for me as well.

I’m sorry but I can’t figure out how to delete a HomePod from my home assistant. I don’t see a “delete” option when I’m on the device page.

Can anyone point me in the right direction?

@fabian1512
Copy link

fabian1512 commented Nov 3, 2024

Here you are:
Bildschirmfoto 2024-11-03 um 18 29 17

@sddgit
Copy link

sddgit commented Nov 4, 2024

Whenever this happens to me, I just go to the Apple TV integration page, choose the 3 dots menu next to the HomePod in question and select Reload. Comes back within a few seconds.

@kersten-lohmeyer
Copy link

I removed my HomePod mini now and readded it. TTS works at the moment. Let's see for how long.

@gcortes
Copy link

gcortes commented Nov 14, 2024

My TTS failed a few months ago. I was hoping it would fix itself as it has done in the past. I'm running an automation in node-red. When I send a tts message, it appears to send it as there are not errors. I've tried deleting and re-adding my HomePods. I can start and stop music on them via Home Assistant. Is there a separate volume for tts that could be turned way down? Is the a way to test in Home Assistant . I'm using tts.cloud_say. It looks to be deprecated. I also tried tts.speak and got the same results.

@angel-venchev-toptal
Copy link

I just bought a HomePod 2nd gen. I didn't manage to make it work with neither the tts.google_translate nor the tts.picotts_say.

For this service call

action: tts.picotts_say
data:
  entity_id: media_player.living_room_home_pod
  message: Test
  cache: true

I am getting those exceptions:

Exception 1

Logger: root
Source: /usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py:266
First occurred: 6:33:03 PM (1 occurrences)
Last logged: 6:33:03 PM

Failed to parse metadata
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/mediafile.py", line 132, in mutagen_call
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mutagen/_util.py", line 164, in wrapper_func
    return func(h, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mutagen/_file.py", line 302, in File
    return Kind(fileobj, filename=filething.filename)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mutagen/_file.py", line 48, in __init__
    self.load(*args, **kwargs)
  File "/usr/local/lib/python3.12/site-packages/mutagen/_util.py", line 156, in wrapper
    return func(self, h, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mutagen/id3/_file.py", line 420, in load
    self.info = self._Info(fileobj, offset)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mutagen/_util.py", line 185, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mutagen/mp3/__init__.py", line 401, in __init__
    raise HeaderNotFoundError("can't sync to MPEG frame")
mutagen.mp3.HeaderNotFoundError: can't sync to MPEG frame

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 264, in get_buffered_io_metadata
    return await get_metadata(buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/support/metadata.py", line 26, in get_metadata
    in_file = await loop.run_in_executor(None, _open_file, file)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/support/metadata.py", line 16, in _open_file
    in_file = MediaFile(file)
              ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mediafile.py", line 160, in wrapper
    return mutagen_call('loadfile', '', f, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mediafile.py", line 132, in mutagen_call
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mutagen/_util.py", line 156, in wrapper
    return func(self, h, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mediafile.py", line 1540, in __init__
    self.mgfile = mutagen_call(
                  ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/mediafile.py", line 135, in mutagen_call
    raise UnreadableFileError(filename, str(exc))
mediafile.UnreadableFileError: can't sync to MPEG frame

Exception 2

Logger: homeassistant.helpers.script.websocket_api_script
Source: helpers/script.py:526
First occurred: 6:33:03 PM (1 occurrences)
Last logged: 6:33:03 PM

websocket_api script: Error executing script. Unexpected error for call_service at pos 1: Got status 429 with message: Too Many Requests
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 598, in open
    stream_generator = await loop.run_in_executor(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/miniaudio.py", line 1270, in stream_any
    raise DecodeError("failed to init decoder", result)
miniaudio.DecodeError: ('failed to init decoder', -17)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 526, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 764, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 727, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/tts/legacy.py", line 156, in async_say_handle
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1007, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1079, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 345, in async_play_media
    await self.atv.stream.stream_file(media_id)
  File "/usr/local/lib/python3.12/site-packages/pyatv/core/facade.py", line 374, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/__init__.py", line 360, in stream_file
    audio_file = await open_source(
                 ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 730, in open_source
    return await InternetSource.open(source, sample_rate, channels, sample_size)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 611, in open
    raise ProtocolError(source.error_message) from ex
pyatv.exceptions.ProtocolError: Got status 429 with message: Too Many Requests

Exception 3

Logger: homeassistant.components.websocket_api.http.connection
Source: components/apple_tv/media_player.py:345
integration: Home Assistant WebSocket API ([documentation](https://www.home-assistant.io/integrations/websocket_api), [issues](https://github.com/home-assistant/core/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+websocket_api%22))
First occurred: 6:33:03 PM (1 occurrences)
Last logged: 6:33:03 PM

[546679674848] Error handling message: Unknown error (unknown_error) Angel Venchev from 192.168.0.231 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36)
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 598, in open
    stream_generator = await loop.run_in_executor(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/miniaudio.py", line 1270, in stream_any
    raise DecodeError("failed to init decoder", result)
miniaudio.DecodeError: ('failed to init decoder', -17)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 28, in _handle_async_response
    await func(hass, connection, msg)
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 816, in handle_execute_script
    script_result = await script_obj.async_run(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1801, in async_run
    return await asyncio.shield(create_eager_task(run.async_run()))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 464, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 528, in _async_step
    self._handle_exception(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 558, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 526, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 764, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 727, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/tts/legacy.py", line 156, in async_say_handle
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1007, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1079, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 345, in async_play_media
    await self.atv.stream.stream_file(media_id)
  File "/usr/local/lib/python3.12/site-packages/pyatv/core/facade.py", line 374, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/__init__.py", line 360, in stream_file
    audio_file = await open_source(
                 ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 730, in open_source
    return await InternetSource.open(source, sample_rate, channels, sample_size)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 611, in open
    raise ProtocolError(source.error_message) from ex
pyatv.exceptions.ProtocolError: Got status 429 with message: Too Many Requests

I have tried readding the HomePod to home assistant, reloading the integration and different TTS services.

@gcortes
Copy link

gcortes commented Nov 23, 2024

Should I open an issue on this?

@mikefdy
Copy link

mikefdy commented Dec 8, 2024

I made it work using the google translate entity as well as homepods (MY5G2D/A Model)which are freshly updated to 18.1

action: tts.speak
data:
  media_player_entity_id: media_player.zentral
  message: This is a test
  cache: true
target:
  entity_id:
    - media_player.zentral
    - tts.google_translate_en_com

@jkerekes99
Copy link

jkerekes99 commented Dec 15, 2024

I used your code @mikefdy and modified for my entity:

action: tts.speak
data:
media_player_entity_id: media_player.dining_area_speaker
message: This is a test
cache: true
target:
entity_id:
- media_player.dining_area_speaker
- tts.google_translate_en_com

It did not work, no sound came out of HomePod.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests