mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 10:17:51 +00:00
Added Insteon Support
This commit is contained in:
parent
0acce86596
commit
d59b98ee2b
@ -10,6 +10,9 @@ omit =
|
|||||||
homeassistant/components/arduino.py
|
homeassistant/components/arduino.py
|
||||||
homeassistant/components/*/arduino.py
|
homeassistant/components/*/arduino.py
|
||||||
|
|
||||||
|
homeassistant/components/insteon.py
|
||||||
|
homeassistant/components/*/insteon.py
|
||||||
|
|
||||||
homeassistant/components/isy994.py
|
homeassistant/components/isy994.py
|
||||||
homeassistant/components/*/isy994.py
|
homeassistant/components/*/isy994.py
|
||||||
|
|
||||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -72,3 +72,7 @@ nosetests.xml
|
|||||||
# venv stuff
|
# venv stuff
|
||||||
pyvenv.cfg
|
pyvenv.cfg
|
||||||
pip-selfcheck.json
|
pip-selfcheck.json
|
||||||
|
|
||||||
|
# vimmy stuff
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
93
homeassistant/components/insteon.py
Normal file
93
homeassistant/components/insteon.py
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
"""
|
||||||
|
homeassistant.components.light
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Support for Insteon Hub.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import homeassistant.bootstrap as bootstrap
|
||||||
|
from homeassistant.helpers import validate_config
|
||||||
|
from homeassistant.loader import get_component
|
||||||
|
from homeassistant.helpers.entity import ToggleEntity
|
||||||
|
from homeassistant.const import (
|
||||||
|
CONF_USERNAME, CONF_PASSWORD, ATTR_DISCOVERED,
|
||||||
|
ATTR_SERVICE, EVENT_PLATFORM_DISCOVERED)
|
||||||
|
|
||||||
|
# The domain of your component. Should be equal to the name of your component
|
||||||
|
DOMAIN = "insteon"
|
||||||
|
|
||||||
|
# List of component names (string) your component depends upon
|
||||||
|
REQUIREMENTS = [
|
||||||
|
'insteon_hub==0.4.5'
|
||||||
|
]
|
||||||
|
|
||||||
|
API_KEY = "3eb14d15-a486-4d9e-99af-179d0e9417c11444718937.80636061"
|
||||||
|
INSTEON = None
|
||||||
|
|
||||||
|
DISCOVER_LIGHTS = "insteon.lights"
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def setup(hass, config):
|
||||||
|
"""
|
||||||
|
Setup Insteon Hub component.
|
||||||
|
This will automatically import associated lights.
|
||||||
|
"""
|
||||||
|
if not validate_config(
|
||||||
|
config,
|
||||||
|
{DOMAIN: [CONF_USERNAME, CONF_PASSWORD]},
|
||||||
|
_LOGGER):
|
||||||
|
return False
|
||||||
|
|
||||||
|
import insteon
|
||||||
|
username = config[DOMAIN][CONF_USERNAME]
|
||||||
|
password = config[DOMAIN][CONF_PASSWORD]
|
||||||
|
global INSTEON
|
||||||
|
INSTEON = insteon.Insteon(username, password, API_KEY)
|
||||||
|
|
||||||
|
comp_name = 'light'
|
||||||
|
discovery = DISCOVER_LIGHTS
|
||||||
|
component = get_component(comp_name)
|
||||||
|
bootstrap.setup_component(hass, component.DOMAIN, config)
|
||||||
|
hass.bus.fire(
|
||||||
|
EVENT_PLATFORM_DISCOVERED,
|
||||||
|
{ATTR_SERVICE: discovery, ATTR_DISCOVERED: {}})
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
class InsteonToggleDevice(ToggleEntity):
|
||||||
|
""" Abstract Class for an Insteon node. """
|
||||||
|
|
||||||
|
def __init__(self, node):
|
||||||
|
self.node = node
|
||||||
|
self._value = 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
""" Returns the name of the node. """
|
||||||
|
return self.node.DeviceName
|
||||||
|
|
||||||
|
@property
|
||||||
|
def unique_id(self):
|
||||||
|
""" Returns the id of this insteon node. """
|
||||||
|
return self.node.DeviceID
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
""" Update state of the sensor. """
|
||||||
|
resp = self.node.send_command('get_status', wait=True)
|
||||||
|
try:
|
||||||
|
self._value = resp['response']['level']
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_on(self):
|
||||||
|
""" Returns boolean response if the node is on. """
|
||||||
|
return self._value != 0
|
||||||
|
|
||||||
|
def turn_on(self, **kwargs):
|
||||||
|
self.node.send_command('on')
|
||||||
|
|
||||||
|
def turn_off(self, **kwargs):
|
||||||
|
self.node.send_command('off')
|
@ -10,7 +10,8 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import csv
|
import csv
|
||||||
|
|
||||||
from homeassistant.components import group, discovery, wink, isy994, zwave
|
from homeassistant.components import (
|
||||||
|
group, discovery, wink, isy994, zwave, insteon)
|
||||||
from homeassistant.config import load_yaml_config_file
|
from homeassistant.config import load_yaml_config_file
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
STATE_ON, SERVICE_TURN_ON, SERVICE_TURN_OFF, SERVICE_TOGGLE,
|
STATE_ON, SERVICE_TURN_ON, SERVICE_TURN_OFF, SERVICE_TOGGLE,
|
||||||
@ -59,6 +60,7 @@ LIGHT_PROFILES_FILE = "light_profiles.csv"
|
|||||||
# Maps discovered services to their platforms
|
# Maps discovered services to their platforms
|
||||||
DISCOVERY_PLATFORMS = {
|
DISCOVERY_PLATFORMS = {
|
||||||
wink.DISCOVER_LIGHTS: 'wink',
|
wink.DISCOVER_LIGHTS: 'wink',
|
||||||
|
insteon.DISCOVER_LIGHTS: 'insteon',
|
||||||
isy994.DISCOVER_LIGHTS: 'isy994',
|
isy994.DISCOVER_LIGHTS: 'isy994',
|
||||||
discovery.SERVICE_HUE: 'hue',
|
discovery.SERVICE_HUE: 'hue',
|
||||||
zwave.DISCOVER_LIGHTS: 'zwave',
|
zwave.DISCOVER_LIGHTS: 'zwave',
|
||||||
|
16
homeassistant/components/light/insteon.py
Normal file
16
homeassistant/components/light/insteon.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
homeassistant.components.light.insteon
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Support for Insteon Hub lights.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from homeassistant.components.insteon import (INSTEON, InsteonToggleDevice)
|
||||||
|
|
||||||
|
|
||||||
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
|
""" Sets up the Insteon Hub light platform. """
|
||||||
|
devs = []
|
||||||
|
for device in INSTEON.devices:
|
||||||
|
if device.DeviceCategory == "Switched Lighting Control":
|
||||||
|
devs.append(InsteonToggleDevice(device))
|
||||||
|
add_devices(devs)
|
@ -39,6 +39,9 @@ pyfttt==0.3
|
|||||||
# homeassistant.components.influxdb
|
# homeassistant.components.influxdb
|
||||||
influxdb==2.10.0
|
influxdb==2.10.0
|
||||||
|
|
||||||
|
# homeassistant.components.insteon
|
||||||
|
insteon_hub==0.4.5
|
||||||
|
|
||||||
# homeassistant.components.isy994
|
# homeassistant.components.isy994
|
||||||
PyISY==1.0.5
|
PyISY==1.0.5
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user