Wall panel detection (#305)

* Fix wall panel detection
This commit is contained in:
Paul Wieland 2024-07-12 08:05:28 -04:00 committed by GitHub
parent 88b3bdf5ff
commit 348e4403db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 7 deletions

View File

@ -65,14 +65,14 @@ namespace ratgdo {
void Secplus1::wall_panel_emulation(size_t index)
{
if (this->wall_panel_emulation_state_ == WallPanelEmulationState::WAITING) {
ESP_LOG1(TAG, "Looking for security+ 1.0 wall panel...");
ESP_LOGD(TAG, "Looking for security+ 1.0 wall panel...");
if (this->door_state != DoorState::UNKNOWN || this->light_state != LightState::UNKNOWN) {
ESP_LOG1(TAG, "Wall panel detected");
return;
}
if (millis() - this->wall_panel_emulation_start_ > 35000 && !this->wall_panel_starting_) {
ESP_LOG1(TAG, "No wall panel detected. Switching to emulation mode.");
ESP_LOGD(TAG, "No wall panel detected. Switching to emulation mode.");
this->wall_panel_emulation_state_ = WallPanelEmulationState::RUNNING;
}
this->scheduler_->set_timeout(this->ratgdo_, "wall_panel_emulation", 2000, [=] {
@ -293,7 +293,10 @@ namespace ratgdo {
void Secplus1::handle_command(const RxCommand& cmd)
{
if (cmd.req == CommandType::QUERY_DOOR_STATUS) {
if (cmd.req == CommandType::TOGGLE_DOOR_RELEASE || cmd.resp == 0x31) {
ESP_LOGD(TAG, "wall panel is starting");
this->wall_panel_starting_ = true;
} else if (cmd.req == CommandType::QUERY_DOOR_STATUS) {
DoorState door_state;
auto val = cmd.resp & 0x7;
@ -365,10 +368,6 @@ namespace ratgdo {
} else if (cmd.req == CommandType::OBSTRUCTION) {
ObstructionState obstruction_state = cmd.resp == 0 ? ObstructionState::CLEAR : ObstructionState::OBSTRUCTED;
this->ratgdo_->received(obstruction_state);
} else if (cmd.req == CommandType::TOGGLE_DOOR_RELEASE) {
if (cmd.resp == 0x31) {
this->wall_panel_starting_ = true;
}
} else if (cmd.req == CommandType::TOGGLE_LIGHT_PRESS) {
// motion was detected, or the light toggle button was pressed
// either way it's ok to trigger motion detection