mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 19:57:07 +00:00
sensor.dovado: compute state in update (#6340)
This commit is contained in:
parent
4ccd819ec5
commit
e23aa1ccf8
@ -16,8 +16,7 @@ from homeassistant.util import slugify
|
|||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.const import (CONF_USERNAME, CONF_PASSWORD,
|
from homeassistant.const import (CONF_USERNAME, CONF_PASSWORD,
|
||||||
CONF_HOST, CONF_PORT,
|
CONF_HOST, CONF_PORT,
|
||||||
CONF_SENSORS, STATE_UNKNOWN,
|
CONF_SENSORS, DEVICE_DEFAULT_NAME)
|
||||||
DEVICE_DEFAULT_NAME)
|
|
||||||
from homeassistant.components.sensor import (DOMAIN, PLATFORM_SCHEMA)
|
from homeassistant.components.sensor import (DOMAIN, PLATFORM_SCHEMA)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
@ -88,7 +87,7 @@ class Dovado:
|
|||||||
number, message)
|
number, message)
|
||||||
self._dovado.send_sms(number, message)
|
self._dovado.send_sms(number, message)
|
||||||
|
|
||||||
if self.state["sms"] == "enabled":
|
if self.state.get("sms") == "enabled":
|
||||||
service_name = slugify("{} {}".format(self.name,
|
service_name = slugify("{} {}".format(self.name,
|
||||||
"send_sms"))
|
"send_sms"))
|
||||||
hass.services.register(DOMAIN, service_name, send_sms)
|
hass.services.register(DOMAIN, service_name, send_sms)
|
||||||
@ -125,10 +124,29 @@ class DovadoSensor(Entity):
|
|||||||
"""Initialize the sensor."""
|
"""Initialize the sensor."""
|
||||||
self._dovado = dovado
|
self._dovado = dovado
|
||||||
self._sensor = sensor
|
self._sensor = sensor
|
||||||
|
self._state = self._compute_state()
|
||||||
|
|
||||||
|
def _compute_state(self):
|
||||||
|
state = self._dovado.state.get(SENSORS[self._sensor][0])
|
||||||
|
if self._sensor == SENSOR_NETWORK:
|
||||||
|
match = re.search(r"\((.+)\)", state)
|
||||||
|
return match.group(1) if match else None
|
||||||
|
elif self._sensor == SENSOR_SIGNAL:
|
||||||
|
try:
|
||||||
|
return int(state.split()[0])
|
||||||
|
except ValueError:
|
||||||
|
return 0
|
||||||
|
elif self._sensor == SENSOR_SMS_UNREAD:
|
||||||
|
return int(state)
|
||||||
|
elif self._sensor in [SENSOR_UPLOAD, SENSOR_DOWNLOAD]:
|
||||||
|
return round(float(state) / 1e6, 1)
|
||||||
|
else:
|
||||||
|
return state
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update sensor values."""
|
"""Update sensor values."""
|
||||||
self._dovado.update()
|
self._dovado.update()
|
||||||
|
self._state = self._compute_state()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
@ -139,24 +157,7 @@ class DovadoSensor(Entity):
|
|||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
"""Return the sensor state."""
|
"""Return the sensor state."""
|
||||||
key = SENSORS[self._sensor][0]
|
return self._state
|
||||||
result = self._dovado.state.get(key)
|
|
||||||
if not result:
|
|
||||||
return STATE_UNKNOWN
|
|
||||||
elif self._sensor == SENSOR_NETWORK:
|
|
||||||
match = re.search(r"\((.+)\)", result)
|
|
||||||
return match.group(1) if match else STATE_UNKNOWN
|
|
||||||
elif self._sensor == SENSOR_SIGNAL:
|
|
||||||
try:
|
|
||||||
return int(result.split()[0])
|
|
||||||
except ValueError:
|
|
||||||
return 0
|
|
||||||
elif self._sensor == SENSOR_SMS_UNREAD:
|
|
||||||
return int(result)
|
|
||||||
elif self._sensor in [SENSOR_UPLOAD, SENSOR_DOWNLOAD]:
|
|
||||||
return round(float(result) / 1e6, 1)
|
|
||||||
else:
|
|
||||||
return result
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def icon(self):
|
def icon(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user