Adds .github/workflows/release.yml (for HA integrations, watches custom_components/<domain>/manifest.json; for ha-adb-common, watches pyproject.toml). When the version field changes on main, the workflow creates a matching v<version> tag and a GitHub Release with auto-generated notes — as long as the tag doesn't already exist. For the four HA integrations, also adds validate.yml running HACS's official validator and Home Assistant's hassfest against every PR, push to main, and nightly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
NVIDIA Shield
Enhanced NVIDIA Shield TV integration for Home Assistant. ADB-based media session tracking, Jellyfin rich metadata, power monitoring, and receiver coordination.
Status: Early access (0.1.x). Tested on the author's own setup; expect rough edges and occasional breaking changes until 1.0. Please file issues on GitHub if anything is broken.
graph TD
subgraph "NVIDIA Shield Integration"
ADB["ADB Media Session"] -->|now playing| Entity["media_player.nvidia_shield"]
JF["Jellyfin"] -->|rich metadata| Entity
ATV["Android TV Remote"] -->|power / commands| Entity
PWR["Smart Plug"] -->|power state| Entity
end
Entity -->|"media_dag_*"| MZ["Media Zone"]
style Entity fill:#76b900,color:#fff
style MZ fill:#1a73e8,color:#fff
style ADB fill:#444,color:#fff
style JF fill:#00a4dc,color:#fff
style ATV fill:#444,color:#fff
style PWR fill:#444,color:#fff
Features
- ADB Media Session -- Now-playing from any app (PipePipe, Spotify, VLC, Plex, etc.), not just Jellyfin
- Jellyfin Rich Metadata -- Title, series, season/episode, duration, position, stream details (resolution, codec, HDR, audio format)
- Power Monitoring -- Smart plug for reliable on/off detection with auto-discovered sibling sensors (watts, voltage, current)
- Receiver Coordination -- Links to a receiver entity and input name
- Intent Tracking -- Commands reflect in HA state immediately, self-heal against actual device state
- Privacy Mode -- Show only app name without media details for non-Jellyfin apps
- Controlled ADB Pairing -- Dedicated pairing step in config flow + re-pair button entity
- Media DAG Attributes -- Full signal chain data for Media Zone orchestration
Installation
HACS (recommended)
- In HACS, open the overflow menu (⋮) → Custom repositories.
- Paste
https://github.com/ltomes/ha-nvidia-shield, pick type Integration, click Add. - Find NVIDIA Shield in the HACS list and click Download.
- Restart Home Assistant.
- Go to Settings → Devices & Services → Add Integration, search for NVIDIA Shield, and set up the integration (see Configuration).
Manual
Copy custom_components/nvidia_shield to your HA config/custom_components/ directory, restart, then add the integration from Settings → Devices & Services.
Configuration
- Settings > Devices & Services > Add Integration > "NVIDIA Shield"
- Select the Android TV Remote entity for your Shield
- Enable ADB if you want now-playing from all apps
- If ADB is enabled, the next step will pair -- approve the prompt on the Shield
- Optionally configure Jellyfin, receiver, power switch
ADB Pairing
ADB is paired during setup via a dedicated config flow step. If you need to re-pair later (e.g., after factory reset), use the "Pair ADB" button on the device page in HA.
Requirements: Settings > Developer options > Network debugging enabled on the Shield.
Options
- Jellyfin Media Player -- Auto-detected or manually selected
- Receiver + Input -- For Media Zone coordination
- Power Switch -- Smart plug entity
- ADB Host/Port -- Override auto-detection if needed
Entities
| Entity | Type | Description |
|---|---|---|
| Media Player | media_player |
Main entity with playback controls and metadata |
| Current App | sensor |
Currently running app |
| Now Playing | sensor |
Formatted now-playing string |
| Pair ADB | button |
Initiate or re-pair ADB connection |
Development
Shared ADB helpers live in ha-adb-common and are also used by ha-hisense-tv. For HACS installs, a copy is vendored at custom_components/nvidia_shield/ha_adb_common/ so end users need nothing extra. We plan to publish ha-adb-common to PyPI so it can be declared as a normal manifest.json requirement; until then, the vendored copy is the source consumed at runtime.
To hack on the shared code locally, clone ha-adb-common as a sibling directory and run uv sync --extra dev — the [tool.uv.sources] section in pyproject.toml wires it up editable.
Part of the Media Zone Ecosystem
This integration works standalone, but pairs with ha-media-zone to create a unified zone controller:
- ha-media-zone -- Orchestrates receiver + display + sources into one entity
- ha-emotiva-mc1 -- RS232 control for Emotiva MC1 receiver
- ha-hisense-tv -- Hisense Google TV control via ADB + AirPlay
License
MIT