mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 15:17:35 +00:00
Add Vesync voltage sensor, and yearly, weekly, montly energy sensors (#72570)
This commit is contained in:
parent
a7398b8a73
commit
69050d5942
@ -30,7 +30,7 @@ async def async_process_devices(hass, manager):
|
|||||||
|
|
||||||
if manager.outlets:
|
if manager.outlets:
|
||||||
devices[VS_SWITCHES].extend(manager.outlets)
|
devices[VS_SWITCHES].extend(manager.outlets)
|
||||||
# Expose outlets' power & energy usage as separate sensors
|
# Expose outlets' voltage, power & energy usage as separate sensors
|
||||||
devices[VS_SENSORS].extend(manager.outlets)
|
devices[VS_SENSORS].extend(manager.outlets)
|
||||||
_LOGGER.info("%d VeSync outlets found", len(manager.outlets))
|
_LOGGER.info("%d VeSync outlets found", len(manager.outlets))
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
"""Support for power & energy sensors for VeSync outlets."""
|
"""Support for voltage, power & energy sensors for VeSync outlets."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
@ -18,6 +18,7 @@ from homeassistant.components.sensor import (
|
|||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||||
|
ELECTRIC_POTENTIAL_VOLT,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
@ -121,6 +122,46 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
|
|||||||
update_fn=update_energy,
|
update_fn=update_energy,
|
||||||
exists_fn=lambda device: ha_dev_type(device) == "outlet",
|
exists_fn=lambda device: ha_dev_type(device) == "outlet",
|
||||||
),
|
),
|
||||||
|
VeSyncSensorEntityDescription(
|
||||||
|
key="energy-weekly",
|
||||||
|
name="energy use weekly",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=ENERGY_KILO_WATT_HOUR,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
|
value_fn=lambda device: device.weekly_energy_total,
|
||||||
|
update_fn=update_energy,
|
||||||
|
exists_fn=lambda device: ha_dev_type(device) == "outlet",
|
||||||
|
),
|
||||||
|
VeSyncSensorEntityDescription(
|
||||||
|
key="energy-monthly",
|
||||||
|
name="energy use monthly",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=ENERGY_KILO_WATT_HOUR,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
|
value_fn=lambda device: device.monthly_energy_total,
|
||||||
|
update_fn=update_energy,
|
||||||
|
exists_fn=lambda device: ha_dev_type(device) == "outlet",
|
||||||
|
),
|
||||||
|
VeSyncSensorEntityDescription(
|
||||||
|
key="energy-yearly",
|
||||||
|
name="energy use yearly",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=ENERGY_KILO_WATT_HOUR,
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
|
value_fn=lambda device: device.yearly_energy_total,
|
||||||
|
update_fn=update_energy,
|
||||||
|
exists_fn=lambda device: ha_dev_type(device) == "outlet",
|
||||||
|
),
|
||||||
|
VeSyncSensorEntityDescription(
|
||||||
|
key="voltage",
|
||||||
|
name="current voltage",
|
||||||
|
device_class=SensorDeviceClass.VOLTAGE,
|
||||||
|
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
|
value_fn=lambda device: device.details["voltage"],
|
||||||
|
update_fn=update_energy,
|
||||||
|
exists_fn=lambda device: ha_dev_type(device) == "outlet",
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,18 +66,6 @@ class VeSyncSwitchHA(VeSyncBaseSwitch, SwitchEntity):
|
|||||||
super().__init__(plug)
|
super().__init__(plug)
|
||||||
self.smartplug = plug
|
self.smartplug = plug
|
||||||
|
|
||||||
@property
|
|
||||||
def extra_state_attributes(self):
|
|
||||||
"""Return the state attributes of the device."""
|
|
||||||
if not hasattr(self.smartplug, "weekly_energy_total"):
|
|
||||||
return {}
|
|
||||||
return {
|
|
||||||
"voltage": self.smartplug.voltage,
|
|
||||||
"weekly_energy_total": self.smartplug.weekly_energy_total,
|
|
||||||
"monthly_energy_total": self.smartplug.monthly_energy_total,
|
|
||||||
"yearly_energy_total": self.smartplug.yearly_energy_total,
|
|
||||||
}
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update outlet details and energy usage."""
|
"""Update outlet details and energy usage."""
|
||||||
self.smartplug.update()
|
self.smartplug.update()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user