diff --git a/homeassistant/components/binary_sensor/netatmo.py b/homeassistant/components/binary_sensor/netatmo.py index 4ef29b9e5f5..661d1128086 100644 --- a/homeassistant/components/binary_sensor/netatmo.py +++ b/homeassistant/components/binary_sensor/netatmo.py @@ -26,8 +26,6 @@ WELCOME_SENSOR_TYPES = { "Someone known": "motion", "Someone unknown": "motion", "Motion": "motion", - "Tag Vibration": 'vibration', - "Tag Open": 'opening' } PRESENCE_SENSOR_TYPES = { "Outdoor motion": "motion", @@ -35,11 +33,16 @@ PRESENCE_SENSOR_TYPES = { "Outdoor animal": "motion", "Outdoor vehicle": "motion" } +TAG_SENSOR_TYPES = { + "Tag Vibration": 'vibration', + "Tag Open": 'opening' +} CONF_HOME = 'home' CONF_CAMERAS = 'cameras' CONF_WELCOME_SENSORS = 'welcome_sensors' CONF_PRESENCE_SENSORS = 'presence_sensors' +CONF_TAG_SENSORS = 'tag_sensors' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOME): cv.string, @@ -78,6 +81,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): CONF_WELCOME_SENSORS, WELCOME_SENSOR_TYPES) presence_sensors = config.get( CONF_PRESENCE_SENSORS, PRESENCE_SENSOR_TYPES) + tag_sensors = config.get(CONF_TAG_SENSORS, TAG_SENSOR_TYPES) for camera_name in data.get_camera_names(): camera_type = data.get_camera_type(camera=camera_name, home=home) @@ -103,13 +107,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): variable)]) for module_name in data.get_module_names(camera_name): - for variable in welcome_sensors: - if variable in ('Tag Vibration', 'Tag Open'): - add_devices([NetatmoBinarySensor(data, camera_name, - module_name, home, - timeout, offset, - camera_type, - variable)]) + for variable in tag_sensors: + camera_type = None + add_devices([NetatmoBinarySensor(data, camera_name, + module_name, home, + timeout, offset, + camera_type, + variable)]) class NetatmoBinarySensor(BinarySensorDevice): @@ -157,7 +161,7 @@ class NetatmoBinarySensor(BinarySensorDevice): elif self._cameratype == "NOC": return PRESENCE_SENSOR_TYPES.get(self._sensor_name) else: - return None + return TAG_SENSOR_TYPES.get(self._sensor_name) @property def is_on(self): @@ -184,8 +188,6 @@ class NetatmoBinarySensor(BinarySensorDevice): self._data.camera_data.motionDetected(self._home, self._camera_name, self._timeout*60) - else: - return None elif self._cameratype == "NOC": if self._sensor_name == "Outdoor motion": self._state =\ @@ -206,9 +208,7 @@ class NetatmoBinarySensor(BinarySensorDevice): self._data.camera_data.carDetected(self._home, self._camera_name, self._offset) - else: - return None - elif self._sensor_name == "Tag Vibration": + if self._sensor_name == "Tag Vibration": self._state =\ self._data.camera_data.moduleMotionDetected(self._home, self._module_name, diff --git a/homeassistant/components/camera/netatmo.py b/homeassistant/components/camera/netatmo.py index 563de206dea..6ede7c5a162 100644 --- a/homeassistant/components/camera/netatmo.py +++ b/homeassistant/components/camera/netatmo.py @@ -9,6 +9,7 @@ import logging import requests import voluptuous as vol +from homeassistant.const import CONF_VERIFY_SSL from homeassistant.components.netatmo import CameraData from homeassistant.components.camera import (Camera, PLATFORM_SCHEMA) from homeassistant.loader import get_component @@ -22,6 +23,7 @@ CONF_HOME = 'home' CONF_CAMERAS = 'cameras' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_VERIFY_SSL, default=True): cv.boolean, vol.Optional(CONF_HOME): cv.string, vol.Optional(CONF_CAMERAS, default=[]): vol.All(cv.ensure_list, [cv.string]), @@ -33,6 +35,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup access to Netatmo cameras.""" netatmo = get_component('netatmo') home = config.get(CONF_HOME) + verify_ssl = config.get(CONF_VERIFY_SSL, True) import lnetatmo try: data = CameraData(netatmo.NETATMO_AUTH, home) @@ -42,7 +45,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if config[CONF_CAMERAS] != [] and \ camera_name not in config[CONF_CAMERAS]: continue - add_devices([NetatmoCamera(data, camera_name, home, camera_type)]) + add_devices([NetatmoCamera(data, camera_name, home, + camera_type, verify_ssl)]) except lnetatmo.NoDevice: return None @@ -50,11 +54,12 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class NetatmoCamera(Camera): """Representation of the images published from a Netatmo camera.""" - def __init__(self, data, camera_name, home, camera_type): + def __init__(self, data, camera_name, home, camera_type, verify_ssl): """Setup for access to the Netatmo camera images.""" super(NetatmoCamera, self).__init__() self._data = data self._camera_name = camera_name + self._verify_ssl = verify_ssl if home: self._name = home + ' / ' + camera_name else: @@ -74,11 +79,17 @@ class NetatmoCamera(Camera): if self._localurl: response = requests.get('{0}/live/snapshot_720.jpg'.format( self._localurl), timeout=10) - else: + elif self._vpnurl: response = requests.get('{0}/live/snapshot_720.jpg'.format( - self._vpnurl), timeout=10) + self._vpnurl), timeout=10, verify=self._verify_ssl) + else: + _LOGGER.error('Welcome VPN url is None') + self._data.update() + (self._vpnurl, self._localurl) = \ + self._data.camera_data.cameraUrls(camera=self._camera_name) + return None except requests.exceptions.RequestException as error: - _LOGGER.error('Welcome VPN url changed: %s', error) + _LOGGER.error('Welcome url changed: %s', error) self._data.update() (self._vpnurl, self._localurl) = \ self._data.camera_data.cameraUrls(camera=self._camera_name)