mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Preparations for 1.5.0
This commit is contained in:
		| @@ -37,7 +37,7 @@ MQTT_SENSOR_SCHEMA = vol.Schema({ | ||||
|     vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string_strict, | ||||
|     vol.Optional(CONF_ICON): cv.icon, | ||||
|     vol.Optional(CONF_ACCURACY_DECIMALS): vol.Coerce(int), | ||||
|     vol.Optional(CONF_EXPIRE_AFTER): vol.Any(None, cv.positive_time_period), | ||||
|     vol.Optional(CONF_EXPIRE_AFTER): vol.Any(None, cv.positive_time_period_milliseconds), | ||||
|     vol.Optional(CONF_FILTERS): FILTERS_SCHEMA | ||||
| }) | ||||
|  | ||||
|   | ||||
| @@ -20,7 +20,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('adc'): cv.register_variable_id, | ||||
|     vol.Required(CONF_PIN): pins.analog_pin, | ||||
|     vol.Optional(CONF_ATTENUATION): vol.All(cv.only_on_esp32, ATTENUATION_MODE_SCHEMA), | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -9,23 +9,23 @@ from esphomeyaml.helpers import RawExpression, get_variable, Pvariable | ||||
| DEPENDENCIES = ['ads1115'] | ||||
|  | ||||
| MUX = { | ||||
|     'A0_A1': 'ADS1115_MUX_P0_N1', | ||||
|     'A0_A3': 'ADS1115_MUX_P0_N3', | ||||
|     'A1_A3': 'ADS1115_MUX_P1_N3', | ||||
|     'A2_A3': 'ADS1115_MUX_P2_N3', | ||||
|     'A0_GND': 'ADS1115_MUX_P0_NG', | ||||
|     'A1_GND': 'ADS1115_MUX_P1_NG', | ||||
|     'A2_GND': 'ADS1115_MUX_P2_NG', | ||||
|     'A3_GND': 'ADS1115_MUX_P3_NG', | ||||
|     'A0_A1': 'sensor::ADS1115_MULTIPLEXER_P0_N1', | ||||
|     'A0_A3': 'sensor::ADS1115_MULTIPLEXER_P0_N3', | ||||
|     'A1_A3': 'sensor::ADS1115_MULTIPLEXER_P1_N3', | ||||
|     'A2_A3': 'sensor::ADS1115_MULTIPLEXER_P2_N3', | ||||
|     'A0_GND': 'sensor::ADS1115_MULTIPLEXER_P0_NG', | ||||
|     'A1_GND': 'sensor::ADS1115_MULTIPLEXER_P1_NG', | ||||
|     'A2_GND': 'sensor::ADS1115_MULTIPLEXER_P2_NG', | ||||
|     'A3_GND': 'sensor::ADS1115_MULTIPLEXER_P3_NG', | ||||
| } | ||||
|  | ||||
| GAIN = { | ||||
|     '6.144': 'ADS1115_PGA_6P144', | ||||
|     '4.096': 'ADS1115_PGA_6P096', | ||||
|     '2.048': 'ADS1115_PGA_2P048', | ||||
|     '1.024': 'ADS1115_PGA_1P024', | ||||
|     '0.512': 'ADS1115_PGA_0P512', | ||||
|     '0.256': 'ADS1115_PGA_0P256', | ||||
|     '6.144': 'sensor::ADS1115_GAIN_6P144', | ||||
|     '4.096': 'sensor::ADS1115_GAIN_6P096', | ||||
|     '2.048': 'sensor::ADS1115_GAIN_2P048', | ||||
|     '1.024': 'sensor::ADS1115_GAIN_1P024', | ||||
|     '0.512': 'sensor::ADS1115_GAIN_0P512', | ||||
|     '0.256': 'sensor::ADS1115_GAIN_0P256', | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -45,7 +45,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     vol.Required(CONF_MULTIPLEXER): vol.All(vol.Upper, vol.Any(*list(MUX.keys()))), | ||||
|     vol.Required(CONF_GAIN): validate_gain, | ||||
|     vol.Optional(CONF_ADS1115_ID): cv.variable_id, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_ID_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										37
									
								
								esphomeyaml/components/sensor/bh1750.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								esphomeyaml/components/sensor/bh1750.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import sensor | ||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_ID, CONF_NAME, CONF_RESOLUTION, \ | ||||
|     CONF_UPDATE_INTERVAL | ||||
| from esphomeyaml.helpers import App, RawExpression, add, variable | ||||
|  | ||||
| DEPENDENCIES = ['i2c'] | ||||
|  | ||||
| BH1750_RESOLUTIONS = { | ||||
|     4.0: 'sensor::BH1750_RESOLUTION_4P0_LX', | ||||
|     1.0: 'sensor::BH1750_RESOLUTION_1P0_LX', | ||||
|     0.5: 'sensor::BH1750_RESOLUTION_0P5_LX', | ||||
| } | ||||
|  | ||||
| PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('bh1750_sensor'): cv.register_variable_id, | ||||
|     vol.Optional(CONF_ADDRESS, default=0x23): cv.i2c_address, | ||||
|     vol.Optional(CONF_RESOLUTION): vol.All(cv.positive_float, vol.Any(*BH1750_RESOLUTIONS)), | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_bh1750_sensor(config[CONF_NAME], config[CONF_ADDRESS], | ||||
|                                  config.get(CONF_UPDATE_INTERVAL)) | ||||
|     make_bh1750 = variable('Application::MakeBH1750Sensor', config[CONF_ID], rhs) | ||||
|     bh1750 = make_bh1750.Pbh1750 | ||||
|     if CONF_RESOLUTION in config: | ||||
|         constant = BH1750_RESOLUTIONS[config[CONF_RESOLUTION]] | ||||
|         add(bh1750.set_resolution(RawExpression(constant))) | ||||
|     sensor.setup_sensor(bh1750, config) | ||||
|     sensor.setup_mqtt_sensor_component(make_bh1750.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BH1750' | ||||
							
								
								
									
										75
									
								
								esphomeyaml/components/sensor/bme280.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								esphomeyaml/components/sensor/bme280.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import sensor | ||||
| from esphomeyaml.components.sensor import MQTT_SENSOR_SCHEMA | ||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_HUMIDITY, CONF_ID, CONF_IIR_FILTER, CONF_NAME, \ | ||||
|     CONF_OVERSAMPLING, CONF_PRESSURE, CONF_TEMPERATURE, CONF_UPDATE_INTERVAL | ||||
| from esphomeyaml.helpers import App, RawExpression, add, variable | ||||
|  | ||||
| DEPENDENCIES = ['i2c'] | ||||
|  | ||||
| OVERSAMPLING_OPTIONS = { | ||||
|     'NONE': 'sensor::BME280_OVERSAMPLING_NONE', | ||||
|     '1X': 'sensor::BME280_OVERSAMPLING_1X', | ||||
|     '2X': 'sensor::BME280_OVERSAMPLING_2X', | ||||
|     '4X': 'sensor::BME280_OVERSAMPLING_4X', | ||||
|     '8X': 'sensor::BME280_OVERSAMPLING_8X', | ||||
|     '16X': 'sensor::BME280_OVERSAMPLING_16X', | ||||
| } | ||||
|  | ||||
| IIR_FILTER_OPTIONS = { | ||||
|     'OFF': 'sensor::BME280_IIR_FILTER_OFF', | ||||
|     '2X': 'sensor::BME280_IIR_FILTER_2X', | ||||
|     '4X': 'sensor::BME280_IIR_FILTER_4X', | ||||
|     '8X': 'sensor::BME280_IIR_FILTER_8X', | ||||
|     '16X': 'sensor::BME280_IIR_FILTER_16X', | ||||
| } | ||||
|  | ||||
| BME280_OVERSAMPLING_SENSOR_SCHEMA = MQTT_SENSOR_SCHEMA.extend({ | ||||
|     vol.Optional(CONF_OVERSAMPLING): vol.All(vol.Upper, vol.Any(*OVERSAMPLING_OPTIONS)), | ||||
| }) | ||||
|  | ||||
| PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('bme280'): cv.register_variable_id, | ||||
|     vol.Optional(CONF_ADDRESS, default=0x77): cv.i2c_address, | ||||
|     vol.Required(CONF_TEMPERATURE): BME280_OVERSAMPLING_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_PRESSURE): BME280_OVERSAMPLING_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_HUMIDITY): BME280_OVERSAMPLING_SENSOR_SCHEMA, | ||||
|     vol.Optional(CONF_IIR_FILTER): vol.All(vol.Upper, vol.Any(*IIR_FILTER_OPTIONS)), | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_bme280_sensor(config[CONF_TEMPERATURE][CONF_NAME], | ||||
|                                  config[CONF_PRESSURE][CONF_NAME], | ||||
|                                  config[CONF_HUMIDITY][CONF_NAME], | ||||
|                                  config[CONF_ADDRESS], | ||||
|                                  config.get(CONF_UPDATE_INTERVAL)) | ||||
|     make = variable('Application::MakeBME280Sensor', config[CONF_ID], rhs) | ||||
|     bme280 = make.Pbme280 | ||||
|     if CONF_OVERSAMPLING in config[CONF_TEMPERATURE]: | ||||
|         constant = OVERSAMPLING_OPTIONS[config[CONF_TEMPERATURE][CONF_OVERSAMPLING]] | ||||
|         add(bme280.set_temperature_oversampling(RawExpression(constant))) | ||||
|     if CONF_OVERSAMPLING in config[CONF_PRESSURE]: | ||||
|         constant = OVERSAMPLING_OPTIONS[config[CONF_PRESSURE][CONF_OVERSAMPLING]] | ||||
|         add(bme280.set_pressure_oversampling(RawExpression(constant))) | ||||
|     if CONF_OVERSAMPLING in config[CONF_HUMIDITY]: | ||||
|         constant = OVERSAMPLING_OPTIONS[config[CONF_HUMIDITY][CONF_OVERSAMPLING]] | ||||
|         add(bme280.set_humidity_oversampling(RawExpression(constant))) | ||||
|     if CONF_IIR_FILTER in config: | ||||
|         constant = IIR_FILTER_OPTIONS[config[CONF_IIR_FILTER]] | ||||
|         add(bme280.set_iir_filter(RawExpression(constant))) | ||||
|  | ||||
|     sensor.setup_sensor(bme280.Pget_temperature_sensor(), config[CONF_TEMPERATURE]) | ||||
|     sensor.setup_mqtt_sensor_component(make.Pmqtt_temperature, config[CONF_TEMPERATURE]) | ||||
|  | ||||
|     sensor.setup_sensor(bme280.Pget_pressure_sensor(), config[CONF_PRESSURE]) | ||||
|     sensor.setup_mqtt_sensor_component(make.Pmqtt_pressure, config[CONF_PRESSURE]) | ||||
|  | ||||
|     sensor.setup_sensor(bme280.Pget_humidity_sensor(), config[CONF_HUMIDITY]) | ||||
|     sensor.setup_mqtt_sensor_component(make.Pmqtt_humidity, config[CONF_HUMIDITY]) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BME280' | ||||
							
								
								
									
										84
									
								
								esphomeyaml/components/sensor/bme680.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								esphomeyaml/components/sensor/bme680.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import sensor | ||||
| from esphomeyaml.components.sensor import MQTT_SENSOR_SCHEMA | ||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_HUMIDITY, CONF_ID, CONF_IIR_FILTER, CONF_NAME, \ | ||||
|     CONF_OVERSAMPLING, CONF_PRESSURE, CONF_TEMPERATURE, CONF_UPDATE_INTERVAL, CONF_GAS_RESISTANCE | ||||
| from esphomeyaml.helpers import App, RawExpression, add, variable | ||||
|  | ||||
| DEPENDENCIES = ['i2c'] | ||||
|  | ||||
| OVERSAMPLING_OPTIONS = { | ||||
|     'NONE': 'sensor::BME680_OVERSAMPLING_NONE', | ||||
|     '1X': 'sensor::BME680_OVERSAMPLING_1X', | ||||
|     '2X': 'sensor::BME680_OVERSAMPLING_2X', | ||||
|     '4X': 'sensor::BME680_OVERSAMPLING_4X', | ||||
|     '8X': 'sensor::BME680_OVERSAMPLING_8X', | ||||
|     '16X': 'sensor::BME680_OVERSAMPLING_16X', | ||||
| } | ||||
|  | ||||
| IIR_FILTER_OPTIONS = { | ||||
|     'OFF': 'sensor::BME680_IIR_FILTER_OFF', | ||||
|     '1X': 'sensor::BME680_IIR_FILTER_1X', | ||||
|     '3X': 'sensor::BME680_IIR_FILTER_3X', | ||||
|     '7X': 'sensor::BME680_IIR_FILTER_7X', | ||||
|     '15X': 'sensor::BME680_IIR_FILTER_15X', | ||||
|     '31X': 'sensor::BME680_IIR_FILTER_31X', | ||||
|     '63X': 'sensor::BME680_IIR_FILTER_63X', | ||||
|     '127X': 'sensor::BME680_IIR_FILTER_127X', | ||||
| } | ||||
|  | ||||
| BME680_OVERSAMPLING_SENSOR_SCHEMA = MQTT_SENSOR_SCHEMA.extend({ | ||||
|     vol.Optional(CONF_OVERSAMPLING): vol.All(vol.Upper, vol.Any(*OVERSAMPLING_OPTIONS)), | ||||
| }) | ||||
|  | ||||
| PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('bme680'): cv.register_variable_id, | ||||
|     vol.Optional(CONF_ADDRESS, default=0x76): cv.i2c_address, | ||||
|     vol.Required(CONF_TEMPERATURE): BME680_OVERSAMPLING_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_PRESSURE): BME680_OVERSAMPLING_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_HUMIDITY): BME680_OVERSAMPLING_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_GAS_RESISTANCE): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Optional(CONF_IIR_FILTER): vol.All(vol.Upper, vol.Any(*IIR_FILTER_OPTIONS)), | ||||
|     # TODO: Heater | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_bme680_sensor(config[CONF_TEMPERATURE][CONF_NAME], | ||||
|                                  config[CONF_PRESSURE][CONF_NAME], | ||||
|                                  config[CONF_HUMIDITY][CONF_NAME], | ||||
|                                  config[CONF_GAS_RESISTANCE][CONF_NAME], | ||||
|                                  config[CONF_ADDRESS], | ||||
|                                  config.get(CONF_UPDATE_INTERVAL)) | ||||
|     make = variable('Application::MakeBME680Sensor', config[CONF_ID], rhs) | ||||
|     bme680 = make.Pbme680 | ||||
|     if CONF_OVERSAMPLING in config[CONF_TEMPERATURE]: | ||||
|         constant = OVERSAMPLING_OPTIONS[config[CONF_TEMPERATURE][CONF_OVERSAMPLING]] | ||||
|         add(bme680.set_temperature_oversampling(RawExpression(constant))) | ||||
|     if CONF_OVERSAMPLING in config[CONF_PRESSURE]: | ||||
|         constant = OVERSAMPLING_OPTIONS[config[CONF_PRESSURE][CONF_OVERSAMPLING]] | ||||
|         add(bme680.set_pressure_oversampling(RawExpression(constant))) | ||||
|     if CONF_OVERSAMPLING in config[CONF_HUMIDITY]: | ||||
|         constant = OVERSAMPLING_OPTIONS[config[CONF_HUMIDITY][CONF_OVERSAMPLING]] | ||||
|         add(bme680.set_humidity_oversampling(RawExpression(constant))) | ||||
|     if CONF_IIR_FILTER in config: | ||||
|         constant = IIR_FILTER_OPTIONS[config[CONF_IIR_FILTER]] | ||||
|         add(bme680.set_iir_filter(RawExpression(constant))) | ||||
|  | ||||
|     sensor.setup_sensor(bme680.Pget_temperature_sensor(), config[CONF_TEMPERATURE]) | ||||
|     sensor.setup_mqtt_sensor_component(make.Pmqtt_temperature, config[CONF_TEMPERATURE]) | ||||
|  | ||||
|     sensor.setup_sensor(bme680.Pget_pressure_sensor(), config[CONF_PRESSURE]) | ||||
|     sensor.setup_mqtt_sensor_component(make.Pmqtt_pressure, config[CONF_PRESSURE]) | ||||
|  | ||||
|     sensor.setup_sensor(bme680.Pget_humidity_sensor(), config[CONF_HUMIDITY]) | ||||
|     sensor.setup_mqtt_sensor_component(make.Pmqtt_humidity, config[CONF_HUMIDITY]) | ||||
|  | ||||
|     sensor.setup_sensor(bme680.Pget_gas_resistance_sensor(), config[CONF_GAS_RESISTANCE]) | ||||
|     sensor.setup_mqtt_sensor_component(make.Pmqtt_gas_resistance, config[CONF_GAS_RESISTANCE]) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BME680' | ||||
| @@ -14,7 +14,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     vol.Required(CONF_TEMPERATURE): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_PRESSURE): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Optional(CONF_ADDRESS): cv.i2c_address, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -8,13 +8,13 @@ from esphomeyaml.const import CONF_ADDRESS, CONF_DALLAS_ID, CONF_INDEX, CONF_NAM | ||||
|     CONF_UPDATE_INTERVAL, CONF_ID | ||||
| from esphomeyaml.helpers import HexIntLiteral, get_variable, Pvariable | ||||
|  | ||||
| PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
| PLATFORM_SCHEMA = vol.All(sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('dallas_sensor'): cv.register_variable_id, | ||||
|     vol.Exclusive(CONF_ADDRESS, 'dallas'): cv.hex_int, | ||||
|     vol.Exclusive(CONF_INDEX, 'dallas'): cv.positive_int, | ||||
|     vol.Optional(CONF_DALLAS_ID): cv.variable_id, | ||||
|     vol.Optional(CONF_RESOLUTION): vol.All(vol.Coerce(int), vol.Range(min=8, max=12)), | ||||
| }).extend(sensor.MQTT_SENSOR_ID_SCHEMA.schema) | ||||
| }).extend(sensor.MQTT_SENSOR_ID_SCHEMA.schema), cv.has_at_least_one_key(CONF_ADDRESS, CONF_INDEX)) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|   | ||||
| @@ -1,33 +1,40 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import sensor | ||||
| from esphomeyaml.components.sensor import MQTT_SENSOR_SCHEMA | ||||
| from esphomeyaml.const import CONF_HUMIDITY, CONF_ID, CONF_MODEL, CONF_NAME, CONF_PIN, \ | ||||
|     CONF_TEMPERATURE, CONF_UPDATE_INTERVAL | ||||
| from esphomeyaml.helpers import App, RawExpression, add, variable | ||||
| from esphomeyaml.helpers import App, RawExpression, add, variable, exp_gpio_output_pin | ||||
| from esphomeyaml.pins import GPIO_OUTPUT_PIN_SCHEMA | ||||
|  | ||||
| DHT_MODELS = ['AUTO_DETECT', 'DHT11', 'DHT22', 'AM2302', 'RHT03'] | ||||
| DHT_MODELS = { | ||||
|     'AUTO_DETECT': 'sensor::DHT_MODEL_AUTO_DETECT', | ||||
|     'DHT11': 'sensor::DHT_MODEL_DHT11', | ||||
|     'DHT22': 'sensor::DHT_MODEL_DHT22', | ||||
|     'AM2302': 'sensor::DHT_MODEL_AM2302', | ||||
|     'RHT03': 'sensor::DHT_MODEL_RHT03', | ||||
| } | ||||
|  | ||||
| PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('dht_sensor'): cv.register_variable_id, | ||||
|     vol.Required(CONF_PIN): pins.input_output_pin, | ||||
|     vol.Required(CONF_PIN): GPIO_OUTPUT_PIN_SCHEMA, | ||||
|     vol.Required(CONF_TEMPERATURE): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_HUMIDITY): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Optional(CONF_MODEL): vol.All(vol.Upper, vol.Any(*DHT_MODELS)), | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     pin = exp_gpio_output_pin(config[CONF_PIN]) | ||||
|     rhs = App.make_dht_sensor(config[CONF_TEMPERATURE][CONF_NAME], | ||||
|                               config[CONF_HUMIDITY][CONF_NAME], | ||||
|                               config[CONF_PIN], config.get(CONF_UPDATE_INTERVAL)) | ||||
|                               pin, config.get(CONF_UPDATE_INTERVAL)) | ||||
|     dht = variable('Application::MakeDHTSensor', config[CONF_ID], rhs) | ||||
|     if CONF_MODEL in config: | ||||
|         model = RawExpression('DHT::{}'.format(config[CONF_MODEL])) | ||||
|         add(dht.Pdht.set_dht_model(model)) | ||||
|         constant = DHT_MODELS[config[CONF_MODEL]] | ||||
|         add(dht.Pdht.set_dht_model(RawExpression(constant))) | ||||
|     sensor.setup_sensor(dht.Pdht.Pget_temperature_sensor(), config[CONF_TEMPERATURE]) | ||||
|     sensor.setup_mqtt_sensor_component(dht.Pmqtt_temperature, config[CONF_TEMPERATURE]) | ||||
|     sensor.setup_sensor(dht.Pdht.Pget_humidity_sensor(), config[CONF_HUMIDITY]) | ||||
|   | ||||
| @@ -13,7 +13,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('dht_sensor'): cv.register_variable_id, | ||||
|     vol.Required(CONF_TEMPERATURE): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_HUMIDITY): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -13,7 +13,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('htu21d'): cv.register_variable_id, | ||||
|     vol.Required(CONF_TEMPERATURE): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Required(CONF_HUMIDITY): MQTT_SENSOR_SCHEMA, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     vol.Optional(CONF_GYRO_Y): MQTT_SENSOR_ID_SCHEMA, | ||||
|     vol.Optional(CONF_GYRO_Z): MQTT_SENSOR_ID_SCHEMA, | ||||
|     vol.Optional(CONF_TEMPERATURE): MQTT_SENSOR_ID_SCHEMA, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -36,7 +36,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|         vol.Required(CONF_FALLING_EDGE): COUNT_MODE_SCHEMA, | ||||
|     }), | ||||
|     vol.Optional(CONF_INTERNAL_FILTER): vol.All(vol.Coerce(int), vol.Range(min=0, max=1023)), | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										52
									
								
								esphomeyaml/components/sensor/tsl2561.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								esphomeyaml/components/sensor/tsl2561.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import sensor | ||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_GAIN, CONF_ID, CONF_INTEGRATION_TIME, CONF_NAME, \ | ||||
|     CONF_UPDATE_INTERVAL | ||||
| from esphomeyaml.core import TimePeriod | ||||
| from esphomeyaml.helpers import App, RawExpression, add, variable | ||||
|  | ||||
| DEPENDENCIES = ['i2c'] | ||||
|  | ||||
| INTEGRATION_TIMES = { | ||||
|     TimePeriod(milliseconds=14): 'sensor::TSL2561_INTEGRATION_14MS', | ||||
|     TimePeriod(milliseconds=101): 'sensor::TSL2561_INTEGRATION_101MS', | ||||
|     TimePeriod(milliseconds=402): 'sensor::TSL2561_INTEGRATION_402MS', | ||||
| } | ||||
| GAINS = { | ||||
|     '1X': 'sensor::TSL2561_GAIN_1X', | ||||
|     '16X': 'sensor::TSL2561_GAIN_16X', | ||||
| } | ||||
|  | ||||
| CONF_IS_CS_PACKAGE = 'is_cs_package' | ||||
|  | ||||
| PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('tsl2561_sensor'): cv.register_variable_id, | ||||
|     vol.Optional(CONF_ADDRESS, default=0x39): cv.i2c_address, | ||||
|     vol.Optional(CONF_INTEGRATION_TIME): vol.All(cv.positive_time_period_milliseconds, | ||||
|                                                  vol.Any(*INTEGRATION_TIMES)), | ||||
|     vol.Optional(CONF_GAIN): vol.All(vol.Upper, vol.Any(*GAINS)), | ||||
|     vol.Optional(CONF_IS_CS_PACKAGE): cv.boolean, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_tsl2561_sensor(config[CONF_NAME], config[CONF_ADDRESS], | ||||
|                                   config.get(CONF_UPDATE_INTERVAL)) | ||||
|     make_tsl = variable('Application::MakeTSL2561Sensor', config[CONF_ID], rhs) | ||||
|     tsl2561 = make_tsl.Ptsl2561 | ||||
|     if CONF_INTEGRATION_TIME in config: | ||||
|         constant = INTEGRATION_TIMES[config[CONF_INTEGRATION_TIME]] | ||||
|         add(tsl2561.set_integration_time(RawExpression(constant))) | ||||
|     if CONF_GAIN in config: | ||||
|         constant = GAINS[config[CONF_GAIN]] | ||||
|         add(tsl2561.set_gain(RawExpression(constant))) | ||||
|     if CONF_IS_CS_PACKAGE in config: | ||||
|         add(tsl2561.set_is_cs_package(config[CONF_IS_CS_PACKAGE])) | ||||
|     sensor.setup_sensor(tsl2561, config) | ||||
|     sensor.setup_mqtt_sensor_component(make_tsl.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TSL2561' | ||||
| @@ -13,8 +13,8 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ | ||||
|     vol.Required(CONF_TRIGGER_PIN): pins.GPIO_OUTPUT_PIN_SCHEMA, | ||||
|     vol.Required(CONF_ECHO_PIN): pins.GPIO_INPUT_PIN_SCHEMA, | ||||
|     vol.Exclusive(CONF_TIMEOUT_METER, 'timeout'): cv.positive_float, | ||||
|     vol.Exclusive(CONF_TIMEOUT_TIME, 'timeout'): cv.positive_int, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_not_null_time_period, | ||||
|     vol.Exclusive(CONF_TIMEOUT_TIME, 'timeout'): cv.positive_time_period_microseconds, | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }).extend(sensor.MQTT_SENSOR_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user