Add files via upload

This commit is contained in:
nworbneb 2024-11-10 17:20:03 +00:00 committed by GitHub
parent 1829e68730
commit a0777b41e1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 33 additions and 27 deletions

View file

@ -58,6 +58,7 @@ ALARM_SENSOR_TYPES = {
"DELAYED": AlarmSensorType.ALARM_SENSOR_TYPE_DELAYED, "DELAYED": AlarmSensorType.ALARM_SENSOR_TYPE_DELAYED,
"INSTANT": AlarmSensorType.ALARM_SENSOR_TYPE_INSTANT, "INSTANT": AlarmSensorType.ALARM_SENSOR_TYPE_INSTANT,
"DELAYED_FOLLOWER": AlarmSensorType.ALARM_SENSOR_TYPE_DELAYED_FOLLOWER, "DELAYED_FOLLOWER": AlarmSensorType.ALARM_SENSOR_TYPE_DELAYED_FOLLOWER,
"INSTANT_ALWAYS": AlarmSensorType.ALARM_SENSOR_TYPE_INSTANT_ALWAYS,
} }

View file

@ -58,6 +58,9 @@ void TemplateAlarmControlPanel::dump_config() {
case ALARM_SENSOR_TYPE_DELAYED_FOLLOWER: case ALARM_SENSOR_TYPE_DELAYED_FOLLOWER:
sensor_type = "delayed_follower"; sensor_type = "delayed_follower";
break; break;
case ALARM_SENSOR_TYPE_INSTANT_ALWAYS:
sensor_type = "instant_always";
break;
case ALARM_SENSOR_TYPE_DELAYED: case ALARM_SENSOR_TYPE_DELAYED:
default: default:
sensor_type = "delayed"; sensor_type = "delayed";
@ -119,19 +122,19 @@ void TemplateAlarmControlPanel::loop() {
#ifdef USE_BINARY_SENSOR #ifdef USE_BINARY_SENSOR
// Test all of the sensors in the list regardless of the alarm panel state // Test all of the sensors in the list regardless of the alarm panel state
for (auto sensor_info : this->sensor_map_) { for (auto sensor_info : this->sensor_map_) {
// Check for chime zones // Check for chime zones
if ((sensor_info.second.flags & BINARY_SENSOR_MODE_CHIME)) { if ((sensor_info.second.flags & BINARY_SENSOR_MODE_CHIME)) {
// Look for the transition from closed to open // Look for the transition from closed to open
if ((!this->sensor_data_[sensor_info.second.store_index].last_chime_state) && (sensor_info.first->state)) { if ((!this->sensor_data_[sensor_info.second.store_index].last_chime_state) && (sensor_info.first->state)) {
// Must be disarmed to chime // Must be disarmed to chime
if (this->current_state_ == ACP_STATE_DISARMED) { if (this->current_state_ == ACP_STATE_DISARMED) {
this->chime_callback_.call(); this->chime_callback_.call();
} }
} }
// Record the sensor state change // Record the sensor state change
this->sensor_data_[sensor_info.second.store_index].last_chime_state = sensor_info.first->state; this->sensor_data_[sensor_info.second.store_index].last_chime_state = sensor_info.first->state;
} }
// Check for triggered sensors // Check for triggered sensors
if (sensor_info.first->state) { // Sensor triggered? if (sensor_info.first->state) { // Sensor triggered?
// Skip if bypass armed home // Skip if bypass armed home
@ -145,24 +148,25 @@ void TemplateAlarmControlPanel::loop() {
continue; continue;
} }
// If sensor type is of type instant switch(sensor_info.second.type) {
if (sensor_info.second.type == ALARM_SENSOR_TYPE_INSTANT) { case ALARM_SENSOR_TYPE_INSTANT:
instant_sensor_not_ready = true;
break;
}
// If sensor type is of type interior follower
if (sensor_info.second.type == ALARM_SENSOR_TYPE_DELAYED_FOLLOWER) {
// Look to see if we are in the pending state
if (this->current_state_ == ACP_STATE_PENDING) {
delayed_sensor_not_ready = true;
} else {
instant_sensor_not_ready = true; instant_sensor_not_ready = true;
} break;
} case ALARM_SENSOR_TYPE_INSTANT_ALWAYS:
// If sensor type is of type delayed instant_sensor_not_ready = true;
if (sensor_info.second.type == ALARM_SENSOR_TYPE_DELAYED) { future_state = ACP_STATE_TRIGGERED;
delayed_sensor_not_ready = true; break;
break; case ALARM_SENSOR_TYPE_DELAYED_FOLLOWER:
// Look to see if we are in the pending state
if (this->current_state_ == ACP_STATE_PENDING) {
delayed_sensor_not_ready = true;
} else {
instant_sensor_not_ready = true;
}
break;
case ALARM_SENSOR_TYPE_DELAYED:
default:
delayed_sensor_not_ready = true;
} }
} }
} }

View file

@ -27,7 +27,8 @@ enum BinarySensorFlags : uint16_t {
enum AlarmSensorType : uint16_t { enum AlarmSensorType : uint16_t {
ALARM_SENSOR_TYPE_DELAYED = 0, ALARM_SENSOR_TYPE_DELAYED = 0,
ALARM_SENSOR_TYPE_INSTANT, ALARM_SENSOR_TYPE_INSTANT,
ALARM_SENSOR_TYPE_DELAYED_FOLLOWER ALARM_SENSOR_TYPE_DELAYED_FOLLOWER,
ALARM_SENSOR_TYPE_INSTANT_ALWAYS,
}; };
#endif #endif