Fix for optional obstruction pin

This commit is contained in:
Marius Muja 2024-01-12 10:40:10 -08:00
parent 56795f591e
commit 30c39b5ec1
2 changed files with 11 additions and 15 deletions

View File

@ -39,23 +39,18 @@ SUPPORTED_PROTOCOLS = [PROTOCOL_SECPLUSV1, PROTOCOL_SECPLUSV2, PROTOCOL_DRYCONTA
CONFIG_SCHEMA = cv.Schema( CONFIG_SCHEMA = cv.Schema(
{ {
cv.GenerateID(): cv.declare_id(RATGDO), cv.GenerateID(): cv.declare_id(RATGDO),
cv.Optional( cv.Optional(CONF_OUTPUT_GDO, default=DEFAULT_OUTPUT_GDO): pins.gpio_output_pin_schema,
CONF_OUTPUT_GDO, default=DEFAULT_OUTPUT_GDO cv.Optional(CONF_INPUT_GDO, default=DEFAULT_INPUT_GDO): pins.gpio_input_pin_schema,
): pins.gpio_output_pin_schema, cv.Optional(CONF_INPUT_OBST, default=DEFAULT_INPUT_OBST): cv.Any(
cv.Optional( cv.none,
CONF_INPUT_GDO, default=DEFAULT_INPUT_GDO pins.gpio_input_pin_schema
): pins.gpio_input_pin_schema, ),
cv.Optional(
CONF_INPUT_OBST, default=DEFAULT_INPUT_OBST
): pins.gpio_input_pin_schema,
cv.Optional(CONF_ON_SYNC_FAILED): automation.validate_automation( cv.Optional(CONF_ON_SYNC_FAILED): automation.validate_automation(
{ {
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(SyncFailed), cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(SyncFailed),
} }
), ),
cv.Optional( cv.Optional(CONF_PROTOCOL, default=PROTOCOL_SECPLUSV2): vol.In(SUPPORTED_PROTOCOLS)
CONF_PROTOCOL, default=PROTOCOL_SECPLUSV2
): vol.In(SUPPORTED_PROTOCOLS)
} }
).extend(cv.COMPONENT_SCHEMA) ).extend(cv.COMPONENT_SCHEMA)
@ -78,8 +73,9 @@ async def to_code(config):
cg.add(var.set_output_gdo_pin(pin)) cg.add(var.set_output_gdo_pin(pin))
pin = await cg.gpio_pin_expression(config[CONF_INPUT_GDO]) pin = await cg.gpio_pin_expression(config[CONF_INPUT_GDO])
cg.add(var.set_input_gdo_pin(pin)) cg.add(var.set_input_gdo_pin(pin))
pin = await cg.gpio_pin_expression(config[CONF_INPUT_OBST]) if CONF_INPUT_OBST in config and config[CONF_INPUT_OBST]:
cg.add(var.set_input_obst_pin(pin)) pin = await cg.gpio_pin_expression(config[CONF_INPUT_OBST])
cg.add(var.set_input_obst_pin(pin))
for conf in config.get(CONF_ON_SYNC_FAILED, []): for conf in config.get(CONF_ON_SYNC_FAILED, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)

View File

@ -39,7 +39,7 @@ namespace ratgdo {
this->input_gdo_pin_->setup(); this->input_gdo_pin_->setup();
this->input_gdo_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP); this->input_gdo_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
if (this->input_obst_pin_ == nullptr || this->input_obst_pin_->get_pin() == 0) { if (this->input_obst_pin_ == nullptr) {
// Our base.yaml is always going to set this so we check for 0 // Our base.yaml is always going to set this so we check for 0
// as well to avoid a breaking change. // as well to avoid a breaking change.
this->obstruction_from_status_ = true; this->obstruction_from_status_ = true;