diff --git a/homeassistant/components/cover/rpi_gpio.py b/homeassistant/components/cover/rpi_gpio.py index f712e1b17cc..6cef5dc08e7 100644 --- a/homeassistant/components/cover/rpi_gpio.py +++ b/homeassistant/components/cover/rpi_gpio.py @@ -16,6 +16,10 @@ from homeassistant.components.cover import CoverDevice import homeassistant.components.rpi_gpio as rpi_gpio import homeassistant.helpers.config_validation as cv +RELAY_TIME = 'relay_time' +STATE_PULL_MODE = 'state_pull_mode' +DEFAULT_PULL_MODE = 'UP' +DEFAULT_RELAY_TIME = .2 DEPENDENCIES = ['rpi_gpio'] _LOGGER = logging.getLogger(__name__) @@ -33,18 +37,24 @@ _COVERS_SCHEMA = vol.All( PLATFORM_SCHEMA = vol.Schema({ 'platform': str, vol.Required('covers'): _COVERS_SCHEMA, + vol.Optional(STATE_PULL_MODE, default=DEFAULT_PULL_MODE): cv.string, + vol.Optional(RELAY_TIME, default=DEFAULT_RELAY_TIME): vol.Coerce(int), }) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the cover platform.""" + relay_time = config.get(RELAY_TIME) + state_pull_mode = config.get(STATE_PULL_MODE) covers = [] covers_conf = config.get('covers') for cover in covers_conf: covers.append(RPiGPIOCover(cover['name'], cover['relay_pin'], - cover['state_pin'])) + cover['state_pin'], + state_pull_mode, + relay_time)) add_devices(covers) @@ -52,14 +62,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class RPiGPIOCover(CoverDevice): """Representation of a Raspberry cover.""" - def __init__(self, name, relay_pin, state_pin): + # pylint: disable=too-many-arguments + def __init__(self, name, relay_pin, state_pin, + state_pull_mode, relay_time): """Initialize the cover.""" self._name = name self._state = False self._relay_pin = relay_pin self._state_pin = state_pin + self._state_pull_mode = state_pull_mode + self._relay_time = relay_time rpi_gpio.setup_output(self._relay_pin) - rpi_gpio.setup_input(self._state_pin, 'UP') + rpi_gpio.setup_input(self._state_pin, self._state_pull_mode) rpi_gpio.write_output(self._relay_pin, True) @property @@ -84,7 +98,7 @@ class RPiGPIOCover(CoverDevice): def _trigger(self): """Trigger the cover.""" rpi_gpio.write_output(self._relay_pin, False) - sleep(0.2) + sleep(self._relay_time) rpi_gpio.write_output(self._relay_pin, True) def close_cover(self): diff --git a/homeassistant/components/garage_door/rpi_gpio.py b/homeassistant/components/garage_door/rpi_gpio.py index 55ade8c9fc0..3969e12371c 100644 --- a/homeassistant/components/garage_door/rpi_gpio.py +++ b/homeassistant/components/garage_door/rpi_gpio.py @@ -15,6 +15,10 @@ from homeassistant.components.garage_door import GarageDoorDevice import homeassistant.components.rpi_gpio as rpi_gpio import homeassistant.helpers.config_validation as cv +RELAY_TIME = 'relay_time' +STATE_PULL_MODE = 'state_pull_mode' +DEFAULT_PULL_MODE = 'UP' +DEFAULT_RELAY_TIME = .2 DEPENDENCIES = ['rpi_gpio'] _LOGGER = logging.getLogger(__name__) @@ -32,32 +36,42 @@ _DOORS_SCHEMA = vol.All( PLATFORM_SCHEMA = vol.Schema({ 'platform': str, vol.Required('doors'): _DOORS_SCHEMA, + vol.Optional(STATE_PULL_MODE, default=DEFAULT_PULL_MODE): cv.string, + vol.Optional(RELAY_TIME, default=DEFAULT_RELAY_TIME): vol.Coerce(int), }) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the garage door platform.""" + relay_time = config.get(RELAY_TIME) + state_pull_mode = config.get(STATE_PULL_MODE) doors = [] doors_conf = config.get('doors') for door in doors_conf: doors.append(RPiGPIOGarageDoor(door['name'], door['relay_pin'], - door['state_pin'])) + door['state_pin'], + state_pull_mode, + relay_time)) add_devices(doors) class RPiGPIOGarageDoor(GarageDoorDevice): """Representation of a Raspberry garage door.""" - def __init__(self, name, relay_pin, state_pin): + # pylint: disable=too-many-arguments + def __init__(self, name, relay_pin, state_pin, + state_pull_mode, relay_time): """Initialize the garage door.""" self._name = name self._state = False self._relay_pin = relay_pin self._state_pin = state_pin + self._state_pull_mode = state_pull_mode + self._relay_time = relay_time rpi_gpio.setup_output(self._relay_pin) - rpi_gpio.setup_input(self._state_pin, 'UP') + rpi_gpio.setup_input(self._state_pin, self._state_pull_mode) rpi_gpio.write_output(self._relay_pin, True) @property @@ -82,7 +96,7 @@ class RPiGPIOGarageDoor(GarageDoorDevice): def _trigger(self): """Trigger the door.""" rpi_gpio.write_output(self._relay_pin, False) - sleep(0.2) + sleep(self._relay_time) rpi_gpio.write_output(self._relay_pin, True) def close_door(self):