diff --git a/custom_components/mikrotik_router/config_flow.py b/custom_components/mikrotik_router/config_flow.py index 1a0b0e2..61c4e5a 100644 --- a/custom_components/mikrotik_router/config_flow.py +++ b/custom_components/mikrotik_router/config_flow.py @@ -16,6 +16,8 @@ from homeassistant.const import ( CONF_USERNAME, CONF_PASSWORD, CONF_SSL, + CONF_ZONE, + STATE_HOME ) from homeassistant.core import callback @@ -207,6 +209,13 @@ class MikrotikControllerOptionsFlowHandler(OptionsFlow): CONF_TRACK_HOSTS_TIMEOUT, DEFAULT_TRACK_HOST_TIMEOUT ), ): int, + vol.Optional( + CONF_ZONE, + default=self.config_entry.options.get( + CONF_ZONE, STATE_HOME + ), + ): str, + } ), ) diff --git a/custom_components/mikrotik_router/device_tracker.py b/custom_components/mikrotik_router/device_tracker.py index 11029bd..5618432 100644 --- a/custom_components/mikrotik_router/device_tracker.py +++ b/custom_components/mikrotik_router/device_tracker.py @@ -9,6 +9,7 @@ from homeassistant.components.device_tracker.const import SOURCE_TYPE_ROUTER from homeassistant.const import ( CONF_NAME, ATTR_ATTRIBUTION, + STATE_NOT_HOME, ) from homeassistant.core import callback from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC @@ -300,6 +301,13 @@ class MikrotikControllerHostDeviceTracker(MikrotikControllerDeviceTracker): return "mdi:lan-connect" return "mdi:lan-disconnect" + @property + def state(self) -> str: + """Return the state of the device.""" + if self.is_connected: + return self._ctrl.option_zone + return STATE_NOT_HOME + @property def extra_state_attributes(self) -> Dict[str, Any]: """Return the state attributes.""" diff --git a/custom_components/mikrotik_router/mikrotik_controller.py b/custom_components/mikrotik_router/mikrotik_controller.py index 6da9bdd..f865166 100644 --- a/custom_components/mikrotik_router/mikrotik_controller.py +++ b/custom_components/mikrotik_router/mikrotik_controller.py @@ -24,6 +24,8 @@ from homeassistant.const import ( CONF_USERNAME, CONF_PASSWORD, CONF_SSL, + CONF_ZONE, + STATE_HOME, ) from .const import ( @@ -311,6 +313,17 @@ class MikrotikControllerData: CONF_UNIT_OF_MEASUREMENT, DEFAULT_UNIT_OF_MEASUREMENT ) + # --------------------------- + # option_zone + # --------------------------- + @property + def option_zone(self): + """Config entry option to not track ARP.""" + return self.config_entry.options.get( + CONF_ZONE, STATE_HOME + ) + + # --------------------------- # signal_update # --------------------------- diff --git a/custom_components/mikrotik_router/strings.json b/custom_components/mikrotik_router/strings.json index bc9ecb5..3c27376 100644 --- a/custom_components/mikrotik_router/strings.json +++ b/custom_components/mikrotik_router/strings.json @@ -29,7 +29,8 @@ "scan_interval": "Scan interval (requires HA restart)", "track_iface_clients": "Show client MAC and IP on interfaces", "unit_of_measurement": "Unit of measurement", - "track_network_hosts_timeout": "Track network devices timeout (seconds)" + "track_network_hosts_timeout": "Track network devices timeout (seconds)", + "zone": "Zone for device tracker" }, "title": "Basic options" },