From 2ff5410c46178a90f094ed08f955f73da8703ee1 Mon Sep 17 00:00:00 2001 From: pi4homez Date: Sun, 7 Apr 2019 16:19:37 +0200 Subject: [PATCH] last chance! --- esphome/components/sensor/ppd42x.py | 33 +++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/esphome/components/sensor/ppd42x.py b/esphome/components/sensor/ppd42x.py index 09306ba4bd..949ea9de1f 100644 --- a/esphome/components/sensor/ppd42x.py +++ b/esphome/components/sensor/ppd42x.py @@ -1,23 +1,26 @@ import voluptuous as vol -from esphome.components import sensor, uart -from esphome.components.uart import UARTComponent +from esphome import pins +from esphome.components import sensor import esphome.config_validation as cv from esphome.const import CONF_ID, CONF_NAME, CONF_PM_10_0, \ - CONF_PM_2_5, CONF_TYPE, CONF_UART_ID + CONF_PM_2_5, CONF_TYPE, CONF_UPDATE_INTERVAL from esphome.cpp_generator import Pvariable, get_variable -from esphome.cpp_helpers import setup_component +from esphome.cpp_helpers import gpio_input_pin_expression, setup_component from esphome.cpp_types import App, Component -DEPENDENCIES = ['uart'] -PPD42XComponent = sensor.sensor_ns.class_('PPD42XComponent', uart.UARTDevice, Component) +PPD42XComponent = sensor.sensor_ns.class_('PPD42XComponent', Component) PPD42XSensor = sensor.sensor_ns.class_('PPD42XSensor', sensor.Sensor) CONF_PPD42 = 'PPD42' CONF_PPD42NJ = 'PPD42NJ' CONF_PPD42NS = 'PPD42NS' +CONF_PIN_02_5 = 'pin_2_5' +CONF_PIN_10_0 = 'pin_10_0' + + PPD42XType = sensor.sensor_ns.enum('PPD42XType') PPD42X_TYPES = { CONF_PPD42: PPD42XType.PPD42X_TYPE, @@ -44,30 +47,34 @@ PPD42X_SENSOR_SCHEMA = sensor.SENSOR_SCHEMA.extend({ PLATFORM_SCHEMA = vol.All(sensor.PLATFORM_SCHEMA.extend({ cv.GenerateID(): cv.declare_variable_id(PPD42XComponent), - cv.GenerateID(CONF_UART_ID): cv.use_variable_id(UARTComponent), vol.Required(CONF_TYPE): cv.one_of(*PPD42X_TYPES, upper=True), + vol.Required(CONF_PIN_02_5): pins.gpio_input_pin_schema, + vol.Required(CONF_PIN_10_0): pins.gpio_input_pin_schema, vol.Optional(CONF_PM_2_5): cv.nameable(PPD42X_SENSOR_SCHEMA), vol.Optional(CONF_PM_10_0): cv.nameable(PPD42X_SENSOR_SCHEMA), + vol.Optional(CONF_UPDATE_INTERVAL): cv.update_interval, }).extend(cv.COMPONENT_SCHEMA.schema), cv.has_at_least_one_key(*SENSORS_TO_TYPE)) def to_code(config): - for uart_ in get_variable(config[CONF_UART_ID]): + for pl_02_5_ in gpio_input_pin_expression(config[CONF_PIN_02_5]): + yield + for pl_10_0_ in gpio_input_pin_expression(config[CONF_PIN_10_0]): yield - rhs = App.make_ppd42x(uart_, PPD42X_TYPES[config[CONF_TYPE]]) - pms = Pvariable(config[CONF_ID], rhs) + rhs = App.make_ppd42x(PPD42X_TYPES[config[CONF_TYPE]], config.get(CONF_UPDATE_INTERVAL)) + ppd = Pvariable(config[CONF_ID], rhs) if CONF_PM_2_5 in config: conf = config[CONF_PM_2_5] - sensor.register_sensor(pms.make_pm_2_5_sensor(conf[CONF_NAME]), conf) + sensor.register_sensor(ppd.make_pl_02_5_sensor(conf[CONF_NAME],pl_02_5_.copy()), conf) if CONF_PM_10_0 in config: conf = config[CONF_PM_10_0] - sensor.register_sensor(pms.make_pm_10_0_sensor(conf[CONF_NAME]), conf) + sensor.register_sensor(ppd.make_pl_10_0_sensor(conf[CONF_NAME],pl_10_0_.copy()), conf) - setup_component(pms, config) + setup_component(ppd, config) BUILD_FLAGS = '-DUSE_PPD42X'