added wifi information to interfaces

This commit is contained in:
Tomaae 2022-08-21 22:27:49 +02:00
parent 5520b25c0f
commit c5570b6d5e
No known key found for this signature in database
GPG key ID: 8360BBD8A381D1C0
3 changed files with 83 additions and 0 deletions

View file

@ -130,6 +130,7 @@ class MikrotikControllerData:
"dhcp-network": {}, "dhcp-network": {},
"dhcp": {}, "dhcp": {},
"capsman_hosts": {}, "capsman_hosts": {},
"wireless": {},
"wireless_hosts": {}, "wireless_hosts": {},
"host": {}, "host": {},
"host_hass": {}, "host_hass": {},
@ -632,6 +633,9 @@ class MikrotikControllerData:
if self.api.connected() and self.support_capsman: if self.api.connected() and self.support_capsman:
await self.hass.async_add_executor_job(self.get_capsman_hosts) await self.hass.async_add_executor_job(self.get_capsman_hosts)
if self.api.connected() and self.support_wireless:
await self.hass.async_add_executor_job(self.get_wireless)
if self.api.connected() and self.support_wireless: if self.api.connected() and self.support_wireless:
await self.hass.async_add_executor_job(self.get_wireless_hosts) await self.hass.async_add_executor_job(self.get_wireless_hosts)
@ -1979,6 +1983,56 @@ class MikrotikControllerData:
], ],
) )
# ---------------------------
# get_wireless
# ---------------------------
def get_wireless(self):
"""Get wireless data from Mikrotik"""
wifimodule = "wifiwave2" if self.support_wifiwave2 else "wireless"
self.data["wireless"] = parse_api(
data=self.data["wireless"],
source=self.api.query(f"/interface/{wifimodule}"),
key="name",
vals=[
{"name": "master-interface", "default": ""},
{"name": "mac-address", "default": "unknown"},
{"name": "ssid", "default": "unknown"},
{"name": "mode", "default": "unknown"},
{"name": "radio-name", "default": "unknown"},
{"name": "interface-type", "default": "unknown"},
{"name": "country", "default": "unknown"},
{"name": "installation", "default": "unknown"},
{"name": "antenna-gain", "default": "unknown"},
{"name": "frequency", "default": "unknown"},
{"name": "band", "default": "unknown"},
{"name": "channel-width", "default": "unknown"},
{"name": "secondary-frequency", "default": "unknown"},
{"name": "wireless-protocol", "default": "unknown"},
{"name": "rate-set", "default": "unknown"},
{"name": "distance", "default": "unknown"},
{"name": "tx-power-mode", "default": "unknown"},
{"name": "vlan-id", "default": "unknown"},
{"name": "wds-mode", "default": "unknown"},
{"name": "wds-default-bridge", "default": "unknown"},
{"name": "bridge-mode", "default": "unknown"},
{"name": "hide-ssid", "type": "bool"},
{"name": "running", "type": "bool"},
{"name": "disabled", "type": "bool"},
],
)
for uid in self.data["wireless"]:
if self.data["wireless"][uid]["master-interface"]:
for tmp in self.data["wireless"][uid]:
if self.data["wireless"][uid][tmp] == "unknown":
self.data["wireless"][uid][tmp] = self.data["wireless"][
self.data["wireless"][uid]["master-interface"]
][tmp]
if uid in self.data["interface"]:
for tmp in self.data["wireless"][uid]:
self.data["interface"][uid][tmp] = self.data["wireless"][uid][tmp]
# --------------------------- # ---------------------------
# get_wireless_hosts # get_wireless_hosts
# --------------------------- # ---------------------------

View file

@ -12,6 +12,7 @@ from .switch_types import (
SENSOR_SERVICES, SENSOR_SERVICES,
DEVICE_ATTRIBUTES_IFACE_ETHER, DEVICE_ATTRIBUTES_IFACE_ETHER,
DEVICE_ATTRIBUTES_IFACE_SFP, DEVICE_ATTRIBUTES_IFACE_SFP,
DEVICE_ATTRIBUTES_IFACE_WIRELESS,
) )
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -114,6 +115,11 @@ class MikrotikPortSwitch(MikrotikSwitch):
if variable in self._data: if variable in self._data:
attributes[format_attribute(variable)] = self._data[variable] attributes[format_attribute(variable)] = self._data[variable]
elif self._data["type"] == "wlan":
for variable in DEVICE_ATTRIBUTES_IFACE_WIRELESS:
if variable in self._data:
attributes[format_attribute(variable)] = self._data[variable]
return attributes return attributes
@property @property

View file

@ -56,6 +56,29 @@ DEVICE_ATTRIBUTES_IFACE_SFP = [
"eeprom-checksum", "eeprom-checksum",
] ]
DEVICE_ATTRIBUTES_IFACE_WIRELESS = [
"ssid",
"mode",
"radio-name",
"interface-type",
"country",
"installation",
"antenna-gain",
"frequency",
"band",
"channel-width",
"secondary-frequency",
"wireless-protocol",
"rate-set",
"distance",
"tx-power-mode",
"vlan-id",
"wds-mode",
"wds-default-bridge",
"bridge-mode",
"hide-ssid",
]
DEVICE_ATTRIBUTES_NAT = [ DEVICE_ATTRIBUTES_NAT = [
"protocol", "protocol",
"dst-port", "dst-port",