CONF_AUTO_PURGE = "auto_purge" CONF_DB_URL = "db_url" CONF_DB_MAX_RETRIES = "db_max_retries" CONF_DB_RETRY_WAIT = "db_retry_wait" CONF_PURGE_KEEP_DAYS = "purge_keep_days" CONF_PURGE_INTERVAL = "purge_interval" CONF_EVENT_TYPES = "event_types" CONF_COMMIT_INTERVAL = "commit_interval" EXCLUDE_SCHEMA = INCLUDE_EXCLUDE_FILTER_SCHEMA_INNER.extend( {vol.Optional(CONF_EVENT_TYPES): vol.All(cv.ensure_list, [cv.string])} ) FILTER_SCHEMA = INCLUDE_EXCLUDE_BASE_FILTER_SCHEMA.extend( {vol.Optional(CONF_EXCLUDE, default=EXCLUDE_SCHEMA({})): EXCLUDE_SCHEMA} ) CONFIG_SCHEMA = vol.Schema( { vol.Optional(DOMAIN, default=dict): vol.All( cv.deprecated(CONF_PURGE_INTERVAL), FILTER_SCHEMA.extend( { vol.Optional(CONF_AUTO_PURGE, default=True): cv.boolean, vol.Optional(CONF_PURGE_KEEP_DAYS, default=10): vol.All( vol.Coerce(int), vol.Range(min=1) ), vol.Optional(CONF_PURGE_INTERVAL, default=1): vol.All( vol.Coerce(int), vol.Range(min=0) ),
# mypy: allow-untyped-defs, no-check-untyped-defs _LOGGER = logging.getLogger(__name__) DOMAIN = "history" CONF_ORDER = "use_include_order" GLOB_TO_SQL_CHARS = { 42: "%", # * 46: "_", # . } CONFIG_SCHEMA = vol.Schema( { DOMAIN: INCLUDE_EXCLUDE_BASE_FILTER_SCHEMA.extend( {vol.Optional(CONF_ORDER, default=False): cv.boolean} ) }, extra=vol.ALLOW_EXTRA, ) @deprecated_function("homeassistant.components.recorder.history.get_significant_states") def get_significant_states(hass, *args, **kwargs): """Wrap _get_significant_states with an sql session.""" return history.get_significant_states(hass, *args, **kwargs) @deprecated_function( "homeassistant.components.recorder.history.state_changes_during_period" )
} ) _INFLUX_BASE_SCHEMA = INCLUDE_EXCLUDE_BASE_FILTER_SCHEMA.extend( { vol.Optional(CONF_RETRY_COUNT, default=0): cv.positive_int, vol.Optional(CONF_DEFAULT_MEASUREMENT): cv.string, vol.Optional(CONF_MEASUREMENT_ATTR, default=DEFAULT_MEASUREMENT_ATTR): vol.In( ["unit_of_measurement", "domain__device_class", "entity_id"] ), vol.Optional(CONF_OVERRIDE_MEASUREMENT): cv.string, vol.Optional(CONF_TAGS, default={}): vol.Schema({cv.string: cv.string}), vol.Optional(CONF_TAGS_ATTRIBUTES, default=[]): vol.All( cv.ensure_list, [cv.string] ), vol.Optional(CONF_IGNORE_ATTRIBUTES, default=[]): vol.All( cv.ensure_list, [cv.string] ), vol.Optional(CONF_COMPONENT_CONFIG, default={}): vol.Schema( {cv.entity_id: _CUSTOMIZE_ENTITY_SCHEMA} ), vol.Optional(CONF_COMPONENT_CONFIG_GLOB, default={}): vol.Schema( {cv.string: _CUSTOMIZE_ENTITY_SCHEMA} ), vol.Optional(CONF_COMPONENT_CONFIG_DOMAIN, default={}): vol.Schema( {cv.string: _CUSTOMIZE_ENTITY_SCHEMA} ), } ) INFLUX_SCHEMA = vol.All( _INFLUX_BASE_SCHEMA.extend(COMPONENT_CONFIG_SCHEMA_CONNECTION),
RETRY_DELAY = 20 QUEUE_BACKLOG_SECONDS = 30 RETRY_INTERVAL = 60 # seconds RETRY_MESSAGE = f"%s Retrying in {RETRY_INTERVAL} seconds." BATCH_TIMEOUT = 1 BATCH_BUFFER_SIZE = 100 CONFIG_SCHEMA = vol.Schema( { DOMAIN: INCLUDE_EXCLUDE_BASE_FILTER_SCHEMA.extend( { vol.Required(CONF_HOST): cv.string, vol.Optional(CONF_PASSWORD): cv.string, vol.Optional(CONF_PATH, default=DEFAULT_PATH): cv.string, vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean, vol.Optional(CONF_USERNAME): cv.string, vol.Optional(CONF_PUBLISH_STATES_HOST): cv.string, }) }, extra=vol.ALLOW_EXTRA, ) def setup(hass, config): """Set up the Zabbix component.""" conf = config[DOMAIN] protocol = "https" if conf[CONF_SSL] else "http"
_LOGGER = logging.getLogger(__name__) DOMAIN = "ltss" CONF_DB_URL = "db_url" CONF_CHUNK_TIME_INTERVAL = "chunk_time_interval" CONNECT_RETRY_WAIT = 3 CONFIG_SCHEMA = vol.Schema( { DOMAIN: INCLUDE_EXCLUDE_BASE_FILTER_SCHEMA.extend({ vol.Required(CONF_DB_URL): cv.string, vol.Optional(CONF_CHUNK_TIME_INTERVAL, default=2592000000000): cv.positive_int, # 30 days }) }, extra=vol.ALLOW_EXTRA, ) async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Set up LTSS.""" conf = config[DOMAIN] db_url = conf.get(CONF_DB_URL) chunk_time_interval = conf.get(CONF_CHUNK_TIME_INTERVAL) entity_filter = convert_include_exclude_filter(conf)
CONF_BASE_TOPIC = "base_topic" CONF_PUBLISH_ATTRIBUTES = "publish_attributes" CONF_PUBLISH_TIMESTAMPS = "publish_timestamps" CONF_PUBLISH_DISCOVERY = "publish_discovery" DOMAIN = "mqtt_discoverystream" CONFIG_SCHEMA = vol.Schema( { DOMAIN: INCLUDE_EXCLUDE_BASE_FILTER_SCHEMA.extend({ vol.Required(CONF_BASE_TOPIC): valid_publish_topic, vol.Optional(CONF_PUBLISH_ATTRIBUTES, default=False): cv.boolean, vol.Optional(CONF_PUBLISH_TIMESTAMPS, default=False): cv.boolean, vol.Optional(CONF_PUBLISH_DISCOVERY, default=False): cv.boolean, }), }, extra=vol.ALLOW_EXTRA, ) async def async_setup(hass, config): """Set up the MQTT state feed.""" conf = config.get(DOMAIN) publish_filter = convert_include_exclude_filter(conf) has_includes = True if conf.get(CONF_INCLUDE) else False base_topic = conf.get(CONF_BASE_TOPIC)