# NVIDIA Shield [![hacs][hacs-badge]][hacs-url] [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 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. ```mermaid 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](https://github.com/ltomes/ha-media-zone) orchestration ## Installation ### HACS (recommended) 1. In HACS, open the overflow menu (⋮) → **Custom repositories**. 2. Paste `https://github.com/ltomes/ha-nvidia-shield`, pick type **Integration**, click **Add**. 3. Find **NVIDIA Shield** in the HACS list and click **Download**. 4. **Restart Home Assistant.** 5. Go to **Settings → Devices & Services → Add Integration**, search for **NVIDIA Shield**, and set up the integration (see [Configuration](#configuration)). ### Manual Copy `custom_components/nvidia_shield` to your HA `config/custom_components/` directory, restart, then add the integration from **Settings → Devices & Services**. ## Configuration 1. Settings > Devices & Services > Add Integration > "NVIDIA Shield" 2. Select the Android TV Remote entity for your Shield 3. Enable ADB if you want now-playing from all apps 4. If ADB is enabled, the next step will pair -- approve the prompt on the Shield 5. 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](https://github.com/ltomes/ha-adb-common) and are also used by [ha-hisense-tv](https://github.com/ltomes/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](https://github.com/ltomes/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](https://github.com/ltomes/ha-media-zone) to create a unified zone controller: - [ha-media-zone](https://github.com/ltomes/ha-media-zone) -- Orchestrates receiver + display + sources into one entity - [ha-emotiva-mc1](https://github.com/ltomes/ha-emotiva-mc1) -- RS232 control for Emotiva MC1 receiver - [ha-hisense-tv](https://github.com/ltomes/ha-hisense-tv) -- Hisense Google TV control via ADB + AirPlay [hacs-badge]: https://img.shields.io/badge/HACS-Custom-41BDF5.svg [hacs-url]: https://github.com/hacs/integration ## License MIT