mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
added invert_state optional parameter (#8695)
* added invert_state optional parameter * removed superfluous parens * moved state inversion to the is_closed method * added relay_invert feature * fixed syntax to comply with houndci-bot rules * changed state_invert to invert_state and relay_invert to invert_relay
This commit is contained in:
parent
e6be560e00
commit
455ac9724a
@ -24,9 +24,13 @@ CONF_RELAY_PIN = 'relay_pin'
|
|||||||
CONF_RELAY_TIME = 'relay_time'
|
CONF_RELAY_TIME = 'relay_time'
|
||||||
CONF_STATE_PIN = 'state_pin'
|
CONF_STATE_PIN = 'state_pin'
|
||||||
CONF_STATE_PULL_MODE = 'state_pull_mode'
|
CONF_STATE_PULL_MODE = 'state_pull_mode'
|
||||||
|
CONF_INVERT_STATE = 'invert_state'
|
||||||
|
CONF_INVERT_RELAY = 'invert_relay'
|
||||||
|
|
||||||
DEFAULT_RELAY_TIME = .2
|
DEFAULT_RELAY_TIME = .2
|
||||||
DEFAULT_STATE_PULL_MODE = 'UP'
|
DEFAULT_STATE_PULL_MODE = 'UP'
|
||||||
|
DEFAULT_INVERT_STATE = False
|
||||||
|
DEFAULT_INVERT_RELAY = False
|
||||||
DEPENDENCIES = ['rpi_gpio']
|
DEPENDENCIES = ['rpi_gpio']
|
||||||
|
|
||||||
_COVERS_SCHEMA = vol.All(
|
_COVERS_SCHEMA = vol.All(
|
||||||
@ -45,6 +49,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
|||||||
vol.Optional(CONF_STATE_PULL_MODE, default=DEFAULT_STATE_PULL_MODE):
|
vol.Optional(CONF_STATE_PULL_MODE, default=DEFAULT_STATE_PULL_MODE):
|
||||||
cv.string,
|
cv.string,
|
||||||
vol.Optional(CONF_RELAY_TIME, default=DEFAULT_RELAY_TIME): cv.positive_int,
|
vol.Optional(CONF_RELAY_TIME, default=DEFAULT_RELAY_TIME): cv.positive_int,
|
||||||
|
vol.Optional(CONF_INVERT_STATE, default=DEFAULT_INVERT_STATE): cv.boolean,
|
||||||
|
vol.Optional(CONF_INVERT_RELAY, default=DEFAULT_INVERT_RELAY): cv.boolean,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -53,13 +59,15 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
"""Set up the RPi cover platform."""
|
"""Set up the RPi cover platform."""
|
||||||
relay_time = config.get(CONF_RELAY_TIME)
|
relay_time = config.get(CONF_RELAY_TIME)
|
||||||
state_pull_mode = config.get(CONF_STATE_PULL_MODE)
|
state_pull_mode = config.get(CONF_STATE_PULL_MODE)
|
||||||
|
invert_state = config.get(CONF_INVERT_STATE)
|
||||||
|
invert_relay = config.get(CONF_INVERT_RELAY)
|
||||||
covers = []
|
covers = []
|
||||||
covers_conf = config.get(CONF_COVERS)
|
covers_conf = config.get(CONF_COVERS)
|
||||||
|
|
||||||
for cover in covers_conf:
|
for cover in covers_conf:
|
||||||
covers.append(RPiGPIOCover(
|
covers.append(RPiGPIOCover(
|
||||||
cover[CONF_NAME], cover[CONF_RELAY_PIN], cover[CONF_STATE_PIN],
|
cover[CONF_NAME], cover[CONF_RELAY_PIN], cover[CONF_STATE_PIN],
|
||||||
state_pull_mode, relay_time))
|
state_pull_mode, relay_time, invert_state, invert_relay))
|
||||||
add_devices(covers)
|
add_devices(covers)
|
||||||
|
|
||||||
|
|
||||||
@ -67,7 +75,7 @@ class RPiGPIOCover(CoverDevice):
|
|||||||
"""Representation of a Raspberry GPIO cover."""
|
"""Representation of a Raspberry GPIO cover."""
|
||||||
|
|
||||||
def __init__(self, name, relay_pin, state_pin, state_pull_mode,
|
def __init__(self, name, relay_pin, state_pin, state_pull_mode,
|
||||||
relay_time):
|
relay_time, invert_state, invert_relay):
|
||||||
"""Initialize the cover."""
|
"""Initialize the cover."""
|
||||||
self._name = name
|
self._name = name
|
||||||
self._state = False
|
self._state = False
|
||||||
@ -75,9 +83,11 @@ class RPiGPIOCover(CoverDevice):
|
|||||||
self._state_pin = state_pin
|
self._state_pin = state_pin
|
||||||
self._state_pull_mode = state_pull_mode
|
self._state_pull_mode = state_pull_mode
|
||||||
self._relay_time = relay_time
|
self._relay_time = relay_time
|
||||||
|
self._invert_state = invert_state
|
||||||
|
self._invert_relay = invert_relay
|
||||||
rpi_gpio.setup_output(self._relay_pin)
|
rpi_gpio.setup_output(self._relay_pin)
|
||||||
rpi_gpio.setup_input(self._state_pin, self._state_pull_mode)
|
rpi_gpio.setup_input(self._state_pin, self._state_pull_mode)
|
||||||
rpi_gpio.write_output(self._relay_pin, True)
|
rpi_gpio.write_output(self._relay_pin, not self._invert_relay)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def unique_id(self):
|
def unique_id(self):
|
||||||
@ -96,13 +106,13 @@ class RPiGPIOCover(CoverDevice):
|
|||||||
@property
|
@property
|
||||||
def is_closed(self):
|
def is_closed(self):
|
||||||
"""Return true if cover is closed."""
|
"""Return true if cover is closed."""
|
||||||
return self._state
|
return self._state != self._invert_state
|
||||||
|
|
||||||
def _trigger(self):
|
def _trigger(self):
|
||||||
"""Trigger the cover."""
|
"""Trigger the cover."""
|
||||||
rpi_gpio.write_output(self._relay_pin, False)
|
rpi_gpio.write_output(self._relay_pin, self._invert_relay)
|
||||||
sleep(self._relay_time)
|
sleep(self._relay_time)
|
||||||
rpi_gpio.write_output(self._relay_pin, True)
|
rpi_gpio.write_output(self._relay_pin, not self._invert_relay)
|
||||||
|
|
||||||
def close_cover(self):
|
def close_cover(self):
|
||||||
"""Close the cover."""
|
"""Close the cover."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user