Compare commits

..
2 Commits
Author SHA1 Message Date
bhethermanandClaude Sonnet 5 d1b27ab7b8 Restore correct room ID mapping, fix select_source race in wait guard
Validate / Validate with HACS (push) Canceled after 0s
Validate / Validate with Hassfest (push) Canceled after 0s
Confirmed by direct hardware check: a334c8ba...=Bedroom, d0166d6f...=
Living Room -- the swap from two commits ago was right, my revert of
it was wrong.

The actual bug behind the last "Living Room played in Bedroom" report
was that the wait loop before play_media only checked supported_features
(is play_media possible at all), not whether select_source's target had
actually taken effect -- so if some other device was already active
from earlier testing, the feature-gate could pass immediately while
Spotify was still routing to that old device. Now the loop also waits
for the source attribute to match the requested room's ID before
proceeding.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 14:47:36 -04:00
bhethermanandClaude Sonnet 5 428579244a Revert room ID mapping swap -- original direction was correct
The prior swap (a334...=Bedroom, d0166...=Living Room) was based on a
misdiagnosis: pre-fix, the cold-start race meant play_media could fire
before select_source's device transfer had actually completed, so
playback landed on whatever device was already active rather than the
requested room -- that looked like "backwards IDs" but wasn't. Now
that the race is fixed, select_source reliably lands wherever it's
told, which is exactly what exposed the swap as wrong: a live test
asking for Living Room played in the Bedroom. Reverting to the
original mapping (a334...=Living Room, d0166...=Bedroom).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 14:33:51 -04:00
+12 -6
View File
@@ -99,9 +99,12 @@
while:
- condition: template
value_template: >-
{{ repeat.index <= 8 and
(state_attr('media_player.spotify_bhetherman', 'supported_features') | int(0)
| bitwise_and(512)) != 512 }}
{{ repeat.index <= 8 and (
state_attr('media_player.spotify_bhetherman', 'source') !=
(room | replace('Living Room', 'd0166d6f83796b0f9059b0adf0f6cb0d81fa6376') | replace('Bedroom', 'a334c8ba989367b52303eaa9dbc424cdd83012b5'))
or (state_attr('media_player.spotify_bhetherman', 'supported_features') | int(0)
| bitwise_and(512)) != 512
) }}
sequence:
- delay: "00:00:01"
- service: media_player.play_media
@@ -150,9 +153,12 @@
while:
- condition: template
value_template: >-
{{ repeat.index <= 8 and
(state_attr('media_player.spotify_bhetherman', 'supported_features') | int(0)
| bitwise_and(512)) != 512 }}
{{ repeat.index <= 8 and (
state_attr('media_player.spotify_bhetherman', 'source') !=
(room | replace('Living Room', 'd0166d6f83796b0f9059b0adf0f6cb0d81fa6376') | replace('Bedroom', 'a334c8ba989367b52303eaa9dbc424cdd83012b5'))
or (state_attr('media_player.spotify_bhetherman', 'supported_features') | int(0)
| bitwise_and(512)) != 512
) }}
sequence:
- delay: "00:00:01"
- service: media_player.play_media