From 7aac501d4ff897dfb83f33eb738fbe9f2d2d7d96 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 7 Nov 2018 22:41:27 +0100 Subject: [PATCH] Add total daily energy sensor --- .../components/sensor/total_daily_energy.py | 37 +++++++++++++++++++ esphomeyaml/const.py | 1 + 2 files changed, 38 insertions(+) create mode 100644 esphomeyaml/components/sensor/total_daily_energy.py diff --git a/esphomeyaml/components/sensor/total_daily_energy.py b/esphomeyaml/components/sensor/total_daily_energy.py new file mode 100644 index 0000000000..644aa7d656 --- /dev/null +++ b/esphomeyaml/components/sensor/total_daily_energy.py @@ -0,0 +1,37 @@ +import voluptuous as vol + +from esphomeyaml.components import sensor +from esphomeyaml.components.time import sntp +import esphomeyaml.config_validation as cv +from esphomeyaml.const import CONF_MAKE_ID, CONF_NAME, CONF_TIME_ID +from esphomeyaml.helpers import App, Application, get_variable, variable + +DEPENDENCIES = ['time'] + +CONF_POWER_ID = 'power_id' +MakeTotalDailyEnergySensor = Application.MakeTotalDailyEnergySensor +TotalDailyEnergy = sensor.sensor_ns.TotalDailyEnergy + +PLATFORM_SCHEMA = cv.nameable(sensor.SENSOR_PLATFORM_SCHEMA.extend({ + cv.GenerateID(): cv.declare_variable_id(TotalDailyEnergy), + cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(MakeTotalDailyEnergySensor), + cv.GenerateID(CONF_TIME_ID): cv.use_variable_id(sntp.SNTPComponent), + vol.Required(CONF_POWER_ID): cv.use_variable_id(None), +})) + + +def to_code(config): + for time in get_variable(config[CONF_TIME_ID]): + yield + for sens in get_variable(config[CONF_POWER_ID]): + yield + rhs = App.make_total_daily_energy_sensor(config[CONF_NAME], time, sens) + make = variable(config[CONF_MAKE_ID], rhs) + sensor.setup_sensor(make.Ptotal_energy, make.Pmqtt, config) + + +BUILD_FLAGS = '-DUSE_TOTAL_DAILY_ENERGY_SENSOR' + + +def to_hass_config(data, config): + return sensor.core_to_hass_config(data, config) diff --git a/esphomeyaml/const.py b/esphomeyaml/const.py index 0eacce7392..072d8a1c5a 100644 --- a/esphomeyaml/const.py +++ b/esphomeyaml/const.py @@ -359,6 +359,7 @@ CONF_STEP_PIN = 'step_pin' CONF_DIR_PIN = 'dir_pin' CONF_SLEEP_PIN = 'sleep_pin' CONF_SEND_FIRST_AT = 'send_first_at' +CONF_TIME_ID = 'time_id' CONF_RESTORE_STATE = 'restore_state' ALLOWED_NAME_CHARS = u'abcdefghijklmnopqrstuvwxyz0123456789_'