Cleanup old device_tracker stuff (#8627)

* Cleanup old device_tracker stuff

* Fix lint
This commit is contained in:
Pascal Vizeli 2017-07-24 16:45:02 +02:00 committed by Paulus Schoutsen
parent 654ad41464
commit f86bd15580
22 changed files with 478 additions and 679 deletions

View File

@ -7,9 +7,7 @@ https://home-assistant.io/components/device_tracker.actiontec/
import logging import logging
import re import re
import telnetlib import telnetlib
import threading
from collections import namedtuple from collections import namedtuple
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
@ -17,9 +15,6 @@ import homeassistant.util.dt as dt_util
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -54,7 +49,6 @@ class ActiontecDeviceScanner(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.lock = threading.Lock()
self.last_results = [] self.last_results = []
data = self.get_actiontec_data() data = self.get_actiontec_data()
self.success_init = data is not None self.success_init = data is not None
@ -74,7 +68,6 @@ class ActiontecDeviceScanner(DeviceScanner):
return client.ip return client.ip
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the router is up to date. """Ensure the information from the router is up to date.
@ -84,7 +77,6 @@ class ActiontecDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
now = dt_util.now() now = dt_util.now()
actiontec_data = self.get_actiontec_data() actiontec_data = self.get_actiontec_data()
if not actiontec_data: if not actiontec_data:

View File

@ -6,8 +6,6 @@ https://home-assistant.io/components/device_tracker.aruba/
""" """
import logging import logging
import re import re
import threading
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -15,14 +13,11 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
REQUIREMENTS = ['pexpect==4.0.1'] REQUIREMENTS = ['pexpect==4.0.1']
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
_DEVICES_REGEX = re.compile( _DEVICES_REGEX = re.compile(
r'(?P<name>([^\s]+))\s+' + r'(?P<name>([^\s]+))\s+' +
r'(?P<ip>([0-9]{1,3}[\.]){3}[0-9]{1,3})\s+' + r'(?P<ip>([0-9]{1,3}[\.]){3}[0-9]{1,3})\s+' +
@ -52,8 +47,6 @@ class ArubaDeviceScanner(DeviceScanner):
self.username = config[CONF_USERNAME] self.username = config[CONF_USERNAME]
self.password = config[CONF_PASSWORD] self.password = config[CONF_PASSWORD]
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
# Test the router is accessible. # Test the router is accessible.
@ -74,7 +67,6 @@ class ArubaDeviceScanner(DeviceScanner):
return client['name'] return client['name']
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the Aruba Access Point is up to date. """Ensure the information from the Aruba Access Point is up to date.
@ -83,7 +75,6 @@ class ArubaDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
data = self.get_aruba_data() data = self.get_aruba_data()
if not data: if not data:
return False return False

View File

@ -8,9 +8,7 @@ import logging
import re import re
import socket import socket
import telnetlib import telnetlib
import threading
from collections import namedtuple from collections import namedtuple
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -18,7 +16,6 @@ from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import ( from homeassistant.const import (
CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_PORT) CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_PORT)
from homeassistant.util import Throttle
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
REQUIREMENTS = ['pexpect==4.0.1'] REQUIREMENTS = ['pexpect==4.0.1']
@ -32,8 +29,6 @@ CONF_SSH_KEY = 'ssh_key'
DEFAULT_SSH_PORT = 22 DEFAULT_SSH_PORT = 22
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
SECRET_GROUP = 'Password or SSH Key' SECRET_GROUP = 'Password or SSH Key'
PLATFORM_SCHEMA = vol.All( PLATFORM_SCHEMA = vol.All(
@ -123,8 +118,6 @@ class AsusWrtDeviceScanner(DeviceScanner):
self.password, self.password,
self.mode == "ap") self.mode == "ap")
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
# Test the router is accessible. # Test the router is accessible.
@ -145,7 +138,6 @@ class AsusWrtDeviceScanner(DeviceScanner):
return client['host'] return client['host']
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the ASUSWRT router is up to date. """Ensure the information from the ASUSWRT router is up to date.
@ -154,7 +146,6 @@ class AsusWrtDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
_LOGGER.info('Checking Devices') _LOGGER.info('Checking Devices')
data = self.get_asuswrt_data() data = self.get_asuswrt_data()
if not data: if not data:

View File

@ -6,8 +6,6 @@ https://home-assistant.io/components/device_tracker.bt_home_hub_5/
""" """
import logging import logging
import re import re
import threading
from datetime import timedelta
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import json import json
from urllib.parse import unquote from urllib.parse import unquote
@ -19,13 +17,10 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST from homeassistant.const import CONF_HOST
from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
_MAC_REGEX = re.compile(r'(([0-9A-Fa-f]{1,2}\:){5}[0-9A-Fa-f]{1,2})') _MAC_REGEX = re.compile(r'(([0-9A-Fa-f]{1,2}\:){5}[0-9A-Fa-f]{1,2})')
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string vol.Required(CONF_HOST): cv.string
}) })
@ -46,11 +41,7 @@ class BTHomeHub5DeviceScanner(DeviceScanner):
"""Initialise the scanner.""" """Initialise the scanner."""
_LOGGER.info("Initialising BT Home Hub 5") _LOGGER.info("Initialising BT Home Hub 5")
self.host = config.get(CONF_HOST, '192.168.1.254') self.host = config.get(CONF_HOST, '192.168.1.254')
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
self.url = 'http://{}/nonAuth/home_status.xml'.format(self.host) self.url = 'http://{}/nonAuth/home_status.xml'.format(self.host)
# Test the router is accessible # Test the router is accessible
@ -65,7 +56,6 @@ class BTHomeHub5DeviceScanner(DeviceScanner):
def get_device_name(self, device): def get_device_name(self, device):
"""Return the name of the given device or None if we don't know.""" """Return the name of the given device or None if we don't know."""
with self.lock:
# If not initialised and not already scanned and not found. # If not initialised and not already scanned and not found.
if device not in self.last_results: if device not in self.last_results:
self._update_info() self._update_info()
@ -75,7 +65,6 @@ class BTHomeHub5DeviceScanner(DeviceScanner):
return self.last_results.get(device) return self.last_results.get(device)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the BT Home Hub 5 is up to date. """Ensure the information from the BT Home Hub 5 is up to date.
@ -84,7 +73,6 @@ class BTHomeHub5DeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
_LOGGER.info("Scanning") _LOGGER.info("Scanning")
data = _get_homehub_data(self.url) data = _get_homehub_data(self.url)

View File

@ -5,7 +5,6 @@ For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/device_tracker.cisco_ios/ https://home-assistant.io/components/device_tracker.cisco_ios/
""" """
import logging import logging
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -14,9 +13,6 @@ from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME, \ from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME, \
CONF_PORT CONF_PORT
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -65,7 +61,6 @@ class CiscoDeviceScanner(DeviceScanner):
return self.last_results return self.last_results
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
""" """
Ensure the information from the Cisco router is up to date. Ensure the information from the Cisco router is up to date.

View File

@ -6,8 +6,6 @@ https://home-assistant.io/components/device_tracker.ddwrt/
""" """
import logging import logging
import re import re
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -16,9 +14,6 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -50,8 +45,6 @@ class DdWrtDeviceScanner(DeviceScanner):
self.username = config[CONF_USERNAME] self.username = config[CONF_USERNAME]
self.password = config[CONF_PASSWORD] self.password = config[CONF_PASSWORD]
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
self.mac2name = {} self.mac2name = {}
@ -69,7 +62,6 @@ class DdWrtDeviceScanner(DeviceScanner):
def get_device_name(self, device): def get_device_name(self, device):
"""Return the name of the given device or None if we don't know.""" """Return the name of the given device or None if we don't know."""
with self.lock:
# If not initialised and not already scanned and not found. # If not initialised and not already scanned and not found.
if device not in self.mac2name: if device not in self.mac2name:
url = 'http://{}/Status_Lan.live.asp'.format(self.host) url = 'http://{}/Status_Lan.live.asp'.format(self.host)
@ -100,13 +92,11 @@ class DdWrtDeviceScanner(DeviceScanner):
return self.mac2name.get(device) return self.mac2name.get(device)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the DD-WRT router is up to date. """Ensure the information from the DD-WRT router is up to date.
Return boolean if scanning successful. Return boolean if scanning successful.
""" """
with self.lock:
_LOGGER.info("Checking ARP") _LOGGER.info("Checking ARP")
url = 'http://{}/Status_Wireless.live.asp'.format(self.host) url = 'http://{}/Status_Wireless.live.asp'.format(self.host)

View File

@ -5,7 +5,6 @@ For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/device_tracker.fritz/ https://home-assistant.io/components/device_tracker.fritz/
""" """
import logging import logging
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -13,12 +12,9 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
REQUIREMENTS = ['fritzconnection==0.6.3'] REQUIREMENTS = ['fritzconnection==0.6.3']
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
CONF_DEFAULT_IP = '169.254.1.1' # This IP is valid for all FRITZ!Box routers. CONF_DEFAULT_IP = '169.254.1.1' # This IP is valid for all FRITZ!Box routers.
@ -88,7 +84,6 @@ class FritzBoxScanner(DeviceScanner):
return None return None
return ret return ret
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Retrieve latest information from the FRITZ!Box.""" """Retrieve latest information from the FRITZ!Box."""
if not self.success_init: if not self.success_init:

View File

@ -6,8 +6,6 @@ https://home-assistant.io/components/device_tracker.linksys_ap/
""" """
import base64 import base64
import logging import logging
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -16,9 +14,7 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA
from homeassistant.const import ( from homeassistant.const import (
CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_VERIFY_SSL) CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_VERIFY_SSL)
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
INTERFACES = 2 INTERFACES = 2
DEFAULT_TIMEOUT = 10 DEFAULT_TIMEOUT = 10
@ -51,8 +47,6 @@ class LinksysAPDeviceScanner(object):
self.username = config[CONF_USERNAME] self.username = config[CONF_USERNAME]
self.password = config[CONF_PASSWORD] self.password = config[CONF_PASSWORD]
self.verify_ssl = config[CONF_VERIFY_SSL] self.verify_ssl = config[CONF_VERIFY_SSL]
self.lock = threading.Lock()
self.last_results = [] self.last_results = []
# Check if the access point is accessible # Check if the access point is accessible
@ -76,12 +70,10 @@ class LinksysAPDeviceScanner(object):
""" """
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Check for connected devices.""" """Check for connected devices."""
from bs4 import BeautifulSoup as BS from bs4 import BeautifulSoup as BS
with self.lock:
_LOGGER.info("Checking Linksys AP") _LOGGER.info("Checking Linksys AP")
self.last_results = [] self.last_results = []

View File

@ -1,7 +1,5 @@
"""Support for Linksys Smart Wifi routers.""" """Support for Linksys Smart Wifi routers."""
import logging import logging
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -10,9 +8,7 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST from homeassistant.const import CONF_HOST
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
DEFAULT_TIMEOUT = 10 DEFAULT_TIMEOUT = 10
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -36,8 +32,6 @@ class LinksysSmartWifiDeviceScanner(DeviceScanner):
def __init__(self, config): def __init__(self, config):
"""Initialize the scanner.""" """Initialize the scanner."""
self.host = config[CONF_HOST] self.host = config[CONF_HOST]
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
# Check if the access point is accessible # Check if the access point is accessible
@ -55,10 +49,8 @@ class LinksysSmartWifiDeviceScanner(DeviceScanner):
"""Return the name (if known) of the device.""" """Return the name (if known) of the device."""
return self.last_results.get(mac) return self.last_results.get(mac)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Check for connected devices.""" """Check for connected devices."""
with self.lock:
_LOGGER.info("Checking Linksys Smart Wifi") _LOGGER.info("Checking Linksys Smart Wifi")
self.last_results = {} self.last_results = {}

View File

@ -7,8 +7,6 @@ https://home-assistant.io/components/device_tracker.luci/
import json import json
import logging import logging
import re import re
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -18,9 +16,6 @@ from homeassistant.exceptions import HomeAssistantError
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -55,12 +50,8 @@ class LuciDeviceScanner(DeviceScanner):
self.parse_api_pattern = re.compile(r"(?P<param>\w*) = (?P<value>.*);") self.parse_api_pattern = re.compile(r"(?P<param>\w*) = (?P<value>.*);")
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
self.refresh_token() self.refresh_token()
self.mac2name = None self.mac2name = None
self.success_init = self.token is not None self.success_init = self.token is not None
@ -75,7 +66,6 @@ class LuciDeviceScanner(DeviceScanner):
def get_device_name(self, device): def get_device_name(self, device):
"""Return the name of the given device or None if we don't know.""" """Return the name of the given device or None if we don't know."""
with self.lock:
if self.mac2name is None: if self.mac2name is None:
url = 'http://{}/cgi-bin/luci/rpc/uci'.format(self.host) url = 'http://{}/cgi-bin/luci/rpc/uci'.format(self.host)
result = _req_json_rpc(url, 'get_all', 'dhcp', result = _req_json_rpc(url, 'get_all', 'dhcp',
@ -92,7 +82,6 @@ class LuciDeviceScanner(DeviceScanner):
return return
return self.mac2name.get(device.upper(), None) return self.mac2name.get(device.upper(), None)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the Luci router is up to date. """Ensure the information from the Luci router is up to date.
@ -101,7 +90,6 @@ class LuciDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
_LOGGER.info("Checking ARP") _LOGGER.info("Checking ARP")
url = 'http://{}/cgi-bin/luci/rpc/sys'.format(self.host) url = 'http://{}/cgi-bin/luci/rpc/sys'.format(self.host)

View File

@ -5,25 +5,17 @@ For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/device_tracker.mikrotik/ https://home-assistant.io/components/device_tracker.mikrotik/
""" """
import logging import logging
import threading
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import (CONF_HOST, from homeassistant.const import (
CONF_PASSWORD, CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_PORT)
CONF_USERNAME,
CONF_PORT)
from homeassistant.util import Throttle
REQUIREMENTS = ['librouteros==1.0.2'] REQUIREMENTS = ['librouteros==1.0.2']
# Return cached results if last scan was less then this time ago.
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
MTK_DEFAULT_API_PORT = '8728' MTK_DEFAULT_API_PORT = '8728'
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -54,12 +46,9 @@ class MikrotikScanner(DeviceScanner):
self.username = config[CONF_USERNAME] self.username = config[CONF_USERNAME]
self.password = config[CONF_PASSWORD] self.password = config[CONF_PASSWORD]
self.lock = threading.Lock()
self.connected = False self.connected = False
self.success_init = False self.success_init = False
self.client = None self.client = None
self.wireless_exist = None self.wireless_exist = None
self.success_init = self.connect_to_device() self.success_init = self.connect_to_device()
@ -118,13 +107,10 @@ class MikrotikScanner(DeviceScanner):
def get_device_name(self, mac): def get_device_name(self, mac):
"""Return the name of the given device or None if we don't know.""" """Return the name of the given device or None if we don't know."""
with self.lock:
return self.last_results.get(mac) return self.last_results.get(mac)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Retrieve latest information from the Mikrotik box.""" """Retrieve latest information from the Mikrotik box."""
with self.lock:
if self.wireless_exist: if self.wireless_exist:
devices_tracker = 'wireless' devices_tracker = 'wireless'
else: else:

View File

@ -5,8 +5,6 @@ For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/device_tracker.netgear/ https://home-assistant.io/components/device_tracker.netgear/
""" """
import logging import logging
import threading
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -15,14 +13,11 @@ from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import ( from homeassistant.const import (
CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_PORT) CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_PORT)
from homeassistant.util import Throttle
REQUIREMENTS = ['pynetgear==0.3.3'] REQUIREMENTS = ['pynetgear==0.3.3']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
DEFAULT_HOST = 'routerlogin.net' DEFAULT_HOST = 'routerlogin.net'
DEFAULT_USER = 'admin' DEFAULT_USER = 'admin'
DEFAULT_PORT = 5000 DEFAULT_PORT = 5000
@ -56,8 +51,6 @@ class NetgearDeviceScanner(DeviceScanner):
import pynetgear import pynetgear
self.last_results = [] self.last_results = []
self.lock = threading.Lock()
self._api = pynetgear.Netgear(password, host, username, port) self._api = pynetgear.Netgear(password, host, username, port)
_LOGGER.info("Logging in") _LOGGER.info("Logging in")
@ -85,7 +78,6 @@ class NetgearDeviceScanner(DeviceScanner):
except StopIteration: except StopIteration:
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Retrieve latest information from the Netgear router. """Retrieve latest information from the Netgear router.
@ -94,7 +86,6 @@ class NetgearDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return return
with self.lock:
_LOGGER.info("Scanning") _LOGGER.info("Scanning")
results = self._api.get_attached_devices() results = self._api.get_attached_devices()

View File

@ -4,11 +4,11 @@ Support for scanning a network with nmap.
For more details about this platform, please refer to the documentation at For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/device_tracker.nmap_tracker/ https://home-assistant.io/components/device_tracker.nmap_tracker/
""" """
from datetime import timedelta
import logging import logging
import re import re
import subprocess import subprocess
from collections import namedtuple from collections import namedtuple
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -17,7 +17,6 @@ import homeassistant.util.dt as dt_util
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOSTS from homeassistant.const import CONF_HOSTS
from homeassistant.util import Throttle
REQUIREMENTS = ['python-nmap==0.6.1'] REQUIREMENTS = ['python-nmap==0.6.1']
@ -29,8 +28,6 @@ CONF_HOME_INTERVAL = 'home_interval'
CONF_OPTIONS = 'scan_options' CONF_OPTIONS = 'scan_options'
DEFAULT_OPTIONS = '-F --host-timeout 5s' DEFAULT_OPTIONS = '-F --host-timeout 5s'
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOSTS): cv.ensure_list, vol.Required(CONF_HOSTS): cv.ensure_list,
@ -97,7 +94,6 @@ class NmapDeviceScanner(DeviceScanner):
return filter_named[0] return filter_named[0]
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Scan the network for devices. """Scan the network for devices.

View File

@ -6,8 +6,6 @@ https://home-assistant.io/components/device_tracker.sky_hub/
""" """
import logging import logging
import re import re
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -16,13 +14,10 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST from homeassistant.const import CONF_HOST
from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
_MAC_REGEX = re.compile(r'(([0-9A-Fa-f]{1,2}\:){5}[0-9A-Fa-f]{1,2})') _MAC_REGEX = re.compile(r'(([0-9A-Fa-f]{1,2}\:){5}[0-9A-Fa-f]{1,2})')
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string vol.Required(CONF_HOST): cv.string
}) })
@ -43,11 +38,7 @@ class SkyHubDeviceScanner(DeviceScanner):
"""Initialise the scanner.""" """Initialise the scanner."""
_LOGGER.info("Initialising Sky Hub") _LOGGER.info("Initialising Sky Hub")
self.host = config.get(CONF_HOST, '192.168.1.254') self.host = config.get(CONF_HOST, '192.168.1.254')
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
self.url = 'http://{}/'.format(self.host) self.url = 'http://{}/'.format(self.host)
# Test the router is accessible # Test the router is accessible
@ -62,7 +53,6 @@ class SkyHubDeviceScanner(DeviceScanner):
def get_device_name(self, device): def get_device_name(self, device):
"""Return the name of the given device or None if we don't know.""" """Return the name of the given device or None if we don't know."""
with self.lock:
# If not initialised and not already scanned and not found. # If not initialised and not already scanned and not found.
if device not in self.last_results: if device not in self.last_results:
self._update_info() self._update_info()
@ -72,7 +62,6 @@ class SkyHubDeviceScanner(DeviceScanner):
return self.last_results.get(device) return self.last_results.get(device)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the Sky Hub is up to date. """Ensure the information from the Sky Hub is up to date.
@ -81,7 +70,6 @@ class SkyHubDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
_LOGGER.info("Scanning") _LOGGER.info("Scanning")
data = _get_skyhub_data(self.url) data = _get_skyhub_data(self.url)

View File

@ -6,8 +6,6 @@ https://home-assistant.io/components/device_tracker.snmp/
""" """
import binascii import binascii
import logging import logging
import threading
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -15,7 +13,6 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST from homeassistant.const import CONF_HOST
from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -28,8 +25,6 @@ CONF_BASEOID = 'baseoid'
DEFAULT_COMMUNITY = 'public' DEFAULT_COMMUNITY = 'public'
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string, vol.Required(CONF_HOST): cv.string,
vol.Optional(CONF_COMMUNITY, default=DEFAULT_COMMUNITY): cv.string, vol.Optional(CONF_COMMUNITY, default=DEFAULT_COMMUNITY): cv.string,
@ -68,9 +63,6 @@ class SnmpScanner(DeviceScanner):
privProtocol=cfg.usmAesCfb128Protocol privProtocol=cfg.usmAesCfb128Protocol
) )
self.baseoid = cmdgen.MibVariable(config[CONF_BASEOID]) self.baseoid = cmdgen.MibVariable(config[CONF_BASEOID])
self.lock = threading.Lock()
self.last_results = [] self.last_results = []
# Test the router is accessible # Test the router is accessible
@ -90,7 +82,6 @@ class SnmpScanner(DeviceScanner):
# We have no names # We have no names
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the device is up to date. """Ensure the information from the device is up to date.
@ -99,7 +90,6 @@ class SnmpScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
data = self.get_snmp_data() data = self.get_snmp_data()
if not data: if not data:
return False return False

View File

@ -5,8 +5,6 @@ For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/device_tracker.swisscom/ https://home-assistant.io/components/device_tracker.swisscom/
""" """
import logging import logging
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -15,9 +13,6 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST from homeassistant.const import CONF_HOST
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -41,9 +36,6 @@ class SwisscomDeviceScanner(DeviceScanner):
def __init__(self, config): def __init__(self, config):
"""Initialize the scanner.""" """Initialize the scanner."""
self.host = config[CONF_HOST] self.host = config[CONF_HOST]
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
# Test the router is accessible. # Test the router is accessible.
@ -64,7 +56,6 @@ class SwisscomDeviceScanner(DeviceScanner):
return client['host'] return client['host']
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the Swisscom router is up to date. """Ensure the information from the Swisscom router is up to date.
@ -73,7 +64,6 @@ class SwisscomDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
_LOGGER.info("Loading data from Swisscom Internet Box") _LOGGER.info("Loading data from Swisscom Internet Box")
data = self.get_swisscom_data() data = self.get_swisscom_data()
if not data: if not data:

View File

@ -7,8 +7,6 @@ https://home-assistant.io/components/device_tracker.thomson/
import logging import logging
import re import re
import telnetlib import telnetlib
import threading
from datetime import timedelta
import voluptuous as vol import voluptuous as vol
@ -16,9 +14,6 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -54,9 +49,6 @@ class ThomsonDeviceScanner(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.lock = threading.Lock()
self.last_results = {} self.last_results = {}
# Test the router is accessible. # Test the router is accessible.
@ -77,7 +69,6 @@ class ThomsonDeviceScanner(DeviceScanner):
return client['host'] return client['host']
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the THOMSON router is up to date. """Ensure the information from the THOMSON router is up to date.
@ -86,7 +77,6 @@ class ThomsonDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
_LOGGER.info("Checking ARP") _LOGGER.info("Checking ARP")
data = self.get_thomson_data() data = self.get_thomson_data()
if not data: if not data:

View File

@ -7,8 +7,6 @@ https://home-assistant.io/components/device_tracker.tomato/
import json import json
import logging import logging
import re import re
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -17,9 +15,6 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
CONF_HTTP_ID = 'http_id' CONF_HTTP_ID = 'http_id'
@ -54,8 +49,6 @@ class TomatoDeviceScanner(DeviceScanner):
self.parse_api_pattern = re.compile(r"(?P<param>\w*) = (?P<value>.*);") self.parse_api_pattern = re.compile(r"(?P<param>\w*) = (?P<value>.*);")
self.logger = logging.getLogger("{}.{}".format(__name__, "Tomato")) self.logger = logging.getLogger("{}.{}".format(__name__, "Tomato"))
self.lock = threading.Lock()
self.last_results = {"wldev": [], "dhcpd_lease": []} self.last_results = {"wldev": [], "dhcpd_lease": []}
self.success_init = self._update_tomato_info() self.success_init = self._update_tomato_info()
@ -76,13 +69,11 @@ class TomatoDeviceScanner(DeviceScanner):
return filter_named[0] return filter_named[0]
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_tomato_info(self): def _update_tomato_info(self):
"""Ensure the information from the Tomato router is up to date. """Ensure the information from the Tomato router is up to date.
Return boolean if scanning successful. Return boolean if scanning successful.
""" """
with self.lock:
self.logger.info("Scanning") self.logger.info("Scanning")
try: try:

View File

@ -8,8 +8,7 @@ import base64
import hashlib import hashlib
import logging import logging
import re import re
import threading from datetime import datetime
from datetime import timedelta, datetime
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -18,9 +17,6 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -59,7 +55,6 @@ class TplinkDeviceScanner(DeviceScanner):
self.password = password self.password = password
self.last_results = {} self.last_results = {}
self.lock = threading.Lock()
self.success_init = self._update_info() self.success_init = self._update_info()
def scan_devices(self): def scan_devices(self):
@ -72,13 +67,11 @@ class TplinkDeviceScanner(DeviceScanner):
"""Get firmware doesn't save the name of the wireless device.""" """Get firmware doesn't save the name of the wireless device."""
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the TP-Link router is up to date. """Ensure the information from the TP-Link router is up to date.
Return boolean if scanning successful. Return boolean if scanning successful.
""" """
with self.lock:
_LOGGER.info("Loading wireless clients...") _LOGGER.info("Loading wireless clients...")
url = 'http://{}/userRpm/WlanStationRpm.htm'.format(self.host) url = 'http://{}/userRpm/WlanStationRpm.htm'.format(self.host)
@ -109,13 +102,11 @@ class Tplink2DeviceScanner(TplinkDeviceScanner):
"""Get firmware doesn't save the name of the wireless device.""" """Get firmware doesn't save the name of the wireless device."""
return self.last_results.get(device) return self.last_results.get(device)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the TP-Link router is up to date. """Ensure the information from the TP-Link router is up to date.
Return boolean if scanning successful. Return boolean if scanning successful.
""" """
with self.lock:
_LOGGER.info("Loading wireless clients...") _LOGGER.info("Loading wireless clients...")
url = 'http://{}/data/map_access_wireless_client_grid.json' \ url = 'http://{}/data/map_access_wireless_client_grid.json' \
@ -202,13 +193,11 @@ class Tplink3DeviceScanner(TplinkDeviceScanner):
response.text) response.text)
return False return False
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the TP-Link router is up to date. """Ensure the information from the TP-Link router is up to date.
Return boolean if scanning successful. Return boolean if scanning successful.
""" """
with self.lock:
if (self.stok == '') or (self.sysauth == ''): if (self.stok == '') or (self.sysauth == ''):
self._get_auth_tokens() self._get_auth_tokens()
@ -253,7 +242,6 @@ class Tplink3DeviceScanner(TplinkDeviceScanner):
return False return False
def _log_out(self): def _log_out(self):
with self.lock:
_LOGGER.info("Logging out of router admin interface...") _LOGGER.info("Logging out of router admin interface...")
url = ('http://{}/cgi-bin/luci/;stok={}/admin/system?' url = ('http://{}/cgi-bin/luci/;stok={}/admin/system?'
@ -318,13 +306,11 @@ class Tplink4DeviceScanner(TplinkDeviceScanner):
_LOGGER.error("Couldn't fetch auth tokens") _LOGGER.error("Couldn't fetch auth tokens")
return False return False
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the TP-Link router is up to date. """Ensure the information from the TP-Link router is up to date.
Return boolean if scanning successful. Return boolean if scanning successful.
""" """
with self.lock:
if (self.credentials == '') or (self.token == ''): if (self.credentials == '') or (self.token == ''):
self._get_auth_tokens() self._get_auth_tokens()
@ -365,13 +351,11 @@ class Tplink5DeviceScanner(TplinkDeviceScanner):
"""Get firmware doesn't save the name of the wireless device.""" """Get firmware doesn't save the name of the wireless device."""
return None return None
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the TP-Link AP is up to date. """Ensure the information from the TP-Link AP is up to date.
Return boolean if scanning successful. Return boolean if scanning successful.
""" """
with self.lock:
_LOGGER.info("Loading wireless clients...") _LOGGER.info("Loading wireless clients...")
base_url = 'http://{}'.format(self.host) base_url = 'http://{}'.format(self.host)

View File

@ -7,8 +7,6 @@ https://home-assistant.io/components/device_tracker.ubus/
import json import json
import logging import logging
import re import re
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -17,12 +15,8 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
# Return cached results if last scan was less then this time ago.
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
@ -70,7 +64,6 @@ class UbusDeviceScanner(DeviceScanner):
self.password = config[CONF_PASSWORD] self.password = config[CONF_PASSWORD]
self.parse_api_pattern = re.compile(r"(?P<param>\w*) = (?P<value>.*);") self.parse_api_pattern = re.compile(r"(?P<param>\w*) = (?P<value>.*);")
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
self.url = 'http://{}/ubus'.format(host) self.url = 'http://{}/ubus'.format(host)
@ -89,7 +82,6 @@ class UbusDeviceScanner(DeviceScanner):
@_refresh_on_acccess_denied @_refresh_on_acccess_denied
def get_device_name(self, device): def get_device_name(self, device):
"""Return the name of the given device or None if we don't know.""" """Return the name of the given device or None if we don't know."""
with self.lock:
if self.leasefile is None: if self.leasefile is None:
result = _req_json_rpc( result = _req_json_rpc(
self.url, self.session_id, 'call', 'uci', 'get', self.url, self.session_id, 'call', 'uci', 'get',
@ -116,7 +108,6 @@ class UbusDeviceScanner(DeviceScanner):
return self.mac2name.get(device.upper(), None) return self.mac2name.get(device.upper(), None)
@_refresh_on_acccess_denied @_refresh_on_acccess_denied
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the information from the Luci router is up to date. """Ensure the information from the Luci router is up to date.
@ -125,7 +116,6 @@ class UbusDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
_LOGGER.info("Checking ARP") _LOGGER.info("Checking ARP")
if not self.hostapd: if not self.hostapd:

View File

@ -9,8 +9,7 @@ import logging
from homeassistant.util import slugify from homeassistant.util import slugify
from homeassistant.helpers.dispatcher import ( from homeassistant.helpers.dispatcher import (
dispatcher_connect, dispatcher_send) dispatcher_connect, dispatcher_send)
from homeassistant.components.volvooncall import ( from homeassistant.components.volvooncall import DATA_KEY, SIGNAL_VEHICLE_SEEN
DATA_KEY, SIGNAL_VEHICLE_SEEN)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View File

@ -5,8 +5,6 @@ For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/device_tracker.xiaomi/ https://home-assistant.io/components/device_tracker.xiaomi/
""" """
import logging import logging
import threading
from datetime import timedelta
import requests import requests
import voluptuous as vol import voluptuous as vol
@ -15,12 +13,9 @@ import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner) DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5)
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string, vol.Required(CONF_HOST): cv.string,
vol.Required(CONF_USERNAME, default='admin'): cv.string, vol.Required(CONF_USERNAME, default='admin'): cv.string,
@ -47,8 +42,6 @@ class XiaomiDeviceScanner(DeviceScanner):
self.username = config[CONF_USERNAME] self.username = config[CONF_USERNAME]
self.password = config[CONF_PASSWORD] self.password = config[CONF_PASSWORD]
self.lock = threading.Lock()
self.last_results = {} self.last_results = {}
self.token = _get_token(self.host, self.username, self.password) self.token = _get_token(self.host, self.username, self.password)
@ -62,7 +55,6 @@ class XiaomiDeviceScanner(DeviceScanner):
def get_device_name(self, device): def get_device_name(self, device):
"""Return the name of the given device or None if we don't know.""" """Return the name of the given device or None if we don't know."""
with self.lock:
if self.mac2name is None: if self.mac2name is None:
result = self._retrieve_list_with_retry() result = self._retrieve_list_with_retry()
if result: if result:
@ -76,7 +68,6 @@ class XiaomiDeviceScanner(DeviceScanner):
return return
return self.mac2name.get(device.upper(), None) return self.mac2name.get(device.upper(), None)
@Throttle(MIN_TIME_BETWEEN_SCANS)
def _update_info(self): def _update_info(self):
"""Ensure the informations from the router are up to date. """Ensure the informations from the router are up to date.
@ -85,7 +76,6 @@ class XiaomiDeviceScanner(DeviceScanner):
if not self.success_init: if not self.success_init:
return False return False
with self.lock:
result = self._retrieve_list_with_retry() result = self._retrieve_list_with_retry()
if result: if result:
self._store_result(result) self._store_result(result)