Clean up camera service schema (#49151)
This commit is contained in:
parent
5365fb6c72
commit
2b79c91813
4 changed files with 47 additions and 75 deletions
|
@ -8,12 +8,7 @@ from amcrest import AmcrestError
|
|||
from haffmpeg.camera import CameraMjpeg
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.camera import (
|
||||
CAMERA_SERVICE_SCHEMA,
|
||||
SUPPORT_ON_OFF,
|
||||
SUPPORT_STREAM,
|
||||
Camera,
|
||||
)
|
||||
from homeassistant.components.camera import SUPPORT_ON_OFF, SUPPORT_STREAM, Camera
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
||||
from homeassistant.const import CONF_NAME, STATE_OFF, STATE_ON
|
||||
from homeassistant.helpers.aiohttp_client import (
|
||||
|
@ -82,30 +77,26 @@ _CBW_AUTO = "auto"
|
|||
_CBW_BW = "bw"
|
||||
_CBW = [_CBW_COLOR, _CBW_AUTO, _CBW_BW]
|
||||
|
||||
_SRV_GOTO_SCHEMA = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{vol.Required(_ATTR_PRESET): vol.All(vol.Coerce(int), vol.Range(min=1))}
|
||||
)
|
||||
_SRV_CBW_SCHEMA = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{vol.Required(_ATTR_COLOR_BW): vol.In(_CBW)}
|
||||
)
|
||||
_SRV_PTZ_SCHEMA = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(_ATTR_PTZ_MOV): vol.In(_MOV),
|
||||
vol.Optional(_ATTR_PTZ_TT, default=_DEFAULT_TT): cv.small_float,
|
||||
}
|
||||
)
|
||||
_SRV_GOTO_SCHEMA = {
|
||||
vol.Required(_ATTR_PRESET): vol.All(vol.Coerce(int), vol.Range(min=1))
|
||||
}
|
||||
_SRV_CBW_SCHEMA = {vol.Required(_ATTR_COLOR_BW): vol.In(_CBW)}
|
||||
_SRV_PTZ_SCHEMA = {
|
||||
vol.Required(_ATTR_PTZ_MOV): vol.In(_MOV),
|
||||
vol.Optional(_ATTR_PTZ_TT, default=_DEFAULT_TT): cv.small_float,
|
||||
}
|
||||
|
||||
CAMERA_SERVICES = {
|
||||
_SRV_EN_REC: (CAMERA_SERVICE_SCHEMA, "async_enable_recording", ()),
|
||||
_SRV_DS_REC: (CAMERA_SERVICE_SCHEMA, "async_disable_recording", ()),
|
||||
_SRV_EN_AUD: (CAMERA_SERVICE_SCHEMA, "async_enable_audio", ()),
|
||||
_SRV_DS_AUD: (CAMERA_SERVICE_SCHEMA, "async_disable_audio", ()),
|
||||
_SRV_EN_MOT_REC: (CAMERA_SERVICE_SCHEMA, "async_enable_motion_recording", ()),
|
||||
_SRV_DS_MOT_REC: (CAMERA_SERVICE_SCHEMA, "async_disable_motion_recording", ()),
|
||||
_SRV_EN_REC: ({}, "async_enable_recording", ()),
|
||||
_SRV_DS_REC: ({}, "async_disable_recording", ()),
|
||||
_SRV_EN_AUD: ({}, "async_enable_audio", ()),
|
||||
_SRV_DS_AUD: ({}, "async_disable_audio", ()),
|
||||
_SRV_EN_MOT_REC: ({}, "async_enable_motion_recording", ()),
|
||||
_SRV_DS_MOT_REC: ({}, "async_disable_motion_recording", ()),
|
||||
_SRV_GOTO: (_SRV_GOTO_SCHEMA, "async_goto_preset", (_ATTR_PRESET,)),
|
||||
_SRV_CBW: (_SRV_CBW_SCHEMA, "async_set_color_bw", (_ATTR_COLOR_BW,)),
|
||||
_SRV_TOUR_ON: (CAMERA_SERVICE_SCHEMA, "async_start_tour", ()),
|
||||
_SRV_TOUR_OFF: (CAMERA_SERVICE_SCHEMA, "async_stop_tour", ()),
|
||||
_SRV_TOUR_ON: ({}, "async_start_tour", ()),
|
||||
_SRV_TOUR_OFF: ({}, "async_stop_tour", ()),
|
||||
_SRV_PTZ_CTRL: (
|
||||
_SRV_PTZ_SCHEMA,
|
||||
"async_ptz_control",
|
||||
|
|
|
@ -89,26 +89,18 @@ _RND = SystemRandom()
|
|||
|
||||
MIN_STREAM_INTERVAL = 0.5 # seconds
|
||||
|
||||
CAMERA_SERVICE_SCHEMA = vol.Schema({vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids})
|
||||
CAMERA_SERVICE_SNAPSHOT = {vol.Required(ATTR_FILENAME): cv.template}
|
||||
|
||||
CAMERA_SERVICE_SNAPSHOT = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{vol.Required(ATTR_FILENAME): cv.template}
|
||||
)
|
||||
CAMERA_SERVICE_PLAY_STREAM = {
|
||||
vol.Required(ATTR_MEDIA_PLAYER): cv.entities_domain(DOMAIN_MP),
|
||||
vol.Optional(ATTR_FORMAT, default="hls"): vol.In(OUTPUT_FORMATS),
|
||||
}
|
||||
|
||||
CAMERA_SERVICE_PLAY_STREAM = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(ATTR_MEDIA_PLAYER): cv.entities_domain(DOMAIN_MP),
|
||||
vol.Optional(ATTR_FORMAT, default="hls"): vol.In(OUTPUT_FORMATS),
|
||||
}
|
||||
)
|
||||
|
||||
CAMERA_SERVICE_RECORD = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_FILENAME): cv.template,
|
||||
vol.Optional(CONF_DURATION, default=30): vol.Coerce(int),
|
||||
vol.Optional(CONF_LOOKBACK, default=0): vol.Coerce(int),
|
||||
}
|
||||
)
|
||||
CAMERA_SERVICE_RECORD = {
|
||||
vol.Required(CONF_FILENAME): cv.template,
|
||||
vol.Optional(CONF_DURATION, default=30): vol.Coerce(int),
|
||||
vol.Optional(CONF_LOOKBACK, default=0): vol.Coerce(int),
|
||||
}
|
||||
|
||||
WS_TYPE_CAMERA_THUMBNAIL = "camera_thumbnail"
|
||||
SCHEMA_WS_CAMERA_THUMBNAIL = websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend(
|
||||
|
@ -271,17 +263,13 @@ async def async_setup(hass, config):
|
|||
hass.helpers.event.async_track_time_interval(update_tokens, TOKEN_CHANGE_INTERVAL)
|
||||
|
||||
component.async_register_entity_service(
|
||||
SERVICE_ENABLE_MOTION, CAMERA_SERVICE_SCHEMA, "async_enable_motion_detection"
|
||||
SERVICE_ENABLE_MOTION, {}, "async_enable_motion_detection"
|
||||
)
|
||||
component.async_register_entity_service(
|
||||
SERVICE_DISABLE_MOTION, CAMERA_SERVICE_SCHEMA, "async_disable_motion_detection"
|
||||
)
|
||||
component.async_register_entity_service(
|
||||
SERVICE_TURN_OFF, CAMERA_SERVICE_SCHEMA, "async_turn_off"
|
||||
)
|
||||
component.async_register_entity_service(
|
||||
SERVICE_TURN_ON, CAMERA_SERVICE_SCHEMA, "async_turn_on"
|
||||
SERVICE_DISABLE_MOTION, {}, "async_disable_motion_detection"
|
||||
)
|
||||
component.async_register_entity_service(SERVICE_TURN_OFF, {}, "async_turn_off")
|
||||
component.async_register_entity_service(SERVICE_TURN_ON, {}, "async_turn_on")
|
||||
component.async_register_entity_service(
|
||||
SERVICE_SNAPSHOT, CAMERA_SERVICE_SNAPSHOT, async_handle_snapshot_service
|
||||
)
|
||||
|
|
|
@ -5,11 +5,7 @@ import os
|
|||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.camera import (
|
||||
CAMERA_SERVICE_SCHEMA,
|
||||
PLATFORM_SCHEMA,
|
||||
Camera,
|
||||
)
|
||||
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
||||
from homeassistant.const import ATTR_ENTITY_ID, CONF_FILE_PATH, CONF_NAME
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
|
||||
|
@ -24,8 +20,11 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||
}
|
||||
)
|
||||
|
||||
CAMERA_SERVICE_UPDATE_FILE_PATH = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{vol.Required(CONF_FILE_PATH): cv.string}
|
||||
CAMERA_SERVICE_UPDATE_FILE_PATH = vol.Schema(
|
||||
{
|
||||
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
|
||||
vol.Required(CONF_FILE_PATH): cv.string,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ from logi_circle.exception import AuthorizationFailed
|
|||
import voluptuous as vol
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.components.camera import ATTR_FILENAME, CAMERA_SERVICE_SCHEMA
|
||||
from homeassistant.components.camera import ATTR_FILENAME
|
||||
from homeassistant.const import (
|
||||
ATTR_MODE,
|
||||
CONF_API_KEY,
|
||||
|
@ -72,23 +72,17 @@ CONFIG_SCHEMA = vol.Schema(
|
|||
extra=vol.ALLOW_EXTRA,
|
||||
)
|
||||
|
||||
LOGI_CIRCLE_SERVICE_SET_CONFIG = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(ATTR_MODE): vol.In([LED_MODE_KEY, RECORDING_MODE_KEY]),
|
||||
vol.Required(ATTR_VALUE): cv.boolean,
|
||||
}
|
||||
)
|
||||
LOGI_CIRCLE_SERVICE_SET_CONFIG = {
|
||||
vol.Required(ATTR_MODE): vol.In([LED_MODE_KEY, RECORDING_MODE_KEY]),
|
||||
vol.Required(ATTR_VALUE): cv.boolean,
|
||||
}
|
||||
|
||||
LOGI_CIRCLE_SERVICE_SNAPSHOT = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{vol.Required(ATTR_FILENAME): cv.template}
|
||||
)
|
||||
LOGI_CIRCLE_SERVICE_SNAPSHOT = {vol.Required(ATTR_FILENAME): cv.template}
|
||||
|
||||
LOGI_CIRCLE_SERVICE_RECORD = CAMERA_SERVICE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(ATTR_FILENAME): cv.template,
|
||||
vol.Required(ATTR_DURATION): cv.positive_int,
|
||||
}
|
||||
)
|
||||
LOGI_CIRCLE_SERVICE_RECORD = {
|
||||
vol.Required(ATTR_FILENAME): cv.template,
|
||||
vol.Required(ATTR_DURATION): cv.positive_int,
|
||||
}
|
||||
|
||||
|
||||
async def async_setup(hass, config):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue