From 13e765c10a0afa3ee31f17dde28180851f3ed41f Mon Sep 17 00:00:00 2001 From: Andrey Chalkin Date: Wed, 11 Oct 2023 19:08:25 +0200 Subject: [PATCH] feat: netwatch binary sensor --- README.md | 5 +++ .../mikrotik_router/binary_sensor.py | 3 ++ .../mikrotik_router/binary_sensor_types.py | 27 ++++++++++++ .../mikrotik_router/config_flow.py | 8 ++++ custom_components/mikrotik_router/const.py | 2 + .../mikrotik_router/coordinator.py | 40 +++++++++++++++++- custom_components/mikrotik_router/entity.py | 10 +++++ .../mikrotik_router/strings.json | 1 + docs/assets/images/ui/netwatch_tracker.png | Bin 0 -> 50351 bytes 9 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 docs/assets/images/ui/netwatch_tracker.png diff --git a/README.md b/README.md index 95dd001..e759779 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,11 @@ Track availability of all network devices. All devices visible to Mikrotik devic ![Host tracker](https://raw.githubusercontent.com/tomaae/homeassistant-mikrotik_router/master/docs/assets/images/ui/host_tracker.png) +## Netwatch Tracking +Track netwatch status. + +![Netwatch](https://raw.githubusercontent.com/tomaae/homeassistant-mikrotik_router/master/docs/assets/images/ui/netwatch_tracker.png) + ## Scripts Execute Mikrotik Router scripts. You can execute scripts by automatically created switches or using services. diff --git a/custom_components/mikrotik_router/binary_sensor.py b/custom_components/mikrotik_router/binary_sensor.py index 595f996..574192f 100644 --- a/custom_components/mikrotik_router/binary_sensor.py +++ b/custom_components/mikrotik_router/binary_sensor.py @@ -16,12 +16,15 @@ from .binary_sensor_types import ( DEVICE_ATTRIBUTES_IFACE_ETHER, DEVICE_ATTRIBUTES_IFACE_SFP, DEVICE_ATTRIBUTES_IFACE_WIRELESS, + DEVICE_ATTRIBUTES_NETWATCH, ) from .const import ( CONF_SENSOR_PPP, DEFAULT_SENSOR_PPP, CONF_SENSOR_PORT_TRACKER, DEFAULT_SENSOR_PORT_TRACKER, + CONF_SENSOR_NETWATCH_TRACKER, + DEFAULT_SENSOR_NETWATCH_TRACKER, ) from .entity import MikrotikEntity, async_add_entities from .helper import format_attribute diff --git a/custom_components/mikrotik_router/binary_sensor_types.py b/custom_components/mikrotik_router/binary_sensor_types.py index 40f69d8..6657907 100644 --- a/custom_components/mikrotik_router/binary_sensor_types.py +++ b/custom_components/mikrotik_router/binary_sensor_types.py @@ -108,6 +108,15 @@ DEVICE_ATTRIBUTES_UPS = [ "hid-self-test", ] +DEVICE_ATTRIBUTES_NETWATCH = [ + "host", + "type", + "interval", + "port", + "http-codes", + "status", + "comment", +] @dataclass class MikrotikBinarySensorEntityDescription(BinarySensorEntityDescription): @@ -177,6 +186,24 @@ SENSOR_TYPES: tuple[BinarySensorEntityDescription, ...] = ( data_attributes_list=DEVICE_ATTRIBUTES_IFACE, func="MikrotikPortBinarySensor", ), + MikrotikBinarySensorEntityDescription( + key="netwatch", + name="Netwatch", + icon_enabled="mdi:lan-connect", + icon_disabled="mdi:lan-pending", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + ha_group="Netwatch", + ha_connection=DOMAIN, + ha_connection_value="Netwatch", + data_path="netwatch", + data_attribute="status", + data_name="host", + data_name_comment=True, + data_uid="host", + data_reference="host", + data_attributes_list=DEVICE_ATTRIBUTES_NETWATCH, + func="MikrotikBinarySensor", + ), ) SENSOR_SERVICES = {} diff --git a/custom_components/mikrotik_router/config_flow.py b/custom_components/mikrotik_router/config_flow.py index 935a39b..83d1f97 100644 --- a/custom_components/mikrotik_router/config_flow.py +++ b/custom_components/mikrotik_router/config_flow.py @@ -59,6 +59,8 @@ from .const import ( DEFAULT_PORT, DEFAULT_DEVICE_NAME, DEFAULT_SSL, + DEFAULT_SENSOR_NETWATCH_TRACKER, + CONF_SENSOR_NETWATCH_TRACKER, ) from .mikrotikapi import MikrotikAPI @@ -280,6 +282,12 @@ class MikrotikControllerOptionsFlowHandler(OptionsFlow): CONF_SENSOR_KIDCONTROL, DEFAULT_SENSOR_KIDCONTROL ), ): bool, + vol.Optional( + CONF_SENSOR_NETWATCH_TRACKER, + default=self.config_entry.options.get( + CONF_SENSOR_NETWATCH_TRACKER, DEFAULT_SENSOR_NETWATCH_TRACKER + ), + ): bool, vol.Optional( CONF_SENSOR_PPP, default=self.config_entry.options.get( diff --git a/custom_components/mikrotik_router/const.py b/custom_components/mikrotik_router/const.py index c2cec52..d7ac4b2 100644 --- a/custom_components/mikrotik_router/const.py +++ b/custom_components/mikrotik_router/const.py @@ -58,6 +58,8 @@ CONF_SENSOR_SCRIPTS = "sensor_scripts" DEFAULT_SENSOR_SCRIPTS = False CONF_SENSOR_ENVIRONMENT = "sensor_environment" DEFAULT_SENSOR_ENVIRONMENT = False +CONF_SENSOR_NETWATCH_TRACKER = "sensor_netwatch_tracker" +DEFAULT_SENSOR_NETWATCH_TRACKER = False TO_REDACT = { "ip-address", diff --git a/custom_components/mikrotik_router/coordinator.py b/custom_components/mikrotik_router/coordinator.py index ed2058d..a072e77 100644 --- a/custom_components/mikrotik_router/coordinator.py +++ b/custom_components/mikrotik_router/coordinator.py @@ -59,7 +59,7 @@ from .const import ( CONF_SENSOR_SCRIPTS, DEFAULT_SENSOR_SCRIPTS, CONF_SENSOR_ENVIRONMENT, - DEFAULT_SENSOR_ENVIRONMENT, + DEFAULT_SENSOR_ENVIRONMENT, CONF_SENSOR_NETWATCH_TRACKER, DEFAULT_SENSOR_NETWATCH_TRACKER, ) from .exceptions import ApiEntryNotFound from .apiparser import parse_api @@ -258,6 +258,7 @@ class MikrotikCoordinator(DataUpdateCoordinator[None]): "environment": {}, "ups": {}, "gps": {}, + "netwatch": {} } self.notified_flags = [] @@ -386,6 +387,14 @@ class MikrotikCoordinator(DataUpdateCoordinator[None]): CONF_SENSOR_KIDCONTROL, DEFAULT_SENSOR_KIDCONTROL ) + # --------------------------- + # option_sensor_netwatch + # --------------------------- + @property + def option_sensor_netwatch(self): + """Config entry option to not track ARP.""" + return self.config_entry.options.get(CONF_SENSOR_NETWATCH_TRACKER, DEFAULT_SENSOR_NETWATCH_TRACKER) + # --------------------------- # option_sensor_ppp # --------------------------- @@ -627,6 +636,9 @@ class MikrotikCoordinator(DataUpdateCoordinator[None]): if self.api.connected() and self.option_sensor_filter: await self.hass.async_add_executor_job(self.get_filter) + if self.api.connected() and self.option_sensor_netwatch: + await self.hass.async_add_executor_job(self.get_netwatch) + if self.api.connected() and self.support_ppp and self.option_sensor_ppp: await self.hass.async_add_executor_job(self.get_ppp) @@ -1310,6 +1322,32 @@ class MikrotikCoordinator(DataUpdateCoordinator[None]): self.ds["ppp_secret"][uid]["address"] = "not connected" self.ds["ppp_secret"][uid]["encoding"] = "not connected" + # --------------------------- + # get_netwatch + # --------------------------- + def get_netwatch(self) -> None: + """Get netwatch data from Mikrotik""" + self.ds["netwatch"] = parse_api( + data=self.ds["netwatch"], + source=self.api.query("/tool/netwatch"), + key="host", + vals=[ + {"name": "host"}, + {"name": "type"}, + {"name": "interval"}, + {"name": "port"}, + {"name": "http-codes"}, + {"name": "status", "type": "bool", "default": "unknown"}, + {"name": "comment"}, + { + "name": "enabled", + "source": "disabled", + "type": "bool", + "reverse": True, + }, + ], + ) + # --------------------------- # get_system_routerboard # --------------------------- diff --git a/custom_components/mikrotik_router/entity.py b/custom_components/mikrotik_router/entity.py index 1f9924a..daf171f 100644 --- a/custom_components/mikrotik_router/entity.py +++ b/custom_components/mikrotik_router/entity.py @@ -26,6 +26,8 @@ from .const import ( DEFAULT_TRACK_HOSTS, CONF_SENSOR_PORT_TRACKER, DEFAULT_SENSOR_PORT_TRACKER, + CONF_SENSOR_NETWATCH_TRACKER, + DEFAULT_SENSOR_NETWATCH_TRACKER, ) from .coordinator import MikrotikCoordinator, MikrotikTrackerCoordinator from .helper import format_attribute @@ -70,6 +72,14 @@ def _skip_sensor(config_entry, entity_description, data, uid) -> bool: ): return True + if ( + entity_description.data_path == "netwatch" + and not config_entry.options.get( + CONF_SENSOR_NETWATCH_TRACKER, DEFAULT_SENSOR_NETWATCH_TRACKER + ) + ): + return True + # Device Tracker if ( # Skip if host tracking is disabled diff --git a/custom_components/mikrotik_router/strings.json b/custom_components/mikrotik_router/strings.json index 828f5c5..1303cf1 100644 --- a/custom_components/mikrotik_router/strings.json +++ b/custom_components/mikrotik_router/strings.json @@ -39,6 +39,7 @@ "data": { "track_network_hosts": "Track network devices", "sensor_port_tracker": "Port tracker sensors", + "sensor_netwatch_tracker": "Netwatch tracker sensors", "sensor_port_traffic": "Port traffic sensors", "sensor_client_traffic": "Client traffic sensors", "sensor_client_captive": "Captive portal data", diff --git a/docs/assets/images/ui/netwatch_tracker.png b/docs/assets/images/ui/netwatch_tracker.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c70862387accd09692567ee65540ea38c44d18 GIT binary patch literal 50351 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 R`8D{Xt!|+9TGb}-zW{G9%$WcH literal 0 HcmV?d00001