mirror of
https://github.com/home-assistant/core.git
synced 2025-07-11 23:37:18 +00:00
Add state class MEASUREMENT_ANGLE to wind direction sensor (#141392)
* Add state class MEASUREMENT_ANGLE to wind direction sensor * Update snapshots * Add some more
This commit is contained in:
parent
dba4c197c8
commit
3aaf859985
@ -240,6 +240,7 @@ SENSOR_DESCRIPTIONS = (
|
|||||||
suggested_display_precision=0,
|
suggested_display_precision=0,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=TYPE_WINDGUSTMPH,
|
key=TYPE_WINDGUSTMPH,
|
||||||
|
@ -609,6 +609,7 @@ SENSOR_DESCRIPTIONS = (
|
|||||||
translation_key="wind_direction",
|
translation_key="wind_direction",
|
||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=TYPE_WINDDIR_AVG10M,
|
key=TYPE_WINDDIR_AVG10M,
|
||||||
|
@ -6,7 +6,11 @@ import logging
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from homeassistant.components import mqtt
|
from homeassistant.components import mqtt
|
||||||
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
|
from homeassistant.components.sensor import (
|
||||||
|
SensorDeviceClass,
|
||||||
|
SensorEntity,
|
||||||
|
SensorStateClass,
|
||||||
|
)
|
||||||
from homeassistant.const import DEGREE, UnitOfPrecipitationDepth, UnitOfTemperature
|
from homeassistant.const import DEGREE, UnitOfPrecipitationDepth, UnitOfTemperature
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -98,6 +102,7 @@ def discover_sensors(topic: str, payload: dict[str, Any]) -> list[ArwnSensor] |
|
|||||||
DEGREE,
|
DEGREE,
|
||||||
"mdi:compass",
|
"mdi:compass",
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
return None
|
return None
|
||||||
@ -178,6 +183,7 @@ class ArwnSensor(SensorEntity):
|
|||||||
units: str,
|
units: str,
|
||||||
icon: str | None = None,
|
icon: str | None = None,
|
||||||
device_class: SensorDeviceClass | None = None,
|
device_class: SensorDeviceClass | None = None,
|
||||||
|
state_class: SensorStateClass | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize the sensor."""
|
"""Initialize the sensor."""
|
||||||
self.entity_id = _slug(name)
|
self.entity_id = _slug(name)
|
||||||
@ -188,6 +194,7 @@ class ArwnSensor(SensorEntity):
|
|||||||
self._attr_native_unit_of_measurement = units
|
self._attr_native_unit_of_measurement = units
|
||||||
self._attr_icon = icon
|
self._attr_icon = icon
|
||||||
self._attr_device_class = device_class
|
self._attr_device_class = device_class
|
||||||
|
self._attr_state_class = state_class
|
||||||
|
|
||||||
def set_event(self, event: dict[str, Any]) -> None:
|
def set_event(self, event: dict[str, Any]) -> None:
|
||||||
"""Update the sensor with the most recent event."""
|
"""Update the sensor with the most recent event."""
|
||||||
|
@ -170,6 +170,7 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
icon="mdi:compass-outline",
|
icon="mdi:compass-outline",
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key="pressure",
|
key="pressure",
|
||||||
|
@ -68,6 +68,7 @@ ECOWITT_SENSORS_MAPPING: Final = {
|
|||||||
key="DEGREE",
|
key="DEGREE",
|
||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
EcoWittSensorTypes.WATT_METERS_SQUARED: SensorEntityDescription(
|
EcoWittSensorTypes.WATT_METERS_SQUARED: SensorEntityDescription(
|
||||||
key="WATT_METERS_SQUARED",
|
key="WATT_METERS_SQUARED",
|
||||||
|
@ -168,6 +168,7 @@ SENSOR_TYPES: tuple[ECSensorEntityDescription, ...] = (
|
|||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
value_fn=lambda data: data.conditions.get("wind_bearing", {}).get("value"),
|
value_fn=lambda data: data.conditions.get("wind_bearing", {}).get("value"),
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
ECSensorEntityDescription(
|
ECSensorEntityDescription(
|
||||||
key="wind_chill",
|
key="wind_chill",
|
||||||
|
@ -178,6 +178,7 @@ SENSOR_DESCRIPTIONS: dict[str, SensorEntityDescription] = {
|
|||||||
key="WIND_DIRECTION",
|
key="WIND_DIRECTION",
|
||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
"WIND_DIRECTION_RANGE": SensorEntityDescription(
|
"WIND_DIRECTION_RANGE": SensorEntityDescription(
|
||||||
key="WIND_DIRECTION_RANGE",
|
key="WIND_DIRECTION_RANGE",
|
||||||
|
@ -106,6 +106,7 @@ SENSOR_DESCRIPTIONS = {
|
|||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
suggested_display_precision=2,
|
suggested_display_precision=2,
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
"WetDry": LaCrosseSensorEntityDescription(
|
"WetDry": LaCrosseSensorEntityDescription(
|
||||||
key="WetDry",
|
key="WetDry",
|
||||||
|
@ -102,6 +102,7 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
icon="mdi:weather-windy",
|
icon="mdi:weather-windy",
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key="rain",
|
key="rain",
|
||||||
|
@ -102,6 +102,7 @@ SENSORS: dict[str, SensorEntityDescription] = {
|
|||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
icon="mdi:compass",
|
icon="mdi:compass",
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
"V_WEIGHT": SensorEntityDescription(
|
"V_WEIGHT": SensorEntityDescription(
|
||||||
key="V_WEIGHT",
|
key="V_WEIGHT",
|
||||||
|
@ -115,6 +115,7 @@ SENSOR_TYPES: tuple[NWSSensorEntityDescription, ...] = (
|
|||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
unit_convert=DEGREE,
|
unit_convert=DEGREE,
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
),
|
),
|
||||||
NWSSensorEntityDescription(
|
NWSSensorEntityDescription(
|
||||||
key="barometricPressure",
|
key="barometricPressure",
|
||||||
|
@ -268,6 +268,7 @@ SENSORS: tuple[WeatherFlowSensorEntityDescription, ...] = (
|
|||||||
key="wind_direction",
|
key="wind_direction",
|
||||||
translation_key="wind_direction",
|
translation_key="wind_direction",
|
||||||
device_class=SensorDeviceClass.WIND_DIRECTION,
|
device_class=SensorDeviceClass.WIND_DIRECTION,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT_ANGLE,
|
||||||
native_unit_of_measurement=DEGREE,
|
native_unit_of_measurement=DEGREE,
|
||||||
event_subscriptions=[EVENT_RAPID_WIND, EVENT_OBSERVATION],
|
event_subscriptions=[EVENT_RAPID_WIND, EVENT_OBSERVATION],
|
||||||
raw_data_conv_fn=lambda raw_data: raw_data.magnitude,
|
raw_data_conv_fn=lambda raw_data: raw_data.magnitude,
|
||||||
|
@ -815,7 +815,9 @@
|
|||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
'area_id': None,
|
'area_id': None,
|
||||||
'capabilities': None,
|
'capabilities': dict({
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT_ANGLE: 'measurement_angle'>,
|
||||||
|
}),
|
||||||
'config_entry_id': <ANY>,
|
'config_entry_id': <ANY>,
|
||||||
'config_subentry_id': <ANY>,
|
'config_subentry_id': <ANY>,
|
||||||
'device_class': None,
|
'device_class': None,
|
||||||
@ -854,6 +856,7 @@
|
|||||||
'device_class': 'wind_direction',
|
'device_class': 'wind_direction',
|
||||||
'friendly_name': 'Station A Wind direction',
|
'friendly_name': 'Station A Wind direction',
|
||||||
'last_measured': HAFakeDatetime(2023, 11, 8, 12, 12, 0, 914000, tzinfo=zoneinfo.ZoneInfo(key='US/Pacific')),
|
'last_measured': HAFakeDatetime(2023, 11, 8, 12, 12, 0, 914000, tzinfo=zoneinfo.ZoneInfo(key='US/Pacific')),
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT_ANGLE: 'measurement_angle'>,
|
||||||
'unit_of_measurement': '°',
|
'unit_of_measurement': '°',
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'context': <ANY>,
|
||||||
@ -1800,7 +1803,9 @@
|
|||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
'area_id': None,
|
'area_id': None,
|
||||||
'capabilities': None,
|
'capabilities': dict({
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT_ANGLE: 'measurement_angle'>,
|
||||||
|
}),
|
||||||
'config_entry_id': <ANY>,
|
'config_entry_id': <ANY>,
|
||||||
'config_subentry_id': <ANY>,
|
'config_subentry_id': <ANY>,
|
||||||
'device_class': None,
|
'device_class': None,
|
||||||
@ -1839,6 +1844,7 @@
|
|||||||
'device_class': 'wind_direction',
|
'device_class': 'wind_direction',
|
||||||
'friendly_name': 'Station C Wind direction',
|
'friendly_name': 'Station C Wind direction',
|
||||||
'last_measured': HAFakeDatetime(2024, 6, 6, 8, 28, 3, tzinfo=zoneinfo.ZoneInfo(key='US/Pacific')),
|
'last_measured': HAFakeDatetime(2024, 6, 6, 8, 28, 3, tzinfo=zoneinfo.ZoneInfo(key='US/Pacific')),
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT_ANGLE: 'measurement_angle'>,
|
||||||
'unit_of_measurement': '°',
|
'unit_of_measurement': '°',
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'context': <ANY>,
|
||||||
@ -2722,7 +2728,9 @@
|
|||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
'area_id': None,
|
'area_id': None,
|
||||||
'capabilities': None,
|
'capabilities': dict({
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT_ANGLE: 'measurement_angle'>,
|
||||||
|
}),
|
||||||
'config_entry_id': <ANY>,
|
'config_entry_id': <ANY>,
|
||||||
'config_subentry_id': <ANY>,
|
'config_subentry_id': <ANY>,
|
||||||
'device_class': None,
|
'device_class': None,
|
||||||
@ -2760,6 +2768,7 @@
|
|||||||
'attribution': 'Data provided by ambientnetwork.net',
|
'attribution': 'Data provided by ambientnetwork.net',
|
||||||
'device_class': 'wind_direction',
|
'device_class': 'wind_direction',
|
||||||
'friendly_name': 'Station D Wind direction',
|
'friendly_name': 'Station D Wind direction',
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT_ANGLE: 'measurement_angle'>,
|
||||||
'unit_of_measurement': '°',
|
'unit_of_measurement': '°',
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'context': <ANY>,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user