Fix missing timeout for Netatmo binary sensor (#9850)

* Fix missing timeout for Netatmo binary sensor

This fix also merges timeout and offset because there were the same thing

Signed-off-by: Hugo D. (jabesq) <jabesq@gmail.com>

* Fix lint errors

* Fix style
This commit is contained in:
Hugo Dupras 2017-10-18 14:56:24 +02:00 committed by Pascal Vizeli
parent 8a2134b3a8
commit f641a6aad3

View file

@ -14,7 +14,7 @@ from homeassistant.components.binary_sensor import (
BinarySensorDevice, PLATFORM_SCHEMA) BinarySensorDevice, PLATFORM_SCHEMA)
from homeassistant.components.netatmo import CameraData from homeassistant.components.netatmo import CameraData
from homeassistant.loader import get_component from homeassistant.loader import get_component
from homeassistant.const import CONF_TIMEOUT, CONF_OFFSET from homeassistant.const import CONF_TIMEOUT
from homeassistant.helpers import config_validation as cv from homeassistant.helpers import config_validation as cv
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -44,14 +44,12 @@ CONF_WELCOME_SENSORS = 'welcome_sensors'
CONF_PRESENCE_SENSORS = 'presence_sensors' CONF_PRESENCE_SENSORS = 'presence_sensors'
CONF_TAG_SENSORS = 'tag_sensors' CONF_TAG_SENSORS = 'tag_sensors'
DEFAULT_TIMEOUT = 15 DEFAULT_TIMEOUT = 90
DEFAULT_OFFSET = 90
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Optional(CONF_CAMERAS, default=[]): vol.Optional(CONF_CAMERAS, default=[]):
vol.All(cv.ensure_list, [cv.string]), vol.All(cv.ensure_list, [cv.string]),
vol.Optional(CONF_HOME): cv.string, vol.Optional(CONF_HOME): cv.string,
vol.Optional(CONF_OFFSET, default=DEFAULT_OFFSET): cv.positive_int,
vol.Optional(CONF_PRESENCE_SENSORS, default=PRESENCE_SENSOR_TYPES): vol.Optional(CONF_PRESENCE_SENSORS, default=PRESENCE_SENSOR_TYPES):
vol.All(cv.ensure_list, [vol.In(PRESENCE_SENSOR_TYPES)]), vol.All(cv.ensure_list, [vol.In(PRESENCE_SENSOR_TYPES)]),
vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int, vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int,
@ -66,7 +64,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
netatmo = get_component('netatmo') netatmo = get_component('netatmo')
home = config.get(CONF_HOME) home = config.get(CONF_HOME)
timeout = config.get(CONF_TIMEOUT) timeout = config.get(CONF_TIMEOUT)
offset = config.get(CONF_OFFSET) if timeout is None:
timeout = DEFAULT_TIMEOUT
module_name = None module_name = None
@ -94,7 +93,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
for variable in welcome_sensors: for variable in welcome_sensors:
add_devices([NetatmoBinarySensor( add_devices([NetatmoBinarySensor(
data, camera_name, module_name, home, timeout, data, camera_name, module_name, home, timeout,
offset, camera_type, variable)], True) camera_type, variable)], True)
if camera_type == 'NOC': if camera_type == 'NOC':
if CONF_CAMERAS in config: if CONF_CAMERAS in config:
if config[CONF_CAMERAS] != [] and \ if config[CONF_CAMERAS] != [] and \
@ -102,14 +101,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
continue continue
for variable in presence_sensors: for variable in presence_sensors:
add_devices([NetatmoBinarySensor( add_devices([NetatmoBinarySensor(
data, camera_name, module_name, home, timeout, offset, data, camera_name, module_name, home, timeout,
camera_type, variable)], True) camera_type, variable)], True)
for module_name in data.get_module_names(camera_name): for module_name in data.get_module_names(camera_name):
for variable in tag_sensors: for variable in tag_sensors:
camera_type = None camera_type = None
add_devices([NetatmoBinarySensor( add_devices([NetatmoBinarySensor(
data, camera_name, module_name, home, timeout, offset, data, camera_name, module_name, home, timeout,
camera_type, variable)], True) camera_type, variable)], True)
@ -117,14 +116,13 @@ class NetatmoBinarySensor(BinarySensorDevice):
"""Represent a single binary sensor in a Netatmo Camera device.""" """Represent a single binary sensor in a Netatmo Camera device."""
def __init__(self, data, camera_name, module_name, home, def __init__(self, data, camera_name, module_name, home,
timeout, offset, camera_type, sensor): timeout, camera_type, sensor):
"""Set up for access to the Netatmo camera events.""" """Set up for access to the Netatmo camera events."""
self._data = data self._data = data
self._camera_name = camera_name self._camera_name = camera_name
self._module_name = module_name self._module_name = module_name
self._home = home self._home = home
self._timeout = timeout self._timeout = timeout
self._offset = offset
if home: if home:
self._name = '{} / {}'.format(home, camera_name) self._name = '{} / {}'.format(home, camera_name)
else: else:
@ -173,40 +171,39 @@ class NetatmoBinarySensor(BinarySensorDevice):
if self._sensor_name == "Someone known": if self._sensor_name == "Someone known":
self._state =\ self._state =\
self._data.camera_data.someoneKnownSeen( self._data.camera_data.someoneKnownSeen(
self._home, self._camera_name, self._timeout*60) self._home, self._camera_name, self._timeout)
elif self._sensor_name == "Someone unknown": elif self._sensor_name == "Someone unknown":
self._state =\ self._state =\
self._data.camera_data.someoneUnknownSeen( self._data.camera_data.someoneUnknownSeen(
self._home, self._camera_name, self._timeout*60) self._home, self._camera_name, self._timeout)
elif self._sensor_name == "Motion": elif self._sensor_name == "Motion":
self._state =\ self._state =\
self._data.camera_data.motionDetected( self._data.camera_data.motionDetected(
self._home, self._camera_name, self._timeout*60) self._home, self._camera_name, self._timeout)
elif self._cameratype == 'NOC': elif self._cameratype == 'NOC':
if self._sensor_name == "Outdoor motion": if self._sensor_name == "Outdoor motion":
self._state =\ self._state =\
self._data.camera_data.outdoormotionDetected( self._data.camera_data.outdoormotionDetected(
self._home, self._camera_name, self._offset) self._home, self._camera_name, self._timeout)
elif self._sensor_name == "Outdoor human": elif self._sensor_name == "Outdoor human":
self._state =\ self._state =\
self._data.camera_data.humanDetected( self._data.camera_data.humanDetected(
self._home, self._camera_name, self._offset) self._home, self._camera_name, self._timeout)
elif self._sensor_name == "Outdoor animal": elif self._sensor_name == "Outdoor animal":
self._state =\ self._state =\
self._data.camera_data.animalDetected( self._data.camera_data.animalDetected(
self._home, self._camera_name, self._offset) self._home, self._camera_name, self._timeout)
elif self._sensor_name == "Outdoor vehicle": elif self._sensor_name == "Outdoor vehicle":
self._state =\ self._state =\
self._data.camera_data.carDetected( self._data.camera_data.carDetected(
self._home, self._camera_name, self._offset) self._home, self._camera_name, self._timeout)
if self._sensor_name == "Tag Vibration": if self._sensor_name == "Tag Vibration":
self._state =\ self._state =\
self._data.camera_data.moduleMotionDetected( self._data.camera_data.moduleMotionDetected(
self._home, self._module_name, self._camera_name, self._home, self._module_name, self._camera_name,
self._timeout*60) self._timeout)
elif self._sensor_name == "Tag Open": elif self._sensor_name == "Tag Open":
self._state =\ self._state =\
self._data.camera_data.moduleOpened( self._data.camera_data.moduleOpened(
self._home, self._module_name, self._camera_name) self._home, self._module_name, self._camera_name,
else: self._timeout)
return None