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:
Maciej Bieniek 2021-05-07 13:03:11 +02:00 committed by GitHub
parent 64851dbac3
commit 7a87846146
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 72 additions and 47 deletions

View file

@ -8,7 +8,7 @@ from gios import ApiError, Gios, InvalidSensorsData, NoStationError
from homeassistant.helpers.aiohttp_client import async_get_clientsession
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__)
@ -51,8 +51,8 @@ class GiosDataUpdateCoordinator(DataUpdateCoordinator):
async def _async_update_data(self):
"""Update data via library."""
try:
with timeout(30):
await self.gios.update()
with timeout(API_TIMEOUT):
return await self.gios.async_update()
except (
ApiError,
NoStationError,
@ -60,4 +60,3 @@ class GiosDataUpdateCoordinator(DataUpdateCoordinator):
InvalidSensorsData,
) as error:
raise UpdateFailed(error) from error
return self.gios.data

View file

@ -1,28 +1,24 @@
"""Support for the GIOS service."""
from homeassistant.components.air_quality import (
ATTR_CO,
ATTR_NO2,
ATTR_OZONE,
ATTR_PM_2_5,
ATTR_PM_10,
ATTR_SO2,
AirQualityEntity,
)
from homeassistant.components.air_quality import AirQualityEntity
from homeassistant.const import CONF_NAME
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import ATTR_STATION, DEFAULT_NAME, DOMAIN, ICONS_MAP, MANUFACTURER
ATTRIBUTION = "Data provided by GIOŚ"
SENSOR_MAP = {
"CO": ATTR_CO,
"NO2": ATTR_NO2,
"O3": ATTR_OZONE,
"PM10": ATTR_PM_10,
"PM2.5": ATTR_PM_2_5,
"SO2": ATTR_SO2,
}
from .const import (
API_AQI,
API_CO,
API_NO2,
API_O3,
API_PM10,
API_PM25,
API_SO2,
ATTR_STATION,
ATTRIBUTION,
DEFAULT_NAME,
DOMAIN,
ICONS_MAP,
MANUFACTURER,
SENSOR_MAP,
)
PARALLEL_UPDATES = 1
@ -72,43 +68,43 @@ class GiosAirQuality(CoordinatorEntity, AirQualityEntity):
@property
def air_quality_index(self):
"""Return the air quality index."""
return self._get_sensor_value("AQI")
return self._get_sensor_value(API_AQI)
@property
@round_state
def particulate_matter_2_5(self):
"""Return the particulate matter 2.5 level."""
return self._get_sensor_value("PM2.5")
return self._get_sensor_value(API_PM25)
@property
@round_state
def particulate_matter_10(self):
"""Return the particulate matter 10 level."""
return self._get_sensor_value("PM10")
return self._get_sensor_value(API_PM10)
@property
@round_state
def ozone(self):
"""Return the O3 (ozone) level."""
return self._get_sensor_value("O3")
return self._get_sensor_value(API_O3)
@property
@round_state
def carbon_monoxide(self):
"""Return the CO (carbon monoxide) level."""
return self._get_sensor_value("CO")
return self._get_sensor_value(API_CO)
@property
@round_state
def sulphur_dioxide(self):
"""Return the SO2 (sulphur dioxide) level."""
return self._get_sensor_value("SO2")
return self._get_sensor_value(API_SO2)
@property
@round_state
def nitrogen_dioxide(self):
"""Return the NO2 (nitrogen dioxide) level."""
return self._get_sensor_value("NO2")
return self._get_sensor_value(API_NO2)
@property
def attribution(self):

View file

@ -10,7 +10,7 @@ from homeassistant import config_entries
from homeassistant.const import CONF_NAME
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(
{
@ -38,9 +38,9 @@ class GiosFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
websession = async_get_clientsession(self.hass)
with timeout(30):
with timeout(API_TIMEOUT):
gios = Gios(user_input[CONF_STATION_ID], websession)
await gios.update()
await gios.async_update()
return self.async_create_entry(
title=user_input[CONF_STATION_ID],

View file

@ -1,6 +1,17 @@
"""Constants for GIOS integration."""
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"
CONF_STATION_ID = "station_id"
DEFAULT_NAME = "GIOŚ"
@ -9,6 +20,16 @@ SCAN_INTERVAL = timedelta(minutes=30)
DOMAIN = "gios"
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_MODERATE = "umiarkowany"
AQI_POOR = "dostateczny"
@ -22,3 +43,12 @@ ICONS_MAP = {
AQI_POOR: "mdi:emoticon-sad",
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,
}

View file

@ -3,7 +3,7 @@
"name": "GIO\u015a",
"documentation": "https://www.home-assistant.io/integrations/gios",
"codeowners": ["@bieniu"],
"requirements": ["gios==0.2.1"],
"requirements": ["gios==1.0.1"],
"config_flow": true,
"quality_scale": "platinum",
"iot_class": "cloud_polling"

View file

@ -657,7 +657,7 @@ georss_qld_bushfire_alert_client==0.3
getmac==0.8.2
# homeassistant.components.gios
gios==0.2.1
gios==1.0.1
# homeassistant.components.gitter
gitterpy==0.1.7

View file

@ -360,7 +360,7 @@ georss_qld_bushfire_alert_client==0.3
getmac==0.8.2
# homeassistant.components.gios
gios==0.2.1
gios==1.0.1
# homeassistant.components.glances
glances_api==0.2.0

View file

@ -26,8 +26,8 @@ async def init_integration(hass, incomplete_data=False) -> MockConfigEntry:
sensors = json.loads(load_fixture("gios/sensors.json"))
if incomplete_data:
indexes["stIndexLevel"]["indexLevelName"] = "foo"
sensors["PM10"]["values"][0]["value"] = None
sensors["PM10"]["values"][1]["value"] = None
sensors["pm10"]["values"][0]["value"] = None
sensors["pm10"]["values"][1]["value"] = None
with patch(
"homeassistant.components.gios.Gios._get_stations", return_value=STATIONS

View file

@ -1,47 +1,47 @@
{
"SO2": {
"so2": {
"values": [
{ "date": "2020-07-31 15:00:00", "value": 4.35478 },
{ "date": "2020-07-31 14:00:00", "value": 4.25478 },
{ "date": "2020-07-31 13:00:00", "value": 4.34309 }
]
},
"C6H6": {
"c6h6": {
"values": [
{ "date": "2020-07-31 15:00:00", "value": 0.23789 },
{ "date": "2020-07-31 14:00:00", "value": 0.22789 },
{ "date": "2020-07-31 13:00:00", "value": 0.21315 }
]
},
"CO": {
"co": {
"values": [
{ "date": "2020-07-31 15:00:00", "value": 251.874 },
{ "date": "2020-07-31 14:00:00", "value": 250.874 },
{ "date": "2020-07-31 13:00:00", "value": 251.097 }
]
},
"NO2": {
"no2": {
"values": [
{ "date": "2020-07-31 15:00:00", "value": 7.13411 },
{ "date": "2020-07-31 14:00:00", "value": 7.33411 },
{ "date": "2020-07-31 13:00:00", "value": 9.32578 }
]
},
"O3": {
"o3": {
"values": [
{ "date": "2020-07-31 15:00:00", "value": 95.7768 },
{ "date": "2020-07-31 14:00:00", "value": 93.7768 },
{ "date": "2020-07-31 13:00:00", "value": 89.4232 }
]
},
"PM2.5": {
"pm2.5": {
"values": [
{ "date": "2020-07-31 15:00:00", "value": 4 },
{ "date": "2020-07-31 14:00:00", "value": 4 },
{ "date": "2020-07-31 13:00:00", "value": 5 }
]
},
"PM10": {
"pm10": {
"values": [
{ "date": "2020-07-31 15:00:00", "value": 16.8344 },
{ "date": "2020-07-31 14:00:00", "value": 17.8344 },