SDCP for Home Assistant integrates Sony projectors using the SDCP protocol via the pysdcp-extended library.
The integration supports:
- automatic UDP advertisement discovery
- manual IP configuration
- lifecycle-aware monitoring
- Home Assistant entity availability semantics
- projector operational controls
- Automatic Discovery: Detect compatible Sony projectors using SDCP UDP advertisements
- Manual Setup: Configure projectors manually by IP address when broadcasts are unavailable
- Lifecycle-Aware Monitoring: Passive monitoring while standby, active monitoring while operational
- Power Management: ON/OFF control with projector warmup/cooldown awareness
- Input Selection: HDMI input selection and state reporting
- Calibration Presets: Select and monitor projector calibration presets
- Dynamic Range Monitoring: Monitor and control input dynamic range settings
- Lamp Diagnostics: Track projector lamp runtime as a diagnostic sensor
- Home Assistant Native UX: Proper entity availability semantics during standby/cooling states
This integration will set up the following platforms.
| Platform | Description |
|---|---|
media_player |
Projector power control and source selection |
select |
HDMI inputs, calibration presets, and dynamic range modes |
sensor |
Lamp runtime diagnostic sensor |
Prerequisites: This integration requires HACS (Home Assistant Community Store).
- Add this repository to HACS as a custom repository
- Install the integration
- Restart Home Assistant
The integration supports two setup methods:
Compatible Sony projectors broadcasting SDCP advertisements will automatically appear in Home Assistant discovery.
If advertisements are unavailable:
- Go to Settings → Devices & Services
- Click Add Integration
- Search for SDCP for Home Assistant
- Enter the projector IP address
The integration uses two monitoring modes:
| Mode | Behavior |
|---|---|
| Passive | Advertisement-driven monitoring while projector non-operational |
| Active | Operational polling while projector operational |
During passive monitoring:
- media_player remains available
- operational entities become unavailable
- operational polling stops
During active monitoring:
- operational polling enabled
- HDMI input monitored
- calibration preset monitored
- dynamic range monitored
- lamp runtime monitored
- Power ON/OFF
- Source selection
- Lifecycle-aware power state handling
- HDMI input selection
- Calibration preset selection
- Dynamic range mode selection
- Lamp runtime hours
The integration supports:
- UDP advertisement discovery
- manual IP fallback
- hybrid advertisement/manual operation
Advertisements are used for:
- passive monitoring
- availability heartbeat
- remote power state detection
- lifecycle updates
This repository uses a structured AI-assisted development architecture.
Primary architecture documents:
AGENTS.mdspecs/plans/tasks/agents/
Key specifications:
specs/monitoring-model.mdspecs/availability-model.mdspecs/power-transition-model.mdspecs/discovery-design.md
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by @apaperclip