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.pull/11305/merge
parent
b635637541
commit
2a2e6b6334
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue