Skip to content

Commit 14643e6

Browse files
authored
Update device_tracker.py
Update base attributes. MAC , IP address
1 parent 632f713 commit 14643e6

File tree

1 file changed

+34
-13
lines changed

1 file changed

+34
-13
lines changed

custom_components/network_scanner/device_tracker.py

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import logging
66
from datetime import timedelta
7-
from typing import Any
7+
from typing import Any, Dict
88

99
from homeassistant.config_entries import ConfigEntry
1010
from homeassistant.core import HomeAssistant
@@ -143,22 +143,43 @@ def ip_address(self) -> str | None:
143143
def mac_address(self) -> str | None:
144144
return self._uid if ":" in self._uid and not self._uid.startswith("IP:") else None
145145

146+
146147
@property
147-
def extra_state_attributes(self) -> dict[str, Any]:
148-
dev = self._find_device() or {}
149-
deriv = dev.get("derived") or {}
150-
return {
151-
"vendor": dev.get("vendor"),
152-
"device_type": dev.get("device_type"),
153-
"network_role": dev.get("network_role"),
154-
"vlan_id": dev.get("vlan_id"),
155-
"sources": dev.get("sources"),
156-
"first_seen": dev.get("first_seen"),
157-
"last_seen": dev.get("last_seen"),
148+
def extra_state_attributes(self) -> Dict[str, Any]:
149+
# Start with whatever the base TrackerEntity would normally expose (mac/ip/source_type, etc.)
150+
base: Dict[str, Any] = {}
151+
try:
152+
base = dict(super().extra_state_attributes or {}) # type: ignore[attr-defined]
153+
except Exception:
154+
base = {}
155+
156+
d = self._find_device() or {}
157+
mac = (d.get("mac") or "").upper() or None
158+
ip = d.get("ip") or ((d.get("ips") or [None])[0])
159+
160+
deriv = d.get("derived") or {}
161+
162+
# Add/override with your integration-specific attributes
163+
base.update({
164+
# Explicitly expose MAC/IP for Lovelace tables
165+
"mac": mac,
166+
"ip": ip,
167+
# Optional aliases (handy when cards expect these names)
168+
"mac_address": mac,
169+
"ip_address": ip,
170+
171+
"vendor": d.get("vendor"),
172+
"device_type": d.get("device_type"),
173+
"network_role": d.get("network_role"),
174+
"vlan_id": d.get("vlan_id"),
175+
"sources": d.get("sources"),
176+
"first_seen": d.get("first_seen"),
177+
"last_seen": d.get("last_seen"),
158178
"derived": deriv,
159179
"directory_name": deriv.get("directory_name"),
160180
"directory_desc": deriv.get("directory_desc"),
161-
}
181+
})
182+
return base
162183

163184
@property
164185
def name(self) -> str:

0 commit comments

Comments
 (0)