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
9 changed files with 72 additions and 47 deletions
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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],
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
14
tests/fixtures/gios/sensors.json
vendored
14
tests/fixtures/gios/sensors.json
vendored
|
@ -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 },
|
||||
|
|
Loading…
Add table
Reference in a new issue