Add model_id and serial_number to onewire device info (#135279)

This commit is contained in:
epenet 2025-01-10 11:18:50 +01:00 committed by GitHub
parent ad84490541
commit b5971ec55d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 48 additions and 71 deletions

View File

@ -8,15 +8,7 @@ import os
from pyownet import protocol
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
ATTR_IDENTIFIERS,
ATTR_MANUFACTURER,
ATTR_MODEL,
ATTR_NAME,
ATTR_VIA_DEVICE,
CONF_HOST,
CONF_PORT,
)
from homeassistant.const import ATTR_VIA_DEVICE, CONF_HOST, CONF_PORT
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.device_registry import DeviceInfo
@ -80,14 +72,9 @@ class OneWireHub:
# Populate the device registry
device_registry = dr.async_get(self._hass)
for device in self.devices:
device_info = device.device_info
device_registry.async_get_or_create(
config_entry_id=self._config_entry.entry_id,
identifiers=device_info[ATTR_IDENTIFIERS],
manufacturer=device_info[ATTR_MANUFACTURER],
model=device_info[ATTR_MODEL],
name=device_info[ATTR_NAME],
via_device=device_info.get(ATTR_VIA_DEVICE),
**device.device_info,
)
@ -113,7 +100,9 @@ def _discover_devices(
identifiers={(DOMAIN, device_id)},
manufacturer=DEVICE_MANUFACTURER.get(device_family, MANUFACTURER_MAXIM),
model=device_type,
model_id=device_type,
name=device_id,
serial_number=device_id[3:],
)
if parent_id:
device_info[ATTR_VIA_DEVICE] = (DOMAIN, parent_id)

View File

@ -12,7 +12,9 @@
]),
'manufacturer': 'Hobby Boards',
'model': 'HB_HUB',
'model_id': 'HB_HUB',
'name': 'EF.111111111113',
'serial_number': '111111111113',
}),
'family': 'EF',
'id': 'EF.111111111113',

View File

@ -21,11 +21,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2405',
'model_id': None,
'model_id': 'DS2405',
'name': '05.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -53,11 +53,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS18S20',
'model_id': None,
'model_id': 'DS18S20',
'name': '10.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -85,11 +85,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2406',
'model_id': None,
'model_id': 'DS2406',
'name': '12.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -117,11 +117,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2423',
'model_id': None,
'model_id': 'DS2423',
'name': '1D.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': <ANY>,
@ -149,11 +149,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2409',
'model_id': None,
'model_id': 'DS2409',
'name': '1F.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -181,11 +181,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS1822',
'model_id': None,
'model_id': 'DS1822',
'name': '22.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -213,11 +213,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2438',
'model_id': None,
'model_id': 'DS2438',
'name': '26.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -245,11 +245,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS18B20',
'model_id': None,
'model_id': 'DS18B20',
'name': '28.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -277,11 +277,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS18B20',
'model_id': None,
'model_id': 'DS18B20',
'name': '28.222222222222',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '222222222222',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -309,11 +309,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS18B20',
'model_id': None,
'model_id': 'DS18B20',
'name': '28.222222222223',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '222222222223',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -341,11 +341,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2408',
'model_id': None,
'model_id': 'DS2408',
'name': '29.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -373,11 +373,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2760',
'model_id': None,
'model_id': 'DS2760',
'name': '30.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -405,11 +405,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2413',
'model_id': None,
'model_id': 'DS2413',
'name': '3A.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -437,11 +437,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS1825',
'model_id': None,
'model_id': 'DS1825',
'name': '3B.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -469,11 +469,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS28EA00',
'model_id': None,
'model_id': 'DS28EA00',
'name': '42.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -501,11 +501,11 @@
}),
'manufacturer': 'Embedded Data Systems',
'model': 'EDS0068',
'model_id': None,
'model_id': 'EDS0068',
'name': '7E.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -533,11 +533,11 @@
}),
'manufacturer': 'Embedded Data Systems',
'model': 'EDS0066',
'model_id': None,
'model_id': 'EDS0066',
'name': '7E.222222222222',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '222222222222',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -565,11 +565,11 @@
}),
'manufacturer': 'Maxim Integrated',
'model': 'DS2438',
'model_id': None,
'model_id': 'DS2438',
'name': 'A6.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -597,11 +597,11 @@
}),
'manufacturer': 'Hobby Boards',
'model': 'HobbyBoards_EF',
'model_id': None,
'model_id': 'HobbyBoards_EF',
'name': 'EF.111111111111',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111111',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -629,11 +629,11 @@
}),
'manufacturer': 'Hobby Boards',
'model': 'HB_MOISTURE_METER',
'model_id': None,
'model_id': 'HB_MOISTURE_METER',
'name': 'EF.111111111112',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111112',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,
@ -661,11 +661,11 @@
}),
'manufacturer': 'Hobby Boards',
'model': 'HB_HUB',
'model_id': None,
'model_id': 'HB_HUB',
'name': 'EF.111111111113',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'serial_number': '111111111113',
'suggested_area': None,
'sw_version': None,
'via_device_id': None,

View File

@ -23,20 +23,6 @@ def override_platforms() -> Generator[None]:
yield
DEVICE_DETAILS = {
"device_info": {
"identifiers": [["onewire", "EF.111111111113"]],
"manufacturer": "Hobby Boards",
"model": "HB_HUB",
"name": "EF.111111111113",
},
"family": "EF",
"id": "EF.111111111113",
"path": "/EF.111111111113/",
"type": "HB_HUB",
}
@pytest.mark.parametrize("device_id", ["EF.111111111113"], indirect=True)
async def test_entry_diagnostics(
hass: HomeAssistant,