From f114ed23b3a521b43f05d294f6b97b604421138e Mon Sep 17 00:00:00 2001 From: tomaae <23486452+tomaae@users.noreply.github.com> Date: Thu, 10 Dec 2020 06:38:14 +0100 Subject: [PATCH] Added config options for sensor selection #68 --- .../mikrotik_router/config_flow.py | 98 +++++++++++++++---- custom_components/mikrotik_router/const.py | 15 +++ .../mikrotik_router/strings.json | 15 ++- 3 files changed, 103 insertions(+), 25 deletions(-) diff --git a/custom_components/mikrotik_router/config_flow.py b/custom_components/mikrotik_router/config_flow.py index a03b4ae..0bc9582 100644 --- a/custom_components/mikrotik_router/config_flow.py +++ b/custom_components/mikrotik_router/config_flow.py @@ -27,6 +27,20 @@ from .const import ( DEFAULT_SCAN_INTERVAL, CONF_TRACK_HOSTS, DEFAULT_TRACK_HOSTS, + CONF_SENSOR_PORT_TRACKER, + DEFAULT_SENSOR_PORT_TRACKER, + CONF_SENSOR_PORT_TRAFFIC, + DEFAULT_SENSOR_PORT_TRAFFIC, + CONF_SENSOR_CLIENT_TRAFFIC, + DEFAULT_SENSOR_CLIENT_TRAFFIC, + CONF_SENSOR_SIMPLE_QUEUES, + DEFAULT_SENSOR_SIMPLE_QUEUES, + CONF_SENSOR_NAT, + DEFAULT_SENSOR_NAT, + CONF_SENSOR_SCRIPTS, + DEFAULT_SENSOR_SCRIPTS, + CONF_SENSOR_ENVIRONMENT, + DEFAULT_SENSOR_ENVIRONMENT, CONF_TRACK_HOSTS_TIMEOUT, DEFAULT_TRACK_HOST_TIMEOUT, LIST_UNIT_OF_MEASUREMENT, @@ -155,7 +169,7 @@ class MikrotikControllerOptionsFlowHandler(OptionsFlow): """Manage the basic options options.""" if user_input is not None: self.options.update(user_input) - return await self.async_step_device_tracker() + return await self.async_step_sensor_select() return self.async_show_form( step_id="basic_options", @@ -179,26 +193,6 @@ class MikrotikControllerOptionsFlowHandler(OptionsFlow): CONF_TRACK_IFACE_CLIENTS, DEFAULT_TRACK_IFACE_CLIENTS ), ): bool, - } - ), - ) - - async def async_step_device_tracker(self, user_input=None): - """Manage the device tracker options.""" - if user_input is not None: - self.options.update(user_input) - return self.async_create_entry(title="", data=self.options) - - return self.async_show_form( - step_id="device_tracker", - data_schema=vol.Schema( - { - vol.Optional( - CONF_TRACK_HOSTS, - default=self.config_entry.options.get( - CONF_TRACK_HOSTS, DEFAULT_TRACK_HOSTS - ), - ): bool, vol.Optional( CONF_TRACK_HOSTS_TIMEOUT, default=self.config_entry.options.get( @@ -208,3 +202,65 @@ class MikrotikControllerOptionsFlowHandler(OptionsFlow): } ), ) + + async def async_step_sensor_select(self, user_input=None): + """Manage the sensor select options.""" + if user_input is not None: + self.options.update(user_input) + return self.async_create_entry(title="", data=self.options) + + return self.async_show_form( + step_id="sensor_select", + data_schema=vol.Schema( + { + vol.Optional( + CONF_SENSOR_PORT_TRACKER, + default=self.config_entry.options.get( + CONF_SENSOR_PORT_TRACKER, DEFAULT_SENSOR_PORT_TRACKER + ), + ): bool, + vol.Optional( + CONF_SENSOR_PORT_TRAFFIC, + default=self.config_entry.options.get( + CONF_SENSOR_PORT_TRAFFIC, DEFAULT_SENSOR_PORT_TRAFFIC + ), + ): bool, + vol.Optional( + CONF_TRACK_HOSTS, + default=self.config_entry.options.get( + CONF_TRACK_HOSTS, DEFAULT_TRACK_HOSTS + ), + ): bool, + vol.Optional( + CONF_SENSOR_CLIENT_TRAFFIC, + default=self.config_entry.options.get( + CONF_SENSOR_CLIENT_TRAFFIC, DEFAULT_SENSOR_CLIENT_TRAFFIC + ), + ): bool, + vol.Optional( + CONF_SENSOR_SIMPLE_QUEUES, + default=self.config_entry.options.get( + CONF_SENSOR_SIMPLE_QUEUES, DEFAULT_SENSOR_SIMPLE_QUEUES + ), + ): bool, + vol.Optional( + CONF_SENSOR_NAT, + default=self.config_entry.options.get( + CONF_SENSOR_NAT, DEFAULT_SENSOR_NAT + ), + ): bool, + vol.Optional( + CONF_SENSOR_SCRIPTS, + default=self.config_entry.options.get( + CONF_SENSOR_SCRIPTS, DEFAULT_SENSOR_SCRIPTS + ), + ): bool, + vol.Optional( + CONF_SENSOR_ENVIRONMENT, + default=self.config_entry.options.get( + CONF_SENSOR_ENVIRONMENT, DEFAULT_SENSOR_ENVIRONMENT + ), + ): bool, + }, + ), + ) diff --git a/custom_components/mikrotik_router/const.py b/custom_components/mikrotik_router/const.py index ef6e9eb..814fead 100644 --- a/custom_components/mikrotik_router/const.py +++ b/custom_components/mikrotik_router/const.py @@ -27,3 +27,18 @@ CONF_TRACK_HOSTS = "track_network_hosts" DEFAULT_TRACK_HOSTS = False CONF_TRACK_HOSTS_TIMEOUT = "track_network_hosts_timeout" DEFAULT_TRACK_HOST_TIMEOUT = 180 + +CONF_SENSOR_PORT_TRACKER = "sensor_port_tracker" +DEFAULT_SENSOR_PORT_TRACKER = False +CONF_SENSOR_PORT_TRAFFIC = "sensor_port_traffic" +DEFAULT_SENSOR_PORT_TRAFFIC = False +CONF_SENSOR_CLIENT_TRAFFIC = "sensor_client_traffic" +DEFAULT_SENSOR_CLIENT_TRAFFIC = False +CONF_SENSOR_SIMPLE_QUEUES = "sensor_simple_queues" +DEFAULT_SENSOR_SIMPLE_QUEUES = False +CONF_SENSOR_NAT = "sensor_nat" +DEFAULT_SENSOR_NAT = False +CONF_SENSOR_SCRIPTS = "sensor_scripts" +DEFAULT_SENSOR_SCRIPTS = False +CONF_SENSOR_ENVIRONMENT = "sensor_environment" +DEFAULT_SENSOR_ENVIRONMENT = False diff --git a/custom_components/mikrotik_router/strings.json b/custom_components/mikrotik_router/strings.json index 0796c87..53dd2b9 100644 --- a/custom_components/mikrotik_router/strings.json +++ b/custom_components/mikrotik_router/strings.json @@ -28,16 +28,23 @@ "data": { "scan_interval": "Scan interval (requires HA restart)", "track_iface_clients": "Show client MAC and IP on interfaces", - "unit_of_measurement": "Unit of measurement" + "unit_of_measurement": "Unit of measurement", + "track_network_hosts_timeout": "Track network devices timeout (seconds)" }, "title": "Basic options" }, - "device_tracker": { + "sensor_select": { "data": { + "sensor_port_tracker": "Port tracker", + "sensor_port_traffic": "Port traffic", "track_network_hosts": "Track network devices", - "track_network_hosts_timeout": "Track network devices timeout (seconds)" + "sensor_client_traffic": "Client traffic", + "sensor_simple_queues": "Simple queues", + "sensor_nat": "NAT", + "sensor_scripts": "Scripts", + "sensor_environment": "Environment variables" }, - "title": "Device tracking options" + "title": "Sensor selection" } } }