diff --git a/homeassistant/components/airnow/const.py b/homeassistant/components/airnow/const.py index 34b1f4392bc..137c8f1efad 100644 --- a/homeassistant/components/airnow/const.py +++ b/homeassistant/components/airnow/const.py @@ -9,8 +9,9 @@ ATTR_API_CAT_DESCRIPTION = "Name" ATTR_API_O3 = "O3" ATTR_API_PM25 = "PM2.5" ATTR_API_POLLUTANT = "Pollutant" -ATTR_API_REPORT_DATE = "HourObserved" -ATTR_API_REPORT_HOUR = "DateObserved" +ATTR_API_REPORT_DATE = "DateObserved" +ATTR_API_REPORT_HOUR = "HourObserved" +ATTR_API_REPORT_TZ = "LocalTimeZone" ATTR_API_STATE = "StateCode" ATTR_API_STATION = "ReportingArea" ATTR_API_STATION_LATITUDE = "Latitude" diff --git a/homeassistant/components/airnow/coordinator.py b/homeassistant/components/airnow/coordinator.py index 7a4ad46cd82..e89afc2f7ce 100644 --- a/homeassistant/components/airnow/coordinator.py +++ b/homeassistant/components/airnow/coordinator.py @@ -20,6 +20,7 @@ from .const import ( ATTR_API_POLLUTANT, ATTR_API_REPORT_DATE, ATTR_API_REPORT_HOUR, + ATTR_API_REPORT_TZ, ATTR_API_STATE, ATTR_API_STATION, ATTR_API_STATION_LATITUDE, @@ -83,6 +84,7 @@ class AirNowDataUpdateCoordinator(DataUpdateCoordinator): # Copy Report Details data[ATTR_API_REPORT_DATE] = obv[ATTR_API_REPORT_DATE] data[ATTR_API_REPORT_HOUR] = obv[ATTR_API_REPORT_HOUR] + data[ATTR_API_REPORT_TZ] = obv[ATTR_API_REPORT_TZ] # Copy Station Details data[ATTR_API_STATE] = obv[ATTR_API_STATE] diff --git a/homeassistant/components/airnow/sensor.py b/homeassistant/components/airnow/sensor.py index c83232c273a..f9d35d50810 100644 --- a/homeassistant/components/airnow/sensor.py +++ b/homeassistant/components/airnow/sensor.py @@ -3,6 +3,7 @@ from __future__ import annotations from collections.abc import Callable from dataclasses import dataclass +from datetime import datetime from typing import Any from homeassistant.components.sensor import ( @@ -13,6 +14,7 @@ from homeassistant.components.sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( + ATTR_TIME, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_PARTS_PER_MILLION, ) @@ -21,6 +23,7 @@ from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType from homeassistant.helpers.update_coordinator import CoordinatorEntity +from homeassistant.util.dt import get_time_zone from . import AirNowDataUpdateCoordinator from .const import ( @@ -29,6 +32,9 @@ from .const import ( ATTR_API_AQI_LEVEL, ATTR_API_O3, ATTR_API_PM25, + ATTR_API_REPORT_DATE, + ATTR_API_REPORT_HOUR, + ATTR_API_REPORT_TZ, ATTR_API_STATION, ATTR_API_STATION_LATITUDE, ATTR_API_STATION_LONGITUDE, @@ -78,6 +84,12 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = ( extra_state_attributes_fn=lambda data: { ATTR_DESCR: data[ATTR_API_AQI_DESCRIPTION], ATTR_LEVEL: data[ATTR_API_AQI_LEVEL], + ATTR_TIME: datetime.strptime( + f"{data[ATTR_API_REPORT_DATE]} {data[ATTR_API_REPORT_HOUR]}", + "%Y-%m-%d %H", + ) + .replace(tzinfo=get_time_zone(data[ATTR_API_REPORT_TZ])) + .isoformat(), }, ), AirNowEntityDescription( diff --git a/tests/components/airnow/snapshots/test_diagnostics.ambr b/tests/components/airnow/snapshots/test_diagnostics.ambr index 8041cb55692..80c6de427ca 100644 --- a/tests/components/airnow/snapshots/test_diagnostics.ambr +++ b/tests/components/airnow/snapshots/test_diagnostics.ambr @@ -8,6 +8,7 @@ 'DateObserved': '2020-12-20', 'HourObserved': 15, 'Latitude': '**REDACTED**', + 'LocalTimeZone': 'PST', 'Longitude': '**REDACTED**', 'O3': 0.048, 'PM10': 12,