Add active voltage sensors to Sense integration (#41112)
parent
2aee72981c
commit
d8aebe145b
|
@ -2,7 +2,7 @@
|
||||||
"domain": "emulated_kasa",
|
"domain": "emulated_kasa",
|
||||||
"name": "Emulated Kasa",
|
"name": "Emulated Kasa",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/emulated_kasa",
|
"documentation": "https://www.home-assistant.io/integrations/emulated_kasa",
|
||||||
"requirements": ["sense_energy==0.8.0"],
|
"requirements": ["sense_energy==0.8.1"],
|
||||||
"codeowners": ["@kbickar"],
|
"codeowners": ["@kbickar"],
|
||||||
"quality_scale": "internal"
|
"quality_scale": "internal"
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,6 +110,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
||||||
sense_devices_data = SenseDevicesData()
|
sense_devices_data = SenseDevicesData()
|
||||||
try:
|
try:
|
||||||
sense_discovered_devices = await gateway.get_discovered_device_data()
|
sense_discovered_devices = await gateway.get_discovered_device_data()
|
||||||
|
await gateway.update_realtime()
|
||||||
except SENSE_TIMEOUT_EXCEPTIONS as err:
|
except SENSE_TIMEOUT_EXCEPTIONS as err:
|
||||||
raise ConfigEntryNotReady from err
|
raise ConfigEntryNotReady from err
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"domain": "sense",
|
"domain": "sense",
|
||||||
"name": "Sense",
|
"name": "Sense",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/sense",
|
"documentation": "https://www.home-assistant.io/integrations/sense",
|
||||||
"requirements": ["sense_energy==0.8.0"],
|
"requirements": ["sense_energy==0.8.1"],
|
||||||
"codeowners": ["@kbickar"],
|
"codeowners": ["@kbickar"],
|
||||||
"config_flow": true
|
"config_flow": true
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ from homeassistant.const import (
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
|
VOLT,
|
||||||
)
|
)
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
|
@ -96,6 +97,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for i in range(len(data.active_voltage)):
|
||||||
|
devices.append(SenseVoltageSensor(data, i, sense_monitor_id))
|
||||||
|
|
||||||
for type_id in TRENDS_SENSOR_TYPES:
|
for type_id in TRENDS_SENSOR_TYPES:
|
||||||
typ = TRENDS_SENSOR_TYPES[type_id]
|
typ = TRENDS_SENSOR_TYPES[type_id]
|
||||||
for var in SENSOR_VARIANTS:
|
for var in SENSOR_VARIANTS:
|
||||||
|
@ -204,6 +208,83 @@ class SenseActiveSensor(Entity):
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
|
||||||
|
|
||||||
|
class SenseVoltageSensor(Entity):
|
||||||
|
"""Implementation of a Sense energy voltage sensor."""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
data,
|
||||||
|
index,
|
||||||
|
sense_monitor_id,
|
||||||
|
):
|
||||||
|
"""Initialize the Sense sensor."""
|
||||||
|
line_num = index + 1
|
||||||
|
self._name = f"L{line_num} Voltage"
|
||||||
|
self._unique_id = f"{sense_monitor_id}-L{line_num}"
|
||||||
|
self._available = False
|
||||||
|
self._data = data
|
||||||
|
self._sense_monitor_id = sense_monitor_id
|
||||||
|
self._voltage_index = index
|
||||||
|
self._state = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
"""Return the name of the sensor."""
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def state(self):
|
||||||
|
"""Return the state of the sensor."""
|
||||||
|
return self._state
|
||||||
|
|
||||||
|
@property
|
||||||
|
def available(self):
|
||||||
|
"""Return the availability of the sensor."""
|
||||||
|
return self._available
|
||||||
|
|
||||||
|
@property
|
||||||
|
def unit_of_measurement(self):
|
||||||
|
"""Return the unit of measurement of this entity, if any."""
|
||||||
|
return VOLT
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_state_attributes(self):
|
||||||
|
"""Return the state attributes."""
|
||||||
|
return {ATTR_ATTRIBUTION: ATTRIBUTION}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def icon(self):
|
||||||
|
"""Icon to use in the frontend, if any."""
|
||||||
|
return ICON
|
||||||
|
|
||||||
|
@property
|
||||||
|
def unique_id(self):
|
||||||
|
"""Return the unique id."""
|
||||||
|
return self._unique_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def should_poll(self):
|
||||||
|
"""Return the device should not poll for updates."""
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def async_added_to_hass(self):
|
||||||
|
"""Register callbacks."""
|
||||||
|
self.async_on_remove(
|
||||||
|
async_dispatcher_connect(
|
||||||
|
self.hass,
|
||||||
|
f"{SENSE_DEVICE_UPDATE}-{self._sense_monitor_id}",
|
||||||
|
self._async_update_from_data,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def _async_update_from_data(self):
|
||||||
|
"""Update the sensor from the data. Must not do I/O."""
|
||||||
|
self._state = round(self._data.active_voltage[self._voltage_index], 1)
|
||||||
|
self._available = True
|
||||||
|
self.async_write_ha_state()
|
||||||
|
|
||||||
|
|
||||||
class SenseTrendsSensor(Entity):
|
class SenseTrendsSensor(Entity):
|
||||||
"""Implementation of a Sense energy sensor."""
|
"""Implementation of a Sense energy sensor."""
|
||||||
|
|
||||||
|
|
|
@ -1987,7 +1987,7 @@ sense-hat==2.2.0
|
||||||
|
|
||||||
# homeassistant.components.emulated_kasa
|
# homeassistant.components.emulated_kasa
|
||||||
# homeassistant.components.sense
|
# homeassistant.components.sense
|
||||||
sense_energy==0.8.0
|
sense_energy==0.8.1
|
||||||
|
|
||||||
# homeassistant.components.sentry
|
# homeassistant.components.sentry
|
||||||
sentry-sdk==0.18.0
|
sentry-sdk==0.18.0
|
||||||
|
|
|
@ -929,7 +929,7 @@ samsungtvws==1.4.0
|
||||||
|
|
||||||
# homeassistant.components.emulated_kasa
|
# homeassistant.components.emulated_kasa
|
||||||
# homeassistant.components.sense
|
# homeassistant.components.sense
|
||||||
sense_energy==0.8.0
|
sense_energy==0.8.1
|
||||||
|
|
||||||
# homeassistant.components.sentry
|
# homeassistant.components.sentry
|
||||||
sentry-sdk==0.18.0
|
sentry-sdk==0.18.0
|
||||||
|
|
Loading…
Reference in New Issue