Provide an option for the DD-WRT device tracker to include non-wireless devices (#24259)
* Use LAN status instead of wireless status for DD-WRT device tracking * Use the previous DD-WRT device tracker behavior unless specified in the configurationpull/24393/head
parent
b5ada3bf10
commit
4c3f39be02
|
@ -18,6 +18,8 @@ _MAC_REGEX = re.compile(r'(([0-9A-Fa-f]{1,2}\:){5}[0-9A-Fa-f]{1,2})')
|
||||||
|
|
||||||
DEFAULT_SSL = False
|
DEFAULT_SSL = False
|
||||||
DEFAULT_VERIFY_SSL = True
|
DEFAULT_VERIFY_SSL = True
|
||||||
|
CONF_WIRELESS_ONLY = 'wireless_only'
|
||||||
|
DEFAULT_WIRELESS_ONLY = True
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_HOST): cv.string,
|
vol.Required(CONF_HOST): cv.string,
|
||||||
|
@ -25,6 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_USERNAME): cv.string,
|
vol.Required(CONF_USERNAME): cv.string,
|
||||||
vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean,
|
vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean,
|
||||||
vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean,
|
vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean,
|
||||||
|
vol.Optional(CONF_WIRELESS_ONLY, default=DEFAULT_WIRELESS_ONLY): cv.boolean
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,6 +49,7 @@ class DdWrtDeviceScanner(DeviceScanner):
|
||||||
self.host = config[CONF_HOST]
|
self.host = config[CONF_HOST]
|
||||||
self.username = config[CONF_USERNAME]
|
self.username = config[CONF_USERNAME]
|
||||||
self.password = config[CONF_PASSWORD]
|
self.password = config[CONF_PASSWORD]
|
||||||
|
self.wireless_only = config[CONF_WIRELESS_ONLY]
|
||||||
|
|
||||||
self.last_results = {}
|
self.last_results = {}
|
||||||
self.mac2name = {}
|
self.mac2name = {}
|
||||||
|
@ -103,8 +107,9 @@ class DdWrtDeviceScanner(DeviceScanner):
|
||||||
"""
|
"""
|
||||||
_LOGGER.info("Checking ARP")
|
_LOGGER.info("Checking ARP")
|
||||||
|
|
||||||
url = '{}://{}/Status_Wireless.live.asp'.format(
|
endpoint = 'Wireless' if self.wireless_only else 'Lan'
|
||||||
self.protocol, self.host)
|
url = '{}://{}/Status_{}.live.asp'.format(
|
||||||
|
self.protocol, self.host, endpoint)
|
||||||
data = self.get_ddwrt_data(url)
|
data = self.get_ddwrt_data(url)
|
||||||
|
|
||||||
if not data:
|
if not data:
|
||||||
|
@ -112,7 +117,10 @@ class DdWrtDeviceScanner(DeviceScanner):
|
||||||
|
|
||||||
self.last_results = []
|
self.last_results = []
|
||||||
|
|
||||||
active_clients = data.get('active_wireless', None)
|
if self.wireless_only:
|
||||||
|
active_clients = data.get('active_wireless', None)
|
||||||
|
else:
|
||||||
|
active_clients = data.get('arp_table', None)
|
||||||
if not active_clients:
|
if not active_clients:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue