"""The bme280 component.""" import voluptuous as vol from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.const import CONF_MONITORED_CONDITIONS, CONF_NAME, CONF_SCAN_INTERVAL from homeassistant.helpers import config_validation as cv, discovery from .const import ( CONF_DELTA_TEMP, CONF_FILTER_MODE, CONF_I2C_ADDRESS, CONF_I2C_BUS, CONF_OPERATION_MODE, CONF_OVERSAMPLING_HUM, CONF_OVERSAMPLING_PRES, CONF_OVERSAMPLING_TEMP, CONF_SPI_BUS, CONF_SPI_DEV, CONF_T_STANDBY, DEFAULT_DELTA_TEMP, DEFAULT_FILTER_MODE, DEFAULT_I2C_ADDRESS, DEFAULT_I2C_BUS, DEFAULT_MONITORED, DEFAULT_NAME, DEFAULT_OPERATION_MODE, DEFAULT_OVERSAMPLING_HUM, DEFAULT_OVERSAMPLING_PRES, DEFAULT_OVERSAMPLING_TEMP, DEFAULT_SCAN_INTERVAL, DEFAULT_T_STANDBY, DOMAIN, SENSOR_KEYS, ) CONFIG_SCHEMA = vol.Schema( { DOMAIN: vol.All( cv.ensure_list, [ vol.Schema( { vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_SPI_BUS): vol.Coerce(int), vol.Optional(CONF_SPI_DEV): vol.Coerce(int), vol.Optional( CONF_I2C_ADDRESS, default=DEFAULT_I2C_ADDRESS ): cv.string, vol.Optional(CONF_I2C_BUS, default=DEFAULT_I2C_BUS): vol.Coerce( int ), vol.Optional( CONF_DELTA_TEMP, default=DEFAULT_DELTA_TEMP ): vol.Coerce(float), vol.Optional( CONF_MONITORED_CONDITIONS, default=DEFAULT_MONITORED ): vol.All(cv.ensure_list, [vol.In(SENSOR_KEYS)]), vol.Optional( CONF_OVERSAMPLING_TEMP, default=DEFAULT_OVERSAMPLING_TEMP ): vol.Coerce(int), vol.Optional( CONF_OVERSAMPLING_PRES, default=DEFAULT_OVERSAMPLING_PRES ): vol.Coerce(int), vol.Optional( CONF_OVERSAMPLING_HUM, default=DEFAULT_OVERSAMPLING_HUM ): vol.Coerce(int), vol.Optional( CONF_OPERATION_MODE, default=DEFAULT_OPERATION_MODE ): vol.Coerce(int), vol.Optional( CONF_T_STANDBY, default=DEFAULT_T_STANDBY ): vol.Coerce(int), vol.Optional( CONF_FILTER_MODE, default=DEFAULT_FILTER_MODE ): vol.Coerce(int), vol.Optional( CONF_SCAN_INTERVAL, default=DEFAULT_SCAN_INTERVAL ): cv.time_period, } ) ], ) }, extra=vol.ALLOW_EXTRA, ) async def async_setup(hass, config): """Set up BME280 component.""" bme280_config = config[DOMAIN] for bme280_conf in bme280_config: discovery_info = {SENSOR_DOMAIN: bme280_conf} hass.async_create_task( discovery.async_load_platform( hass, SENSOR_DOMAIN, DOMAIN, discovery_info, config ) ) return True