QuickBars for Home Assistant - instant HA controls over any app on Android TV

Hey I had the same issue on my shield but doing a full reinstall of quick bars fixed it. Netflix button trigger button is working again for me.

I have just tried the app. It looks nice in general, however I was hoping it would help me solve a specific issue for my setup and I struggle with it.

What I want to do is have an easy, quick access to change volume on the media player (that my Android TV project is connected to). The volume keys on my remote adjust the volume inside Android, and I’d like to hijack that to adjust the media player volume from HA.

Now, I managed to add the media player entity to a quickbar, and I can change volume going in there. However, there are 2 issues with it:

  1. It’s too cumbersome for volume control. There are 4 clicks to just increase volume.
  2. There’s not enough feedback. The media player entity in the quickbar doesn’t show its current volume.

I tried adding the entity directly to the trigger key, but that can only toggle the entity. Is there a way to change it from toggle to some other action? For my use case it would be best if I could directly bind a toggle key with volume up and volume down - and have the toast show the current volume after this action.

Any other ways I could achieve this?

You could make 2 scripts or automation, one that increases volume and one that decreases volume. Then you can set each of those to their own trigger key.

To see the current level you could try the quickbars display notification blueprint. In the message field you can have it display sensor value. It probably won’t update the value live though

Thanks for the hint. I thought about the script, but didn’t think about the notifications.

I managed to do it, and I can pass the volume value in the message, and a different icon for volume up and down.

Everything would be great if not the stupid remote, which does not allow remapping the default volume keys. I swear it would be easier to just make my own remote with ESP and the original remote parts in the same package. Maybe one day :smiley: .

I am having a problem with images in script: Display notification
When sending it does not send the newest image taken, but it keeps sending an older image.
I have checked the image wich is stored in www, and it is updated, but it seems that quickbar keeps sending an old image no matter. It dosent seem to “update” . Some cache issue or…? :thinking:

Edit: My path is:
/local/image/snapshots/snapshot.jpg wich updates with node red on doorbell push camera.snapshot. to:
www/image/snapshots/snapshot.jpg
I have tested and it does update the image to url.
Works with notification for android app on google streamer every time.

Edit2: I made a solution witch now works for me.
This script sends a QuickBar notification when someone rings the doorbell, including a fresh snapshot image from your camera. It also uses a unique timestamp to make sure the image updates correctly on devices like Google TV, which aggressively cache images.

In configuration.yaml:

shell_command:
  delete_old_snapshots: >
    sh -c 'cd /config/www/image/snapshots && ls -1t | tail -n +2 | xargs -r rm --'

Script:

alias: QuickBars – Doorbell Notify (dynamisk)
mode: single
sequence:
  - variables:
      snapshot_file: doorbell.jpg
      snapshot_path: /config/www/image/snapshots/{{ snapshot_file }}
      snapshot_url: >-
        http://192.168.1.217:8123/local/image/snapshots/{{ snapshot_file }}?v={{
        now().timestamp() | int }}
      cid: "{{ now().timestamp() | int }}"
  - action: camera.snapshot
    data:
      entity_id: camera.kamera1_2
      filename: "{{ snapshot_path }}"
  - event: quickbars.notify
    event_data:
      title: Det ringer på!
      message: Noen står ved døren
      image_url: "{{ snapshot_url }}"
      sound_url: /local/positive.wav
      sound_volume_percent: 40
      duration: 20
      position: bottom_right
      color:
        - 0
        - 0
        - 0
      transparency: 0.5
      interrupt: true
      cid: "{{ cid }}"

Remember to change your paths etc.

Absolutely love this. Couple notes for you. You might want to update the docs page in the initial post to direct to the newer quickbars.app link instead of the trooped.dev. I was fighting for a good 20 minutes trying to figure out why the docs page wasn’t working.

I would also LOVE to see this integrated into a full dashboard style. I have my Chromecast Streamer in my room and would love to do things like change the default screensaver to a nice HA dashboard but the current “stream” technology from CASA is kinda broken in this regard. It would also be cool to put up as a morning brief. I currently have my Google Home Mini doing a VO of the current data from NWS but having a visual on screen for weather, radar, or even cameras when my alarm goes off would be super cool. Not to mention what people way smarter than me would do with it.


Can anyone help why when using rtsp the display around the pip goes black and stays black when using it with android TV and the supplied blueprint?
Camera entity works fine as done alias.
Excellent app by the way, how do I buy a coffee or donate?

It’s now working fine after a restart :grin:.

  1. I would really like to see a feature request of having a web ui for settings.
    Similar to what fully kiosk has .

  2. Is there any possibilty that when PIP it dosent pause what you are watching, but only mute?

Other than that I must say this is an awsome app. I bought the full version. Thank you very much for this :heart_eyes:

Anyone having issues with the notifications part?

I can’t get notifications (or the Quickbars) to be triggered from Home Assistant.

I can see these errors in the Home Assistant logs

Last logged: 10:12:38

Refusing to allow Home to subscribe to event quickbars.open
Refusing to allow Home to subscribe to event quickbars_config_request
Refusing to allow Home to subscribe to event quickbars.notify

And I can also see the below. That is my Shield IP (running quickbars) and Home is the username (that created the token).

Last logged: 10:12:38

[140368371744832] Error handling message: Unauthorized (unauthorized) Home from 192.168.1.10 (okhttp/4.12.0)
[140369673988480] Error handling message: Unauthorized (unauthorized) Home from 192.168.1.10 (okhttp/4.12.0)
[140370047179552] Error handling message: Unauthorized (unauthorized) Home from 192.168.1.10 (okhttp/4.12.0)
[140368622775136] Error handling message: Unauthorized (unauthorized) Home from 192.168.1.10 (okhttp/4.12.0)
[140368767253568] Error handling message: Unauthorized (unauthorized) Home from 192.168.1.10 (okhttp/4.12.0)

I’m seeing the same issue with cached images. This wasn’t a problem with NFATV but is with QB. Using the * /api/camera_proxy/<camera_entity> option seems to work though.

Edit: nevermind, it worked the first two times but now it’s caching those too.

Edit: also seeing a lot of warnings in the logs from the blueprints. Anyone else?

Logger: homeassistant.helpers.template
Source: helpers/template/__init__.py:1750
First occurred: January 25, 2026 at 12:16:43 (337 occurrences)
Last logged: 10:26:46

Template variable warning: 'omit' is undefined when rendering '{{ _ev.mdi_icon if _ev.get('mdi_icon') else omit }}'
Template variable warning: 'omit' is undefined when rendering '{{ _ev.sound_url if _ev.get('sound_url') else omit }}'
Template variable warning: 'omit' is undefined when rendering '{{ _ev.sound_volume_percent if _ev.get('sound_volume_percent') else omit }}'
Template variable warning: 'omit' is undefined when rendering '{{ _ev.image_url if _ev.get('image_url') else omit }}'

On my Sony Bravia (google TV), I assigned one of the buttons I don’t use to Quick Bars (Crunchy Rolls??). Works perfectly. However, now the Amazon Prime quick key also opens the same quick bar. I don’t believe I accidentally programmed the wrong button. Any way to restore the original functionality back to that button?

Suggestion. Let us send notifications pop-up through Quickbar!

@Trooped
Hi,
I had a question about the volume control issue when turning the Accessibility on. There is another app called tvQuick Actions pro (Quick Start Guide - tvQuickActions Docs) which addresses the volume issue by temporarily disabling accessibility services for 10 seconds when the Volume (+) or (-) is pressed. Do you think you could implement a similar workaround for QuickBars? Probably would help make your app work for most TV manufacturers.

Amazing app. My problem is that I can’t get climate to work. It’s stuck at 45 degrees. Might be a centigrade vs. fahrenheit issue.