Add support for SimpliSafe sensors (#41080)
* Add support for SimpliSafe sensors * Turn sensor refresh rate to a configurable setting * Set minimum to scan interval * Removed dynamic sensor refresh rate * Refactoring * Refactoring * Move battery entities to binary_sensor platform * Bug fix * Clean up * Simplified device info override * Ignore sensor cache
This commit is contained in:
parent
f70aa0b5cc
commit
8a45bc2d13
4 changed files with 234 additions and 14 deletions
67
homeassistant/components/simplisafe/sensor.py
Normal file
67
homeassistant/components/simplisafe/sensor.py
Normal file
|
@ -0,0 +1,67 @@
|
|||
"""Support for SimpliSafe freeze sensor."""
|
||||
from simplipy.entity import EntityTypes
|
||||
|
||||
from homeassistant.const import DEVICE_CLASS_TEMPERATURE, TEMP_FAHRENHEIT
|
||||
from homeassistant.core import callback
|
||||
|
||||
from . import SimpliSafeEntity
|
||||
from .const import DATA_CLIENT, DOMAIN
|
||||
|
||||
|
||||
async def async_setup_entry(hass, entry, async_add_entities):
|
||||
"""Set up SimpliSafe freeze sensors based on a config entry."""
|
||||
simplisafe = hass.data[DOMAIN][DATA_CLIENT][entry.entry_id]
|
||||
|
||||
async_add_entities(
|
||||
[
|
||||
SimplisafeFreezeSensor(simplisafe, system, sensor)
|
||||
for system in simplisafe.systems.values()
|
||||
for sensor in system.sensors.values()
|
||||
if sensor.type == EntityTypes.temperature
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class SimplisafeFreezeSensor(SimpliSafeEntity):
|
||||
"""Define a SimpliSafe freeze sensor entity."""
|
||||
|
||||
def __init__(self, simplisafe, system, sensor):
|
||||
"""Initialize."""
|
||||
super().__init__(simplisafe, system, sensor.name, serial=sensor.serial)
|
||||
self._system = system
|
||||
self._sensor = sensor
|
||||
self._state = None
|
||||
|
||||
@property
|
||||
def device_class(self):
|
||||
"""Return type of sensor."""
|
||||
return DEVICE_CLASS_TEMPERATURE
|
||||
|
||||
@property
|
||||
def unique_id(self):
|
||||
"""Return unique ID of sensor."""
|
||||
return self._sensor.serial
|
||||
|
||||
@property
|
||||
def device_info(self):
|
||||
"""Return device registry information for this entity."""
|
||||
info = super().device_info
|
||||
info["identifiers"] = {(DOMAIN, self._sensor.serial)}
|
||||
info["model"] = "Freeze Sensor"
|
||||
info["name"] = self._sensor.name
|
||||
return info
|
||||
|
||||
@property
|
||||
def unit_of_measurement(self):
|
||||
"""Return the unit of measurement."""
|
||||
return TEMP_FAHRENHEIT
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
"""Return the sensor state."""
|
||||
return self._state
|
||||
|
||||
@callback
|
||||
def async_update_from_rest_api(self):
|
||||
"""Update the entity with the provided REST API data."""
|
||||
self._state = self._sensor.temperature
|
Loading…
Add table
Add a link
Reference in a new issue