def setup_platform(hass, config, add_entities, discovery_info=None): """Create the binary sensor.""" from haffmpeg import SensorNoise, SensorMotion # check source if not run_test(config.get(CONF_INPUT)): return # generate sensor object if config.get(CONF_TOOL) == FFMPEG_SENSOR_NOISE: entity = FFmpegNoise(SensorNoise, config) else: entity = FFmpegMotion(SensorMotion, config) hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, entity.shutdown_ffmpeg) # add to system add_entities([entity]) DEVICES.append(entity) # exists service? if hass.services.has_service(DOMAIN, SERVICE_RESTART): return descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) # register service def _service_handle_restart(service): """Handle service binary_sensor.ffmpeg_restart.""" entity_ids = service.data.get('entity_id') if entity_ids: _devices = [ device for device in DEVICES if device.entity_id in entity_ids ] else: _devices = DEVICES for device in _devices: device.restart_ffmpeg() hass.services.register(DOMAIN, SERVICE_RESTART, _service_handle_restart, descriptions.get(SERVICE_RESTART), schema=SERVICE_RESTART_SCHEMA)
def setup_platform(hass, config, add_entities, discovery_info=None): """Create the binary sensor.""" from haffmpeg import SensorNoise, SensorMotion # check source if not run_test(config.get(CONF_INPUT)): return # generate sensor object if config.get(CONF_TOOL) == FFMPEG_SENSOR_NOISE: entity = FFmpegNoise(SensorNoise, config) else: entity = FFmpegMotion(SensorMotion, config) hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, entity.shutdown_ffmpeg) # add to system add_entities([entity]) DEVICES.append(entity) # exists service? if hass.services.has_service(DOMAIN, SERVICE_RESTART): return descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) # register service def _service_handle_restart(service): """Handle service binary_sensor.ffmpeg_restart.""" entity_ids = service.data.get('entity_id') if entity_ids: _devices = [device for device in DEVICES if device.entity_id in entity_ids] else: _devices = DEVICES for device in _devices: device.restart_ffmpeg() hass.services.register(DOMAIN, SERVICE_RESTART, _service_handle_restart, descriptions.get(SERVICE_RESTART), schema=SERVICE_RESTART_SCHEMA)
def setup_platform(hass, config, add_devices, discovery_info=None): """Setup a FFmpeg Camera.""" if not run_test(config.get(CONF_INPUT)): return add_devices([FFmpegCamera(config)])
def setup(hass, config): """Setup the OpenAlpr component.""" engine = config[DOMAIN].get(CONF_ENGINE) region = config[DOMAIN].get(CONF_REGION) confidence = config[DOMAIN].get(CONF_CONFIDENCE) api_key = config[DOMAIN].get(CONF_API_KEY) binary = config[DOMAIN].get(CONF_ALPR_BINARY) use_render_fffmpeg = False component = EntityComponent(_LOGGER, DOMAIN, hass) openalpr_device = [] for device in config[DOMAIN].get(CONF_ENTITIES): input_source = device.get(CONF_INPUT) render = device.get(CONF_RENDER) ## # create api if engine == ENGINE_LOCAL: alpr_api = OpenalprApiLocal( confidence=confidence, region=region, binary=binary, ) else: alpr_api = OpenalprApiCloud( confidence=confidence, region=region, api_key=api_key, ) ## # Create Alpr device / render engine if render == RENDER_FFMPEG: use_render_fffmpeg = True if not run_test(input_source): _LOGGER.error("'%s' is not valid ffmpeg input", input_source) continue alpr_dev = OpenalprDeviceFFmpeg( name=device.get(CONF_NAME), interval=device.get(CONF_INTERVAL), api=alpr_api, input_source=input_source, extra_arguments=device.get(CONF_EXTRA_ARGUMENTS), ) else: alpr_dev = OpenalprDeviceImage( name=device.get(CONF_NAME), interval=device.get(CONF_INTERVAL), api=alpr_api, input_source=input_source, username=device.get(CONF_USERNAME), password=device.get(CONF_PASSWORD), ) # register shutdown event openalpr_device.append(alpr_dev) hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, alpr_dev.shutdown) component.add_entities(openalpr_device) descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) def _handle_service_scan(service): """Handle service for immediately scan.""" device_list = component.extract_from_service(service) for device in device_list: device.scan() hass.services.register(DOMAIN, SERVICE_SCAN, _handle_service_scan, descriptions[DOMAIN][SERVICE_SCAN], schema=SERVICE_SCAN_SCHEMA) # Add restart service only if a device use ffmpeg as render if not use_render_fffmpeg: return True def _handle_service_restart(service): """Handle service for restart ffmpeg process.""" device_list = component.extract_from_service(service) for device in device_list: device.restart() hass.services.register(DOMAIN, SERVICE_RESTART, _handle_service_restart, descriptions[DOMAIN][SERVICE_RESTART], schema=SERVICE_RESTART_SCHEMA) return True