mirror of
https://github.com/tomaae/homeassistant-mikrotik_router.git
synced 2025-07-10 01:14:33 +02:00
Changed modem detection from route, to dhcp client. fixes #183
This commit is contained in:
parent
c639d65332
commit
1a4479da78
1 changed files with 23 additions and 34 deletions
|
@ -108,7 +108,6 @@ class MikrotikControllerData:
|
||||||
self.data = {
|
self.data = {
|
||||||
"routerboard": {},
|
"routerboard": {},
|
||||||
"resource": {},
|
"resource": {},
|
||||||
"route": {},
|
|
||||||
"health": {},
|
"health": {},
|
||||||
"health7": {},
|
"health7": {},
|
||||||
"interface": {},
|
"interface": {},
|
||||||
|
@ -126,6 +125,7 @@ class MikrotikControllerData:
|
||||||
"queue": {},
|
"queue": {},
|
||||||
"dns": {},
|
"dns": {},
|
||||||
"dhcp-server": {},
|
"dhcp-server": {},
|
||||||
|
"dhcp-client": {},
|
||||||
"dhcp-network": {},
|
"dhcp-network": {},
|
||||||
"dhcp": {},
|
"dhcp": {},
|
||||||
"capsman_hosts": {},
|
"capsman_hosts": {},
|
||||||
|
@ -607,7 +607,7 @@ class MikrotikControllerData:
|
||||||
await self.hass.async_add_executor_job(self.get_system_health)
|
await self.hass.async_add_executor_job(self.get_system_health)
|
||||||
|
|
||||||
if self.api.connected():
|
if self.api.connected():
|
||||||
await self.hass.async_add_executor_job(self.get_route)
|
await self.hass.async_add_executor_job(self.get_dhcp_client)
|
||||||
|
|
||||||
if self.api.connected():
|
if self.api.connected():
|
||||||
await self.hass.async_add_executor_job(self.get_interface)
|
await self.hass.async_add_executor_job(self.get_interface)
|
||||||
|
@ -847,28 +847,6 @@ class MikrotikControllerData:
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
# ---------------------------
|
|
||||||
# get_route
|
|
||||||
# ---------------------------
|
|
||||||
def get_route(self):
|
|
||||||
"""Get system resources data from Mikrotik"""
|
|
||||||
self.data["route"] = parse_api(
|
|
||||||
data={},
|
|
||||||
source=self.api.query("/ip/route"),
|
|
||||||
key="dst-address",
|
|
||||||
vals=[
|
|
||||||
{"name": "dst-address"},
|
|
||||||
{"name": "gateway", "default": "unknown"},
|
|
||||||
{"name": "vrf-interface", "default": "unknown"},
|
|
||||||
{
|
|
||||||
"name": "enabled",
|
|
||||||
"source": "disabled",
|
|
||||||
"type": "bool",
|
|
||||||
"reverse": True,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# get_bridge
|
# get_bridge
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
@ -1750,13 +1728,6 @@ class MikrotikControllerData:
|
||||||
ensure_vals=[{"name": "bridge", "default": ""}],
|
ensure_vals=[{"name": "bridge", "default": ""}],
|
||||||
)
|
)
|
||||||
|
|
||||||
default_gateway = ""
|
|
||||||
if (
|
|
||||||
"0.0.0.0/0" in self.data["route"]
|
|
||||||
and self.data["route"]["0.0.0.0/0"]["vrf-interface"]
|
|
||||||
):
|
|
||||||
default_gateway = self.data["route"]["0.0.0.0/0"]["vrf-interface"]
|
|
||||||
|
|
||||||
for uid, vals in self.data["arp"].items():
|
for uid, vals in self.data["arp"].items():
|
||||||
if (
|
if (
|
||||||
vals["interface"] in self.data["bridge"]
|
vals["interface"] in self.data["bridge"]
|
||||||
|
@ -1767,11 +1738,11 @@ class MikrotikControllerData:
|
||||||
"interface"
|
"interface"
|
||||||
]
|
]
|
||||||
|
|
||||||
if default_gateway:
|
if self.data["dhcp-client"]:
|
||||||
to_remove = [
|
to_remove = [
|
||||||
uid
|
uid
|
||||||
for uid, vals in self.data["arp"].items()
|
for uid, vals in self.data["arp"].items()
|
||||||
if vals["interface"] == default_gateway
|
if vals["interface"] in self.data["dhcp-client"]
|
||||||
]
|
]
|
||||||
|
|
||||||
for uid in to_remove:
|
for uid in to_remove:
|
||||||
|
@ -1871,7 +1842,25 @@ class MikrotikControllerData:
|
||||||
data=self.data["dhcp-server"],
|
data=self.data["dhcp-server"],
|
||||||
source=self.api.query("/ip/dhcp-server"),
|
source=self.api.query("/ip/dhcp-server"),
|
||||||
key="name",
|
key="name",
|
||||||
vals=[{"name": "name"}, {"name": "interface", "default": "unknown"}],
|
vals=[
|
||||||
|
{"name": "name"},
|
||||||
|
{"name": "interface", "default": "unknown"},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# ---------------------------
|
||||||
|
# get_dhcp_client
|
||||||
|
# ---------------------------
|
||||||
|
def get_dhcp_client(self):
|
||||||
|
"""Get DHCP client data from Mikrotik"""
|
||||||
|
self.data["dhcp-client"] = parse_api(
|
||||||
|
data=self.data["dhcp-client"],
|
||||||
|
source=self.api.query("/ip/dhcp-client"),
|
||||||
|
key="interface",
|
||||||
|
vals=[
|
||||||
|
{"name": "interface", "default": "unknown"},
|
||||||
|
{"name": "status", "default": "unknown"},
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue