mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
spaceapi: fix sensor values (#132099)
This commit is contained in:
parent
25d092c8eb
commit
6f3a230524
@ -1,6 +1,7 @@
|
|||||||
"""Support for the SpaceAPI."""
|
"""Support for the SpaceAPI."""
|
||||||
|
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
|
import math
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
@ -254,7 +255,17 @@ class APISpaceApiView(HomeAssistantView):
|
|||||||
"""Get data from a sensor."""
|
"""Get data from a sensor."""
|
||||||
if not (sensor_state := hass.states.get(sensor)):
|
if not (sensor_state := hass.states.get(sensor)):
|
||||||
return None
|
return None
|
||||||
sensor_data = {ATTR_NAME: sensor_state.name, ATTR_VALUE: sensor_state.state}
|
|
||||||
|
# SpaceAPI sensor values must be numbers
|
||||||
|
try:
|
||||||
|
state = float(sensor_state.state)
|
||||||
|
except ValueError:
|
||||||
|
state = math.nan
|
||||||
|
sensor_data = {
|
||||||
|
ATTR_NAME: sensor_state.name,
|
||||||
|
ATTR_VALUE: state,
|
||||||
|
}
|
||||||
|
|
||||||
if ATTR_SENSOR_LOCATION in sensor_state.attributes:
|
if ATTR_SENSOR_LOCATION in sensor_state.attributes:
|
||||||
sensor_data[ATTR_LOCATION] = sensor_state.attributes[ATTR_SENSOR_LOCATION]
|
sensor_data[ATTR_LOCATION] = sensor_state.attributes[ATTR_SENSOR_LOCATION]
|
||||||
else:
|
else:
|
||||||
|
@ -6,7 +6,12 @@ from unittest.mock import patch
|
|||||||
from aiohttp.test_utils import TestClient
|
from aiohttp.test_utils import TestClient
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.spaceapi import DOMAIN, SPACEAPI_VERSION, URL_API_SPACEAPI
|
from homeassistant.components.spaceapi import (
|
||||||
|
ATTR_SENSOR_LOCATION,
|
||||||
|
DOMAIN,
|
||||||
|
SPACEAPI_VERSION,
|
||||||
|
URL_API_SPACEAPI,
|
||||||
|
)
|
||||||
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, UnitOfTemperature
|
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, UnitOfTemperature
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
@ -27,7 +32,7 @@ CONFIG = {
|
|||||||
"icon_closed": "https://home-assistant.io/close.png",
|
"icon_closed": "https://home-assistant.io/close.png",
|
||||||
},
|
},
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": ["test.temp1", "test.temp2"],
|
"temperature": ["test.temp1", "test.temp2", "test.temp3"],
|
||||||
"humidity": ["test.hum1"],
|
"humidity": ["test.hum1"],
|
||||||
},
|
},
|
||||||
"spacefed": {"spacenet": True, "spacesaml": False, "spacephone": True},
|
"spacefed": {"spacenet": True, "spacesaml": False, "spacephone": True},
|
||||||
@ -67,17 +72,23 @@ SENSOR_OUTPUT = {
|
|||||||
"location": "Home",
|
"location": "Home",
|
||||||
"name": "temp1",
|
"name": "temp1",
|
||||||
"unit": UnitOfTemperature.CELSIUS,
|
"unit": UnitOfTemperature.CELSIUS,
|
||||||
"value": "25",
|
"value": 25.0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"location": "outside",
|
||||||
|
"name": "temp2",
|
||||||
|
"unit": UnitOfTemperature.CELSIUS,
|
||||||
|
"value": 23.0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"location": "Home",
|
"location": "Home",
|
||||||
"name": "temp2",
|
"name": "temp3",
|
||||||
"unit": UnitOfTemperature.CELSIUS,
|
"unit": UnitOfTemperature.CELSIUS,
|
||||||
"value": "23",
|
"value": None,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"humidity": [
|
"humidity": [
|
||||||
{"location": "Home", "name": "hum1", "unit": PERCENTAGE, "value": "88"}
|
{"location": "Home", "name": "hum1", "unit": PERCENTAGE, "value": 88.0}
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,6 +107,19 @@ def mock_client(hass: HomeAssistant, hass_client: ClientSessionGenerator) -> Tes
|
|||||||
hass.states.async_set(
|
hass.states.async_set(
|
||||||
"test.temp2",
|
"test.temp2",
|
||||||
23,
|
23,
|
||||||
|
attributes={
|
||||||
|
ATTR_UNIT_OF_MEASUREMENT: UnitOfTemperature.CELSIUS,
|
||||||
|
ATTR_SENSOR_LOCATION: "outside",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
hass.states.async_set(
|
||||||
|
"test.temp3",
|
||||||
|
"foo",
|
||||||
|
attributes={ATTR_UNIT_OF_MEASUREMENT: UnitOfTemperature.CELSIUS},
|
||||||
|
)
|
||||||
|
hass.states.async_set(
|
||||||
|
"test.temp3",
|
||||||
|
"foo",
|
||||||
attributes={ATTR_UNIT_OF_MEASUREMENT: UnitOfTemperature.CELSIUS},
|
attributes={ATTR_UNIT_OF_MEASUREMENT: UnitOfTemperature.CELSIUS},
|
||||||
)
|
)
|
||||||
hass.states.async_set(
|
hass.states.async_set(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user