mirror of
https://github.com/esphome/esphome.git
synced 2025-01-08 13:51:43 +01:00
Add files via upload
This commit is contained in:
parent
1829e68730
commit
a0777b41e1
3 changed files with 33 additions and 27 deletions
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue