Add temporary Family Room Show volume debug logger

Logs every volume and song change on media_player.family_room_show to the
Logbook, with the source taken from the state context, to find what raises
the volume near the end of songs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Joshua King
2026-11-04 18:17:30 -05:00
co-authored by Claude Opus 5.5
parent 34c2c833df
commit 61024f9eec
@@ -0,0 +1,51 @@
### TEMPORARY DEBUG: Family Room Show volume changes ###
# Investigating volume rising near the end of songs and resetting on the next song.
# Writes a Logbook entry for every volume change and every song change, with the
# source of the change taken from the new state's context:
# parent_id set -> an HA automation or script caused it
# user_id set -> a person in HA (dashboard, app, Developer Tools)
# neither -> not HA: Alexa/Amazon itself, or the integration reporting it
# late (Alexa Media Player can report HA-made changes on a poll)
# Remove this file once the cause is found.
- id: '1793834214055'
alias: DEBUG - Family Room Show volume logger
description: Temporary. Logs Family Room Show volume and song changes with their source.
mode: queued
max: 50
triggers:
- trigger: state
entity_id: media_player.family_room_show
attribute: volume_level
id: volume
- trigger: state
entity_id: media_player.family_room_show
attribute: media_title
id: song
actions:
- variables:
source: >-
{%- set c = trigger.to_state.context -%}
{{ 'HA automation/script (parent context ' ~ c.parent_id ~ ')' if c.parent_id
else 'HA user ' ~ c.user_id if c.user_id
else 'not from HA (Alexa/Amazon, or a late integration update)' }}
position: >-
{%- set pos = trigger.to_state.attributes.media_position -%}
{%- set dur = trigger.to_state.attributes.media_duration -%}
{{ (pos | int(0) ~ 's of ' ~ dur | int(0) ~ 's') if pos is number and dur is number else 'unknown' }}
- action: logbook.log
data:
name: Volume debug
entity_id: media_player.family_room_show
message: >-
{%- if trigger.id == 'volume' -%}
volume {{ trigger.from_state.attributes.volume_level | default('?') }} -> {{ trigger.to_state.attributes.volume_level | default('?') }}
| song: {{ trigger.to_state.attributes.media_title | default('?') }}
| position: {{ position }}
| state: {{ trigger.to_state.state }}
| source: {{ source }}
{%- else -%}
song changed: {{ trigger.from_state.attributes.media_title | default('?') }} -> {{ trigger.to_state.attributes.media_title | default('?') }}
| volume now: {{ trigger.to_state.attributes.volume_level | default('?') }}
| source: {{ source }}
{%- endif -%}