mirror of
https://github.com/home-assistant/core.git
synced 2025-05-03 05:29:14 +00:00
Changed vera components over to new config file format
This commit is contained in:
parent
a30d1dcfef
commit
dc8147c46d
@ -1,4 +1,59 @@
|
|||||||
""" Support for Vera lights. """
|
"""
|
||||||
|
Support for Vera lights.
|
||||||
|
|
||||||
|
Configuration:
|
||||||
|
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.
|
||||||
|
|
||||||
|
To use the Vera lights you will need to add something like the following to your config/configuration.yaml
|
||||||
|
|
||||||
|
light:
|
||||||
|
platform: vera
|
||||||
|
vera_controller_url: http://YOUR_VERA_IP:3480/
|
||||||
|
device_data:
|
||||||
|
-
|
||||||
|
vera_id: 12
|
||||||
|
name: My awesome switch
|
||||||
|
exclude: true
|
||||||
|
-
|
||||||
|
vera_id: 13
|
||||||
|
name: Another switch
|
||||||
|
|
||||||
|
VARIABLES:
|
||||||
|
|
||||||
|
vera_controller_url
|
||||||
|
*Required
|
||||||
|
This is the base URL of your vera controller including the port number if not running on 80
|
||||||
|
Example: http://192.168.1.21:3480/
|
||||||
|
|
||||||
|
|
||||||
|
device_data
|
||||||
|
*Optional
|
||||||
|
This contains an array additional device info for your Vera devices. It is not required and if
|
||||||
|
not specified all sensors configured in your Vera controller will be added with default values.
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
exclude
|
||||||
|
*Optional
|
||||||
|
This parameter allows you to exclude the specified device from homeassistant, it should be set to "true" if
|
||||||
|
you want this device excluded
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
import logging
|
import logging
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
@ -7,7 +62,7 @@ import json
|
|||||||
from homeassistant.helpers import ToggleDevice
|
from homeassistant.helpers import ToggleDevice
|
||||||
import homeassistant.external.vera.vera as veraApi
|
import homeassistant.external.vera.vera as veraApi
|
||||||
|
|
||||||
_LOGGER = logging.getLogger('Vera_Light')
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
||||||
@ -18,46 +73,33 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
|||||||
_LOGGER.error("The required parameter 'vera_controller_url' was not found in config")
|
_LOGGER.error("The required parameter 'vera_controller_url' was not found in config")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
device_data_str = config.get('device_data')
|
device_data = config.get('device_data', None)
|
||||||
device_data = None
|
|
||||||
if device_data_str:
|
|
||||||
try:
|
|
||||||
device_data = json.loads(device_data_str)
|
|
||||||
except Exception as json_ex:
|
|
||||||
_LOGGER.error('Vera lights error parsing device info, should be in the format [{"id" : 12, "name": "Lounge Light"}]: %s', json_ex)
|
|
||||||
|
|
||||||
controller = veraApi.VeraController(base_url)
|
controller = veraApi.VeraController(base_url)
|
||||||
devices = controller.get_devices('Switch')
|
devices = controller.get_devices('Switch')
|
||||||
|
|
||||||
lights = []
|
lights = []
|
||||||
for device in devices:
|
for device in devices:
|
||||||
if is_switch_a_light(device_data, device.deviceId):
|
extra_data = get_extra_device_data(device_data, device.deviceId)
|
||||||
lights.append(VeraLight(device, get_extra_device_data(device_data, device.deviceId)))
|
exclude = False
|
||||||
|
if extra_data:
|
||||||
|
exclude = extra_data.get('exclude', False)
|
||||||
|
|
||||||
|
if exclude is not True:
|
||||||
|
lights.append(VeraLight(device, extra_data))
|
||||||
|
|
||||||
add_devices_callback(lights)
|
add_devices_callback(lights)
|
||||||
except Exception as inst:
|
except Exception as inst:
|
||||||
_LOGGER.error("Could not find Vera lights: %s", inst)
|
_LOGGER.error("Could not find Vera lights: %s", inst)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# If you have z-wave switches that control lights you can configure them
|
|
||||||
# to be treated as lights using the "device_data" parameter in the config.
|
|
||||||
# If "device_data" is not set then all switches are treated as lights
|
|
||||||
def is_switch_a_light(device_data, device_id):
|
|
||||||
if not device_data:
|
|
||||||
return True
|
|
||||||
|
|
||||||
for item in device_data:
|
|
||||||
if item.get('id') == device_id:
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
def get_extra_device_data(device_data, device_id):
|
def get_extra_device_data(device_data, device_id):
|
||||||
if not device_data:
|
if not device_data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
for item in device_data:
|
for item in device_data:
|
||||||
if item.get('id') == device_id:
|
if item.get('vera_id') == device_id:
|
||||||
return item
|
return item
|
||||||
|
|
||||||
return None
|
return None
|
||||||
@ -74,11 +116,6 @@ class VeraLight(ToggleDevice):
|
|||||||
self.vera_device = vera_device
|
self.vera_device = vera_device
|
||||||
self.extra_data = extra_data
|
self.extra_data = extra_data
|
||||||
|
|
||||||
@property
|
|
||||||
def unique_id(self):
|
|
||||||
""" Returns the id of this light """
|
|
||||||
return "{}.{}".format(
|
|
||||||
self.__class__, self.info.get('uniqueid', self.name))
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
@ -1,4 +1,56 @@
|
|||||||
""" Support for Vera lights. """
|
"""
|
||||||
|
Support for Vera sensors.
|
||||||
|
|
||||||
|
Configuration:
|
||||||
|
To use the Vera sensors you will need to add something like the following to your config/configuration.yaml
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
platform: vera
|
||||||
|
vera_controller_url: http://YOUR_VERA_IP:3480/
|
||||||
|
device_data:
|
||||||
|
-
|
||||||
|
vera_id: 12
|
||||||
|
name: My awesome sensor
|
||||||
|
exclude: true
|
||||||
|
-
|
||||||
|
vera_id: 13
|
||||||
|
name: Another sensor
|
||||||
|
|
||||||
|
VARIABLES:
|
||||||
|
|
||||||
|
vera_controller_url
|
||||||
|
*Required
|
||||||
|
This is the base URL of your vera controller including the port number if not running on 80
|
||||||
|
Example: http://192.168.1.21:3480/
|
||||||
|
|
||||||
|
|
||||||
|
device_data
|
||||||
|
*Optional
|
||||||
|
This contains an array additional device info for your Vera devices. It is not required and if
|
||||||
|
not specified all sensors configured in your Vera controller will be added with default values.
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
exclude
|
||||||
|
*Optional
|
||||||
|
This parameter allows you to exclude the specified device from homeassistant, it should be set to "true" if
|
||||||
|
you want this device excluded
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
import logging
|
import logging
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
@ -8,7 +60,7 @@ from homeassistant.helpers import Device
|
|||||||
import homeassistant.external.vera.vera as veraApi
|
import homeassistant.external.vera.vera as veraApi
|
||||||
from homeassistant.const import (STATE_OPEN, STATE_CLOSED, ATTR_FRIENDLY_NAME)
|
from homeassistant.const import (STATE_OPEN, STATE_CLOSED, ATTR_FRIENDLY_NAME)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger('Vera_Sensor')
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
vera_controller = None
|
vera_controller = None
|
||||||
vera_sensors = []
|
vera_sensors = []
|
||||||
@ -19,22 +71,22 @@ def get_devices(hass, config):
|
|||||||
base_url = config.get('vera_controller_url')
|
base_url = config.get('vera_controller_url')
|
||||||
if not base_url:
|
if not base_url:
|
||||||
_LOGGER.error("The required parameter 'vera_controller_url' was not found in config")
|
_LOGGER.error("The required parameter 'vera_controller_url' was not found in config")
|
||||||
#return False
|
return False
|
||||||
|
|
||||||
device_data_str = config.get('device_data')
|
device_data = config.get('device_data', None)
|
||||||
device_data = None
|
|
||||||
if device_data_str:
|
|
||||||
try:
|
|
||||||
device_data = json.loads(device_data_str)
|
|
||||||
except Exception as json_ex:
|
|
||||||
_LOGGER.error('Vera sensors error parsing device info, should be in the format [{"id" : 12, "name": "Temperature"}]: %s', json_ex)
|
|
||||||
|
|
||||||
vera_controller = veraApi.VeraController(base_url)
|
vera_controller = veraApi.VeraController(base_url)
|
||||||
devices = vera_controller.get_devices(['Temperature Sensor', 'Light Sensor', 'Sensor'])
|
devices = vera_controller.get_devices(['Temperature Sensor', 'Light Sensor', 'Sensor'])
|
||||||
|
|
||||||
vera_sensors = []
|
vera_sensors = []
|
||||||
for device in devices:
|
for device in devices:
|
||||||
vera_sensors.append(VeraSensor(device, get_extra_device_data(device_data, device.deviceId)))
|
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:
|
||||||
|
vera_sensors.append(VeraSensor(device, extra_data))
|
||||||
|
|
||||||
except Exception as inst:
|
except Exception as inst:
|
||||||
_LOGGER.error("Could not find Vera sensors: %s", inst)
|
_LOGGER.error("Could not find Vera sensors: %s", inst)
|
||||||
@ -49,7 +101,7 @@ def get_extra_device_data(device_data, device_id):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
for item in device_data:
|
for item in device_data:
|
||||||
if item.get('id') == device_id:
|
if item.get('vera_id') == device_id:
|
||||||
return item
|
return item
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@ -75,7 +127,7 @@ class VeraSensor(Device):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
""" Get the mame of the switch. """
|
""" Get the mame of the sensor. """
|
||||||
if self.extra_data and self.extra_data.get('name'):
|
if self.extra_data and self.extra_data.get('name'):
|
||||||
return self.extra_data.get('name')
|
return self.extra_data.get('name')
|
||||||
return self.vera_device.name
|
return self.vera_device.name
|
||||||
|
@ -59,7 +59,7 @@ import json
|
|||||||
from homeassistant.helpers import ToggleDevice
|
from homeassistant.helpers import ToggleDevice
|
||||||
import homeassistant.external.vera.vera as veraApi
|
import homeassistant.external.vera.vera as veraApi
|
||||||
|
|
||||||
_LOGGER = logging.getLogger('Vera_Switch')
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
vera_controller = None
|
vera_controller = None
|
||||||
vera_switches = []
|
vera_switches = []
|
||||||
@ -72,20 +72,20 @@ def get_devices(hass, config):
|
|||||||
_LOGGER.error("The required parameter 'vera_controller_url' was not found in config")
|
_LOGGER.error("The required parameter 'vera_controller_url' was not found in config")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
device_data_str = config.get('device_data')
|
device_data = config.get('device_data', None)
|
||||||
device_data = None
|
|
||||||
if device_data_str:
|
|
||||||
try:
|
|
||||||
device_data = json.loads(device_data_str)
|
|
||||||
except Exception as json_ex:
|
|
||||||
_LOGGER.error('Vera switch error parsing device info, should be in the format [{"id" : 12, "name": "Lounge Light"}]: %s', json_ex)
|
|
||||||
|
|
||||||
vera_controller = veraApi.VeraController(base_url)
|
vera_controller = veraApi.VeraController(base_url)
|
||||||
devices = vera_controller.get_devices(['Switch', 'Armable Sensor'])
|
devices = vera_controller.get_devices(['Switch', 'Armable Sensor'])
|
||||||
|
|
||||||
vera_switches = []
|
vera_switches = []
|
||||||
for device in devices:
|
for device in devices:
|
||||||
vera_switches.append(VeraSwitch(device, get_extra_device_data(device_data, device.deviceId)))
|
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:
|
||||||
|
vera_switches.append(VeraSwitch(device, extra_data))
|
||||||
|
|
||||||
except Exception as inst:
|
except Exception as inst:
|
||||||
_LOGGER.error("Could not find Vera switches: %s", inst)
|
_LOGGER.error("Could not find Vera switches: %s", inst)
|
||||||
@ -98,7 +98,7 @@ def get_extra_device_data(device_data, device_id):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
for item in device_data:
|
for item in device_data:
|
||||||
if item.get('id') == device_id:
|
if item.get('vera_id') == device_id:
|
||||||
return item
|
return item
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user