"""Collection of helper methods. All containing methods are legacy helpers that should not be used by new components. Instead call the service directly. """ from homeassistant.components.camera import ( ATTR_FILENAME, SERVICE_ENABLE_MOTION, SERVICE_SNAPSHOT, ) from homeassistant.components.camera.const import ( DOMAIN, DATA_CAMERA_PREFS, PREF_PRELOAD_STREAM, ) from homeassistant.const import ( ATTR_ENTITY_ID, SERVICE_TURN_OFF, SERVICE_TURN_ON, ENTITY_MATCH_ALL, ) from homeassistant.core import callback from homeassistant.loader import bind_hass @bind_hass async def async_turn_off(hass, entity_id=ENTITY_MATCH_ALL): """Turn off camera.""" data = {ATTR_ENTITY_ID: entity_id} if entity_id else {} await hass.services.async_call(DOMAIN, SERVICE_TURN_OFF, data) @bind_hass async def async_turn_on(hass, entity_id=ENTITY_MATCH_ALL): """Turn on camera, and set operation mode.""" data = {} if entity_id is not None: data[ATTR_ENTITY_ID] = entity_id await hass.services.async_call(DOMAIN, SERVICE_TURN_ON, data) @bind_hass def enable_motion_detection(hass, entity_id=ENTITY_MATCH_ALL): """Enable Motion Detection.""" data = {ATTR_ENTITY_ID: entity_id} if entity_id else None hass.async_add_job(hass.services.async_call(DOMAIN, SERVICE_ENABLE_MOTION, data)) @bind_hass @callback def async_snapshot(hass, filename, entity_id=ENTITY_MATCH_ALL): """Make a snapshot from a camera.""" data = {ATTR_ENTITY_ID: entity_id} if entity_id else {} data[ATTR_FILENAME] = filename hass.async_add_job(hass.services.async_call(DOMAIN, SERVICE_SNAPSHOT, data)) def mock_camera_prefs(hass, entity_id, prefs={}): """Fixture for cloud component.""" prefs_to_set = {PREF_PRELOAD_STREAM: True} prefs_to_set.update(prefs) hass.data[DATA_CAMERA_PREFS]._prefs[entity_id] = prefs_to_set return prefs_to_set