Skip to content

Add ha-deck plugin#1014

Open
Marker284 wants to merge 2 commits intoSteamDeckHomebrew:mainfrom
Marker284:add/ha-deck
Open

Add ha-deck plugin#1014
Marker284 wants to merge 2 commits intoSteamDeckHomebrew:mainfrom
Marker284:add/ha-deck

Conversation

@Marker284
Copy link
Copy Markdown

@Marker284 Marker284 commented Mar 28, 2026

HA Deck

Control your smart home directly from the Steam Deck Quick Access Menu.

HA Deck connects to Home Assistant — the most popular open-source smart home platform — and lets you control lights, switches, and view sensors without leaving your game.

No more picking up your phone just to turn off the lights. Everything is one button press away on your Deck.

Features

  • 💡 Lights — toggle on/off, brightness slider, color temperature
  • 🔌 Switches — control any switch, fan, automation, script
  • 🌡️ Sensors — view temperature, humidity and other sensor values
  • ⚙️ Easy setup — configure via browser on your phone, no typing on the Deck
  • 🔄 Auto-refresh — updates every 30s, stops when panel is closed (no background drain)

Screenshots

Main Setup Settings
main setup settings

Repo: https://github.com/Marker284/ha-deck


Checklist:

Developer Checklist

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.

Plugin Checklist

  • I have verified that my plugin works properly on the Stable SteamOS update channel.
  • I have verified my plugin is unique or alternatively provides more/alternative functionality to a similar plugin already on the store.

Plugin Backend Checklist

  • No: I am using a custom backend other than Python.
  • No: I am using a tool or software from a 3rd party FOSS project that does not have its dependencies statically linked.
  • No: I am using a custom binary that has all of its dependencies statically linked.

Testing

  • Tested on SteamOS Stable Update Channel.
  • Tested on SteamOS Beta Update Channel.
  • Tested on SteamOS Preview Update Channel.

@Marker284 Marker284 requested a review from a team as a code owner March 28, 2026 21:30
@github-actions github-actions bot added the not-plugin Not related to plugins themselves label Mar 28, 2026
@github-actions
Copy link
Copy Markdown

Issues Found

  • Neither testing box is present in your description. Please include one of them per the Markdown comment above the testing section.

Next Steps

  1. If we found any issues above, please edit your pull request description to resolve them and leave a comment saying you've done so.
  2. For the quickest review, please see the Community section of the pull request template for how you can help other developers.
  3. Once your description is correct, a maintainer will review your pull request as soon as possible.

Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️

@Marker284 Marker284 changed the title feat: Add ha-deck plugin Add ha-deck plugin Mar 28, 2026
@RodoMa92 RodoMa92 added plugin-addition Adding a plugin to the Plugin Store and removed not-plugin Not related to plugins themselves labels Apr 1, 2026
Copy link
Copy Markdown
Contributor

@beebls beebls left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your plugin currently kills all processes on port 8765 in order to starts it's webserver without telling the user. Can you change this to dynamically choose a port, for example, trying 8765, then if that is occupied, trying 8766, etc etc.

@Marker284
Copy link
Copy Markdown
Author

Your plugin currently kills all processes on port 8765 in order to starts it's webserver without telling the user. Can you change this to dynamically choose a port, for example, trying 8765, then if that is occupied, trying 8766, etc etc.

Okay, I'll release an update soon.

@Marker284 Marker284 closed this Apr 5, 2026
@Marker284
Copy link
Copy Markdown
Author

Your plugin currently kills all processes on port 8765 in order to starts it's webserver without telling the user. Can you change this to dynamically choose a port, for example, trying 8765, then if that is occupied, trying 8766, etc etc.

Addressed the port killing feedback. Removed _kill_port() and _port_in_use() entirely. Now the server just tries to bind ports 8765–8785 in a loop and takes the first one that works — no process killing, no pre-checks, no race conditions. If 8765 is busy it falls back to 8766 and shows a notice in UI. Tested on device.

@Marker284 Marker284 reopened this Apr 5, 2026
@github-actions github-actions bot added the not-plugin Not related to plugins themselves label Apr 5, 2026
@Marker284 Marker284 requested a review from beebls April 5, 2026 04:50
@beebls
Copy link
Copy Markdown
Contributor

beebls commented Apr 8, 2026

Your PR right now is attempting to update multiple plugins, so you will need to rebase onto main

@Marker284
Copy link
Copy Markdown
Author

Your PR right now is attempting to update multiple plugins, so you will need to rebase onto main

Done, rebased onto main. The PR should now only affect the ha-deck plugin. Please let me know if anything looks off.

@EMERALD0874
Copy link
Copy Markdown
Member

Hi, please elaborate on your usage of AI if any when developing this plugin.

@Marker284
Copy link
Copy Markdown
Author

Hi, please elaborate on your usage of AI if any when developing this plugin.

Hello, 95 was written by me.

Claude helped me with localization into English, writing tooltips in the code in English, and helped with the readme file and PR text since English isn't my native language.

Otherwise, I wrote all the code. As I mentioned above, Claude helped me organize the documentation within the code to avoid confusion, and consulted me on the web server for the plugin.

@allmazz
Copy link
Copy Markdown

allmazz commented Apr 12, 2026

Thank you for this plugin, looks really QoL. But, what for it setting up own web page? Why just not connect to HA directly from frontend via API? Or from backend with some logic, but looks like you do not need backend at all here

@Marker284
Copy link
Copy Markdown
Author

Thank you for this plugin, looks really QoL. But, what for it setting up own web page? Why just not connect to HA directly from frontend via API? Or from backend with some logic, but looks like you do not need backend at all here

To use the Home Assistant API, you need to use a long-term token, which is generated once. The problem is that this token is very long and consists of random characters and numbers. I was thinking about how to simplify data entry on the Steam Deck and came to the conclusion that creating a web page for configuration would be the best solution.

@allmazz
Copy link
Copy Markdown

allmazz commented Apr 12, 2026

Thank you for this plugin, looks really QoL. But, what for it setting up own web page? Why just not connect to HA directly from frontend via API? Or from backend with some logic, but looks like you do not need backend at all here

To use the Home Assistant API, you need to use a long-term token, which is generated once. The problem is that this token is very long and consists of random characters and numbers. I was thinking about how to simplify data entry on the Steam Deck and came to the conclusion that creating a web page for configuration would be the best solution.

can't you implement simple login page, or copy-paste the token?

@Marker284
Copy link
Copy Markdown
Author

Thank you for this plugin, looks really QoL. But, what for it setting up own web page? Why just not connect to HA directly from frontend via API? Or from backend with some logic, but looks like you do not need backend at all here

To use the Home Assistant API, you need to use a long-term token, which is generated once. The problem is that this token is very long and consists of random characters and numbers. I was thinking about how to simplify data entry on the Steam Deck and came to the conclusion that creating a web page for configuration would be the best solution.

can't you implement simple login page, or copy-paste the token?

According to the Home Assistant API documentation, they are currently in use and highly recommend using long-term tokens. I agree that this is more secure and flexible in configuration, although it may not be as convenient for initial setup. As for simply copying and pasting the token, I will likely implement the ability to choose the initial setup method. There will be two options: entering it on a Steam Deck or on a web server. Unfortunately, I'm currently swamped with university work and don't have time to download the update. Work will resume soon.

@Marker284
Copy link
Copy Markdown
Author

For me, the web server turned out to be a very convenient solution to the problem. I connected to the plugin from my phone, generated a token on the phone, and inserted it into the plugin's web page from the phone, and after that, the web server disconnected.

Thank you for this plugin, looks really QoL. But, what for it setting up own web page? Why just not connect to HA directly from frontend via API? Or from backend with some logic, but looks like you do not need backend at all here

To use the Home Assistant API, you need to use a long-term token, which is generated once. The problem is that this token is very long and consists of random characters and numbers. I was thinking about how to simplify data entry on the Steam Deck and came to the conclusion that creating a web page for configuration would be the best solution.

can't you implement simple login page, or copy-paste the token?

According to the Home Assistant API documentation, they are currently in use and highly recommend using long-term tokens. I agree that this is more secure and flexible in configuration, although it may not be as convenient for initial setup. As for simply copying and pasting the token, I will likely implement the ability to choose the initial setup method. There will be two options: entering it on a Steam Deck or on a web server. Unfortunately, I'm currently swamped with university work and don't have time to download the update. Work will resume soon.

@allmazz
Copy link
Copy Markdown

allmazz commented Apr 14, 2026

For me, the web server turned out to be a very convenient solution to the problem. I connected to the plugin from my phone, generated a token on the phone, and inserted it into the plugin's web page from the phone, and after that, the web server disconnected.

Thank you for this plugin, looks really QoL. But, what for it setting up own web page? Why just not connect to HA directly from frontend via API? Or from backend with some logic, but looks like you do not need backend at all here

To use the Home Assistant API, you need to use a long-term token, which is generated once. The problem is that this token is very long and consists of random characters and numbers. I was thinking about how to simplify data entry on the Steam Deck and came to the conclusion that creating a web page for configuration would be the best solution.

can't you implement simple login page, or copy-paste the token?

According to the Home Assistant API documentation, they are currently in use and highly recommend using long-term tokens. I agree that this is more secure and flexible in configuration, although it may not be as convenient for initial setup. As for simply copying and pasting the token, I will likely implement the ability to choose the initial setup method. There will be two options: entering it on a Steam Deck or on a web server. Unfortunately, I'm currently swamped with university work and don't have time to download the update. Work will resume soon.

There’s an API for your use case: https://developers.home-assistant.io/docs/frontend/external-authentication/

Copy link
Copy Markdown

@mdeguzis mdeguzis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your LICENSE is incorrect. Please see the license of the plugin template repo and replace "Hypothetical Plugin Developer" and its year with your own information if you wish to use BSD-3. Crediting Steam Deck Homebrew is mandatory.

@Marker284
Copy link
Copy Markdown
Author

Ваша лицензия неверна. Пожалуйста, ознакомьтесь с лицензией репозитория шаблонов плагинов и замените "Hypothetical Plugin Developer" и год на свои данные, если вы хотите использовать BSD-3. Указание авторства Steam Deck Homebrew обязательно.

15 минут и будет готово

@Marker284
Copy link
Copy Markdown
Author

Ваша лицензия неверна. Пожалуйста, ознакомьтесь с лицензией репозитория шаблонов плагинов и замените "Hypothetical Plugin Developer" и год на свои данные, если вы хотите использовать BSD-3. Указание авторства Steam Deck Homebrew обязательно.

The license has been updated. I believe everything is correct now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

not-plugin Not related to plugins themselves plugin-addition Adding a plugin to the Plugin Store

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants