Add ATTR_MODEL to DeviceInfo for Aranet (#134307)

* add ATTR_MODEL to DeviceInfo

* add tests for device context

* Upstream change type.name --> type.model

* fix test to represent model names
This commit is contained in:
Lucas Gasenzer 2025-01-05 15:16:12 +01:00 committed by GitHub
parent 32b7b5aa66
commit f0a1a6c2ad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 55 additions and 4 deletions

View File

@ -22,6 +22,7 @@ from homeassistant.components.sensor import (
)
from homeassistant.const import (
ATTR_MANUFACTURER,
ATTR_MODEL,
ATTR_NAME,
ATTR_SW_VERSION,
CONCENTRATION_PARTS_PER_MILLION,
@ -142,6 +143,7 @@ def _sensor_device_info_to_hass(
if adv.readings and adv.readings.name:
hass_device_info[ATTR_NAME] = adv.readings.name
hass_device_info[ATTR_MANUFACTURER] = ARANET_MANUFACTURER_NAME
hass_device_info[ATTR_MODEL] = adv.readings.type.model
if adv.manufacturer_data:
hass_device_info[ATTR_SW_VERSION] = str(adv.manufacturer_data.version)
return hass_device_info

View File

@ -6,6 +6,7 @@ from homeassistant.components.aranet.const import DOMAIN
from homeassistant.components.sensor import ATTR_STATE_CLASS
from homeassistant.const import ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er
from . import (
DISABLED_INTEGRATIONS_SERVICE_INFO,
@ -20,7 +21,11 @@ from tests.components.bluetooth import inject_bluetooth_service_info
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_sensors_aranet_radiation(hass: HomeAssistant) -> None:
async def test_sensors_aranet_radiation(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
) -> None:
"""Test setting up creates the sensors for Aranet Radiation device."""
entry = MockConfigEntry(
domain=DOMAIN,
@ -73,12 +78,24 @@ async def test_sensors_aranet_radiation(hass: HomeAssistant) -> None:
assert interval_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "s"
assert interval_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
# Check device context for the battery sensor
entity = entity_registry.async_get("sensor.aranet_12345_battery")
device = device_registry.async_get(entity.device_id)
assert device.name == "Aranet☢ 12345"
assert device.model == "Aranet Radiation"
assert device.sw_version == "v1.4.38"
assert device.manufacturer == "SAF Tehnika"
assert await hass.config_entries.async_unload(entry.entry_id)
await hass.async_block_till_done()
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_sensors_aranet2(hass: HomeAssistant) -> None:
async def test_sensors_aranet2(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
) -> None:
"""Test setting up creates the sensors for Aranet2 device."""
entry = MockConfigEntry(
domain=DOMAIN,
@ -122,12 +139,24 @@ async def test_sensors_aranet2(hass: HomeAssistant) -> None:
assert interval_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "s"
assert interval_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
# Check device context for the battery sensor
entity = entity_registry.async_get("sensor.aranet2_12345_battery")
device = device_registry.async_get(entity.device_id)
assert device.name == "Aranet2 12345"
assert device.model == "Aranet2"
assert device.sw_version == "v1.4.4"
assert device.manufacturer == "SAF Tehnika"
assert await hass.config_entries.async_unload(entry.entry_id)
await hass.async_block_till_done()
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_sensors_aranet4(hass: HomeAssistant) -> None:
async def test_sensors_aranet4(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
) -> None:
"""Test setting up creates the sensors for Aranet4 device."""
entry = MockConfigEntry(
domain=DOMAIN,
@ -185,12 +214,24 @@ async def test_sensors_aranet4(hass: HomeAssistant) -> None:
assert interval_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "s"
assert interval_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
# Check device context for the battery sensor
entity = entity_registry.async_get("sensor.aranet4_12345_battery")
device = device_registry.async_get(entity.device_id)
assert device.name == "Aranet4 12345"
assert device.model == "Aranet4"
assert device.sw_version == "v1.2.0"
assert device.manufacturer == "SAF Tehnika"
assert await hass.config_entries.async_unload(entry.entry_id)
await hass.async_block_till_done()
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_sensors_aranetrn(hass: HomeAssistant) -> None:
async def test_sensors_aranetrn(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
) -> None:
"""Test setting up creates the sensors for Aranet Radon device."""
entry = MockConfigEntry(
domain=DOMAIN,
@ -250,6 +291,14 @@ async def test_sensors_aranetrn(hass: HomeAssistant) -> None:
assert interval_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "s"
assert interval_sensor_attrs[ATTR_STATE_CLASS] == "measurement"
# Check device context for the battery sensor
entity = entity_registry.async_get("sensor.aranetrn_12345_battery")
device = device_registry.async_get(entity.device_id)
assert device.name == "AranetRn+ 12345"
assert device.model == "Aranet Radon Plus"
assert device.sw_version == "v1.6.4"
assert device.manufacturer == "SAF Tehnika"
assert await hass.config_entries.async_unload(entry.entry_id)
await hass.async_block_till_done()