2015-03-08 14:14:44 +00:00
|
|
|
"""
|
|
|
|
Support for Vera lights.
|
2015-03-08 12:52:50 +00:00
|
|
|
|
|
|
|
Configuration:
|
2015-03-08 14:14:44 +00:00
|
|
|
This component is useful if you wish for switches connected to your Vera
|
|
|
|
controller to appear as lights in homeassistant. All switches will be added
|
|
|
|
as a light unless you exclude them in the config.
|
2015-03-08 12:52:50 +00:00
|
|
|
|
2015-03-08 14:14:44 +00:00
|
|
|
To use the Vera lights you will need to add something like the following to
|
|
|
|
your config/configuration.yaml
|
2015-03-08 12:52:50 +00:00
|
|
|
|
|
|
|
light:
|
|
|
|
platform: vera
|
|
|
|
vera_controller_url: http://YOUR_VERA_IP:3480/
|
2015-03-08 14:14:44 +00:00
|
|
|
device_data:
|
|
|
|
-
|
2015-03-08 12:52:50 +00:00
|
|
|
vera_id: 12
|
|
|
|
name: My awesome switch
|
|
|
|
exclude: true
|
|
|
|
-
|
|
|
|
vera_id: 13
|
2015-03-08 14:14:44 +00:00
|
|
|
name: Another switch
|
2015-03-08 12:52:50 +00:00
|
|
|
|
2015-03-08 14:14:44 +00:00
|
|
|
VARIABLES:
|
2015-03-08 12:52:50 +00:00
|
|
|
|
|
|
|
vera_controller_url
|
|
|
|
*Required
|
2015-03-08 14:14:44 +00:00
|
|
|
This is the base URL of your vera controller including the port number if not
|
|
|
|
running on 80
|
2015-03-08 12:52:50 +00:00
|
|
|
Example: http://192.168.1.21:3480/
|
|
|
|
|
|
|
|
|
|
|
|
device_data
|
|
|
|
*Optional
|
2015-03-08 14:14:44 +00:00
|
|
|
This contains an array additional device info for your Vera devices. It is not
|
|
|
|
required and if not specified all lights configured in your Vera controller
|
|
|
|
will be added with default values.
|
2015-03-08 12:52:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
These are the variables for the device_data array:
|
|
|
|
|
|
|
|
vera_id
|
|
|
|
*Required
|
|
|
|
The Vera device id you wish these configuration options to be applied to
|
|
|
|
|
|
|
|
|
|
|
|
name
|
|
|
|
*Optional
|
2015-03-08 14:14:44 +00:00
|
|
|
This parameter allows you to override the name of your Vera device in the HA
|
|
|
|
interface, if not specified the value configured for the device in your Vera
|
|
|
|
will be used
|
2015-03-08 12:52:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
exclude
|
|
|
|
*Optional
|
2015-03-08 14:14:44 +00:00
|
|
|
This parameter allows you to exclude the specified device from homeassistant,
|
|
|
|
it should be set to "true" if you want this device excluded
|
2015-03-08 12:52:50 +00:00
|
|
|
|
|
|
|
"""
|
2015-03-02 10:09:00 +00:00
|
|
|
import logging
|
2015-03-08 20:24:34 +00:00
|
|
|
from homeassistant.components.switch.vera import VeraSwitch
|
2015-03-08 14:14:44 +00:00
|
|
|
# pylint: disable=no-name-in-module, import-error
|
2015-03-02 11:05:03 +00:00
|
|
|
import homeassistant.external.vera.vera as veraApi
|
2015-03-02 10:09:00 +00:00
|
|
|
|
2015-03-08 12:52:50 +00:00
|
|
|
_LOGGER = logging.getLogger(__name__)
|
2015-03-02 10:09:00 +00:00
|
|
|
|
2015-03-08 14:58:11 +00:00
|
|
|
|
2015-03-08 14:14:44 +00:00
|
|
|
# pylint: disable=unused-argument
|
2015-03-02 10:09:00 +00:00
|
|
|
def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
|
|
|
""" Find and return Vera lights. """
|
|
|
|
|
2015-03-08 20:03:56 +00:00
|
|
|
base_url = config.get('vera_controller_url')
|
|
|
|
if not base_url:
|
|
|
|
_LOGGER.error(
|
|
|
|
"The required parameter 'vera_controller_url'"
|
|
|
|
" was not found in config"
|
|
|
|
)
|
|
|
|
return False
|
2015-03-08 12:52:50 +00:00
|
|
|
|
2015-03-08 20:03:56 +00:00
|
|
|
device_data = config.get('device_data', None)
|
2015-03-02 10:09:00 +00:00
|
|
|
|
2015-03-08 20:03:56 +00:00
|
|
|
controller = veraApi.VeraController(base_url)
|
|
|
|
devices = []
|
|
|
|
try:
|
|
|
|
devices = controller.get_devices('Switch')
|
2015-03-08 20:46:26 +00:00
|
|
|
except IOError as inst:
|
|
|
|
# There was a network related error connecting to the vera controller
|
2015-03-02 10:09:00 +00:00
|
|
|
_LOGGER.error("Could not find Vera lights: %s", inst)
|
|
|
|
return False
|
|
|
|
|
2015-03-08 20:03:56 +00:00
|
|
|
lights = []
|
|
|
|
for device in devices:
|
|
|
|
extra_data = get_extra_device_data(device_data, device.deviceId)
|
|
|
|
exclude = False
|
|
|
|
if extra_data:
|
|
|
|
exclude = extra_data.get('exclude', False)
|
|
|
|
|
|
|
|
if exclude is not True:
|
2015-03-08 20:24:34 +00:00
|
|
|
lights.append(VeraSwitch(device, extra_data))
|
2015-03-08 20:03:56 +00:00
|
|
|
|
|
|
|
add_devices_callback(lights)
|
|
|
|
|
2015-03-02 10:09:00 +00:00
|
|
|
|
|
|
|
def get_extra_device_data(device_data, device_id):
|
2015-03-08 14:14:44 +00:00
|
|
|
""" Gets the additional configuration data by Vera device Id """
|
2015-03-02 10:09:00 +00:00
|
|
|
if not device_data:
|
|
|
|
return None
|
|
|
|
|
|
|
|
for item in device_data:
|
2015-03-08 12:52:50 +00:00
|
|
|
if item.get('vera_id') == device_id:
|
2015-03-02 10:09:00 +00:00
|
|
|
return item
|
|
|
|
|
|
|
|
return None
|