mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 18:57:06 +00:00
Added support for sensor other than temperature and humidity (#23863)
* Added support for sensor other than temperature and humidity * fixed lint errors * fixed minor issues pointed out by @fabaff
This commit is contained in:
parent
5d983d0b61
commit
e072981295
@ -28,6 +28,7 @@ ATTR_SPACE = 'space'
|
|||||||
ATTR_UNIT = 'unit'
|
ATTR_UNIT = 'unit'
|
||||||
ATTR_URL = 'url'
|
ATTR_URL = 'url'
|
||||||
ATTR_VALUE = 'value'
|
ATTR_VALUE = 'value'
|
||||||
|
ATTR_SENSOR_LOCATION = 'location'
|
||||||
|
|
||||||
CONF_CONTACT = 'contact'
|
CONF_CONTACT = 'contact'
|
||||||
CONF_HUMIDITY = 'humidity'
|
CONF_HUMIDITY = 'humidity'
|
||||||
@ -72,9 +73,10 @@ STATE_SCHEMA = vol.Schema({
|
|||||||
vol.Inclusive(CONF_ICON_OPEN, CONF_ICONS): cv.url,
|
vol.Inclusive(CONF_ICON_OPEN, CONF_ICONS): cv.url,
|
||||||
}, required=False)
|
}, required=False)
|
||||||
|
|
||||||
SENSOR_SCHEMA = vol.Schema(
|
SENSOR_SCHEMA = vol.Schema({
|
||||||
{vol.In(SENSOR_TYPES): [cv.entity_id]}
|
vol.In(SENSOR_TYPES): [cv.entity_id],
|
||||||
)
|
cv.string: [cv.entity_id]
|
||||||
|
})
|
||||||
|
|
||||||
CONFIG_SCHEMA = vol.Schema({
|
CONFIG_SCHEMA = vol.Schema({
|
||||||
DOMAIN: vol.Schema({
|
DOMAIN: vol.Schema({
|
||||||
@ -105,6 +107,27 @@ class APISpaceApiView(HomeAssistantView):
|
|||||||
url = URL_API_SPACEAPI
|
url = URL_API_SPACEAPI
|
||||||
name = 'api:spaceapi'
|
name = 'api:spaceapi'
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_sensor_data(hass, spaceapi, sensor):
|
||||||
|
"""Get data from a sensor."""
|
||||||
|
sensor_state = hass.states.get(sensor)
|
||||||
|
if not sensor_state:
|
||||||
|
return None
|
||||||
|
sensor_data = {
|
||||||
|
ATTR_NAME: sensor_state.name,
|
||||||
|
ATTR_VALUE: sensor_state.state
|
||||||
|
}
|
||||||
|
if ATTR_SENSOR_LOCATION in sensor_state.attributes:
|
||||||
|
sensor_data[ATTR_LOCATION] = \
|
||||||
|
sensor_state.attributes[ATTR_SENSOR_LOCATION]
|
||||||
|
else:
|
||||||
|
sensor_data[ATTR_LOCATION] = spaceapi[CONF_SPACE]
|
||||||
|
# Some sensors don't have a unit of measurement
|
||||||
|
if ATTR_UNIT_OF_MEASUREMENT in sensor_state.attributes:
|
||||||
|
sensor_data[ATTR_UNIT] = \
|
||||||
|
sensor_state.attributes[ATTR_UNIT_OF_MEASUREMENT]
|
||||||
|
return sensor_data
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
"""Get SpaceAPI data."""
|
"""Get SpaceAPI data."""
|
||||||
@ -154,15 +177,7 @@ class APISpaceApiView(HomeAssistantView):
|
|||||||
for sensor_type in is_sensors:
|
for sensor_type in is_sensors:
|
||||||
sensors[sensor_type] = []
|
sensors[sensor_type] = []
|
||||||
for sensor in spaceapi['sensors'][sensor_type]:
|
for sensor in spaceapi['sensors'][sensor_type]:
|
||||||
sensor_state = hass.states.get(sensor)
|
sensor_data = self.get_sensor_data(hass, spaceapi, sensor)
|
||||||
unit = sensor_state.attributes[ATTR_UNIT_OF_MEASUREMENT]
|
|
||||||
value = sensor_state.state
|
|
||||||
sensor_data = {
|
|
||||||
ATTR_LOCATION: spaceapi[CONF_SPACE],
|
|
||||||
ATTR_NAME: sensor_state.name,
|
|
||||||
ATTR_UNIT: unit,
|
|
||||||
ATTR_VALUE: value,
|
|
||||||
}
|
|
||||||
sensors[sensor_type].append(sensor_data)
|
sensors[sensor_type].append(sensor_data)
|
||||||
data[ATTR_SENSORS] = sensors
|
data[ATTR_SENSORS] = sensors
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user