Use custom app to play camera stream using Google Assistant (#40750)

This commit is contained in:
Bram Kragten 2020-09-30 10:33:56 +02:00 committed by Paulus Schoutsen
parent ebacc15e72
commit c802a63700
4 changed files with 11 additions and 2 deletions

View File

@ -29,6 +29,7 @@ from homeassistant.const import (
ATTR_ENTITY_ID, ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES, ATTR_SUPPORTED_FEATURES,
ATTR_TEMPERATURE, ATTR_TEMPERATURE,
CAST_APP_ID_HOMEASSISTANT,
SERVICE_ALARM_ARM_AWAY, SERVICE_ALARM_ARM_AWAY,
SERVICE_ALARM_ARM_CUSTOM_BYPASS, SERVICE_ALARM_ARM_CUSTOM_BYPASS,
SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_ARM_HOME,
@ -287,7 +288,10 @@ class CameraStreamTrait(_Trait):
url = await self.hass.components.camera.async_request_stream( url = await self.hass.components.camera.async_request_stream(
self.state.entity_id, "hls" self.state.entity_id, "hls"
) )
self.stream_info = {"cameraStreamAccessUrl": f"{get_url(self.hass)}{url}"} self.stream_info = {
"cameraStreamAccessUrl": f"{get_url(self.hass)}{url}",
"cameraStreamReceiverAppId": CAST_APP_ID_HOMEASSISTANT,
}
@register_trait @register_trait

View File

@ -608,3 +608,6 @@ PRECISION_TENTHS = 0.1
# Static list of entities that will never be exposed to # Static list of entities that will never be exposed to
# cloud, alexa, or google_home components # cloud, alexa, or google_home components
CLOUD_NEVER_EXPOSED_ENTITIES = ["group.all_locks"] CLOUD_NEVER_EXPOSED_ENTITIES = ["group.all_locks"]
# The ID of the Home Assistant Cast App
CAST_APP_ID_HOMEASSISTANT = "B12CE3CA"

View File

@ -976,6 +976,7 @@ async def test_trait_execute_adding_query_data(hass):
"states": { "states": {
"online": True, "online": True,
"cameraStreamAccessUrl": "https://example.com/api/streams/bla", "cameraStreamAccessUrl": "https://example.com/api/streams/bla",
"cameraStreamReceiverAppId": "B12CE3CA",
}, },
} }
] ]

View File

@ -135,7 +135,8 @@ async def test_camera_stream(hass):
await trt.execute(trait.COMMAND_GET_CAMERA_STREAM, BASIC_DATA, {}, {}) await trt.execute(trait.COMMAND_GET_CAMERA_STREAM, BASIC_DATA, {}, {})
assert trt.query_attributes() == { assert trt.query_attributes() == {
"cameraStreamAccessUrl": "https://example.com/api/streams/bla" "cameraStreamAccessUrl": "https://example.com/api/streams/bla",
"cameraStreamReceiverAppId": "B12CE3CA",
} }