Home Assistant Unofficial Reference 2024.12.1
device.py
Go to the documentation of this file.
1 """Network client device class."""
2 
3 from __future__ import annotations
4 
5 from datetime import datetime
6 from typing import Any
7 
8 from homeassistant.util import slugify
9 import homeassistant.util.dt as dt_util
10 
11 from .const import ATTR_DEVICE_TRACKER
12 
13 
14 class Device:
15  """Represents a network device."""
16 
17  def __init__(self, mac: str, params: dict[str, Any]) -> None:
18  """Initialize the network device."""
19  self._mac_mac = mac
20  self._params_params = params
21  self._last_seen_last_seen: datetime | None = None
22  self._attrs: dict[str, Any] = {}
23  self._wireless_params_wireless_params: dict[str, Any] = {}
24 
25  @property
26  def name(self) -> str:
27  """Return device name."""
28  return str(self._params_params.get("host-name", self.macmac))
29 
30  @property
31  def ip_address(self) -> str | None:
32  """Return device primary ip address."""
33  return self._params_params.get("address")
34 
35  @property
36  def mac(self) -> str:
37  """Return device mac."""
38  return self._mac_mac
39 
40  @property
41  def last_seen(self) -> datetime | None:
42  """Return device last seen."""
43  return self._last_seen_last_seen
44 
45  @property
46  def attrs(self) -> dict[str, Any]:
47  """Return device attributes."""
48  attr_data = self._wireless_params_wireless_params | self._params_params
49  for attr in ATTR_DEVICE_TRACKER:
50  if attr in attr_data:
51  self._attrs[slugify(attr)] = attr_data[attr]
52  return self._attrs
53 
54  def update(
55  self,
56  wireless_params: dict[str, Any] | None = None,
57  params: dict[str, Any] | None = None,
58  active: bool = False,
59  ) -> None:
60  """Update Device params."""
61  if wireless_params:
62  self._wireless_params_wireless_params = wireless_params
63  if params:
64  self._params_params = params
65  if active:
66  self._last_seen_last_seen = dt_util.utcnow()
None __init__(self, str mac, dict[str, Any] params)
Definition: device.py:17
None update(self, dict[str, Any]|None wireless_params=None, dict[str, Any]|None params=None, bool active=False)
Definition: device.py:59
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88