Add measurement unit and state_class to sensors in pyLoad (#120551)

This commit is contained in:
Mr. Bubbles 2024-06-26 14:14:48 +02:00 committed by GitHub
parent 69e0227682
commit f5ff19d602
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 82 additions and 24 deletions

View File

@ -10,3 +10,5 @@ ISSUE_PLACEHOLDER = {"url": "/config/integrations/dashboard/add?domain=pyload"}
MANUFACTURER = "pyLoad Team"
SERVICE_NAME = "pyLoad"
UNIT_DOWNLOADS = "downloads"

View File

@ -11,6 +11,7 @@ from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntity,
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import SOURCE_IMPORT
from homeassistant.const import (
@ -42,6 +43,7 @@ from .const import (
ISSUE_PLACEHOLDER,
MANUFACTURER,
SERVICE_NAME,
UNIT_DOWNLOADS,
)
from .coordinator import PyLoadCoordinator
@ -68,14 +70,20 @@ SENSOR_DESCRIPTIONS: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=PyLoadSensorEntity.ACTIVE,
translation_key=PyLoadSensorEntity.ACTIVE,
native_unit_of_measurement=UNIT_DOWNLOADS,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=PyLoadSensorEntity.QUEUE,
translation_key=PyLoadSensorEntity.QUEUE,
native_unit_of_measurement=UNIT_DOWNLOADS,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=PyLoadSensorEntity.TOTAL,
translation_key=PyLoadSensorEntity.TOTAL,
native_unit_of_measurement=UNIT_DOWNLOADS,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=PyLoadSensorEntity.FREE_SPACE,

View File

@ -4,7 +4,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -29,13 +31,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.ACTIVE: 'active'>,
'unique_id': 'XXXXXXXXXXXXXX_active',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[CannotConnect][sensor.pyload_active_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Active downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_active_downloads',
@ -50,7 +54,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -75,13 +81,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.QUEUE: 'queue'>,
'unique_id': 'XXXXXXXXXXXXXX_queue',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[CannotConnect][sensor.pyload_downloads_in_queue-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Downloads in queue',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_downloads_in_queue',
@ -96,7 +104,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -121,13 +131,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.TOTAL: 'total'>,
'unique_id': 'XXXXXXXXXXXXXX_total',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[CannotConnect][sensor.pyload_finished_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Finished downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_finished_downloads',
@ -250,7 +262,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -275,13 +289,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.ACTIVE: 'active'>,
'unique_id': 'XXXXXXXXXXXXXX_active',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[InvalidAuth][sensor.pyload_active_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Active downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_active_downloads',
@ -296,7 +312,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -321,13 +339,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.QUEUE: 'queue'>,
'unique_id': 'XXXXXXXXXXXXXX_queue',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[InvalidAuth][sensor.pyload_downloads_in_queue-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Downloads in queue',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_downloads_in_queue',
@ -342,7 +362,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -367,13 +389,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.TOTAL: 'total'>,
'unique_id': 'XXXXXXXXXXXXXX_total',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[InvalidAuth][sensor.pyload_finished_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Finished downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_finished_downloads',
@ -496,7 +520,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -521,13 +547,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.ACTIVE: 'active'>,
'unique_id': 'XXXXXXXXXXXXXX_active',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[ParserError][sensor.pyload_active_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Active downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_active_downloads',
@ -542,7 +570,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -567,13 +597,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.QUEUE: 'queue'>,
'unique_id': 'XXXXXXXXXXXXXX_queue',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[ParserError][sensor.pyload_downloads_in_queue-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Downloads in queue',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_downloads_in_queue',
@ -588,7 +620,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -613,13 +647,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.TOTAL: 'total'>,
'unique_id': 'XXXXXXXXXXXXXX_total',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_sensor_update_exceptions[ParserError][sensor.pyload_finished_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Finished downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_finished_downloads',
@ -742,7 +778,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -767,13 +805,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.ACTIVE: 'active'>,
'unique_id': 'XXXXXXXXXXXXXX_active',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_setup[sensor.pyload_active_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Active downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_active_downloads',
@ -788,7 +828,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -813,13 +855,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.QUEUE: 'queue'>,
'unique_id': 'XXXXXXXXXXXXXX_queue',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_setup[sensor.pyload_downloads_in_queue-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Downloads in queue',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_downloads_in_queue',
@ -834,7 +878,9 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
@ -859,13 +905,15 @@
'supported_features': 0,
'translation_key': <PyLoadSensorEntity.TOTAL: 'total'>,
'unique_id': 'XXXXXXXXXXXXXX_total',
'unit_of_measurement': None,
'unit_of_measurement': 'downloads',
})
# ---
# name: test_setup[sensor.pyload_finished_downloads-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'pyLoad Finished downloads',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'downloads',
}),
'context': <ANY>,
'entity_id': 'sensor.pyload_finished_downloads',