mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +00:00
Add entity translations to Environment Canada (#95295)
This commit is contained in:
parent
9b1b0937eb
commit
2872b6cf61
@ -42,7 +42,7 @@ class ECCamera(CoordinatorEntity, Camera):
|
||||
"""Implementation of an Environment Canada radar camera."""
|
||||
|
||||
_attr_has_entity_name = True
|
||||
_attr_name = "Radar"
|
||||
_attr_translation_key = "radar"
|
||||
|
||||
def __init__(self, coordinator):
|
||||
"""Initialize the camera."""
|
||||
|
@ -52,12 +52,12 @@ class ECSensorEntityDescription(
|
||||
SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
ECSensorEntityDescription(
|
||||
key="condition",
|
||||
name="Current condition",
|
||||
translation_key="condition",
|
||||
value_fn=lambda data: data.conditions.get("condition", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="dewpoint",
|
||||
name="Dew point",
|
||||
translation_key="dewpoint",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -65,7 +65,7 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="high_temp",
|
||||
name="High temperature",
|
||||
translation_key="high_temp",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -73,7 +73,7 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="humidex",
|
||||
name="Humidex",
|
||||
translation_key="humidex",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -81,7 +81,6 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="humidity",
|
||||
name="Humidity",
|
||||
device_class=SensorDeviceClass.HUMIDITY,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -89,11 +88,13 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="icon_code",
|
||||
translation_key="icon_code",
|
||||
name="Icon code",
|
||||
value_fn=lambda data: data.conditions.get("icon_code", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="low_temp",
|
||||
translation_key="low_temp",
|
||||
name="Low temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
@ -102,27 +103,27 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="normal_high",
|
||||
name="Normal high temperature",
|
||||
translation_key="normal_high",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_fn=lambda data: data.conditions.get("normal_high", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="normal_low",
|
||||
name="Normal low temperature",
|
||||
translation_key="normal_low",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_fn=lambda data: data.conditions.get("normal_low", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="pop",
|
||||
name="Chance of precipitation",
|
||||
translation_key="pop",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
value_fn=lambda data: data.conditions.get("pop", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="precip_yesterday",
|
||||
name="Precipitation yesterday",
|
||||
translation_key="precip_yesterday",
|
||||
device_class=SensorDeviceClass.PRECIPITATION,
|
||||
native_unit_of_measurement=UnitOfPrecipitationDepth.MILLIMETERS,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -130,7 +131,7 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="pressure",
|
||||
name="Barometric pressure",
|
||||
translation_key="pressure",
|
||||
device_class=SensorDeviceClass.PRESSURE,
|
||||
native_unit_of_measurement=UnitOfPressure.KPA,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -138,7 +139,6 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="temperature",
|
||||
name="Temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -146,32 +146,32 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="tendency",
|
||||
name="Tendency",
|
||||
translation_key="tendency",
|
||||
value_fn=lambda data: data.conditions.get("tendency", {}).get("value"),
|
||||
transform=lambda val: str(val).capitalize(),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="text_summary",
|
||||
name="Summary",
|
||||
translation_key="text_summary",
|
||||
value_fn=lambda data: data.conditions.get("text_summary", {}).get("value"),
|
||||
transform=lambda val: val[:255],
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="timestamp",
|
||||
name="Observation time",
|
||||
translation_key="timestamp",
|
||||
device_class=SensorDeviceClass.TIMESTAMP,
|
||||
value_fn=lambda data: data.metadata.get("timestamp"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="uv_index",
|
||||
name="UV index",
|
||||
translation_key="uv_index",
|
||||
native_unit_of_measurement=UV_INDEX,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
value_fn=lambda data: data.conditions.get("uv_index", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="visibility",
|
||||
name="Visibility",
|
||||
translation_key="visibility",
|
||||
native_unit_of_measurement=UnitOfLength.KILOMETERS,
|
||||
device_class=SensorDeviceClass.DISTANCE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -179,13 +179,13 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="wind_bearing",
|
||||
name="Wind bearing",
|
||||
translation_key="wind_bearing",
|
||||
native_unit_of_measurement=DEGREE,
|
||||
value_fn=lambda data: data.conditions.get("wind_bearing", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="wind_chill",
|
||||
name="Wind chill",
|
||||
translation_key="wind_chill",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -193,12 +193,12 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="wind_dir",
|
||||
name="Wind direction",
|
||||
translation_key="wind_dir",
|
||||
value_fn=lambda data: data.conditions.get("wind_dir", {}).get("value"),
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="wind_gust",
|
||||
name="Wind gust",
|
||||
translation_key="wind_gust",
|
||||
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -206,7 +206,6 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="wind_speed",
|
||||
name="Wind speed",
|
||||
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
@ -226,7 +225,7 @@ def _get_aqhi_value(data):
|
||||
|
||||
AQHI_SENSOR = ECSensorEntityDescription(
|
||||
key="aqhi",
|
||||
name="AQHI",
|
||||
translation_key="aqhi",
|
||||
device_class=SensorDeviceClass.AQI,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
value_fn=_get_aqhi_value,
|
||||
@ -235,35 +234,35 @@ AQHI_SENSOR = ECSensorEntityDescription(
|
||||
ALERT_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
||||
ECSensorEntityDescription(
|
||||
key="advisories",
|
||||
name="Advisory",
|
||||
translation_key="advisories",
|
||||
icon="mdi:bell-alert",
|
||||
value_fn=lambda data: data.alerts.get("advisories", {}).get("value"),
|
||||
transform=len,
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="endings",
|
||||
name="Endings",
|
||||
translation_key="endings",
|
||||
icon="mdi:alert-circle-check",
|
||||
value_fn=lambda data: data.alerts.get("endings", {}).get("value"),
|
||||
transform=len,
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="statements",
|
||||
name="Statements",
|
||||
translation_key="statements",
|
||||
icon="mdi:bell-alert",
|
||||
value_fn=lambda data: data.alerts.get("statements", {}).get("value"),
|
||||
transform=len,
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="warnings",
|
||||
name="Warnings",
|
||||
translation_key="warnings",
|
||||
icon="mdi:alert-octagon",
|
||||
value_fn=lambda data: data.alerts.get("warnings", {}).get("value"),
|
||||
transform=len,
|
||||
),
|
||||
ECSensorEntityDescription(
|
||||
key="watches",
|
||||
name="Watches",
|
||||
translation_key="watches",
|
||||
icon="mdi:alert",
|
||||
value_fn=lambda data: data.alerts.get("watches", {}).get("value"),
|
||||
transform=len,
|
||||
|
@ -22,5 +22,100 @@
|
||||
"too_many_attempts": "Connections to Environment Canada are rate limited; Try again in 60 seconds",
|
||||
"unknown": "[%key:common::config_flow::error::unknown%]"
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"condition": {
|
||||
"name": "Current condition"
|
||||
},
|
||||
"dewpoint": {
|
||||
"name": "Dew point"
|
||||
},
|
||||
"high_temp": {
|
||||
"name": "High temperature"
|
||||
},
|
||||
"humidex": {
|
||||
"name": "Humidex"
|
||||
},
|
||||
"icon_code": {
|
||||
"name": "Icon code"
|
||||
},
|
||||
"low_temp": {
|
||||
"name": "Low temperature"
|
||||
},
|
||||
"normal_high": {
|
||||
"name": "Normal high temperature"
|
||||
},
|
||||
"normal_low": {
|
||||
"name": "Normal low temperature"
|
||||
},
|
||||
"pop": {
|
||||
"name": "Chance of precipitation"
|
||||
},
|
||||
"precip_yesterday": {
|
||||
"name": "Precipitation yesterday"
|
||||
},
|
||||
"pressure": {
|
||||
"name": "Barometric pressure"
|
||||
},
|
||||
"tendency": {
|
||||
"name": "Tendency"
|
||||
},
|
||||
"text_summary": {
|
||||
"name": "Summary"
|
||||
},
|
||||
"timestamp": {
|
||||
"name": "Observation time"
|
||||
},
|
||||
"uv_index": {
|
||||
"name": "UV index"
|
||||
},
|
||||
"visibility": {
|
||||
"name": "Visibility"
|
||||
},
|
||||
"wind_bearing": {
|
||||
"name": "Wind bearing"
|
||||
},
|
||||
"wind_chill": {
|
||||
"name": "Wind chill"
|
||||
},
|
||||
"wind_dir": {
|
||||
"name": "Wind direction"
|
||||
},
|
||||
"wind_gust": {
|
||||
"name": "Wind gust"
|
||||
},
|
||||
"aqhi": {
|
||||
"name": "AQHI"
|
||||
},
|
||||
"advisories": {
|
||||
"name": "Advisory"
|
||||
},
|
||||
"endings": {
|
||||
"name": "Endings"
|
||||
},
|
||||
"statements": {
|
||||
"name": "Statements"
|
||||
},
|
||||
"warnings": {
|
||||
"name": "Warnings"
|
||||
},
|
||||
"watches": {
|
||||
"name": "Watches"
|
||||
}
|
||||
},
|
||||
"camera": {
|
||||
"radar": {
|
||||
"name": "Radar"
|
||||
}
|
||||
},
|
||||
"weather": {
|
||||
"hourly_forecast": {
|
||||
"name": "Hourly forecast"
|
||||
},
|
||||
"forecast": {
|
||||
"name": "Forecast"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ class ECWeather(CoordinatorEntity, WeatherEntity):
|
||||
super().__init__(coordinator)
|
||||
self.ec_data = coordinator.ec_data
|
||||
self._attr_attribution = self.ec_data.metadata["attribution"]
|
||||
self._attr_name = "Hourly forecast" if hourly else "Forecast"
|
||||
self._attr_translation_key = "hourly_forecast" if hourly else "forecast"
|
||||
self._attr_unique_id = (
|
||||
f"{coordinator.config_entry.unique_id}{'-hourly' if hourly else '-daily'}"
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user