mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Bump gios
library (#50145)
* Bump gios library * Use consts for API strings * Do not store data locally * Use API_TIMEOUT const
This commit is contained in:
parent
64851dbac3
commit
7a87846146
@ -8,7 +8,7 @@ from gios import ApiError, Gios, InvalidSensorsData, NoStationError
|
|||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
|
|
||||||
from .const import CONF_STATION_ID, DOMAIN, SCAN_INTERVAL
|
from .const import API_TIMEOUT, CONF_STATION_ID, DOMAIN, SCAN_INTERVAL
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -51,8 +51,8 @@ class GiosDataUpdateCoordinator(DataUpdateCoordinator):
|
|||||||
async def _async_update_data(self):
|
async def _async_update_data(self):
|
||||||
"""Update data via library."""
|
"""Update data via library."""
|
||||||
try:
|
try:
|
||||||
with timeout(30):
|
with timeout(API_TIMEOUT):
|
||||||
await self.gios.update()
|
return await self.gios.async_update()
|
||||||
except (
|
except (
|
||||||
ApiError,
|
ApiError,
|
||||||
NoStationError,
|
NoStationError,
|
||||||
@ -60,4 +60,3 @@ class GiosDataUpdateCoordinator(DataUpdateCoordinator):
|
|||||||
InvalidSensorsData,
|
InvalidSensorsData,
|
||||||
) as error:
|
) as error:
|
||||||
raise UpdateFailed(error) from error
|
raise UpdateFailed(error) from error
|
||||||
return self.gios.data
|
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
"""Support for the GIOS service."""
|
"""Support for the GIOS service."""
|
||||||
from homeassistant.components.air_quality import (
|
from homeassistant.components.air_quality import AirQualityEntity
|
||||||
ATTR_CO,
|
|
||||||
ATTR_NO2,
|
|
||||||
ATTR_OZONE,
|
|
||||||
ATTR_PM_2_5,
|
|
||||||
ATTR_PM_10,
|
|
||||||
ATTR_SO2,
|
|
||||||
AirQualityEntity,
|
|
||||||
)
|
|
||||||
from homeassistant.const import CONF_NAME
|
from homeassistant.const import CONF_NAME
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
from .const import ATTR_STATION, DEFAULT_NAME, DOMAIN, ICONS_MAP, MANUFACTURER
|
from .const import (
|
||||||
|
API_AQI,
|
||||||
ATTRIBUTION = "Data provided by GIOŚ"
|
API_CO,
|
||||||
|
API_NO2,
|
||||||
SENSOR_MAP = {
|
API_O3,
|
||||||
"CO": ATTR_CO,
|
API_PM10,
|
||||||
"NO2": ATTR_NO2,
|
API_PM25,
|
||||||
"O3": ATTR_OZONE,
|
API_SO2,
|
||||||
"PM10": ATTR_PM_10,
|
ATTR_STATION,
|
||||||
"PM2.5": ATTR_PM_2_5,
|
ATTRIBUTION,
|
||||||
"SO2": ATTR_SO2,
|
DEFAULT_NAME,
|
||||||
}
|
DOMAIN,
|
||||||
|
ICONS_MAP,
|
||||||
|
MANUFACTURER,
|
||||||
|
SENSOR_MAP,
|
||||||
|
)
|
||||||
|
|
||||||
PARALLEL_UPDATES = 1
|
PARALLEL_UPDATES = 1
|
||||||
|
|
||||||
@ -72,43 +68,43 @@ class GiosAirQuality(CoordinatorEntity, AirQualityEntity):
|
|||||||
@property
|
@property
|
||||||
def air_quality_index(self):
|
def air_quality_index(self):
|
||||||
"""Return the air quality index."""
|
"""Return the air quality index."""
|
||||||
return self._get_sensor_value("AQI")
|
return self._get_sensor_value(API_AQI)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@round_state
|
@round_state
|
||||||
def particulate_matter_2_5(self):
|
def particulate_matter_2_5(self):
|
||||||
"""Return the particulate matter 2.5 level."""
|
"""Return the particulate matter 2.5 level."""
|
||||||
return self._get_sensor_value("PM2.5")
|
return self._get_sensor_value(API_PM25)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@round_state
|
@round_state
|
||||||
def particulate_matter_10(self):
|
def particulate_matter_10(self):
|
||||||
"""Return the particulate matter 10 level."""
|
"""Return the particulate matter 10 level."""
|
||||||
return self._get_sensor_value("PM10")
|
return self._get_sensor_value(API_PM10)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@round_state
|
@round_state
|
||||||
def ozone(self):
|
def ozone(self):
|
||||||
"""Return the O3 (ozone) level."""
|
"""Return the O3 (ozone) level."""
|
||||||
return self._get_sensor_value("O3")
|
return self._get_sensor_value(API_O3)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@round_state
|
@round_state
|
||||||
def carbon_monoxide(self):
|
def carbon_monoxide(self):
|
||||||
"""Return the CO (carbon monoxide) level."""
|
"""Return the CO (carbon monoxide) level."""
|
||||||
return self._get_sensor_value("CO")
|
return self._get_sensor_value(API_CO)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@round_state
|
@round_state
|
||||||
def sulphur_dioxide(self):
|
def sulphur_dioxide(self):
|
||||||
"""Return the SO2 (sulphur dioxide) level."""
|
"""Return the SO2 (sulphur dioxide) level."""
|
||||||
return self._get_sensor_value("SO2")
|
return self._get_sensor_value(API_SO2)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@round_state
|
@round_state
|
||||||
def nitrogen_dioxide(self):
|
def nitrogen_dioxide(self):
|
||||||
"""Return the NO2 (nitrogen dioxide) level."""
|
"""Return the NO2 (nitrogen dioxide) level."""
|
||||||
return self._get_sensor_value("NO2")
|
return self._get_sensor_value(API_NO2)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def attribution(self):
|
def attribution(self):
|
||||||
|
@ -10,7 +10,7 @@ from homeassistant import config_entries
|
|||||||
from homeassistant.const import CONF_NAME
|
from homeassistant.const import CONF_NAME
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
|
|
||||||
from .const import CONF_STATION_ID, DEFAULT_NAME, DOMAIN
|
from .const import API_TIMEOUT, CONF_STATION_ID, DEFAULT_NAME, DOMAIN
|
||||||
|
|
||||||
DATA_SCHEMA = vol.Schema(
|
DATA_SCHEMA = vol.Schema(
|
||||||
{
|
{
|
||||||
@ -38,9 +38,9 @@ class GiosFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
|
|
||||||
websession = async_get_clientsession(self.hass)
|
websession = async_get_clientsession(self.hass)
|
||||||
|
|
||||||
with timeout(30):
|
with timeout(API_TIMEOUT):
|
||||||
gios = Gios(user_input[CONF_STATION_ID], websession)
|
gios = Gios(user_input[CONF_STATION_ID], websession)
|
||||||
await gios.update()
|
await gios.async_update()
|
||||||
|
|
||||||
return self.async_create_entry(
|
return self.async_create_entry(
|
||||||
title=user_input[CONF_STATION_ID],
|
title=user_input[CONF_STATION_ID],
|
||||||
|
@ -1,6 +1,17 @@
|
|||||||
"""Constants for GIOS integration."""
|
"""Constants for GIOS integration."""
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
|
from homeassistant.components.air_quality import (
|
||||||
|
ATTR_CO,
|
||||||
|
ATTR_NO2,
|
||||||
|
ATTR_OZONE,
|
||||||
|
ATTR_PM_2_5,
|
||||||
|
ATTR_PM_10,
|
||||||
|
ATTR_SO2,
|
||||||
|
)
|
||||||
|
|
||||||
|
ATTRIBUTION = "Data provided by GIOŚ"
|
||||||
|
|
||||||
ATTR_STATION = "station"
|
ATTR_STATION = "station"
|
||||||
CONF_STATION_ID = "station_id"
|
CONF_STATION_ID = "station_id"
|
||||||
DEFAULT_NAME = "GIOŚ"
|
DEFAULT_NAME = "GIOŚ"
|
||||||
@ -9,6 +20,16 @@ SCAN_INTERVAL = timedelta(minutes=30)
|
|||||||
DOMAIN = "gios"
|
DOMAIN = "gios"
|
||||||
MANUFACTURER = "Główny Inspektorat Ochrony Środowiska"
|
MANUFACTURER = "Główny Inspektorat Ochrony Środowiska"
|
||||||
|
|
||||||
|
API_AQI = "aqi"
|
||||||
|
API_CO = "co"
|
||||||
|
API_NO2 = "no2"
|
||||||
|
API_O3 = "o3"
|
||||||
|
API_PM10 = "pm10"
|
||||||
|
API_PM25 = "pm2.5"
|
||||||
|
API_SO2 = "so2"
|
||||||
|
|
||||||
|
API_TIMEOUT = 30
|
||||||
|
|
||||||
AQI_GOOD = "dobry"
|
AQI_GOOD = "dobry"
|
||||||
AQI_MODERATE = "umiarkowany"
|
AQI_MODERATE = "umiarkowany"
|
||||||
AQI_POOR = "dostateczny"
|
AQI_POOR = "dostateczny"
|
||||||
@ -22,3 +43,12 @@ ICONS_MAP = {
|
|||||||
AQI_POOR: "mdi:emoticon-sad",
|
AQI_POOR: "mdi:emoticon-sad",
|
||||||
AQI_VERY_POOR: "mdi:emoticon-dead",
|
AQI_VERY_POOR: "mdi:emoticon-dead",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SENSOR_MAP = {
|
||||||
|
API_CO: ATTR_CO,
|
||||||
|
API_NO2: ATTR_NO2,
|
||||||
|
API_O3: ATTR_OZONE,
|
||||||
|
API_PM10: ATTR_PM_10,
|
||||||
|
API_PM25: ATTR_PM_2_5,
|
||||||
|
API_SO2: ATTR_SO2,
|
||||||
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"name": "GIO\u015a",
|
"name": "GIO\u015a",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/gios",
|
"documentation": "https://www.home-assistant.io/integrations/gios",
|
||||||
"codeowners": ["@bieniu"],
|
"codeowners": ["@bieniu"],
|
||||||
"requirements": ["gios==0.2.1"],
|
"requirements": ["gios==1.0.1"],
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"quality_scale": "platinum",
|
"quality_scale": "platinum",
|
||||||
"iot_class": "cloud_polling"
|
"iot_class": "cloud_polling"
|
||||||
|
@ -657,7 +657,7 @@ georss_qld_bushfire_alert_client==0.3
|
|||||||
getmac==0.8.2
|
getmac==0.8.2
|
||||||
|
|
||||||
# homeassistant.components.gios
|
# homeassistant.components.gios
|
||||||
gios==0.2.1
|
gios==1.0.1
|
||||||
|
|
||||||
# homeassistant.components.gitter
|
# homeassistant.components.gitter
|
||||||
gitterpy==0.1.7
|
gitterpy==0.1.7
|
||||||
|
@ -360,7 +360,7 @@ georss_qld_bushfire_alert_client==0.3
|
|||||||
getmac==0.8.2
|
getmac==0.8.2
|
||||||
|
|
||||||
# homeassistant.components.gios
|
# homeassistant.components.gios
|
||||||
gios==0.2.1
|
gios==1.0.1
|
||||||
|
|
||||||
# homeassistant.components.glances
|
# homeassistant.components.glances
|
||||||
glances_api==0.2.0
|
glances_api==0.2.0
|
||||||
|
@ -26,8 +26,8 @@ async def init_integration(hass, incomplete_data=False) -> MockConfigEntry:
|
|||||||
sensors = json.loads(load_fixture("gios/sensors.json"))
|
sensors = json.loads(load_fixture("gios/sensors.json"))
|
||||||
if incomplete_data:
|
if incomplete_data:
|
||||||
indexes["stIndexLevel"]["indexLevelName"] = "foo"
|
indexes["stIndexLevel"]["indexLevelName"] = "foo"
|
||||||
sensors["PM10"]["values"][0]["value"] = None
|
sensors["pm10"]["values"][0]["value"] = None
|
||||||
sensors["PM10"]["values"][1]["value"] = None
|
sensors["pm10"]["values"][1]["value"] = None
|
||||||
|
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.gios.Gios._get_stations", return_value=STATIONS
|
"homeassistant.components.gios.Gios._get_stations", return_value=STATIONS
|
||||||
|
14
tests/fixtures/gios/sensors.json
vendored
14
tests/fixtures/gios/sensors.json
vendored
@ -1,47 +1,47 @@
|
|||||||
{
|
{
|
||||||
"SO2": {
|
"so2": {
|
||||||
"values": [
|
"values": [
|
||||||
{ "date": "2020-07-31 15:00:00", "value": 4.35478 },
|
{ "date": "2020-07-31 15:00:00", "value": 4.35478 },
|
||||||
{ "date": "2020-07-31 14:00:00", "value": 4.25478 },
|
{ "date": "2020-07-31 14:00:00", "value": 4.25478 },
|
||||||
{ "date": "2020-07-31 13:00:00", "value": 4.34309 }
|
{ "date": "2020-07-31 13:00:00", "value": 4.34309 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"C6H6": {
|
"c6h6": {
|
||||||
"values": [
|
"values": [
|
||||||
{ "date": "2020-07-31 15:00:00", "value": 0.23789 },
|
{ "date": "2020-07-31 15:00:00", "value": 0.23789 },
|
||||||
{ "date": "2020-07-31 14:00:00", "value": 0.22789 },
|
{ "date": "2020-07-31 14:00:00", "value": 0.22789 },
|
||||||
{ "date": "2020-07-31 13:00:00", "value": 0.21315 }
|
{ "date": "2020-07-31 13:00:00", "value": 0.21315 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"CO": {
|
"co": {
|
||||||
"values": [
|
"values": [
|
||||||
{ "date": "2020-07-31 15:00:00", "value": 251.874 },
|
{ "date": "2020-07-31 15:00:00", "value": 251.874 },
|
||||||
{ "date": "2020-07-31 14:00:00", "value": 250.874 },
|
{ "date": "2020-07-31 14:00:00", "value": 250.874 },
|
||||||
{ "date": "2020-07-31 13:00:00", "value": 251.097 }
|
{ "date": "2020-07-31 13:00:00", "value": 251.097 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"NO2": {
|
"no2": {
|
||||||
"values": [
|
"values": [
|
||||||
{ "date": "2020-07-31 15:00:00", "value": 7.13411 },
|
{ "date": "2020-07-31 15:00:00", "value": 7.13411 },
|
||||||
{ "date": "2020-07-31 14:00:00", "value": 7.33411 },
|
{ "date": "2020-07-31 14:00:00", "value": 7.33411 },
|
||||||
{ "date": "2020-07-31 13:00:00", "value": 9.32578 }
|
{ "date": "2020-07-31 13:00:00", "value": 9.32578 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"O3": {
|
"o3": {
|
||||||
"values": [
|
"values": [
|
||||||
{ "date": "2020-07-31 15:00:00", "value": 95.7768 },
|
{ "date": "2020-07-31 15:00:00", "value": 95.7768 },
|
||||||
{ "date": "2020-07-31 14:00:00", "value": 93.7768 },
|
{ "date": "2020-07-31 14:00:00", "value": 93.7768 },
|
||||||
{ "date": "2020-07-31 13:00:00", "value": 89.4232 }
|
{ "date": "2020-07-31 13:00:00", "value": 89.4232 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"PM2.5": {
|
"pm2.5": {
|
||||||
"values": [
|
"values": [
|
||||||
{ "date": "2020-07-31 15:00:00", "value": 4 },
|
{ "date": "2020-07-31 15:00:00", "value": 4 },
|
||||||
{ "date": "2020-07-31 14:00:00", "value": 4 },
|
{ "date": "2020-07-31 14:00:00", "value": 4 },
|
||||||
{ "date": "2020-07-31 13:00:00", "value": 5 }
|
{ "date": "2020-07-31 13:00:00", "value": 5 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"PM10": {
|
"pm10": {
|
||||||
"values": [
|
"values": [
|
||||||
{ "date": "2020-07-31 15:00:00", "value": 16.8344 },
|
{ "date": "2020-07-31 15:00:00", "value": 16.8344 },
|
||||||
{ "date": "2020-07-31 14:00:00", "value": 17.8344 },
|
{ "date": "2020-07-31 14:00:00", "value": 17.8344 },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user