mirror of
https://github.com/tomaae/homeassistant-mikrotik_router.git
synced 2025-07-21 11:14:28 +02:00
Added status, rate, duplex and negotiation status to ethernet ports #146
This commit is contained in:
parent
052c1f1e7d
commit
b04a0a5b26
3 changed files with 105 additions and 41 deletions
|
@ -60,6 +60,25 @@ DEVICE_ATTRIBUTES_IFACE = [
|
||||||
"actual-mtu",
|
"actual-mtu",
|
||||||
"type",
|
"type",
|
||||||
"name",
|
"name",
|
||||||
|
]
|
||||||
|
|
||||||
|
DEVICE_ATTRIBUTES_IFACE_ETHER = [
|
||||||
|
"running",
|
||||||
|
"enabled",
|
||||||
|
"comment",
|
||||||
|
"client-ip-address",
|
||||||
|
"client-mac-address",
|
||||||
|
"port-mac-address",
|
||||||
|
"last-link-down-time",
|
||||||
|
"last-link-up-time",
|
||||||
|
"link-downs",
|
||||||
|
"actual-mtu",
|
||||||
|
"type",
|
||||||
|
"name",
|
||||||
|
"status",
|
||||||
|
"auto-negotiation",
|
||||||
|
"rate",
|
||||||
|
"full-duplex",
|
||||||
"default-name",
|
"default-name",
|
||||||
"poe-out",
|
"poe-out",
|
||||||
]
|
]
|
||||||
|
@ -476,12 +495,19 @@ class MikrotikControllerPortBinarySensor(MikrotikControllerBinarySensor):
|
||||||
def extra_state_attributes(self) -> Dict[str, Any]:
|
def extra_state_attributes(self) -> Dict[str, Any]:
|
||||||
"""Return the state attributes."""
|
"""Return the state attributes."""
|
||||||
attributes = self._attrs
|
attributes = self._attrs
|
||||||
for variable in DEVICE_ATTRIBUTES_IFACE:
|
|
||||||
if variable in self._data:
|
|
||||||
attributes[format_attribute(variable)] = self._data[variable]
|
|
||||||
|
|
||||||
if "sfp-shutdown-temperature" in self._data:
|
if self._data["type"] == "ether":
|
||||||
for variable in DEVICE_ATTRIBUTES_IFACE_SFP:
|
for variable in DEVICE_ATTRIBUTES_IFACE_ETHER:
|
||||||
|
if variable in self._data:
|
||||||
|
attributes[format_attribute(variable)] = self._data[variable]
|
||||||
|
|
||||||
|
if "sfp-shutdown-temperature" in self._data:
|
||||||
|
for variable in DEVICE_ATTRIBUTES_IFACE_SFP:
|
||||||
|
if variable in self._data:
|
||||||
|
attributes[format_attribute(variable)] = self._data[variable]
|
||||||
|
|
||||||
|
else:
|
||||||
|
for variable in self._sid_data["sid_attr"]:
|
||||||
if variable in self._data:
|
if variable in self._data:
|
||||||
attributes[format_attribute(variable)] = self._data[variable]
|
attributes[format_attribute(variable)] = self._data[variable]
|
||||||
|
|
||||||
|
|
|
@ -698,37 +698,50 @@ class MikrotikControllerData:
|
||||||
"port-mac-address"
|
"port-mac-address"
|
||||||
] = f"{vals['port-mac-address']}-{vals['name']}"
|
] = f"{vals['port-mac-address']}-{vals['name']}"
|
||||||
|
|
||||||
if (
|
if self.data["interface"][uid]["type"] == "ether":
|
||||||
"sfp-shutdown-temperature" in vals
|
if (
|
||||||
and vals["sfp-shutdown-temperature"] != ""
|
"sfp-shutdown-temperature" in vals
|
||||||
):
|
and vals["sfp-shutdown-temperature"] != ""
|
||||||
self.data["interface"] = parse_api(
|
):
|
||||||
data=self.data["interface"],
|
self.data["interface"] = parse_api(
|
||||||
source=self.api.get_sfp(vals[".id"]),
|
data=self.data["interface"],
|
||||||
key_search="name",
|
source=self.api.get_sfp(vals[".id"]),
|
||||||
vals=[
|
key_search="name",
|
||||||
{"name": "status", "default": "unknown"},
|
vals=[
|
||||||
{"name": "auto-negotiation", "default": "unknown"},
|
{"name": "status", "default": "unknown"},
|
||||||
{"name": "advertising", "default": "unknown"},
|
{"name": "auto-negotiation", "default": "unknown"},
|
||||||
{"name": "link-partner-advertising", "default": "unknown"},
|
{"name": "advertising", "default": "unknown"},
|
||||||
{"name": "sfp-temperature", "default": "unknown"},
|
{"name": "link-partner-advertising", "default": "unknown"},
|
||||||
{"name": "sfp-supply-voltage", "default": "unknown"},
|
{"name": "sfp-temperature", "default": "unknown"},
|
||||||
{"name": "sfp-module-present", "default": "unknown"},
|
{"name": "sfp-supply-voltage", "default": "unknown"},
|
||||||
{"name": "sfp-tx-bias-current", "default": "unknown"},
|
{"name": "sfp-module-present", "default": "unknown"},
|
||||||
{"name": "sfp-tx-power", "default": "unknown"},
|
{"name": "sfp-tx-bias-current", "default": "unknown"},
|
||||||
{"name": "sfp-rx-power", "default": "unknown"},
|
{"name": "sfp-tx-power", "default": "unknown"},
|
||||||
{"name": "sfp-rx-loss", "default": "unknown"},
|
{"name": "sfp-rx-power", "default": "unknown"},
|
||||||
{"name": "sfp-tx-fault", "default": "unknown"},
|
{"name": "sfp-rx-loss", "default": "unknown"},
|
||||||
{"name": "sfp-type", "default": "unknown"},
|
{"name": "sfp-tx-fault", "default": "unknown"},
|
||||||
{"name": "sfp-connector-type", "default": "unknown"},
|
{"name": "sfp-type", "default": "unknown"},
|
||||||
{"name": "sfp-vendor-name", "default": "unknown"},
|
{"name": "sfp-connector-type", "default": "unknown"},
|
||||||
{"name": "sfp-vendor-part-number", "default": "unknown"},
|
{"name": "sfp-vendor-name", "default": "unknown"},
|
||||||
{"name": "sfp-vendor-revision", "default": "unknown"},
|
{"name": "sfp-vendor-part-number", "default": "unknown"},
|
||||||
{"name": "sfp-vendor-serial", "default": "unknown"},
|
{"name": "sfp-vendor-revision", "default": "unknown"},
|
||||||
{"name": "sfp-manufacturing-date", "default": "unknown"},
|
{"name": "sfp-vendor-serial", "default": "unknown"},
|
||||||
{"name": "eeprom-checksum", "default": "unknown"},
|
{"name": "sfp-manufacturing-date", "default": "unknown"},
|
||||||
],
|
{"name": "eeprom-checksum", "default": "unknown"},
|
||||||
)
|
],
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.data["interface"] = parse_api(
|
||||||
|
data=self.data["interface"],
|
||||||
|
source=self.api.get_sfp(vals[".id"]),
|
||||||
|
key_search="name",
|
||||||
|
vals=[
|
||||||
|
{"name": "status", "default": "unknown"},
|
||||||
|
{"name": "rate", "default": "unknown"},
|
||||||
|
{"name": "full-duplex", "default": "unknown"},
|
||||||
|
{"name": "auto-negotiation", "default": "unknown"},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# get_interface_traffic
|
# get_interface_traffic
|
||||||
|
|
|
@ -27,6 +27,25 @@ DEVICE_ATTRIBUTES_IFACE = [
|
||||||
"actual-mtu",
|
"actual-mtu",
|
||||||
"type",
|
"type",
|
||||||
"name",
|
"name",
|
||||||
|
]
|
||||||
|
|
||||||
|
DEVICE_ATTRIBUTES_IFACE_ETHER = [
|
||||||
|
"running",
|
||||||
|
"enabled",
|
||||||
|
"comment",
|
||||||
|
"client-ip-address",
|
||||||
|
"client-mac-address",
|
||||||
|
"port-mac-address",
|
||||||
|
"last-link-down-time",
|
||||||
|
"last-link-up-time",
|
||||||
|
"link-downs",
|
||||||
|
"actual-mtu",
|
||||||
|
"type",
|
||||||
|
"name",
|
||||||
|
"status",
|
||||||
|
"auto-negotiation",
|
||||||
|
"rate",
|
||||||
|
"full-duplex",
|
||||||
"default-name",
|
"default-name",
|
||||||
"poe-out",
|
"poe-out",
|
||||||
]
|
]
|
||||||
|
@ -379,12 +398,18 @@ class MikrotikControllerPortSwitch(MikrotikControllerSwitch):
|
||||||
"""Return the state attributes."""
|
"""Return the state attributes."""
|
||||||
attributes = self._attrs
|
attributes = self._attrs
|
||||||
|
|
||||||
for variable in self._sid_data["sid_attr"]:
|
if self._data["type"] == "ether":
|
||||||
if variable in self._data:
|
for variable in DEVICE_ATTRIBUTES_IFACE_ETHER:
|
||||||
attributes[format_attribute(variable)] = self._data[variable]
|
if variable in self._data:
|
||||||
|
attributes[format_attribute(variable)] = self._data[variable]
|
||||||
|
|
||||||
if "sfp-shutdown-temperature" in self._data:
|
if "sfp-shutdown-temperature" in self._data:
|
||||||
for variable in DEVICE_ATTRIBUTES_IFACE_SFP:
|
for variable in DEVICE_ATTRIBUTES_IFACE_SFP:
|
||||||
|
if variable in self._data:
|
||||||
|
attributes[format_attribute(variable)] = self._data[variable]
|
||||||
|
|
||||||
|
else:
|
||||||
|
for variable in self._sid_data["sid_attr"]:
|
||||||
if variable in self._data:
|
if variable in self._data:
|
||||||
attributes[format_attribute(variable)] = self._data[variable]
|
attributes[format_attribute(variable)] = self._data[variable]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue