Gaming Status Integration

Exciting News!

I am currently developing a companion Windows taskbar app named Gaming Status Agent. Here are the details:

  • Reports gaming status over MQTT, including Gamertag, Game Title / Offline, Start Time, End Time, and Launcher.
  • Covers the most popular launchers, including Epic, Ubisoft, GOG, Battle.net, EA, Amazon Games, Playnite, Steam, and Xbox.
  • Tracks local users only (so no friends’ accounts), but if you’re most interested in tracking your own game time locally, it should be great.
  • It has a VERY small memory footprint (around 30 MB currently) and extremely low CPU overhead (around 0.1% of one core from my testing so far).
  • Does not require an Internet connection except for optionally downloading Ubisoft game ID mappings upon startup.

I still need another week or two of testing and debugging before I officially release it into the wild, but it’s working well for me so far. Once released, it will replace the “Custom” sensor option in the Gaming Status integration and will greatly expand the list of available tracked PC game launchers.

You can check it out here, and I have been posting the most recent executable online. You can also build it from the source if you want or if you don’t trust random executables from unknown sources, which I totally understand. :wink:

I’m still working on the Gaming Status Agent (GSA) and doing some more testing, but here is what I’m getting so far from it.

Games listed as GSA are not tracked by other platforms but are instead custom sensors based on an executable name or window title.

Update on GSA

Launchers currently working:

  • Amazon Games
  • Battle.net
  • EA
  • Epic
  • GOG
  • HoYoverse (Genshin Impact, Honkai: Star Rail, etc.)
  • Minecraft (specifically Java Edition)
  • Playnite
  • Riot Games (League of Legends, VALORANT, etc.)
  • Steam*
  • Ubisoft
  • Xbox*
  • Custom (allows for ANY executable or window title to be tracked as a game title)

*Useful if you don’t want to use Home Assistant’s integrations, but provides game names only.

Added, but need to be tested:

  • Roblox
  • Rockstar Games

Are there any other launchers anyone would want included? All of these are optional toggles, so GSA only checks for the enabled platforms.

2026.10.1 has been released!

From this update forward, the integration’s version numbers will be structured as year.month.version. Update Gaming Status cards to 2026.10.1 for support for the new GSA sensor.

Breaking Changes

  • Gaming Status Agent (GSA) replaces “Custom”: Gaming Status Agent (GSA), the companion Windows app, replaces the Custom platform. It reports the game you’re playing, the launcher it came from, and your profile name over MQTT.

New Features

  • New tracked launchers: Amazon Games, Battle.net, EA, Epic, GOG, HoYoverse, Minecraft (Java Edition), Playnite, Riot Games, Roblox, Rockstar Games, Ubisoft, and Custom games rules. Steam and Xbox detection is optional in GSA and can be used to for basic tracking of those platforms instead of Home Assistant’s native integrations, if desired.
  • Player setup: The new GSA field is a dropdown filtered to sensor.gsa_* sensors.
  • Launcher as the platform: GSA games show the launcher as their platform, e.g. “Epic” or “GOG”. This applies to the PC and Master sensors, their icons, and recorded sessions.
  • Gamertag: the Agent’s Profile Name is used as the gamertag for the GSA sensor. The Master sensor adds a new gsa_gamertag attribute.
  • PC sensor: GSA feeds the PC sensor, in the priority order Playnite > GSA > Steam > Discord. Steam and Xbox games reported by GSA are treated as Steam and Xbox, not GSA.
  • Native sensors win: If the native Steam or Xbox sensor reports the same game, GSA steps aside, so you keep that sensor’s gamertag, achievements, and ratings.
  • New attributes: platform_key on each recorded session: the internal platform, e.g. steam or gsa. active_platform_key on the PC and Master sensors. launcher on GSA sensors. It keeps the last launcher while you’re offline, for “last seen” displays.

Roblox and Rockstar Games tracking have been added but not officially tested. If anyone can report back on their functionality, I’d greatly appreciate it!

Upgrading

  • Automatic migration: Existing Custom setups move to GSA on update. The sensor is renamed from sensor.gaming_status_<player>_custom to sensor.gaming_status_<player>_gsa, and its play history and hours are kept.
  • Action required: Point each player’s GSA field at their sensor.gsa_* sensor. Plain on/off and template sensors (e.g. HASS.Agent) are no longer supported.
  • Service calls: Use the platform value gsa instead of custom.

Bug Fixes

  • Weekly hours are now a true 7-day window. The Weekly Hours chart’s bars and its legend total were being calculated two different ways. The bars always covered the last 7 days; the total behind them quietly covered 8, and the per-game breakdown covered 9. All three now agree on the same 7 days: today plus the six days before it. You will see your rolling weekly totals drop. That’s the correction, not lost data: they were previously counting one to two extra days. Your calendar (“Since Sunday”) totals are unaffected, and so is the weekly report.
  • Play time no longer lands on the wrong day when a session crosses midnight. If a session ran past midnight and Home Assistant restarted or stalled during it, all of the catch-up time was credited to the day the session ended. A session from 9:45 PM to 2:46 AM could hand over an hour of the previous evening’s play to the next day, making yesterday read low and today read high. Each day now keeps the time it actually earned. Days already recorded are left as they are; this applies going forward.
  • Ghost sessions that ran forever. A session could get stuck “Running” indefinitely with nothing feeding it: no source reporting a game, no way for it to end on its own, and it survived restarts. Fixed, along with the underlying cause: very short sessions were being denied their grace period entirely. Short sessions now get the same protection as any other. If you were affected, reloading the integration clears any stuck session. Check your recent sessions afterwards; A long-running phantom may have been recorded on its way out, and can be removed with the Game Management card.
  • Session start confirmation (new, optional). A new Global Setting lets you require a newly detected game to keep being reported for a few seconds before a session starts. It’s off by default. It’s there for unreliable sources (most often a custom or third-party sensor that briefly reports a game nobody launched) where a one-second flicker was previously enough to start a session, publish it everywhere, and fire a notification. Genuine sessions still get their full play time; the start is backdated to when the game was first seen.
  • Game names containing an apostrophe now find their cover art colors correctly.

Documentation

  • The README has a new Gaming Status Agent setup section and updated platform and attribute tables.
  • The HASS.Agent “PC Funnel” guide has been removed, and the troubleshooting entry now covers GSA.

I had not considered how removing the “Custom” option my affect Linux users who may have created their own sensors. I will be adding that functionality back into the next update in case it was more widely used than I had anticipated.

2026.10.2

I have restored the Custom sensor option. If you were hesitant to update because of the removal of the feature, you should be safe now. The Gaming Status Cards have been updated to restore the proper platform display as well.

The “new” Custom option lives below the new Gaming Status Agent option that originally replaced it, so now both are available as options.

Official Release for Gaming Status Agent

The first official release of Gaming Status Agent is now LIVE! It reports the game you’re playing to Home Assistant over MQTT, as a single sensor showing the game title, the launcher, and when you started playing. Home Assistant finds the sensor automatically, with no YAML needed.

Build Version Download
Windows 1.3.2 Gaming Status Agent.exe
Linux (beta) 1.1.3 gaming-status-agent-linux-1.1.3.zip

Windows

A system-tray app with nothing to install: put the exe in a folder of its own and run it.

Supported launchers: Amazon Games, Battle.net, EA, Epic, GOG, HoYoverse, Minecraft, PCSX2, Playnite (including emulated games), Riot Games, Roblox, Rockstar Games, Steam, Ubisoft and Xbox. Custom rules cover anything else.

  • Setup wizard: Finds the launchers on your PC and switches them on for you.
  • Real game names: Read from each launcher’s own records, not from window titles.
  • Choose what’s tracked: Switch platforms on or off from the tray, with no restart needed.
  • Gamertags: One per platform, shown as the sensor’s Profile Name.
  • Run Diagnostics: Shows exactly what the agent sees and why.
  • Reliable status: If your PC sleeps, crashes or loses its connection, Home Assistant shows Offline instead of a game you stopped playing hours ago.

Linux (beta)

A new agent that publishes the same sensor as the Windows version.

  • Steam: Native and Proton games.
  • Heroic: Epic, GOG and Amazon games, reported under their store.
  • Lutris
  • PCSX2
  • Custom rules: By process name, or by window title on X11.
  • Runs your way: Tray icon with settings windows, or --headless as a systemd user service.
  • Password storage: Your MQTT password is kept in your desktop keyring (KWallet or GNOME Keyring). If the keyring isn’t ready at login, the agent waits for it before connecting.

This is a beta: please report anything it misses, and include the output of python3 linux/gsa_linux.py --diagnose.

Good to Know

  • PCSX2 is off by default on both platforms. To use it, turn on PINE in PCSX2 under Settings → Advanced → PINE, restart PCSX2, then switch on PCSX2 under Platforms.
  • Steam and Xbox are off by default because Home Assistant has its own integrations for both. Switch them on under Platforms if you want this sensor to cover them, but only game titles will be reported.
  • More than one PC: give each computer its own device name. Each one then gets its own sensor, and the new Machine and OS attributes show which computer you’re playing on.
  • Everything stays on your machine. Detection is local, with no API keys or public profiles needed.

See the README for setup, configuration and troubleshooting.

2026.10.3 - Artwork Bug Fixes

Bug Fixes

  • Deleted artwork files now get downloaded again. Before returning saved artwork links, the fetch never checked that the files were still on disk. The cleanup job deletes files by age, so a game the user kept playing could lose its art while its links stayed in memory until Home Assistant restarted. Now, each time it returns saved links, it checks that the files exist. If any are missing, it drops the saved entry and downloads the art again.

  • Active games are now cleaned up. Serving a game’s art now updates its file timestamps, so the 30-day cleanup only removes art for games nobody is playing. No more links to files that were never saved: if a download failed, the code used to build a /local/... link to the missing file anyway, and that broken link stayed until restart. It now points straight to the SteamGridDB copy instead, and doesn’t save that result, so the next update tries the download again.

  • Artwork links now come from the same address as the dashboard. Previously, saved artwork links included the external address. A dashboard opened on the home network then loaded images from a different site, which can be blocked or cached separately. The integration now gives the plain /local/gaming_status_cache/... path for game art, the avatar check, and the fallback disk scan. Notifications still get full external links, because every notification path already converts these paths first.

  • SteamGridDB fallback for Discord notifications. When a user has no public HTTPS address and the art is saved locally, Discord notifications will now show the SteamGridDB image instead of none.

  • Live check for missing artwork. On each 30-second tick, while a game is being played with local caching on, the integration now checks that the game’s art files still exist. If any file is missing, it re-runs the normal update, sees the missing files, downloads them again, and publishes the new links.

1 Like