From dc516f75378e5c0cebf1f099b1153add48330bec Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 14 May 2018 21:13:51 +0200 Subject: [PATCH] Fixes --- .../components/binary_sensor/esp32_touch.py | 2 +- esphomeyaml/components/esp32_touch.py | 2 +- .../components/light/fastled_clockless.py | 5 +-- esphomeyaml/components/light/fastled_spi.py | 2 +- esphomeyaml/components/light/rgb.py | 2 +- esphomeyaml/components/sensor/bme280.py | 2 +- esphomeyaml/components/sensor/bme680.py | 2 +- esphomeyaml/components/sensor/sht3xd.py | 45 +++++++++++++++++++ esphomeyaml/components/sensor/tsl2561.py | 18 +++++--- esphomeyaml/const.py | 1 + 10 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 esphomeyaml/components/sensor/sht3xd.py diff --git a/esphomeyaml/components/binary_sensor/esp32_touch.py b/esphomeyaml/components/binary_sensor/esp32_touch.py index a864940476..f69dd271a6 100644 --- a/esphomeyaml/components/binary_sensor/esp32_touch.py +++ b/esphomeyaml/components/binary_sensor/esp32_touch.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = binary_sensor.PLATFORM_SCHEMA.extend({ def to_code(config): - hub = get_variable(None, type='ESP32TouchComponent') + hub = get_variable(None, type='binary_sensor::ESP32TouchComponent') touch_pad = RawExpression(TOUCH_PADS[config[CONF_PIN]]) rhs = hub.make_touch_pad(config[CONF_NAME], touch_pad, config[CONF_THRESHOLD]) device = Pvariable('ESP32TouchBinarySensor', config[CONF_ID], rhs) diff --git a/esphomeyaml/components/esp32_touch.py b/esphomeyaml/components/esp32_touch.py index 8aac85815b..3d5b6790b5 100644 --- a/esphomeyaml/components/esp32_touch.py +++ b/esphomeyaml/components/esp32_touch.py @@ -47,7 +47,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_SETUP_MODE): cv.boolean, vol.Optional(CONF_IIR_FILTER): cv.positive_time_period_milliseconds, vol.Optional(CONF_SLEEP_DURATION): - vol.All(cv.positive_time_period, vol.Range(max=TimePeriod(microseconds=436900))), + vol.All(cv.positive_time_period, vol.Range(max=TimePeriod(microseconds=436906))), vol.Optional(CONF_MEASUREMENT_DURATION): vol.All(cv.positive_time_period, vol.Range(max=TimePeriod(microseconds=8192))), vol.Optional(CONF_LOW_VOLTAGE_REFERENCE): validate_voltage(LOW_VOLTAGE_REFERENCE), diff --git a/esphomeyaml/components/light/fastled_clockless.py b/esphomeyaml/components/light/fastled_clockless.py index cfda82aef5..38711abc2c 100644 --- a/esphomeyaml/components/light/fastled_clockless.py +++ b/esphomeyaml/components/light/fastled_clockless.py @@ -1,11 +1,10 @@ import voluptuous as vol import esphomeyaml.config_validation as cv -from esphomeyaml import pins, core +from esphomeyaml import pins from esphomeyaml.components import light from esphomeyaml.const import CONF_CHIPSET, CONF_DEFAULT_TRANSITION_LENGTH, CONF_GAMMA_CORRECT, \ - CONF_ID, CONF_MAX_REFRESH_RATE, CONF_NAME, CONF_NUM_LEDS, CONF_PIN, CONF_RGB_ORDER, \ - ESP_PLATFORM_ESP32 + CONF_ID, CONF_MAX_REFRESH_RATE, CONF_NAME, CONF_NUM_LEDS, CONF_PIN, CONF_RGB_ORDER from esphomeyaml.helpers import App, RawExpression, TemplateArguments, add, setup_mqtt_component, \ variable diff --git a/esphomeyaml/components/light/fastled_spi.py b/esphomeyaml/components/light/fastled_spi.py index ea890192c6..e1a90447bc 100644 --- a/esphomeyaml/components/light/fastled_spi.py +++ b/esphomeyaml/components/light/fastled_spi.py @@ -66,4 +66,4 @@ def to_code(config): light.setup_light_component(make.Pstate, config) -BUILD_FLAGS = 'DUSE_FAST_LED_LIGHT' +BUILD_FLAGS = '-DUSE_FAST_LED_LIGHT' diff --git a/esphomeyaml/components/light/rgb.py b/esphomeyaml/components/light/rgb.py index ada590ed1c..5ae306cb9c 100644 --- a/esphomeyaml/components/light/rgb.py +++ b/esphomeyaml/components/light/rgb.py @@ -4,7 +4,7 @@ import esphomeyaml.config_validation as cv from esphomeyaml.components import light from esphomeyaml.const import CONF_BLUE, CONF_DEFAULT_TRANSITION_LENGTH, CONF_GAMMA_CORRECT, \ CONF_GREEN, CONF_ID, CONF_NAME, CONF_RED -from esphomeyaml.helpers import App, add, get_variable, variable, setup_mqtt_component +from esphomeyaml.helpers import App, get_variable, setup_mqtt_component, variable PLATFORM_SCHEMA = light.PLATFORM_SCHEMA.extend({ cv.GenerateID('rgb_light'): cv.register_variable_id, diff --git a/esphomeyaml/components/sensor/bme280.py b/esphomeyaml/components/sensor/bme280.py index 153ad1d3a7..86114831fc 100644 --- a/esphomeyaml/components/sensor/bme280.py +++ b/esphomeyaml/components/sensor/bme280.py @@ -38,7 +38,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ 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): diff --git a/esphomeyaml/components/sensor/bme680.py b/esphomeyaml/components/sensor/bme680.py index eedf3ae74e..c1dae08783 100644 --- a/esphomeyaml/components/sensor/bme680.py +++ b/esphomeyaml/components/sensor/bme680.py @@ -43,7 +43,7 @@ PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ 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): diff --git a/esphomeyaml/components/sensor/sht3xd.py b/esphomeyaml/components/sensor/sht3xd.py new file mode 100644 index 0000000000..a996e39dcb --- /dev/null +++ b/esphomeyaml/components/sensor/sht3xd.py @@ -0,0 +1,45 @@ +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_HUMIDITY, CONF_ID, CONF_NAME, CONF_TEMPERATURE, \ + CONF_UPDATE_INTERVAL, CONF_ADDRESS, CONF_ACCURACY +from esphomeyaml.helpers import App, variable, RawExpression, add + +DEPENDENCIES = ['i2c'] + +SHT_ACCURACIES = { + 'LOW': 'sensor::SHT3XD_ACCURACY_LOW', + 'MEDIUM': 'sensor::SHT3XD_ACCURACY_MEDIUM', + 'HIGH': 'sensor::SHT3XD_ACCURACY_HIGH', +} + +PLATFORM_SCHEMA = sensor.PLATFORM_SCHEMA.extend({ + cv.GenerateID('sht3xd'): cv.register_variable_id, + vol.Required(CONF_TEMPERATURE): MQTT_SENSOR_SCHEMA, + vol.Required(CONF_HUMIDITY): MQTT_SENSOR_SCHEMA, + vol.Optional(CONF_ADDRESS, default=0x44): cv.i2c_address, + vol.Optional(CONF_ACCURACY): vol.All(vol.Upper, vol.Any(*SHT_ACCURACIES)), + vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, +}) + + +def to_code(config): + rhs = App.make_sht3xd_sensor(config[CONF_TEMPERATURE][CONF_NAME], + config[CONF_HUMIDITY][CONF_NAME], + config.get(CONF_UPDATE_INTERVAL)) + sht3xd = variable('Application::MakeSHT3XDSensor', config[CONF_ID], rhs) + + if CONF_ACCURACY in config: + constant = RawExpression(SHT_ACCURACIES[config[CONF_ACCURACY]]) + add(sht3xd.Psht3xd.set_accuracy(constant)) + + sensor.setup_sensor(sht3xd.Psht3xd.Pget_temperature_sensor(), config[CONF_TEMPERATURE]) + sensor.setup_mqtt_sensor_component(sht3xd.Pmqtt_temperature, config[CONF_TEMPERATURE]) + + sensor.setup_sensor(sht3xd.PPsht3xd.Pget_humidity_sensor(), config[CONF_HUMIDITY]) + sensor.setup_mqtt_sensor_component(sht3xd.Pmqtt_humidity, config[CONF_HUMIDITY]) + + +BUILD_FLAGS = '-DUSE_SHT3XD' diff --git a/esphomeyaml/components/sensor/tsl2561.py b/esphomeyaml/components/sensor/tsl2561.py index d636ed06a6..4445f043a4 100644 --- a/esphomeyaml/components/sensor/tsl2561.py +++ b/esphomeyaml/components/sensor/tsl2561.py @@ -4,15 +4,14 @@ 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', + 14: 'sensor::TSL2561_INTEGRATION_14MS', + 101: 'sensor::TSL2561_INTEGRATION_101MS', + 402: 'sensor::TSL2561_INTEGRATION_402MS', } GAINS = { '1X': 'sensor::TSL2561_GAIN_1X', @@ -21,11 +20,18 @@ GAINS = { CONF_IS_CS_PACKAGE = 'is_cs_package' + +def validate_integration_time(value): + value = cv.positive_time_period_milliseconds(value).total_milliseconds + if value not in INTEGRATION_TIMES: + raise vol.Invalid(u"Unsupported integration time {}.".format(value)) + return value + + 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_INTEGRATION_TIME): validate_integration_time, 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, diff --git a/esphomeyaml/const.py b/esphomeyaml/const.py index f34b06a22d..e4b6ed9fd9 100644 --- a/esphomeyaml/const.py +++ b/esphomeyaml/const.py @@ -184,6 +184,7 @@ CONF_CHIPSET = 'chipset' CONF_DATA_PIN = 'data_pin' CONF_CLOCK_PIN = 'clock_pin' CONF_RGB_ORDER = 'rgb_order' +CONF_ACCURACY = 'accuracy' ESP32_BOARDS = [ 'featheresp32', 'node32s', 'espea32', 'firebeetle32', 'esp32doit-devkit-v1',