Skip to content

Some automations fail silently on audio-only devices #414

Description

@judebert

I installed View Assist and added my HAVPE as a VA device. I instantiated an automation from the "View Assist - Play Music with Music Assistant" blueprint. When I gave a Play Playlist command, the HAVPE responded "Done!" and played no music.

I found a repair saying "View Assist: Play Music with Music Assistant uses an unknown action". The repair text calimed that "View Assist: Play Music with Music Assistant" (automation.view_assist_play_music_with_music_assistant) has an unknown action: view_assist.navigate".

I repaired the blueprint locally by adding a conditional in front of each of the three navigate actions:

              - alias: Do we have a screen?
                if:
                  - condition: template
                    value_template: >-
                      {% if target_satellite_device_type != 'audio_only' %}true{% else %}false{%endif}
                    alias: We have a screen!
                then:

Looking through the existing blueprints, I see other instances of naked navigate actions:

  • Search Wikipedia will fail on audio-only devices due to unprotected navigate
  • Play Radio with Music Assistant has an unprotected navigate; it's the last item in the sequence, so radio might still play
  • Alarms, Reminders, and Timers protects navigation to set a timer, alarm, or reminder, but will fail on an unprotected navigate when the alarm rings
  • Locate Person has one unprotected navigate (if person undefined), although another is protected
  • Device Functions is protected, but uses duplicate code for the conversation response and could be simplified
  • Device Alerts checks for empty start or end views; I'm not sure if that counts as protection or not
  • Show Web Page has no type check at all
  • Ask Wolfram uses browser_mod.navigate instead of view_assist.navigate, but it is protected

While gating the calls to navigate would protect users from quietly failing automations, it's a detail-oriented chore with lots of opportunity for human failure. Likewise, expecting developers to remember every view-only action and protect their calls is failure-prone.

I suggest making a virtual view for audio-only devices and allowing it to noop on navigate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions