Skip to content

Commit

Permalink
Xfinity Gateway device_tracker platform (#21026)
Browse files Browse the repository at this point in the history
* initial commit

* updated .coveragerc, CODEOWNERS, generated requirements_all.txt

* fixed lines exceeding 79 characters

* pylint fixes

* shorten docstring and simplify get_scanner

* extract initialization into get_scanner

* bump pypi version

* name change
  • Loading branch information
cisasteelersfan authored and rohankapoorcom committed Mar 5, 2019
1 parent efe4ce9 commit 0e78054
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 1 deletion.
1 change: 1 addition & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ omit =
homeassistant/components/device_tracker/trackr.py
homeassistant/components/device_tracker/ubee.py
homeassistant/components/device_tracker/ubus.py
homeassistant/components/device_tracker/xfinity.py
homeassistant/components/digital_ocean/*
homeassistant/components/dominos/*
homeassistant/components/doorbird/*
Expand Down
3 changes: 2 additions & 1 deletion CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,13 @@ homeassistant/components/cover/group.py @cdce8p
homeassistant/components/cover/template.py @PhracturedBlue
homeassistant/components/device_tracker/asuswrt.py @kennedyshead
homeassistant/components/device_tracker/automatic.py @armills
homeassistant/components/device_tracker/bt_smarthub.py @jxwolstenholme
homeassistant/components/device_tracker/huawei_router.py @abmantis
homeassistant/components/device_tracker/quantum_gateway.py @cisasteelersfan
homeassistant/components/device_tracker/tile.py @bachya
homeassistant/components/device_tracker/traccar.py @ludeeus
homeassistant/components/device_tracker/bt_smarthub.py @jxwolstenholme
homeassistant/components/device_tracker/synology_srm.py @aerialls
homeassistant/components/device_tracker/xfinity.py @cisasteelersfan
homeassistant/components/light/lifx_legacy.py @amelchio
homeassistant/components/light/yeelight.py @rytilahti
homeassistant/components/light/yeelightsunflower.py @lindsaymarkward
Expand Down
58 changes: 58 additions & 0 deletions homeassistant/components/device_tracker/xfinity.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
"""Support for device tracking via Xfinity Gateways."""
import logging

from requests.exceptions import RequestException
import voluptuous as vol

import homeassistant.helpers.config_validation as cv
from homeassistant.components.device_tracker import (
DOMAIN, PLATFORM_SCHEMA, DeviceScanner)
from homeassistant.const import CONF_HOST

REQUIREMENTS = ['xfinity-gateway==0.0.4']

_LOGGER = logging.getLogger(__name__)

DEFAULT_HOST = '10.0.0.1'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string
})


def get_scanner(hass, config):
"""Validate the configuration and return an Xfinity Gateway scanner."""
from xfinity_gateway import XfinityGateway

gateway = XfinityGateway(config[DOMAIN][CONF_HOST])
scanner = None
try:
gateway.scan_devices()
scanner = XfinityDeviceScanner(gateway)
except (RequestException, ValueError):
_LOGGER.error("Error communicating with Xfinity Gateway. "
"Check host: %s", gateway.host)

return scanner


class XfinityDeviceScanner(DeviceScanner):
"""This class queries an Xfinity Gateway."""

def __init__(self, gateway):
"""Initialize the scanner."""
self.gateway = gateway

def scan_devices(self):
"""Scan for new devices and return a list of found MACs."""
connected_devices = []
try:
connected_devices = self.gateway.scan_devices()
except (RequestException, ValueError):
_LOGGER.error("Unable to scan devices. "
"Check connection to gateway")
return connected_devices

def get_device_name(self, device):
"""Return the name of the given device or None if we don't know."""
return self.gateway.get_device_name(device)
3 changes: 3 additions & 0 deletions requirements_all.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1778,6 +1778,9 @@ xbee-helper==0.0.7
# homeassistant.components.sensor.xbox_live
xboxapi==0.1.1

# homeassistant.components.device_tracker.xfinity
xfinity-gateway==0.0.4

# homeassistant.components.knx
xknx==0.9.4

Expand Down

0 comments on commit 0e78054

Please sign in to comment.