This commit is contained in:
J. Nick Koston 2023-06-09 15:41:36 -05:00
parent caf3846f5d
commit db662e7e2d
No known key found for this signature in database
3 changed files with 28 additions and 18 deletions

View File

@ -21,6 +21,26 @@ external_components:
ratgdo:
id: ${id_prefix}
switch:
- platform: gpio
id: "${id_prefix}_status_door"
pin:
number: D0 # D0 output door status, HIGH for open, LOW for closed
mode:
output: true
name: "${friendly_name} Status Door"
entity_category: diagnostic
- platform: gpio
id: "${id_prefix}_status_obstruction"
pin:
number: D8 # D8 output for obstruction status, HIGH for obstructed, LOW for clear
mode:
output: true
name: "${friendly_name} Status Obstruction"
entity_category: diagnostic
binary_sensor:
- platform: ratgdo
type: motion
@ -34,6 +54,10 @@ binary_sensor:
ratgdo_id: ${id_prefix}
name: "${friendly_name} Obstruction"
device_class: problem
on_press:
- switch.turn_on: ${id_prefix}_status_obstruction
on_release:
- switch.turn_off: ${id_prefix}_status_obstruction
- platform: ratgdo
type: motor
id: ${id_prefix}_motor
@ -102,6 +126,10 @@ cover:
device_class: garage
name: ${friendly_name}
ratgdo_id: ${id_prefix}
on_closed:
- switch.turn_off: ${id_prefix}_status_door
on_opened:
- switch.turn_on: ${id_prefix}_status_door
light:

View File

@ -44,14 +44,8 @@ namespace ratgdo {
this->input_gdo_pin_->setup();
this->input_obst_pin_->setup();
this->status_door_pin_->setup();
this->status_obst_pin_->setup();
this->store_.input_obst = this->input_obst_pin_->to_isr();
this->status_door_pin_->pin_mode(gpio::FLAG_OUTPUT);
this->status_obst_pin_->pin_mode(gpio::FLAG_OUTPUT);
this->output_gdo_pin_->pin_mode(gpio::FLAG_OUTPUT);
this->input_gdo_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
this->input_obst_pin_->pin_mode(gpio::FLAG_INPUT);
@ -316,7 +310,6 @@ namespace ratgdo {
for (auto* child : this->children_) {
child->on_door_state(val);
}
this->status_door_pin_->digital_write(this->doorState == 1);
}
void RATGDOComponent::sendLightStatus()
@ -362,7 +355,6 @@ namespace ratgdo {
for (auto* child : this->children_) {
child->on_obstruction_state(val);
}
this->status_obst_pin_->digital_write(this->obstructionState == 0);
}
/************************* DOOR COMMUNICATION *************************/

View File

@ -73,9 +73,6 @@ namespace ratgdo {
int obstructionLowCount = 0; // count obstruction low pulses
long lastObstructionHigh = 0; // count time between high pulses from the obst ISR
static void IRAM_ATTR isrDoorOpen(RATGDOStore* arg);
static void IRAM_ATTR isrDoorClose(RATGDOStore* arg);
static void IRAM_ATTR isrLight(RATGDOStore* arg);
static void IRAM_ATTR isrObstruction(RATGDOStore* arg);
};
@ -107,9 +104,6 @@ namespace ratgdo {
void set_input_gdo_pin(InternalGPIOPin* pin) { this->input_gdo_pin_ = pin; };
void set_input_obst_pin(InternalGPIOPin* pin) { this->input_obst_pin_ = pin; };
void set_status_door_pin(InternalGPIOPin* pin) { this->status_door_pin_ = pin; };
void set_status_obst_pin(InternalGPIOPin* pin) { this->status_obst_pin_ = pin; };
/********************************** FUNCTION DECLARATION
* *****************************************/
void transmit(cmd command);
@ -158,13 +152,9 @@ namespace ratgdo {
RATGDOStore store_ {};
InternalGPIOPin* output_gdo_pin_;
InternalGPIOPin* input_gdo_pin_;
InternalGPIOPin* input_obst_pin_;
InternalGPIOPin* status_door_pin_;
InternalGPIOPin* status_obst_pin_;
}; // RATGDOComponent
} // namespace ratgdo