mirror of
https://github.com/tomaae/homeassistant-mikrotik_router.git
synced 2025-08-19 08:48:50 +02:00
moved update_bridge_hosts to separate function
This commit is contained in:
parent
3b5acc2393
commit
b430acc11a
1 changed files with 40 additions and 34 deletions
|
@ -1,7 +1,5 @@
|
||||||
"""Mikrotik Router integration."""
|
"""Mikrotik Router integration."""
|
||||||
|
|
||||||
from .mikrotikapi import MikrotikAPI
|
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
import logging
|
||||||
from homeassistant.exceptions import ConfigEntryNotReady
|
from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
|
@ -19,7 +17,7 @@ from .const import (
|
||||||
)
|
)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
from .mikrotikapi import MikrotikAPI
|
||||||
#DEFAULT_SCAN_INTERVAL = timedelta(seconds=DEFAULT_SCAN_INTERVAL)
|
#DEFAULT_SCAN_INTERVAL = timedelta(seconds=DEFAULT_SCAN_INTERVAL)
|
||||||
|
|
||||||
|
|
||||||
|
@ -274,37 +272,7 @@ class MikrotikControllerData():
|
||||||
self.data['arp'][uid]['address'] = entry['address'] if 'address' in entry else ""
|
self.data['arp'][uid]['address'] = entry['address'] if 'address' in entry else ""
|
||||||
|
|
||||||
if bridge_used:
|
if bridge_used:
|
||||||
data = self.api.path("/interface/bridge/host")
|
self.update_bridge_hosts()
|
||||||
for entry in data:
|
|
||||||
## Ignore port MAC
|
|
||||||
if entry['local']:
|
|
||||||
continue
|
|
||||||
|
|
||||||
## Get iface default-name from custom name
|
|
||||||
uid = None
|
|
||||||
for ifacename in self.data['interface']:
|
|
||||||
if self.data['interface'][ifacename]['name'] == entry['interface']:
|
|
||||||
uid = self.data['interface'][ifacename]['default-name']
|
|
||||||
break
|
|
||||||
|
|
||||||
if not uid:
|
|
||||||
continue
|
|
||||||
|
|
||||||
## Create uid arp dict
|
|
||||||
if uid not in self.data['arp']:
|
|
||||||
self.data['arp'][uid] = {}
|
|
||||||
|
|
||||||
## Add data
|
|
||||||
self.data['arp'][uid]['interface'] = uid
|
|
||||||
if 'mac-address' in self.data['arp'][uid]:
|
|
||||||
self.data['arp'][uid]['mac-address'] = "multiple"
|
|
||||||
self.data['arp'][uid]['address'] = "multiple"
|
|
||||||
else:
|
|
||||||
self.data['arp'][uid]['mac-address'] = entry['mac-address'] if 'mac-address' in entry else ""
|
|
||||||
self.data['arp'][uid]['address'] = ""
|
|
||||||
|
|
||||||
if self.data['arp'][uid]['address'] == "" and self.data['arp'][uid]['mac-address'] in mac2ip:
|
|
||||||
self.data['arp'][uid]['address'] = mac2ip[self.data['arp'][uid]['mac-address']]
|
|
||||||
|
|
||||||
## Map ARP to ifaces
|
## Map ARP to ifaces
|
||||||
for uid in self.data['interface']:
|
for uid in self.data['interface']:
|
||||||
|
@ -313,6 +281,44 @@ class MikrotikControllerData():
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
#---------------------------
|
||||||
|
# update_bridge_hosts
|
||||||
|
#---------------------------
|
||||||
|
def update_bridge_hosts(self):
|
||||||
|
data = self.api.path("/interface/bridge/host")
|
||||||
|
for entry in data:
|
||||||
|
## Ignore port MAC
|
||||||
|
if entry['local']:
|
||||||
|
continue
|
||||||
|
|
||||||
|
## Get iface default-name from custom name
|
||||||
|
uid = None
|
||||||
|
for ifacename in self.data['interface']:
|
||||||
|
if self.data['interface'][ifacename]['name'] == entry['interface']:
|
||||||
|
uid = self.data['interface'][ifacename]['default-name']
|
||||||
|
break
|
||||||
|
|
||||||
|
if not uid:
|
||||||
|
continue
|
||||||
|
|
||||||
|
## Create uid arp dict
|
||||||
|
if uid not in self.data['arp']:
|
||||||
|
self.data['arp'][uid] = {}
|
||||||
|
|
||||||
|
## Add data
|
||||||
|
self.data['arp'][uid]['interface'] = uid
|
||||||
|
if 'mac-address' in self.data['arp'][uid]:
|
||||||
|
self.data['arp'][uid]['mac-address'] = "multiple"
|
||||||
|
self.data['arp'][uid]['address'] = "multiple"
|
||||||
|
else:
|
||||||
|
self.data['arp'][uid]['mac-address'] = entry['mac-address'] if 'mac-address' in entry else ""
|
||||||
|
self.data['arp'][uid]['address'] = ""
|
||||||
|
|
||||||
|
if self.data['arp'][uid]['address'] == "" and self.data['arp'][uid]['mac-address'] in mac2ip:
|
||||||
|
self.data['arp'][uid]['address'] = mac2ip[self.data['arp'][uid]['mac-address']]
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
#---------------------------
|
#---------------------------
|
||||||
# get_system_routerboard
|
# get_system_routerboard
|
||||||
#---------------------------
|
#---------------------------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue