From 2a2e6b633474f85baf597824dcd83b556582f653 Mon Sep 17 00:00:00 2001 From: Dan Nixon Date: Fri, 29 Dec 2017 12:13:15 +0000 Subject: [PATCH] Correct units used in TP-Link energy monioring (#10979) * Correct units used in TP-Link energy monioring - Energy is measured in kWh for swtches - Power is reported in mW for bulbs - Energy is reported in Wh for bulbs * TP-Ling energy: store units in attribute names Stores the unit in the attrbute names for TP-Link devices that support energy monitoring. --- homeassistant/components/light/tplink.py | 22 +++++++++--------- homeassistant/components/switch/tplink.py | 28 +++++++++++------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/light/tplink.py b/homeassistant/components/light/tplink.py index 3b49e3fb0f7..8f513f73f1e 100644 --- a/homeassistant/components/light/tplink.py +++ b/homeassistant/components/light/tplink.py @@ -26,9 +26,9 @@ REQUIREMENTS = ['pyHS100==0.3.0'] _LOGGER = logging.getLogger(__name__) -ATTR_CURRENT_CONSUMPTION = 'current_consumption' -ATTR_DAILY_CONSUMPTION = 'daily_consumption' -ATTR_MONTHLY_CONSUMPTION = 'monthly_consumption' +ATTR_CURRENT_POWER_W = 'current_power_w' +ATTR_DAILY_ENERGY_KWH = 'daily_energy_kwh' +ATTR_MONTHLY_ENERGY_KWH = 'monthly_energy_kwh' DEFAULT_NAME = 'TP-Link Light' @@ -166,17 +166,17 @@ class TPLinkSmartBulb(Light): if self._supported_features & SUPPORT_RGB_COLOR: self._rgb = hsv_to_rgb(self.smartbulb.hsv) if self.smartbulb.has_emeter: - self._emeter_params[ATTR_CURRENT_CONSUMPTION] \ - = "%.1f W" % self.smartbulb.current_consumption() + self._emeter_params[ATTR_CURRENT_POWER_W] = '{:.1f}'.format( + self.smartbulb.current_consumption() / 1e3) daily_statistics = self.smartbulb.get_emeter_daily() monthly_statistics = self.smartbulb.get_emeter_monthly() try: - self._emeter_params[ATTR_DAILY_CONSUMPTION] \ - = "%.2f kW" % daily_statistics[int( - time.strftime("%d"))] - self._emeter_params[ATTR_MONTHLY_CONSUMPTION] \ - = "%.2f kW" % monthly_statistics[int( - time.strftime("%m"))] + self._emeter_params[ATTR_DAILY_ENERGY_KWH] \ + = "{:.3f}".format( + daily_statistics[int(time.strftime("%d"))] / 1e3) + self._emeter_params[ATTR_MONTHLY_ENERGY_KWH] \ + = "{:.3f}".format( + monthly_statistics[int(time.strftime("%m"))] / 1e3) except KeyError: # device returned no daily/monthly history pass diff --git a/homeassistant/components/switch/tplink.py b/homeassistant/components/switch/tplink.py index a03e30821b3..f43d434a259 100644 --- a/homeassistant/components/switch/tplink.py +++ b/homeassistant/components/switch/tplink.py @@ -9,7 +9,8 @@ import time import voluptuous as vol -from homeassistant.components.switch import (SwitchDevice, PLATFORM_SCHEMA) +from homeassistant.components.switch import ( + SwitchDevice, PLATFORM_SCHEMA, ATTR_CURRENT_POWER_W, ATTR_TODAY_ENERGY_KWH) from homeassistant.const import (CONF_HOST, CONF_NAME, ATTR_VOLTAGE) import homeassistant.helpers.config_validation as cv @@ -17,10 +18,8 @@ REQUIREMENTS = ['pyHS100==0.3.0'] _LOGGER = logging.getLogger(__name__) -ATTR_CURRENT_CONSUMPTION = 'current_consumption' -ATTR_TOTAL_CONSUMPTION = 'total_consumption' -ATTR_DAILY_CONSUMPTION = 'daily_consumption' -ATTR_CURRENT = 'current' +ATTR_TOTAL_ENERGY_KWH = 'total_energy_kwh' +ATTR_CURRENT_A = 'current_a' CONF_LEDS = 'enable_leds' @@ -102,19 +101,20 @@ class SmartPlugSwitch(SwitchDevice): if self.smartplug.has_emeter: emeter_readings = self.smartplug.get_emeter_realtime() - self._emeter_params[ATTR_CURRENT_CONSUMPTION] \ - = "%.1f W" % emeter_readings["power"] - self._emeter_params[ATTR_TOTAL_CONSUMPTION] \ - = "%.2f kW" % emeter_readings["total"] + self._emeter_params[ATTR_CURRENT_POWER_W] \ + = "{:.2f}".format(emeter_readings["power"]) + self._emeter_params[ATTR_TOTAL_ENERGY_KWH] \ + = "{:.3f}".format(emeter_readings["total"]) self._emeter_params[ATTR_VOLTAGE] \ - = "%.2f V" % emeter_readings["voltage"] - self._emeter_params[ATTR_CURRENT] \ - = "%.1f A" % emeter_readings["current"] + = "{:.1f}".format(emeter_readings["voltage"]) + self._emeter_params[ATTR_CURRENT_A] \ + = "{:.2f}".format(emeter_readings["current"]) emeter_statics = self.smartplug.get_emeter_daily() try: - self._emeter_params[ATTR_DAILY_CONSUMPTION] \ - = "%.2f kW" % emeter_statics[int(time.strftime("%e"))] + self._emeter_params[ATTR_TODAY_ENERGY_KWH] \ + = "{:.3f}".format( + emeter_statics[int(time.strftime("%e"))]) except KeyError: # Device returned no daily history pass