Clear miflora sensor state on exception (#29276)
* Clear state on exception Clear state if querying the device fails. The state is then set to unknown, so it can be tracked if a miflora device isn't responding any more. * Add available() Signal valid data via available()pull/29319/head
parent
9771826ed6
commit
1804c6edc5
|
@ -106,6 +106,7 @@ class MiFloraSensor(Entity):
|
||||||
self._icon = icon
|
self._icon = icon
|
||||||
self._name = name
|
self._name = name
|
||||||
self._state = None
|
self._state = None
|
||||||
|
self._available = False
|
||||||
self.data = []
|
self.data = []
|
||||||
self._force_update = force_update
|
self._force_update = force_update
|
||||||
# Median is used to filter out outliers. median of 3 will filter
|
# Median is used to filter out outliers. median of 3 will filter
|
||||||
|
@ -132,6 +133,11 @@ class MiFloraSensor(Entity):
|
||||||
"""Return the state of the sensor."""
|
"""Return the state of the sensor."""
|
||||||
return self._state
|
return self._state
|
||||||
|
|
||||||
|
@property
|
||||||
|
def available(self):
|
||||||
|
"""Return True if entity is available."""
|
||||||
|
return self._available
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def unit_of_measurement(self):
|
def unit_of_measurement(self):
|
||||||
"""Return the units of measurement."""
|
"""Return the units of measurement."""
|
||||||
|
@ -156,15 +162,14 @@ class MiFloraSensor(Entity):
|
||||||
try:
|
try:
|
||||||
_LOGGER.debug("Polling data for %s", self.name)
|
_LOGGER.debug("Polling data for %s", self.name)
|
||||||
data = self.poller.parameter_value(self.parameter)
|
data = self.poller.parameter_value(self.parameter)
|
||||||
except OSError as ioerr:
|
except (OSError, BluetoothBackendException) as err:
|
||||||
_LOGGER.info("Polling error %s", ioerr)
|
_LOGGER.info("Polling error %s: %s", type(err).__name__, err)
|
||||||
return
|
self._available = False
|
||||||
except BluetoothBackendException as bterror:
|
|
||||||
_LOGGER.info("Polling error %s", bterror)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if data is not None:
|
if data is not None:
|
||||||
_LOGGER.debug("%s = %s", self.name, data)
|
_LOGGER.debug("%s = %s", self.name, data)
|
||||||
|
self._available = True
|
||||||
self.data.append(data)
|
self.data.append(data)
|
||||||
else:
|
else:
|
||||||
_LOGGER.info("Did not receive any data from Mi Flora sensor %s", self.name)
|
_LOGGER.info("Did not receive any data from Mi Flora sensor %s", self.name)
|
||||||
|
|
Loading…
Reference in New Issue