New Add-on: Kiosk-mode dashboard display on your (RPi) HAOS-server

Several people in the past have asked whether it is possible to display dashboards directly via HDMI output on the HAOS server.

As introduced first in https://community.home-assistant.io/t/ha-kiosk-on-rpi5-running-haos/849371, I created an add-on that allows you to display all your dashboards in kiosk-mode via a display running on the HDMI port on your HAOS server.

I find it amazingly helpful to just keep a cheap LCD display attached to my RPi HAOS server allowing me to check my sensors at a glance. To me this is one of those “WTH” things that should be included in HA core.

You can used the add-on by adding the following to your add-on repositories:

Here is the Readme for the add-on:

HAOS-kiosk

Display HA dashboards in kiosk mode directly on your HAOS server

Author: Jeff Kosowsky

Description

Launch X windows on local HAOS server followed by OpenBox window manager and Luakit browser.
Standard mouse and keyboard interactions should work automatically

NOTE: You must enter your HA username and password in the Configuration tab for add-on to start

Note that the Luakit is launched in kiosk-like (passthrough) mode.
To enter normal mode (similar to command mode in vi), press ctl-alt-esc.
You can then return to passthrough mode by pressing ctl-Z or enter insert mode by pressing i
See luakit documentation for available commands.
In general, you want to stay in passthrough mode.

Configuration Options

HA Username [required]

Enter your Home Assistant login name

HA Password [required]

Enter your Home Assistant password

HA URL

Default is: http://localhost:8123
In general, you shouldn’t need to change this since this is running on the local server.

HA Dashboard

Name of starting dashboard.
Defaults to “” which loads the default Lovelace dashboard.

Login Delay

Delay in seconds to allow login page to load.
Defaults to 1 second.

HDMI Port

HDMI output port. Technically can be 0 or 1 (Defaults to 0).
BUT currently has no effect on stock HAOS on RPi since configured to mirror HDMI0 onto HDMI1.

Screen Timeout

Time before screen blanks in seconds. Set to 0 to never timeout.
Default is 600 seconds.

Browser Refresh

Time between browser refreshes. Set to 0 to disable.
Recommended since on default RPi config, console errors may overwrite the dashboard.
Default is 600 seconds.

Zoom Level

Level of zoom with 100 being 100%.
Defaults is 100.

7 Likes

Hey puterboy,
Thanks for this addon. I am curious does this work with a display connected through the DSI connector on Rpi4?
Thanks

Not sure. Haven’t tried that.
Please try and let me know.
If it doesn’t work, share log files and I can help troubleshoot…

Does this work on a Odroid N2+?

No clue. Why don’t you test it?

2 Likes

You are amazing! This is exactly what I was looking for. I understand everyone saying just use something else, but damn I have the PI5 and a touchscreen display, I’d like to use it to it’s full advantage. Plus it just seems wasteful to have a PI plugged in running HAOS and doing nothing else. Thanks a million for this.

1 Like

Hello.
I have question about Raspberry Pi Touch Display 2. It properly display HA Dashboard, but touch does not work. Is it any way to make it operable?
Regards,
Marek

Check out the testing branch on Github for touch implementation… also see the relevant (solved) issues for more info…

Unfortunately, touch still not working

Unfortunately, touch still not working

Not very helpful, let alone actionable feedback. If you want help, go to github and supply much more detailed info about your setup, what you have done, what you see, logs, etc.

Hi Jeff,

First off, thank you for your work on the HAOS Kiosk Display add-on ! I was stuck for days on making a similar thing work with the Raspberry Pi OS and an installation of the TouchKIO software. But your add-on makes it easy!

First, looking at the previous comments: I use a DSI display and that works. I have the intention of setting the Pi4+display close to the electricity meter and I don’t want anyone trying something funny, so that it does not have touch input, well, that’s good for me ;).

I want to suggest a few enhancements that could make the add-on even more flexible and secure, especially for kiosk-style deployments:

  1. Support Long-Lived Access Tokens
    Instead of requiring ha_username and ha_password, it would be great to allow authentication via a long-lived access token. This aligns with Home Assistant’s recommended practices and avoids storing plaintext credentials.

  2. Optional Credentials for Trusted Networks
    If the kiosk device is on a trusted network (as defined in Home Assistant), it would be ideal to skip the login screen entirely. This would simplify setup for users who’ve already configured secure access.

  3. Smarter Login Handling
    Detecting whether login is required - and either submitting credentials or bypassing it - would make the experience more seamless. A fallback or error message if login fails would also be helpful.

I had to remove all other users from HomeAssist: when there is more than one I get a selection screen and that is the end, it does not do anything more. The suggestions above might cure that.

Thanks again for your work, and I’d be happy to help test if you decide to work on this! Unfortunately my technical skills are limited nowadays - I used to develop but that’s a long time ago.

Best regards,
Danny

Interesting. I have several users and it works for me as it simply enters the username and password.

Your suggestions are all great ideas. I too have limited technical skills.

  1. I have no experience with long-lived access tokens Would be great if you could submit a PR to implement this

  2. I would imagine that allowing password-less logins to the HA GUI for “trusted networks” would require a change to code in HA core. But if there is such a hook or other way to implement without depending on a mode to HA core, please submit a PR that does so

  3. I have several users and it works for me as it simply enters the username and password for the given user and password. If this doesn’t work for you, please file a proper bug report along with more detailed description, logs, screenshot so I can see what is breaking.

Really cool. I don’t need this anymore but when I just started with HA I didn’t want to buy a separate device for a wall panel so I ran supervised on a pi with touchscreen that I had around.
This is the add-on I would have wanted to have instead.

Hey, the addon is exactly what I am searching for. Unfortunately I have a problem with the addon. The username and password is set correctly in the config, but nevertheless the browser asks for username and password. Normally it should paste the credentials automatically and go directly to the dashboard. Doesn’t matter I do, the login screen appears always.
Maybe it would be helpful if you could remove the obligation to type in accountcredentials, to be able to create a long-live-token and use this via URL (without credentials).

Not sure why auto-login is not working for you but then again you didn’t post any details or logs or anything that would be helpful.
If you want help, please file a proper bug report on github.

Regarding long-lived tokens, happy to review a PR if you have the time, interest, and capabilities to implement that.

Hi, is there any possibility of exposing video output as a switch in HA so that the connected monitor can be turned on/off day/night or when away. Great work!

Look at latest #testing branch - it exposes an API to do just that and more.

On my mini-PC running HAOS with the HAOSKiosk add-on, I run a python script with pytftdi that reads the value of a cheap Arduino-kit ultrasonic sensor attached to a $4 FTDI FT232H GPIO USB board connected to the mini-PC. Even easier on an RPI since GPIOs are directly exposed without the need for a USB GPIO board/

My python script turns on the screen when it detects someone nearby and shuts off when no one detected.

The API can be used to turn on/off the monitor, test the current monitor state, launch a new url or dashboard, or run arbitrary commands in the HAOSKiosk container… and more… Check it out and share your feedback.

1 Like

I also added an example ultrasonic-trigger.py in the examples folder that:

Uses a FTDI FT232H USB-GPIO board to monitor the output of an ultrasonic HC-SR04 type distance sensor to:

  • Print out distance every second
  • Turn on monitor if distance < NEAR_ON_DIST for COUNT_ON_THRESH seconds
  • Turn off monitor if distance > FAR_OFF_DIST for COUNT_OFF_THRESH seconds

Also, optionally, don’t measure distance and leave display in DEFAULT_DISPLAY_STATE if the HA sensor HA_BINARY_SENSOR is set and evaluates to true.

This can be used to make the auto on/off depend on the state of a sensor in HA.

See new topic: New Release of HAOSKiosk add-on (0.9.8) to display dashboards directly on your HAOS server