mirror of
https://github.com/esphome/esphome.git
synced 2024-11-10 09:17:46 +01:00
Fix sprinkler switch restore_mode (#4756)
This commit is contained in:
parent
b89c04b928
commit
f60b2b754d
3 changed files with 36 additions and 6 deletions
|
@ -286,7 +286,9 @@ SPRINKLER_VALVE_SCHEMA = cv.Schema(
|
||||||
{
|
{
|
||||||
cv.Optional(CONF_ENABLE_SWITCH): cv.maybe_simple_value(
|
cv.Optional(CONF_ENABLE_SWITCH): cv.maybe_simple_value(
|
||||||
switch.switch_schema(
|
switch.switch_schema(
|
||||||
SprinklerControllerSwitch, entity_category=ENTITY_CATEGORY_CONFIG
|
SprinklerControllerSwitch,
|
||||||
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
|
default_restore_mode="RESTORE_DEFAULT_OFF",
|
||||||
),
|
),
|
||||||
key=CONF_NAME,
|
key=CONF_NAME,
|
||||||
),
|
),
|
||||||
|
@ -333,7 +335,9 @@ SPRINKLER_CONTROLLER_SCHEMA = cv.Schema(
|
||||||
cv.Optional(CONF_NAME): cv.string,
|
cv.Optional(CONF_NAME): cv.string,
|
||||||
cv.Optional(CONF_AUTO_ADVANCE_SWITCH): cv.maybe_simple_value(
|
cv.Optional(CONF_AUTO_ADVANCE_SWITCH): cv.maybe_simple_value(
|
||||||
switch.switch_schema(
|
switch.switch_schema(
|
||||||
SprinklerControllerSwitch, entity_category=ENTITY_CATEGORY_CONFIG
|
SprinklerControllerSwitch,
|
||||||
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
|
default_restore_mode="RESTORE_DEFAULT_OFF",
|
||||||
),
|
),
|
||||||
key=CONF_NAME,
|
key=CONF_NAME,
|
||||||
),
|
),
|
||||||
|
@ -343,19 +347,25 @@ SPRINKLER_CONTROLLER_SCHEMA = cv.Schema(
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_QUEUE_ENABLE_SWITCH): cv.maybe_simple_value(
|
cv.Optional(CONF_QUEUE_ENABLE_SWITCH): cv.maybe_simple_value(
|
||||||
switch.switch_schema(
|
switch.switch_schema(
|
||||||
SprinklerControllerSwitch, entity_category=ENTITY_CATEGORY_CONFIG
|
SprinklerControllerSwitch,
|
||||||
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
|
default_restore_mode="RESTORE_DEFAULT_OFF",
|
||||||
),
|
),
|
||||||
key=CONF_NAME,
|
key=CONF_NAME,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_REVERSE_SWITCH): cv.maybe_simple_value(
|
cv.Optional(CONF_REVERSE_SWITCH): cv.maybe_simple_value(
|
||||||
switch.switch_schema(
|
switch.switch_schema(
|
||||||
SprinklerControllerSwitch, entity_category=ENTITY_CATEGORY_CONFIG
|
SprinklerControllerSwitch,
|
||||||
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
|
default_restore_mode="RESTORE_DEFAULT_OFF",
|
||||||
),
|
),
|
||||||
key=CONF_NAME,
|
key=CONF_NAME,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_STANDBY_SWITCH): cv.maybe_simple_value(
|
cv.Optional(CONF_STANDBY_SWITCH): cv.maybe_simple_value(
|
||||||
switch.switch_schema(
|
switch.switch_schema(
|
||||||
SprinklerControllerSwitch, entity_category=ENTITY_CATEGORY_CONFIG
|
SprinklerControllerSwitch,
|
||||||
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
||||||
|
default_restore_mode="RESTORE_DEFAULT_OFF",
|
||||||
),
|
),
|
||||||
key=CONF_NAME,
|
key=CONF_NAME,
|
||||||
),
|
),
|
||||||
|
|
|
@ -1176,6 +1176,21 @@ optional<uint32_t> Sprinkler::time_remaining_current_operation() {
|
||||||
return nullopt;
|
return nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Sprinkler::any_controller_is_active() {
|
||||||
|
if (this->state_ != IDLE) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto &controller : this->other_controllers_) {
|
||||||
|
if (controller != this) { // dummy check
|
||||||
|
if (controller->controller_state() != IDLE) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
SprinklerControllerSwitch *Sprinkler::control_switch(size_t valve_number) {
|
SprinklerControllerSwitch *Sprinkler::control_switch(size_t valve_number) {
|
||||||
if (this->is_a_valid_valve(valve_number)) {
|
if (this->is_a_valid_valve(valve_number)) {
|
||||||
return this->valve_[valve_number].controller_switch;
|
return this->valve_[valve_number].controller_switch;
|
||||||
|
|
|
@ -406,6 +406,12 @@ class Sprinkler : public Component {
|
||||||
/// returns the amount of time remaining in seconds for all valves remaining, including the active valve, if any
|
/// returns the amount of time remaining in seconds for all valves remaining, including the active valve, if any
|
||||||
optional<uint32_t> time_remaining_current_operation();
|
optional<uint32_t> time_remaining_current_operation();
|
||||||
|
|
||||||
|
/// returns true if this or any sprinkler controller this controller knows about is active
|
||||||
|
bool any_controller_is_active();
|
||||||
|
|
||||||
|
/// returns the current state of the sprinkler controller
|
||||||
|
SprinklerState controller_state() { return this->state_; };
|
||||||
|
|
||||||
/// returns a pointer to a valve's control switch object
|
/// returns a pointer to a valve's control switch object
|
||||||
SprinklerControllerSwitch *control_switch(size_t valve_number);
|
SprinklerControllerSwitch *control_switch(size_t valve_number);
|
||||||
|
|
||||||
|
@ -503,7 +509,6 @@ class Sprinkler : public Component {
|
||||||
/// callback functions for timers
|
/// callback functions for timers
|
||||||
void valve_selection_callback_();
|
void valve_selection_callback_();
|
||||||
void sm_timer_callback_();
|
void sm_timer_callback_();
|
||||||
void pump_stop_delay_callback_();
|
|
||||||
|
|
||||||
/// Maximum allowed queue size
|
/// Maximum allowed queue size
|
||||||
const uint8_t max_queue_size_{100};
|
const uint8_t max_queue_size_{100};
|
||||||
|
|
Loading…
Reference in a new issue