hass-core/homeassistant/components/guardian/sensor.py
Aaron Bach 369745c4cf
Add support for Elexa Guardian water valve controllers ()
* Add support for Elexa Guardian water valve controllers

* Zeroconf + cleanup

* Sensors and services

* API registration

* Service bug fixes

* Fix bug in cleanup

* Tests and coverage

* Fix incorrect service description

* Bump aioguardian

* Bump aioguardian to 0.2.2

* Bump aioguardian to 0.2.3

* Proper entity inheritance

* Give device a proper name

* Code review
2020-05-26 08:47:25 -05:00

73 lines
1.9 KiB
Python

"""Sensors for the Elexa Guardian integration."""
from homeassistant.const import DEVICE_CLASS_TEMPERATURE, TEMP_FAHRENHEIT, TIME_MINUTES
from homeassistant.core import callback
from . import Guardian, GuardianEntity
from .const import (
DATA_CLIENT,
DATA_DIAGNOSTICS,
DATA_SENSOR_STATUS,
DOMAIN,
SENSOR_KIND_TEMPERATURE,
SENSOR_KIND_UPTIME,
)
SENSORS = [
(
SENSOR_KIND_TEMPERATURE,
"Temperature",
DEVICE_CLASS_TEMPERATURE,
None,
TEMP_FAHRENHEIT,
),
(SENSOR_KIND_UPTIME, "Uptime", None, "mdi:timer", TIME_MINUTES),
]
async def async_setup_entry(hass, entry, async_add_entities):
"""Set up Guardian switches based on a config entry."""
guardian = hass.data[DOMAIN][DATA_CLIENT][entry.entry_id]
async_add_entities(
[
GuardianSensor(guardian, kind, name, device_class, icon, unit)
for kind, name, device_class, icon, unit in SENSORS
],
True,
)
class GuardianSensor(GuardianEntity):
"""Define a generic Guardian sensor."""
def __init__(
self,
guardian: Guardian,
kind: str,
name: str,
device_class: str,
icon: str,
unit: str,
):
"""Initialize."""
super().__init__(guardian, kind, name, device_class, icon)
self._state = None
self._unit = unit
@property
def state(self):
"""Return the sensor state."""
return self._state
@property
def unit_of_measurement(self):
"""Return the unit of measurement of this entity, if any."""
return self._unit
@callback
def _update_from_latest_data(self):
"""Update the entity."""
if self._kind == SENSOR_KIND_TEMPERATURE:
self._state = self._guardian.data[DATA_SENSOR_STATUS]["temperature"]
elif self._kind == SENSOR_KIND_UPTIME:
self._state = self._guardian.data[DATA_DIAGNOSTICS]["uptime"]