Initial release v0.1.0
Home Assistant custom integration for NVIDIA Shield TV that composes the Android TV Remote, Jellyfin, smart plug, and receiver entities into a single unified media player with ADB-based now-playing from any app. Part of the Media Zone ecosystem. Entities: - media_player: power (with smart plug fallback), transport, input, volume routed to receiver, rich stream info overlay when Jellyfin is active - sensor: DAG attributes and stream info - button: Pair ADB Config: - Two-step flow: basic setup + optional ADB pairing on the Shield - Configurable ADB port (default 5555) - Pick an existing Jellyfin media_player entity — stream info is read from the HA Jellyfin integration's own DataUpdateCoordinator, so no server URL / API key / extra config needed here - Privacy mode (adb_store_app_info=False) suppresses non-Jellyfin media details, showing only the app name Ecosystem: - Exposes media_dag_* attributes for ha-media-zone orchestration - Exposes media_dag_running_apps and async_bring_to_foreground for the Media Zone card's app switcher Shared ADB code lives in ltomes/ha-adb-common and is vendored at custom_components/nvidia_shield/ha_adb_common/ for HACS installs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
commit
0ad51879ae
24 files changed
+2538
No files matched your search
@@ -0,0 +1,99 @@
|
||||
# NVIDIA Shield
|
||||
|
||||
[![hacs][hacs-badge]][hacs-url] [](LICENSE)
|
||||
|
||||
Enhanced NVIDIA Shield TV integration for Home Assistant. ADB-based media session tracking, Jellyfin rich metadata, power monitoring, and receiver coordination.
|
||||
|
||||
```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. Open HACS > Integrations > three-dot menu > Custom repositories
|
||||
2. Add `https://github.com/ltomes/ha-nvidia-shield` as an Integration
|
||||
3. Search for "NVIDIA Shield" and install
|
||||
4. Restart Home Assistant
|
||||
|
||||
### Manual
|
||||
|
||||
Copy `custom_components/nvidia_shield` to your HA `config/custom_components/` directory and restart.
|
||||
|
||||
## 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
|
||||
Reference in new issue
Block a user