mirror of
https://github.com/tomaae/homeassistant-mikrotik_router.git
synced 2025-07-16 04:14:31 +02:00
added GPS support #196
This commit is contained in:
parent
f1c7cea7c4
commit
3ee517463b
2 changed files with 81 additions and 1 deletions
|
@ -136,6 +136,7 @@ class MikrotikControllerData:
|
||||||
"client_traffic": {},
|
"client_traffic": {},
|
||||||
"environment": {},
|
"environment": {},
|
||||||
"ups": {},
|
"ups": {},
|
||||||
|
"gps": {},
|
||||||
}
|
}
|
||||||
|
|
||||||
self.notified_flags = []
|
self.notified_flags = []
|
||||||
|
@ -175,6 +176,7 @@ class MikrotikControllerData:
|
||||||
self.support_wifiwave2 = False
|
self.support_wifiwave2 = False
|
||||||
self.support_ppp = False
|
self.support_ppp = False
|
||||||
self.support_ups = False
|
self.support_ups = False
|
||||||
|
self.support_gps = False
|
||||||
|
|
||||||
self.major_fw_version = 0
|
self.major_fw_version = 0
|
||||||
|
|
||||||
|
@ -453,6 +455,9 @@ class MikrotikControllerData:
|
||||||
if "ups" in packages and packages["ups"]["enabled"]:
|
if "ups" in packages and packages["ups"]["enabled"]:
|
||||||
self.support_ups = True
|
self.support_ups = True
|
||||||
|
|
||||||
|
if "gps" in packages and packages["gps"]["enabled"]:
|
||||||
|
self.support_gps = True
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# async_get_host_hass
|
# async_get_host_hass
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
@ -665,6 +670,9 @@ class MikrotikControllerData:
|
||||||
if self.api.connected() and self.support_ups:
|
if self.api.connected() and self.support_ups:
|
||||||
await self.hass.async_add_executor_job(self.get_ups)
|
await self.hass.async_add_executor_job(self.get_ups)
|
||||||
|
|
||||||
|
if self.api.connected() and self.support_gps:
|
||||||
|
await self.hass.async_add_executor_job(self.get_gps)
|
||||||
|
|
||||||
async_dispatcher_send(self.hass, self.signal_update)
|
async_dispatcher_send(self.hass, self.signal_update)
|
||||||
self.lock.release()
|
self.lock.release()
|
||||||
|
|
||||||
|
@ -1551,7 +1559,7 @@ class MikrotikControllerData:
|
||||||
),
|
),
|
||||||
vals=[
|
vals=[
|
||||||
{"name": "on-line", "type": "bool"},
|
{"name": "on-line", "type": "bool"},
|
||||||
{"name": "runtime-left", "default": "unknown"},
|
{"name": "runtime-left", "default": 0},
|
||||||
{"name": "battery-charge", "default": 0},
|
{"name": "battery-charge", "default": 0},
|
||||||
{"name": "battery-voltage", "default": 0.0},
|
{"name": "battery-voltage", "default": 0.0},
|
||||||
{"name": "line-voltage", "default": 0},
|
{"name": "line-voltage", "default": 0},
|
||||||
|
@ -1560,6 +1568,33 @@ class MikrotikControllerData:
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# ---------------------------
|
||||||
|
# get_gps
|
||||||
|
# ---------------------------
|
||||||
|
def get_gps(self):
|
||||||
|
"""Get GPS data from Mikrotik"""
|
||||||
|
self.data["gps"] = parse_api(
|
||||||
|
data=self.data["gps"],
|
||||||
|
source=self.api.query(
|
||||||
|
"/system/gps",
|
||||||
|
command="monitor",
|
||||||
|
args={"once": True},
|
||||||
|
),
|
||||||
|
vals=[
|
||||||
|
{"name": "valid", "type": "bool"},
|
||||||
|
{"name": "latitude", "default": "unknown"},
|
||||||
|
{"name": "longitude", "default": "unknown"},
|
||||||
|
{"name": "altitude", "default": "unknown"},
|
||||||
|
{"name": "speed", "default": "unknown"},
|
||||||
|
{"name": "destination-bearing", "default": "unknown"},
|
||||||
|
{"name": "true-bearing", "default": "unknown"},
|
||||||
|
{"name": "magnetic-bearing", "default": "unknown"},
|
||||||
|
{"name": "satellites", "default": 0},
|
||||||
|
{"name": "fix-quality", "default": 0},
|
||||||
|
{"name": "horizontal-dilution", "default": "unknown"},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# get_script
|
# get_script
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
|
@ -71,6 +71,19 @@ DEVICE_ATTRIBUTES_CLIENT_TRAFFIC = [
|
||||||
"authorized",
|
"authorized",
|
||||||
"bypassed",
|
"bypassed",
|
||||||
]
|
]
|
||||||
|
DEVICE_ATTRIBUTES_GPS = [
|
||||||
|
"valid",
|
||||||
|
"latitude",
|
||||||
|
"longitude",
|
||||||
|
"altitude",
|
||||||
|
"speed",
|
||||||
|
"destination-bearing",
|
||||||
|
"true-bearing",
|
||||||
|
"magnetic-bearing",
|
||||||
|
"satellites",
|
||||||
|
"fix-quality",
|
||||||
|
"horizontal-dilution",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -301,6 +314,38 @@ SENSOR_TYPES = {
|
||||||
data_uid="",
|
data_uid="",
|
||||||
data_reference="",
|
data_reference="",
|
||||||
),
|
),
|
||||||
|
"system_gps-latitude": MikrotikSensorEntityDescription(
|
||||||
|
key="system_gps-latitude",
|
||||||
|
name="latitude",
|
||||||
|
icon="mdi:latitude",
|
||||||
|
native_unit_of_measurement=None,
|
||||||
|
device_class=None,
|
||||||
|
state_class=None,
|
||||||
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
|
ha_group="System",
|
||||||
|
data_path="gps",
|
||||||
|
data_attribute="latitude",
|
||||||
|
data_name="",
|
||||||
|
data_uid="",
|
||||||
|
data_reference="",
|
||||||
|
data_attributes_list=DEVICE_ATTRIBUTES_GPS,
|
||||||
|
),
|
||||||
|
"system_gps-longitude": MikrotikSensorEntityDescription(
|
||||||
|
key="system_gps-longitude",
|
||||||
|
name="longitude",
|
||||||
|
icon="mdi:longitude",
|
||||||
|
native_unit_of_measurement=None,
|
||||||
|
device_class=None,
|
||||||
|
state_class=None,
|
||||||
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
|
ha_group="System",
|
||||||
|
data_path="gps",
|
||||||
|
data_attribute="longitude",
|
||||||
|
data_name="",
|
||||||
|
data_uid="",
|
||||||
|
data_reference="",
|
||||||
|
data_attributes_list=DEVICE_ATTRIBUTES_GPS,
|
||||||
|
),
|
||||||
"traffic_tx": MikrotikSensorEntityDescription(
|
"traffic_tx": MikrotikSensorEntityDescription(
|
||||||
key="traffic_tx",
|
key="traffic_tx",
|
||||||
name="TX",
|
name="TX",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue