Adds CPU temp monitoring, and allow startup when endpoint is not yet available. (#8093)
* Adds CPU temp monitoring, and allow startup when endpoint is not yet available. * Added support for available() to glances sensor.
This commit is contained in:
parent
9a239d1afb
commit
8d0553d9e6
1 changed files with 17 additions and 7 deletions
|
@ -13,7 +13,8 @@ import voluptuous as vol
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST, CONF_PORT, STATE_UNKNOWN, CONF_NAME, CONF_RESOURCES)
|
CONF_HOST, CONF_PORT, STATE_UNKNOWN, CONF_NAME, CONF_RESOURCES,
|
||||||
|
TEMP_CELSIUS)
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
from homeassistant.util import Throttle
|
from homeassistant.util import Throttle
|
||||||
|
|
||||||
|
@ -40,7 +41,8 @@ SENSOR_TYPES = {
|
||||||
'process_running': ['Running', 'Count'],
|
'process_running': ['Running', 'Count'],
|
||||||
'process_total': ['Total', 'Count'],
|
'process_total': ['Total', 'Count'],
|
||||||
'process_thread': ['Thread', 'Count'],
|
'process_thread': ['Thread', 'Count'],
|
||||||
'process_sleeping': ['Sleeping', 'Count']
|
'process_sleeping': ['Sleeping', 'Count'],
|
||||||
|
'cpu_temp': ['CPU Temp', TEMP_CELSIUS],
|
||||||
}
|
}
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
|
@ -64,11 +66,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
try:
|
try:
|
||||||
response = requests.get(url, timeout=10)
|
response = requests.get(url, timeout=10)
|
||||||
if not response.ok:
|
if not response.ok:
|
||||||
_LOGGER.error("Response status is '%s'", response.status_code)
|
_LOGGER.warning("Response status is '%s'", response.status_code)
|
||||||
return False
|
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
_LOGGER.error("No route to resource/endpoint: %s", url)
|
_LOGGER.warning("No route to resource/endpoint: %s", url)
|
||||||
return False
|
|
||||||
|
|
||||||
rest = GlancesData(url)
|
rest = GlancesData(url)
|
||||||
|
|
||||||
|
@ -104,6 +104,11 @@ class GlancesSensor(Entity):
|
||||||
"""Return the unit the value is expressed in."""
|
"""Return the unit the value is expressed in."""
|
||||||
return self._unit_of_measurement
|
return self._unit_of_measurement
|
||||||
|
|
||||||
|
@property
|
||||||
|
def available(self):
|
||||||
|
"""Could the device be accessed during the last update call."""
|
||||||
|
return self.rest.data is not None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
"""Return the state of the resources."""
|
"""Return the state of the resources."""
|
||||||
|
@ -146,6 +151,11 @@ class GlancesSensor(Entity):
|
||||||
return value['processcount']['thread']
|
return value['processcount']['thread']
|
||||||
elif self.type == 'process_sleeping':
|
elif self.type == 'process_sleeping':
|
||||||
return value['processcount']['sleeping']
|
return value['processcount']['sleeping']
|
||||||
|
elif self.type == 'cpu_temp':
|
||||||
|
for sensor in value['sensors']:
|
||||||
|
if sensor['label'] == 'CPU':
|
||||||
|
return sensor['value']
|
||||||
|
return None
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Get the latest data from REST API."""
|
"""Get the latest data from REST API."""
|
||||||
|
@ -167,5 +177,5 @@ class GlancesData(object):
|
||||||
response = requests.get(self._resource, timeout=10)
|
response = requests.get(self._resource, timeout=10)
|
||||||
self.data = response.json()
|
self.data = response.json()
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
_LOGGER.error("No route to host/endpoint: %s", self._resource)
|
_LOGGER.debug("Error connecting to glances: %s", self._resource)
|
||||||
self.data = None
|
self.data = None
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue