From 11cbf1152d510127aedfb233150200e58b430bcc Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 16 Jan 2021 13:26:32 -1000 Subject: [PATCH] Add dhcp discovery properties to mikrotik (#45205) --- .../components/mikrotik/device_tracker.py | 15 +++++++++++++++ homeassistant/components/mikrotik/hub.py | 5 +++++ tests/components/mikrotik/test_device_tracker.py | 6 ++++++ 3 files changed, 26 insertions(+) diff --git a/homeassistant/components/mikrotik/device_tracker.py b/homeassistant/components/mikrotik/device_tracker.py index 01075a5f2d8..3ab2b981b7f 100644 --- a/homeassistant/components/mikrotik/device_tracker.py +++ b/homeassistant/components/mikrotik/device_tracker.py @@ -93,6 +93,21 @@ class MikrotikHubTracker(ScannerEntity): """Return the name of the client.""" return self.device.name + @property + def hostname(self) -> str: + """Return the hostname of the client.""" + return self.device.name + + @property + def mac_address(self) -> str: + """Return the mac address of the client.""" + return self.device.mac + + @property + def ip_address(self) -> str: + """Return the mac address of the client.""" + return self.device.ip_address + @property def unique_id(self) -> str: """Return a unique identifier for this device.""" diff --git a/homeassistant/components/mikrotik/hub.py b/homeassistant/components/mikrotik/hub.py index 4136377fde9..28a78d0ee1a 100644 --- a/homeassistant/components/mikrotik/hub.py +++ b/homeassistant/components/mikrotik/hub.py @@ -54,6 +54,11 @@ class Device: """Return device name.""" return self._params.get("host-name", self.mac) + @property + def ip_address(self): + """Return device primary ip address.""" + return self._params.get("address") + @property def mac(self): """Return device mac.""" diff --git a/tests/components/mikrotik/test_device_tracker.py b/tests/components/mikrotik/test_device_tracker.py index 4e8ea93ab30..3aa1ba66992 100644 --- a/tests/components/mikrotik/test_device_tracker.py +++ b/tests/components/mikrotik/test_device_tracker.py @@ -48,6 +48,9 @@ async def test_device_trackers(hass, legacy_patchable_time): device_1 = hass.states.get("device_tracker.device_1") assert device_1 is not None assert device_1.state == "home" + assert device_1.attributes["ip"] == "0.0.0.1" + assert device_1.attributes["mac"] == "00:00:00:00:00:01" + assert device_1.attributes["host_name"] == "Device_1" device_2 = hass.states.get("device_tracker.device_2") assert device_2 is None @@ -61,6 +64,9 @@ async def test_device_trackers(hass, legacy_patchable_time): device_2 = hass.states.get("device_tracker.device_2") assert device_2 is not None assert device_2.state == "home" + assert device_2.attributes["ip"] == "0.0.0.2" + assert device_2.attributes["mac"] == "00:00:00:00:00:02" + assert device_2.attributes["host_name"] == "Device_2" # test state remains home if last_seen consider_home_interval del WIRELESS_DATA[1] # device 2 is removed from wireless list