mirror of
https://github.com/tomaae/homeassistant-mikrotik_router.git
synced 2025-07-13 19:04:30 +02:00
Resolve device manufacturer for tracked devices #67
This commit is contained in:
parent
0976f880a1
commit
5e7ae94cea
4 changed files with 30 additions and 7 deletions
|
@ -391,10 +391,12 @@ class MikrotikControllerHostDeviceTracker(MikrotikControllerDeviceTracker):
|
|||
"connections": {
|
||||
(CONNECTION_NETWORK_MAC, self._data[self._sid_data["sid_ref"]])
|
||||
},
|
||||
# "manufacturer": self._ctrl.data["resource"]["platform"],
|
||||
# "model": self._ctrl.data["resource"]["board-name"],
|
||||
"default_name": self._data[self._sid_data["sid_name"]],
|
||||
}
|
||||
if self._data["manufacturer"] != "":
|
||||
info["manufacturer"] = self._data["manufacturer"]
|
||||
|
||||
if self._sid_data["sid"] == "interface":
|
||||
info["name"] = f"{self._inst} {self._data[self._sid_data['sid_name']]}"
|
||||
|
||||
return info
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
"documentation": "https://github.com/tomaae/homeassistant-mikrotik_router",
|
||||
"dependencies": [],
|
||||
"requirements": [
|
||||
"librouteros==3.0.0"
|
||||
"librouteros==3.0.0",
|
||||
"mac-vendor-lookup==0.1.11"
|
||||
],
|
||||
"codeowners": [
|
||||
"@tomaae"
|
||||
|
|
|
@ -5,6 +5,7 @@ import asyncio
|
|||
import logging
|
||||
from datetime import timedelta
|
||||
from ipaddress import ip_address, IPv4Network
|
||||
from mac_vendor_lookup import AsyncMacLookup
|
||||
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||
|
@ -110,6 +111,9 @@ class MikrotikControllerData:
|
|||
self._force_fwupdate_check_callback = None
|
||||
self._async_ping_tracked_hosts_callback = None
|
||||
|
||||
self.async_mac_lookup = AsyncMacLookup()
|
||||
# self.async_mac_lookup.update_vendors()
|
||||
|
||||
async def async_init(self):
|
||||
self._force_update_callback = async_track_time_interval(
|
||||
self.hass, self.force_update, self.option_scan_interval
|
||||
|
@ -686,7 +690,7 @@ class MikrotikControllerData:
|
|||
self.major_fw_version = int(
|
||||
self.data["routerboard"].get("firmware").split(".")[0]
|
||||
)
|
||||
except Exception as e:
|
||||
except:
|
||||
_LOGGER.error(
|
||||
"Mikrotik %s unable to determine major FW version (%s).",
|
||||
self.host,
|
||||
|
@ -1144,10 +1148,11 @@ class MikrotikControllerData:
|
|||
"mac-address",
|
||||
"interface",
|
||||
"host-name",
|
||||
"manufacturer",
|
||||
"last-seen",
|
||||
"available",
|
||||
],
|
||||
["unknown", "unknown", "unknown", "unknown", False, False],
|
||||
["unknown", "unknown", "unknown", "unknown", "detect", False, False],
|
||||
):
|
||||
if key not in self.data["host"][uid]:
|
||||
self.data["host"][uid][key] = default
|
||||
|
@ -1224,6 +1229,20 @@ class MikrotikControllerData:
|
|||
elif self.data["host"][uid]["host-name"] == "unknown":
|
||||
self.data["host"][uid]["host-name"] = uid
|
||||
|
||||
# Resolve manufacturer
|
||||
if vals["manufacturer"] == "detect" and vals["address"] != "unknown":
|
||||
try:
|
||||
self.data["host"][uid][
|
||||
"manufacturer"
|
||||
] = await self.async_mac_lookup.lookup(vals["mac-address"])
|
||||
print(
|
||||
"MAC address {} is assigned to {}".format(
|
||||
vals["mac-address"], self.data["host"][uid]["manufacturer"]
|
||||
)
|
||||
)
|
||||
except:
|
||||
self.data["host"][uid]["manufacturer"] = ""
|
||||
|
||||
# ---------------------------
|
||||
# process_accounting
|
||||
# ---------------------------
|
||||
|
|
|
@ -432,10 +432,11 @@ class MikrotikAccountingSensor(MikrotikControllerSensor):
|
|||
"""Return a accounting description for device registry."""
|
||||
info = {
|
||||
"connections": {(CONNECTION_NETWORK_MAC, self._data["mac-address"])},
|
||||
# "manufacturer": self._ctrl.data["resource"]["platform"],
|
||||
# "model": self._ctrl.data["resource"]["board-name"],
|
||||
"default_name": self._data["host-name"],
|
||||
}
|
||||
if self._data["manufacturer"] != "":
|
||||
info["manufacturer"] = self._data["manufacturer"]
|
||||
|
||||
return info
|
||||
|
||||
@property
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue