From 7b613c18be81d1c57a51d9aaac62dcf7abab000b Mon Sep 17 00:00:00 2001 From: Donny F Date: Fri, 16 Jan 2026 14:25:50 -0600 Subject: [PATCH 01/12] Fix for missing variable --- .../views/music/music-alternative.yaml | 110 +++++++++--------- 1 file changed, 58 insertions(+), 52 deletions(-) diff --git a/View Assist dashboard and views/views/music/music-alternative.yaml b/View Assist dashboard and views/views/music/music-alternative.yaml index 3cd772ca1..0eeb5f2b9 100644 --- a/View Assist dashboard and views/views/music/music-alternative.yaml +++ b/View Assist dashboard and views/views/music/music-alternative.yaml @@ -1,52 +1,58 @@ - - type: custom:button-card - variables: - musiccardalternativeversion: 1.1.0 - template: - - variable_template - - body_template - styles: - card: - - background-color: black; - custom_fields: - message: - - font-size: '[[[ return variables.var_font_size ]]]' - - position: absolute - - text-align: start - - text-wrap: wrap - - justify-content: center - - align-self: center - - z-index: 0 - custom_fields: - title: '' - message: - card: - type: custom:mod-card - card: - type: custom:mini-media-player - entity: '[[[ return variables.var_musicplayer_device ]]]' - artwork: cover - hide: - icon: true - info: false - name: true - volume: false - power: false - progress: true - card_mod: - style: - mmp-powerstrip $: | - ha-icon-button { - color: white !important; - } - .: | - ha-card { - --mmp-icon-color: white !important; - --mmp-text-color: white !important; - --mmp-unit: 1 !important; - --mdc-icon-size: 7vw !important; - font-size: 4vw !important; - font-weight: bold; - width: 100vw !important; - height: 100vh !important; - } - cards: [] +type: custom:button-card +variables: + musiccardalternativeversion: 1.2.0 + var_musicplayer_device: |- + [[[ + var assistbid = localStorage.getItem("view_assist_sensor") ?? variables.default_satellite; + var musicdevice = hass.states[assistbid].attributes.musicplayer_device; + return `${musicdevice}` + ]]] +template: + - variable_template + - body_template +styles: + card: + - background-color: black; + custom_fields: + message: + - font-size: "[[[ return variables.var_font_size ]]]" + - position: absolute + - text-align: start + - text-wrap: wrap + - justify-content: center + - align-self: center + - z-index: 0 +custom_fields: + title: "" + message: + card: + type: custom:mod-card + card: + type: custom:mini-media-player + entity: "[[[ return variables.var_musicplayer_device ]]]" + artwork: cover + hide: + icon: true + info: false + name: true + volume: false + power: false + progress: true + card_mod: + style: + mmp-powerstrip $: | + ha-icon-button { + color: white !important; + } + .: | + ha-card { + --mmp-icon-color: white !important; + --mmp-text-color: white !important; + --mmp-unit: 1 !important; + --mdc-icon-size: 7vw !important; + font-size: 4vw !important; + font-weight: bold; + width: 100vw !important; + height: 100vh !important; + } +cards: [] From 065dd0336ced87f6e028d5200532cc727e3035c1 Mon Sep 17 00:00:00 2001 From: Donny F Date: Fri, 16 Jan 2026 14:32:31 -0600 Subject: [PATCH 02/12] Update index.md --- wiki/docs/extend-functionality/views/music/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wiki/docs/extend-functionality/views/music/index.md b/wiki/docs/extend-functionality/views/music/index.md index 57e648c67..0ec69c2af 100644 --- a/wiki/docs/extend-functionality/views/music/index.md +++ b/wiki/docs/extend-functionality/views/music/index.md @@ -14,12 +14,12 @@ Music View Alternative - **Description**: Used for streaming music and radio. Two views exist. You can choose whichever you prefer. - **Defaultname**: music - **Current Version**: v1.0.0 -- **Code link**: [Music View Raw Code](https://raw.githubusercontent.com/dinki/View-Assist/main/View%20Assist%20dashboard%20and%20views/views/music/music.yaml) | [Music View Alternative Raw Code](https://raw.githubusercontent.com/dinki/View-Assist/main/View%20Assist%20dashboard%20and%20views/views/music/music-alternative.yaml) +- **Code link**: [Music View Alternative Raw Code](https://raw.githubusercontent.com/dinki/View-Assist/refs/heads/main/View%20Assist%20dashboard%20and%20views/views/music/music-alternative.yaml) - **Special Requirements**: None ## Installation -Views are automatically installed courtesy of the View Assist integration +Main views are automatically installed courtesy of the View Assist integration. You will need to create the alternative view manually if you choose to use it. ## Changelog From c0b784bb424db21da0c820260e0352f8d078c744 Mon Sep 17 00:00:00 2001 From: Donny F Date: Wed, 21 Jan 2026 08:12:23 -0600 Subject: [PATCH 03/12] Update faq.md --- wiki/docs/faq.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/wiki/docs/faq.md b/wiki/docs/faq.md index e5f87171d..7aefc3150 100644 --- a/wiki/docs/faq.md +++ b/wiki/docs/faq.md @@ -2,5 +2,27 @@ title: "Frequently Asked Questions" sidebar_position: 8 --- -Here's a list of frequently asked questions. More FAQs will be added. +# Frequently Asked Questions + +
+ What is this project? + +A modern documentation site / tool / library built with [your tech stack]. +We aim to make [main goal] easier and faster. + +
+ +
+ Why is the dashboard on my PC browser is showing a box telling me to register the device + +You are trying to use View Assist on a PC or other nonView Assist satellite device. The dashboard is only for use on VA satellite devices. The dashboard is only used by View Assist satellites and will not work for general browsing outside of those registered devices + +
+ +
+ Why am I'm seeing an error or no data when I manually browse to a view on the View Assist dashboard? + +View Assist relies on Assist voice automations to provide information dynamically to the views. When you browse to views manually you will not have the underlying data the view needs to display something worth seeing. + +
From c1ea4e4b306f213946e21a0615d2b90878efe25a Mon Sep 17 00:00:00 2001 From: Donny F Date: Wed, 21 Jan 2026 08:22:50 -0600 Subject: [PATCH 04/12] Update faq.md --- wiki/docs/faq.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/wiki/docs/faq.md b/wiki/docs/faq.md index 7aefc3150..99e6e8a23 100644 --- a/wiki/docs/faq.md +++ b/wiki/docs/faq.md @@ -6,10 +6,9 @@ sidebar_position: 8 # Frequently Asked Questions
- What is this project? + What is View Assist? -A modern documentation site / tool / library built with [your tech stack]. -We aim to make [main goal] easier and faster. +View Assist provides visual feedback for the Home Assistant Assist voice assistant using a collection of different automations, custom sentences, scripts, and extensions with the view being displayed on any Android device. Multiple devices can join the View Assist satellite network and interact. This is not limited to Android devices as voice only ESPHome satellites like the Home Assistant Voice Preview Edition are also supported. Some users have even brought Linux devices in as View Assist satellites as well.
From d0929357175b29be90b471a727bfb8a62b619e45 Mon Sep 17 00:00:00 2001 From: Stoleru Ioan Aurel <71765276+relust@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:16:58 +0200 Subject: [PATCH 05/12] Add tutorial for changing View Assist avatar Added a tutorial for changing the active View Assist avatar using voice commands, including setup instructions and details for configuring avatars. --- .../cc-sentences/avatar_prompt_responses.md | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/wiki/docs/community-contributions/cc-sentences/avatar_prompt_responses.md b/wiki/docs/community-contributions/cc-sentences/avatar_prompt_responses.md index 8bd46f9e5..1ab5e29c2 100644 --- a/wiki/docs/community-contributions/cc-sentences/avatar_prompt_responses.md +++ b/wiki/docs/community-contributions/cc-sentences/avatar_prompt_responses.md @@ -233,7 +233,35 @@ This method works with **any language**, **any voice**, and **any number of cust - If too long, the beginning of the user’s command might be missed. --- - +# View Assist – Change Avatar (Quick Setup Tutorial) + +If you want to **change the active View Assist avatar using voice commands**, you can download the blueprint here: + +[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https://github.com/dinki/View-Assist/blob/main/View_Assist_custom_sentences/community_contributions/Avatar_Prompt_Responses/blueprint-change_avatar) + +## Setup instructions + +1. **Import the blueprint** into Home Assistant and create a new automation from it. +2. Select the **Assist Satellites** you want to control. +3. Select the **avatar sensor(s)** used by View Assist (these update the avatar, GIFs, and prompts). +4. Configure up to **four avatars**. For each avatar, provide: + - **Name** – the display name of the avatar. + - **ID** – must match the avatar ID in `config/view-assist/custom_overlays/overlay.html` (e.g., `avatar_jarvis`). + - **Pipeline** – choose a pipeline corresponding to the avatar’s voice (male/female, specific voice model, etc.). + - **Wake word** – select an existing, functional wake word. + - **Custom Prompt Response automation** – a separate automation that handles responses for this avatar (e.g., using a matching voice/prompt). + - **Aliases (optional)** – alternative names for the avatar for easier voice recognition. +5. Define **trigger sentences** using `{avatar}` as a placeholder, for example: + - `I want to speak to {avatar}` + - `Vreau să vorbesc cu {avatar}` + +Once configured, saying a sentence like *“I want to speak to Jarvis”* will: +- Switch the active avatar across all selected satellites +- Update the avatar sensor(s) in View Assist +- Enable the correct Custom Prompt Response automation for that avatar +- Disable other avatar automations + +This setup ensures each avatar has a **dedicated voice, pipeline, wake word, and automation**, fully synchronized across your devices. ## ✅ Summary Once set up, your system will: From 8ed04b87920818968296c5f99ba3080324d95210 Mon Sep 17 00:00:00 2001 From: Flab <118143714+Flight-Lab@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:42:46 -0500 Subject: [PATCH 06/12] feat(dashboard): add music status icon --- .../dashboard/dashboard.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/View Assist dashboard and views/dashboard/dashboard.yaml b/View Assist dashboard and views/dashboard/dashboard.yaml index b2998770a..09fda552e 100644 --- a/View Assist dashboard and views/dashboard/dashboard.yaml +++ b/View Assist dashboard and views/dashboard/dashboard.yaml @@ -769,6 +769,16 @@ button_card_templates: service_data: device: '[[[ return variables.var_assistsat_entity ]]]' path: '[[[ return `${variables.var_dashboard}/camera` ]]]' + music: + type: custom:button-card + template: icon_template + icon: mdi:cctv + tap_action: + action: call-service + service: view_assist.navigate + service_data: + device: '[[[ return variables.var_assistsat_entity ]]]' + path: '[[[ return `${variables.var_dashboard}/music` ]]]' wake: type: custom:button-card template: icon_template From 50cb1d94c420b6e17eb8894977ed2d061474d06b Mon Sep 17 00:00:00 2001 From: Flab <118143714+Flight-Lab@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:43:39 -0500 Subject: [PATCH 07/12] Update version(dashboard): 1.3.1 --- View Assist dashboard and views/dashboard/dashboard.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/View Assist dashboard and views/dashboard/dashboard.yaml b/View Assist dashboard and views/dashboard/dashboard.yaml index 09fda552e..0d7fe8281 100644 --- a/View Assist dashboard and views/dashboard/dashboard.yaml +++ b/View Assist dashboard and views/dashboard/dashboard.yaml @@ -1,7 +1,7 @@ button_card_templates: variable_template: variables: - dashboardversion: 1.3.0 + dashboardversion: 1.3.1 var_assistsat_entity: |- [[[ return localStorage.getItem("view_assist_sensor") From 347c2d1d1f8e112ccb73ee9440f365e3f7ae8675 Mon Sep 17 00:00:00 2001 From: Flab <118143714+Flight-Lab@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:45:48 -0500 Subject: [PATCH 08/12] feat(docs): add music status icon --- .../masterconfig-configuration/dashboard-options.md | 1 + 1 file changed, 1 insertion(+) diff --git a/wiki/docs/view-assist-configuration/masterconfig-configuration/dashboard-options.md b/wiki/docs/view-assist-configuration/masterconfig-configuration/dashboard-options.md index 202f7430b..a3a5983c4 100644 --- a/wiki/docs/view-assist-configuration/masterconfig-configuration/dashboard-options.md +++ b/wiki/docs/view-assist-configuration/masterconfig-configuration/dashboard-options.md @@ -61,6 +61,7 @@ View Assist includes ready-to-use templates: | `home` | Navigate to clock view | home | | `weather` | Navigate to weather view | weather-sunny | | `camera` | Navigate to camera view | cctv | +| `music` | Navigate to music view | music | | `menu` | Toggle menu display | menu | (This is used by the integration and shouldn't be included in your icon list.) ### Custom Templates From 29762174d5ee8c7b6240afce5b6e79feca5c2898 Mon Sep 17 00:00:00 2001 From: Flab <118143714+Flight-Lab@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:56:41 -0500 Subject: [PATCH 09/12] feat(dashboard): update music status icon --- View Assist dashboard and views/dashboard/dashboard.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/View Assist dashboard and views/dashboard/dashboard.yaml b/View Assist dashboard and views/dashboard/dashboard.yaml index 0d7fe8281..bf04c11dd 100644 --- a/View Assist dashboard and views/dashboard/dashboard.yaml +++ b/View Assist dashboard and views/dashboard/dashboard.yaml @@ -772,7 +772,7 @@ button_card_templates: music: type: custom:button-card template: icon_template - icon: mdi:cctv + icon: mdi:music tap_action: action: call-service service: view_assist.navigate From 2a5fe1b4167cc9bf5964b68a614cb93035b70d03 Mon Sep 17 00:00:00 2001 From: Stoleru Ioan Aurel <71765276+relust@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:39:49 +0200 Subject: [PATCH 10/12] Update viewassist-wikisearch.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix Wikipedia lookup for multi-word queries by resolving canonical page titles via search API During testing, I found that multi-word natural language queries (e.g. “New York City”) were returning HTTP 404 errors, despite the corresponding Wikipedia pages existing and being accessible via the browser. This occurs because the REST /page/summary/{title} endpoint requires an exact canonical page title and does not perform search or fuzzy matching. This change first resolves the canonical page title using the Wikipedia Search API, then retrieves the page summary using that title. The service interface and response format remain unchanged, while behavior now matches the Wikipedia browser experience. --- .../Search_Wikipedia/viewassist-wikisearch.py | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py b/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py index c8ca7ef5b..acbc2212d 100644 --- a/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py +++ b/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py @@ -23,13 +23,44 @@ def search_wikipedia(searchterm=None, language="en"): if searchterm is None: return {"error": "Missing searchterm"} - # Construct the URL with the specified language - url = f"https://{language}.wikipedia.org/api/rest_v1/page/summary/{searchterm.replace(' ', '_')}?redirect=true" - # Custom User-Agent (required!) headers = { "User-Agent": "HA-WikipediaSearch/1.0 (HomeAssistant pyscript; your.email@example.com)" } + + # Step 1: Search Wikipedia to resolve canonical page title + search_url = f"https://{language}.wikipedia.org/w/api.php" + search_params = { + "action": "query", + "list": "search", + "srsearch": searchterm, + "format": "json" + } + + search_r = task.executor( + requests.get, + search_url, + params=search_params, + headers=headers + ) + + if search_r.status_code != requests.codes.ok: + return {"error": "Search failed", "details": search_r.text} + + search_data = search_r.json() + search_results = search_data.get("query", {}).get("search", []) + + if not search_results: + return {"error": "No results found"} + + # Use canonical Wikipedia title from search result + page_title = search_results[0]["title"] + + # Step 2: Construct summary URL using canonical title + url = ( + f"https://{language}.wikipedia.org/api/rest_v1/page/summary/" + f"{page_title.replace(' ', '_')}?redirect=true" + ) r = task.executor(requests.get, url, headers=headers) From 8742a8b76d5bb9799141e341b67681932a86a1ea Mon Sep 17 00:00:00 2001 From: Stoleru Ioan Aurel <71765276+relust@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:41:07 +0200 Subject: [PATCH 11/12] Update viewassist-wikisearch.py --- .../Search_Wikipedia/viewassist-wikisearch.py | 37 ++----------------- 1 file changed, 3 insertions(+), 34 deletions(-) diff --git a/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py b/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py index acbc2212d..c8ca7ef5b 100644 --- a/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py +++ b/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py @@ -23,44 +23,13 @@ def search_wikipedia(searchterm=None, language="en"): if searchterm is None: return {"error": "Missing searchterm"} + # Construct the URL with the specified language + url = f"https://{language}.wikipedia.org/api/rest_v1/page/summary/{searchterm.replace(' ', '_')}?redirect=true" + # Custom User-Agent (required!) headers = { "User-Agent": "HA-WikipediaSearch/1.0 (HomeAssistant pyscript; your.email@example.com)" } - - # Step 1: Search Wikipedia to resolve canonical page title - search_url = f"https://{language}.wikipedia.org/w/api.php" - search_params = { - "action": "query", - "list": "search", - "srsearch": searchterm, - "format": "json" - } - - search_r = task.executor( - requests.get, - search_url, - params=search_params, - headers=headers - ) - - if search_r.status_code != requests.codes.ok: - return {"error": "Search failed", "details": search_r.text} - - search_data = search_r.json() - search_results = search_data.get("query", {}).get("search", []) - - if not search_results: - return {"error": "No results found"} - - # Use canonical Wikipedia title from search result - page_title = search_results[0]["title"] - - # Step 2: Construct summary URL using canonical title - url = ( - f"https://{language}.wikipedia.org/api/rest_v1/page/summary/" - f"{page_title.replace(' ', '_')}?redirect=true" - ) r = task.executor(requests.get, url, headers=headers) From 09f5dba1f297c828c44673be20b5599154c6e54d Mon Sep 17 00:00:00 2001 From: Stoleru Ioan Aurel <71765276+relust@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:43:19 +0200 Subject: [PATCH 12/12] Update viewassist-wikisearch.py --- .../Search_Wikipedia/viewassist-wikisearch.py | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py b/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py index c8ca7ef5b..acbc2212d 100644 --- a/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py +++ b/View_Assist_custom_sentences/Search_Wikipedia/viewassist-wikisearch.py @@ -23,13 +23,44 @@ def search_wikipedia(searchterm=None, language="en"): if searchterm is None: return {"error": "Missing searchterm"} - # Construct the URL with the specified language - url = f"https://{language}.wikipedia.org/api/rest_v1/page/summary/{searchterm.replace(' ', '_')}?redirect=true" - # Custom User-Agent (required!) headers = { "User-Agent": "HA-WikipediaSearch/1.0 (HomeAssistant pyscript; your.email@example.com)" } + + # Step 1: Search Wikipedia to resolve canonical page title + search_url = f"https://{language}.wikipedia.org/w/api.php" + search_params = { + "action": "query", + "list": "search", + "srsearch": searchterm, + "format": "json" + } + + search_r = task.executor( + requests.get, + search_url, + params=search_params, + headers=headers + ) + + if search_r.status_code != requests.codes.ok: + return {"error": "Search failed", "details": search_r.text} + + search_data = search_r.json() + search_results = search_data.get("query", {}).get("search", []) + + if not search_results: + return {"error": "No results found"} + + # Use canonical Wikipedia title from search result + page_title = search_results[0]["title"] + + # Step 2: Construct summary URL using canonical title + url = ( + f"https://{language}.wikipedia.org/api/rest_v1/page/summary/" + f"{page_title.replace(' ', '_')}?redirect=true" + ) r = task.executor(requests.get, url, headers=headers)