mirror of
https://github.com/tomaae/homeassistant-mikrotik_router.git
synced 2025-07-10 17:34:29 +02:00
added UPS support #144
This commit is contained in:
parent
c10fb9fedb
commit
f1c7cea7c4
3 changed files with 92 additions and 0 deletions
|
@ -66,6 +66,23 @@ DEVICE_ATTRIBUTES_IFACE_SFP = [
|
||||||
"eeprom-checksum",
|
"eeprom-checksum",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
DEVICE_ATTRIBUTES_UPS = [
|
||||||
|
"name",
|
||||||
|
"offline-time",
|
||||||
|
"min-runtime",
|
||||||
|
"alarm-setting",
|
||||||
|
"model",
|
||||||
|
"serial",
|
||||||
|
"manufacture-date",
|
||||||
|
"nominal-battery-voltage",
|
||||||
|
"runtime-left",
|
||||||
|
"battery-charge",
|
||||||
|
"battery-voltage",
|
||||||
|
"line-voltage",
|
||||||
|
"load",
|
||||||
|
"hid-self-test",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class MikrotikBinarySensorEntityDescription(BinarySensorEntityDescription):
|
class MikrotikBinarySensorEntityDescription(BinarySensorEntityDescription):
|
||||||
|
@ -100,6 +117,20 @@ SENSOR_TYPES = {
|
||||||
data_uid="",
|
data_uid="",
|
||||||
data_reference="",
|
data_reference="",
|
||||||
),
|
),
|
||||||
|
"system_ups": MikrotikBinarySensorEntityDescription(
|
||||||
|
key="system_ups",
|
||||||
|
name="UPS",
|
||||||
|
icon_enabled="",
|
||||||
|
icon_disabled="",
|
||||||
|
device_class=BinarySensorDeviceClass.POWER,
|
||||||
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
|
ha_group="System",
|
||||||
|
data_path="ups",
|
||||||
|
data_attribute="on-line",
|
||||||
|
data_uid="",
|
||||||
|
data_reference="",
|
||||||
|
data_attributes_list=DEVICE_ATTRIBUTES_UPS,
|
||||||
|
),
|
||||||
"ppp_tracker": MikrotikBinarySensorEntityDescription(
|
"ppp_tracker": MikrotikBinarySensorEntityDescription(
|
||||||
key="ppp_tracker",
|
key="ppp_tracker",
|
||||||
name="PPP",
|
name="PPP",
|
||||||
|
|
|
@ -135,6 +135,7 @@ class MikrotikControllerData:
|
||||||
"hostspot_host": {},
|
"hostspot_host": {},
|
||||||
"client_traffic": {},
|
"client_traffic": {},
|
||||||
"environment": {},
|
"environment": {},
|
||||||
|
"ups": {},
|
||||||
}
|
}
|
||||||
|
|
||||||
self.notified_flags = []
|
self.notified_flags = []
|
||||||
|
@ -173,6 +174,7 @@ class MikrotikControllerData:
|
||||||
self.support_wireless = False
|
self.support_wireless = False
|
||||||
self.support_wifiwave2 = False
|
self.support_wifiwave2 = False
|
||||||
self.support_ppp = False
|
self.support_ppp = False
|
||||||
|
self.support_ups = False
|
||||||
|
|
||||||
self.major_fw_version = 0
|
self.major_fw_version = 0
|
||||||
|
|
||||||
|
@ -448,6 +450,9 @@ class MikrotikControllerData:
|
||||||
self.support_wifiwave2 = False
|
self.support_wifiwave2 = False
|
||||||
self.support_capsman = True
|
self.support_capsman = True
|
||||||
|
|
||||||
|
if "ups" in packages and packages["ups"]["enabled"]:
|
||||||
|
self.support_ups = True
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# async_get_host_hass
|
# async_get_host_hass
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
@ -657,6 +662,9 @@ class MikrotikControllerData:
|
||||||
if self.api.connected() and self.option_sensor_environment:
|
if self.api.connected() and self.option_sensor_environment:
|
||||||
await self.hass.async_add_executor_job(self.get_environment)
|
await self.hass.async_add_executor_job(self.get_environment)
|
||||||
|
|
||||||
|
if self.api.connected() and self.support_ups:
|
||||||
|
await self.hass.async_add_executor_job(self.get_ups)
|
||||||
|
|
||||||
async_dispatcher_send(self.hass, self.signal_update)
|
async_dispatcher_send(self.hass, self.signal_update)
|
||||||
self.lock.release()
|
self.lock.release()
|
||||||
|
|
||||||
|
@ -1499,6 +1507,59 @@ class MikrotikControllerData:
|
||||||
self.data["fw-update"].get("installed-version"),
|
self.data["fw-update"].get("installed-version"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# ---------------------------
|
||||||
|
# get_ups
|
||||||
|
# ---------------------------
|
||||||
|
def get_ups(self):
|
||||||
|
"""Get UPS info from Mikrotik"""
|
||||||
|
self.data["ups"] = parse_api(
|
||||||
|
data=self.data["ups"],
|
||||||
|
source=self.api.query("/system/ups"),
|
||||||
|
vals=[
|
||||||
|
{"name": "name", "default": "unknown"},
|
||||||
|
{"name": "offline-time", "default": "unknown"},
|
||||||
|
{"name": "min-runtime", "default": "unknown"},
|
||||||
|
{"name": "alarm-setting", "default": "unknown"},
|
||||||
|
{"name": "model", "default": "unknown"},
|
||||||
|
{"name": "serial", "default": "unknown"},
|
||||||
|
{"name": "manufacture-date", "default": "unknown"},
|
||||||
|
{"name": "nominal-battery-voltage", "default": "unknown"},
|
||||||
|
{
|
||||||
|
"name": "enabled",
|
||||||
|
"source": "disabled",
|
||||||
|
"type": "bool",
|
||||||
|
"reverse": True,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ensure_vals=[
|
||||||
|
{"name": "on-line", "type": "bool"},
|
||||||
|
{"name": "runtime-left", "default": "unknown"},
|
||||||
|
{"name": "battery-charge", "default": 0},
|
||||||
|
{"name": "battery-voltage", "default": 0.0},
|
||||||
|
{"name": "line-voltage", "default": 0},
|
||||||
|
{"name": "load", "default": 0},
|
||||||
|
{"name": "hid-self-test", "default": "unknown"},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
if self.data["ups"]["enabled"]:
|
||||||
|
self.data["ups"] = parse_api(
|
||||||
|
data=self.data["ups"],
|
||||||
|
source=self.api.query(
|
||||||
|
"/system/ups",
|
||||||
|
command="monitor",
|
||||||
|
args={".id": 0, "once": True},
|
||||||
|
),
|
||||||
|
vals=[
|
||||||
|
{"name": "on-line", "type": "bool"},
|
||||||
|
{"name": "runtime-left", "default": "unknown"},
|
||||||
|
{"name": "battery-charge", "default": 0},
|
||||||
|
{"name": "battery-voltage", "default": 0.0},
|
||||||
|
{"name": "line-voltage", "default": 0},
|
||||||
|
{"name": "load", "default": 0},
|
||||||
|
{"name": "hid-self-test", "default": "unknown"},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# get_script
|
# get_script
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
BIN
docs/assets/images/ui/ups.png
Normal file
BIN
docs/assets/images/ui/ups.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
Loading…
Add table
Add a link
Reference in a new issue