Home Assistant Unofficial Reference 2024.12.1
hardware.py
Go to the documentation of this file.
1 """The Raspberry Pi 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  "rpi": "Raspberry Pi",
14  "rpi0": "Raspberry Pi Zero",
15  "rpi0-w": "Raspberry Pi Zero W",
16  "rpi2": "Raspberry Pi 2",
17  "rpi3": "Raspberry Pi 3 (32-bit)",
18  "rpi3-64": "Raspberry Pi 3",
19  "rpi4": "Raspberry Pi 4 (32-bit)",
20  "rpi4-64": "Raspberry Pi 4",
21  "rpi5-64": "Raspberry Pi 5",
22 }
23 
24 MODELS = {
25  "rpi": "1",
26  "rpi0": "zero",
27  "rpi0-w": "zero_w",
28  "rpi2": "2",
29  "rpi3": "3",
30  "rpi3-64": "3",
31  "rpi4": "4",
32  "rpi4-64": "4",
33  "rpi5-64": "5",
34 }
35 
36 
37 @callback
38 def async_info(hass: HomeAssistant) -> list[HardwareInfo]:
39  """Return board info."""
40  if (os_info := get_os_info(hass)) is None:
41  raise HomeAssistantError
42  board: str | None
43  if (board := os_info.get("board")) is None:
44  raise HomeAssistantError
45  if not board.startswith("rpi"):
46  raise HomeAssistantError
47 
48  config_entries = [
49  entry.entry_id for entry in hass.config_entries.async_entries(DOMAIN)
50  ]
51 
52  return [
54  board=BoardInfo(
55  hassio_board_id=board,
56  manufacturer=DOMAIN,
57  model=MODELS.get(board),
58  revision=None,
59  ),
60  config_entries=config_entries,
61  dongle=None,
62  name=BOARD_NAMES.get(board, f"Unknown Raspberry Pi model '{board}'"),
63  url=None,
64  )
65  ]
dict[str, Any]|None get_os_info(HomeAssistant hass)
Definition: coordinator.py:169
list[HardwareInfo] async_info(HomeAssistant hass)
Definition: hardware.py:38