Added config options for sensor selection #68

This commit is contained in:
tomaae 2020-12-10 06:38:14 +01:00
parent bbd29aad48
commit f114ed23b3
3 changed files with 103 additions and 25 deletions

View file

@ -27,6 +27,20 @@ from .const import (
DEFAULT_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL,
CONF_TRACK_HOSTS, CONF_TRACK_HOSTS,
DEFAULT_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, CONF_TRACK_HOSTS_TIMEOUT,
DEFAULT_TRACK_HOST_TIMEOUT, DEFAULT_TRACK_HOST_TIMEOUT,
LIST_UNIT_OF_MEASUREMENT, LIST_UNIT_OF_MEASUREMENT,
@ -155,7 +169,7 @@ class MikrotikControllerOptionsFlowHandler(OptionsFlow):
"""Manage the basic options options.""" """Manage the basic options options."""
if user_input is not None: if user_input is not None:
self.options.update(user_input) self.options.update(user_input)
return await self.async_step_device_tracker() return await self.async_step_sensor_select()
return self.async_show_form( return self.async_show_form(
step_id="basic_options", step_id="basic_options",
@ -179,26 +193,6 @@ class MikrotikControllerOptionsFlowHandler(OptionsFlow):
CONF_TRACK_IFACE_CLIENTS, DEFAULT_TRACK_IFACE_CLIENTS CONF_TRACK_IFACE_CLIENTS, DEFAULT_TRACK_IFACE_CLIENTS
), ),
): bool, ): 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( vol.Optional(
CONF_TRACK_HOSTS_TIMEOUT, CONF_TRACK_HOSTS_TIMEOUT,
default=self.config_entry.options.get( 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,
},
),
)

View file

@ -27,3 +27,18 @@ CONF_TRACK_HOSTS = "track_network_hosts"
DEFAULT_TRACK_HOSTS = False DEFAULT_TRACK_HOSTS = False
CONF_TRACK_HOSTS_TIMEOUT = "track_network_hosts_timeout" CONF_TRACK_HOSTS_TIMEOUT = "track_network_hosts_timeout"
DEFAULT_TRACK_HOST_TIMEOUT = 180 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

View file

@ -28,16 +28,23 @@
"data": { "data": {
"scan_interval": "Scan interval (requires HA restart)", "scan_interval": "Scan interval (requires HA restart)",
"track_iface_clients": "Show client MAC and IP on interfaces", "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" "title": "Basic options"
}, },
"device_tracker": { "sensor_select": {
"data": { "data": {
"sensor_port_tracker": "Port tracker",
"sensor_port_traffic": "Port traffic",
"track_network_hosts": "Track network devices", "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"
} }
} }
} }