Construir una integración personalizada para Home Assistant que exponga
toda la funcionalidad disponible en la Sony Bravia Pro REST API, muy
superior a la integración oficial sony_bravia que existe actualmente.
- Home Assistant corriendo en /config (despliegue via HACS desde GitHub)
- TV Sony Bravia Pro en red local
- Ya existen scripts .sh manuales que usan esta API — ver /root/bravia-ha/examples/
- https://pro-bravia.sony.net/remote-display-control/rest-api/reference/
- https://pro-bravia.sony.net/remote-display-control/rest-api/guide/
- https://gist.github.com/kalleth/e10e8f3b8b7cb1bac21463b0073a65fb
- https://community.home-assistant.io/t/sony-bravia-tv-component-with-pre-shared-key/30698/164
- https://www.postman.com/niwtnt/sony-bravia-rest-api/documentation/yfax7bl/bravia-rest-api
La TV expone una REST API HTTP en varios endpoints:
- /sony/appControl — gestión de apps Android
- /sony/IRCC — envío de códigos infrarrojos (SOAP)
- /sony/system — info del sistema, power, etc.
- /sony/avContent — fuentes de vídeo, contenido
- /sony/audio — volumen, audio settings
- /sony/videoScreen — gestión de pantalla (blank screen, picture mode...)
- /sony/accessControl — autenticación PSK
Autenticación: X-Auth-PSK header con la clave configurada en la TV
Ver /root/bravia-ha/examples/ — muestran cómo se usan IRCC y appControl
custom_components/bravia_rest_api/ ├── init.py ├── manifest.json ├── config_flow.py ← wizard de configuración (IP, PSK, nombre) ├── coordinator.py ← DataUpdateCoordinator, polling de estado ├── media_player.py ← entidad principal ├── remote.py ← envío de códigos IRCC ├── button.py ← acciones puntuales (blank screen, etc.) ├── select.py ← selección de fuente, app activa ├── sensor.py ← info del sistema, versión FW, etc. ├── services.yaml ← servicios personalizados ├── strings.json └── translations/ └── es.json
- Pedir IP de la TV
- Pedir PSK (Pre-Shared Key)
- Validar conexión antes de confirmar
- Descubrir nombre del modelo automáticamente
- Opción de discovery via SSDP/UPnP si la TV lo soporta
- SIEMPRE consultar la documentación oficial primero
- Cada endpoint debe tener su wrapper en un cliente API separado (bravia_client.py)
- Manejar correctamente TVs apagadas (WoL, connection refused)
- Loggear errores con contexto útil para debugging
- No hardcodear funcionalidades — descubrir capabilities de cada TV en runtime
- Seguir exactamente los patrones de HA custom components 2024+