From b1f7ed4fdc5e9f8569a7bd04a8be28b9ab2c9dae Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 17 Oct 2018 21:14:31 +0200 Subject: [PATCH] Add CSE776 for Sonoff Pow R2 (#190) --- esphomeyaml/components/sensor/cse7766.py | 42 ++++++++++++++++++++++++ tests/test2.yaml | 7 ++++ 2 files changed, 49 insertions(+) create mode 100644 esphomeyaml/components/sensor/cse7766.py diff --git a/esphomeyaml/components/sensor/cse7766.py b/esphomeyaml/components/sensor/cse7766.py new file mode 100644 index 0000000000..01dc894db8 --- /dev/null +++ b/esphomeyaml/components/sensor/cse7766.py @@ -0,0 +1,42 @@ +import voluptuous as vol + +from esphomeyaml.components import sensor +from esphomeyaml.components.uart import UARTComponent +import esphomeyaml.config_validation as cv +from esphomeyaml.const import CONF_CURRENT, CONF_ID, CONF_NAME, CONF_POWER, CONF_UART_ID, \ + CONF_VOLTAGE +from esphomeyaml.helpers import App, Pvariable, get_variable + +DEPENDENCIES = ['uart'] + +CSE7766Component = sensor.sensor_ns.CSE7766Component + +PLATFORM_SCHEMA = vol.All(sensor.PLATFORM_SCHEMA.extend({ + cv.GenerateID(): cv.declare_variable_id(CSE7766Component), + cv.GenerateID(CONF_UART_ID): cv.use_variable_id(UARTComponent), + + vol.Optional(CONF_VOLTAGE): cv.nameable(sensor.SENSOR_SCHEMA), + vol.Optional(CONF_CURRENT): cv.nameable(sensor.SENSOR_SCHEMA), + vol.Optional(CONF_POWER): cv.nameable(sensor.SENSOR_SCHEMA), +}), cv.has_at_least_one_key(CONF_VOLTAGE, CONF_CURRENT, CONF_POWER)) + + +def to_code(config): + for uart in get_variable(config[CONF_UART_ID]): + yield + + rhs = App.make_cse7766(uart) + cse = Pvariable(config[CONF_ID], rhs) + + if CONF_VOLTAGE in config: + conf = config[CONF_VOLTAGE] + sensor.register_sensor(cse.make_voltage_sensor(conf[CONF_NAME]), conf) + if CONF_CURRENT in config: + conf = config[CONF_CURRENT] + sensor.register_sensor(cse.make_current_sensor(conf[CONF_NAME]), conf) + if CONF_POWER in config: + conf = config[CONF_POWER] + sensor.register_sensor(cse.make_power_sensor(conf[CONF_NAME]), conf) + + +BUILD_FLAGS = '-DUSE_CSE7766' diff --git a/tests/test2.yaml b/tests/test2.yaml index 379b7eba5f..65a89e893b 100644 --- a/tests/test2.yaml +++ b/tests/test2.yaml @@ -77,6 +77,13 @@ sensor: name: "MQTT Subscribe Sensor 1" topic: "mqtt/topic" qos: 2 + - platform: cse7766 + voltage: + name: "CSE7766 Voltage" + current: + name: "CSE7766 Current" + power: + name: "CSE776 Power" esp32_touch: setup_mode: True