I’ve been using this:
{% set open_doors = states | selectattr('entity_id', 'in', state_attr('binary_sensor.ha_alarm_armed_night_doors','entity_id')) | selectattr('state','in',['on','open']) | map(attribute='name') | list %} {% if open_doors | length == 1 %}
failed to set alarm - {{ open_doors[0] }} is open.
{% else %}
failed to set alarm - {{ open_doors[:-1] | join(', ') }}{{',' if open_doors | length > 2}} and {{ open_doors[-1]}} are open.
{% endif %}
for some time for iOS notifications and TTS on HomePods. For some reason it still works for iOS notifications but errors out for TTS on HomePods:
Logger: homeassistant.core
Source: core.py:2819
First occurred: 4:23:44 PM (1 occurrence)
Last logged: 4:23:44 PM
Error executing service: <ServiceCall media_player.play_media (c:01JZ6Q7RWF0P11SFQJMC7218Z3): entity_id=['media_player.livingroom_homepodmini', 'media_player.bedroom_homepodmini'], announce=True, extra=, media_type=music, media_id=media-source://tts/tts.piper?message=failed+to+set+alarm+-+cs:+backyard+sliding+door/screen+door+is+open.&cache=false&tts_options=null>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/core.py", line 2819, in _run_service_call_catch_exceptions
await coro_or_task
File "/usr/src/homeassistant/homeassistant/core.py", line 2842, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1036, in entity_service_call
raise result from None
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1611, in async_request_call
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1083, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 347, in async_play_media
await self.atv.stream.stream_file(media_id)
File "/usr/local/lib/python3.13/site-packages/pyatv/core/facade.py", line 374, in stream_file
await self.relay("stream_file")(
...<4 lines>...
)
File "/usr/local/lib/python3.13/site-packages/pyatv/protocols/raop/__init__.py", line 360, in stream_file
audio_file = await open_source(
^^^^^^^^^^^^^^^^^^
...<4 lines>...
)
^
File "/usr/local/lib/python3.13/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.13/site-packages/pyatv/protocols/raop/audio_source.py", line 598, in open
stream_generator = await loop.run_in_executor(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<9 lines>...
)
^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.13/site-packages/miniaudio.py", line 1270, in stream_any
raise DecodeError("failed to init decoder", result)
miniaudio.DecodeError: ('failed to init decoder', -1)
Thanks,
->g.