Home Assistant Unofficial Reference 2024.12.1
hardware.py
Go to the documentation of this file.
1 """The Hardkernel hardware platform."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.hardware.models import BoardInfo, HardwareInfo
6 from homeassistant.components.hassio import get_os_info
7 from homeassistant.core import HomeAssistant, callback
8 from homeassistant.exceptions import HomeAssistantError
9 
10 from .const import DOMAIN
11 
12 BOARD_NAMES = {
13  "odroid-c2": "Hardkernel ODROID-C2",
14  "odroid-c4": "Hardkernel ODROID-C4",
15  "odroid-m1": "Hardkernel ODROID-M1",
16  "odroid-m1s": "Hardkernel ODROID-M1S",
17  "odroid-n2": "Home Assistant Blue / Hardkernel ODROID-N2/N2+",
18  "odroid-xu4": "Hardkernel ODROID-XU4",
19 }
20 
21 
22 @callback
23 def async_info(hass: HomeAssistant) -> list[HardwareInfo]:
24  """Return board info."""
25  if (os_info := get_os_info(hass)) is None:
26  raise HomeAssistantError
27  board: str | None
28  if (board := os_info.get("board")) is None:
29  raise HomeAssistantError
30  if not board.startswith("odroid"):
31  raise HomeAssistantError
32 
33  config_entries = [
34  entry.entry_id for entry in hass.config_entries.async_entries(DOMAIN)
35  ]
36 
37  return [
39  board=BoardInfo(
40  hassio_board_id=board,
41  manufacturer=DOMAIN,
42  model=board,
43  revision=None,
44  ),
45  config_entries=config_entries,
46  dongle=None,
47  name=BOARD_NAMES.get(board, f"Unknown hardkernel Odroid model '{board}'"),
48  url=None,
49  )
50  ]
list[HardwareInfo] async_info(HomeAssistant hass)
Definition: hardware.py:23
dict[str, Any]|None get_os_info(HomeAssistant hass)
Definition: coordinator.py:169