v0.15.19
This commit is contained in:
1 parent
3b71b057cd
commit
abfbf0dd68
5 files changed
+10
-34
No files matched your search
@@ -4,7 +4,7 @@ a4ec3874a2e3ab1bad28fb40bb620f7b01f64d01ad9b699306bf70ada31227db ./.gitignore
|
||||
ab2b0e10ea3a02b56d689f994bd89fa71a61eff49306995e725f7104c122b53d ./Cargo.toml
|
||||
19b2943504acb8f8de280f873a8dbec4bb6ebbe3870b158f5655d4fb8c298f5f ./LICENSE
|
||||
98217f563d7ed22f8e36a8092cfb3fdba7efe217fea543f7edae4a836a38baab ./README.md
|
||||
728f6fcd1b76c4125252ed17e2cc3bef21b4e8d4939879e2fd9744fbcdbeceeb ./SOURCE_MANIFEST.sha256
|
||||
135b04a5acf661be25afe52c7a6a7826cf24a892398e3a28d9c77503272562d5 ./SOURCE_MANIFEST.sha256
|
||||
29e9821e5ed216ea3565dd6d8bc0b174ed3cf9fa72c4ccebbfa99e98db3ad8f9 ./build.rs
|
||||
41e1b38bb5378e1fbcf59e2a956008eea2b3141cfef102c72cf88d28f5f4cf65 ./docs/API.md
|
||||
94585aab43325a139f6c291f2293d93206d382c25a095b46930b924aaf336765 ./docs/FLOW.md
|
||||
@@ -30,7 +30,7 @@ cca65482e36d48035aca178121a378fe7d578d600acff267ae81a6399c0da653 ./ha-addon/hom
|
||||
a745cc458c235158d5d70b6a33d8000fd8b40ff93bfe2f2796af0f4b3a9eef9b ./ha-addon/home-assistant/custom_components/gree_controller/translations/en.json
|
||||
50b7d6fe6329ad4ea6bee9612ab141c2f73f8382fcc2af0bb076a8e8d4dd4465 ./ha-addon/home-assistant/custom_components/gree_controller/translations/pl.json
|
||||
c5fc5c87273d82d2834a0a5a365c821a416413ed509613441e24e4dc3507c4d2 ./ha-addon/home-assistant/generated/gree_controller_entities.example.json
|
||||
5f394912d8891101722e968af47f8c2a82e17287d01cd3987952b3c7311a0d23 ./ha-addon/repository/gree-controller/CHANGELOG.md
|
||||
fb9543f96b5f2cc6d464f102209c2fc1953e90f42a70ddf9610f70f0cea66b16 ./ha-addon/repository/gree-controller/CHANGELOG.md
|
||||
50b8ba050c6b4919e4d057f7b38c1e23d3913b5b7c87552626452e9695d37251 ./ha-addon/repository/gree-controller/DOCS.md
|
||||
aa4f0fea858a37cb5d0611cfe7791a09ba6dafed44fbd725f0236e6b9a9da086 ./ha-addon/repository/gree-controller/README.md
|
||||
539c6da3413640b4f468ae1f9884d4781342ed0bf3b75dd8342c6c8c4df6c406 ./ha-addon/repository/gree-controller/config.yaml
|
||||
@@ -136,7 +136,7 @@ d6b9b70a04c774173c97f7426487d5e2932d7713e12ae3fb7f64cf2b4e0b3c10 ./src/db/sched
|
||||
28ee42d08147b0f154af818065d7d014d74ee8ddd59fdef98115f5c5368056cc ./src/db/tests.rs
|
||||
f90fbb14f29a20b799b3856bdaa22812a9f0d9dfa46693f1341c160dccda8a97 ./src/db/zone_history.rs
|
||||
0e49ea4a52017b0a8501d5101b1906a7a1e8d5158acb0bb65caa43cde2836ec0 ./src/engine.rs
|
||||
969e4079cb9990c15b3366a99b68975de6466a5e11bbc54ab0405a863049f6b4 ./src/engine/automations.rs
|
||||
e39d0bbc4c1dda7c5538b2c2abdbad7923e56f40ad7a9788c8dbd338244f2c41 ./src/engine/automations.rs
|
||||
1dccb8779f87dfdbd4ccda3f02ec51273e7be2e34e85166861668685528eca79 ./src/engine/commands.rs
|
||||
357ef92c3cc42b243af4da31ac52bb360d7444ae423f58d7a13bdee79bf0a748 ./src/engine/connectivity.rs
|
||||
828657b3c13b68792991b5ca2a26ae0b1d5c417191c83c4e5f650f62b6440096 ./src/engine/control_plan.rs
|
||||
@@ -152,7 +152,7 @@ c73691c3637465ab0f79aecf7f5428d0317799a8ab5329ed564cf57963bbe86e ./src/engine/r
|
||||
b0189f28d0f337dfd3ce0934da7a565e4a5535afc1c242214c26ed584b3b7840 ./src/engine/targets.rs
|
||||
682c8b3956c657b655746cbd19ee97ee2f4cf953bc9de67d6d70a1b14f3dd746 ./src/engine/temperature.rs
|
||||
833b72907375e75c3f42b3921ad70a8e298f5a93743bf0d0c19059aa272462d1 ./src/engine/temporary_thermostat.rs
|
||||
9f15d890cb8fc0ccceba4d59b411a355503fcc269cfe6315e6bb0cc287759038 ./src/engine/tests.rs
|
||||
0d4f2df3c3881aceb41b9f8d78adde7ecbb5b39d2f8aea444b865166a0670dec ./src/engine/tests.rs
|
||||
c89ff36c6a67bf4fbf68c43e18aa0a556de2dc69263fd79db376363afc741a4f ./src/engine/zone_actions.rs
|
||||
87ab87d434a6462a2c3f25249b42c59ecb2bca6ed700ec73e95e4613349cf16f ./src/engine/zone_control.rs
|
||||
bfac95cec87f0df6ce562153cd3cfe6731359d703e6c592d2c2f7ba01ea62d99 ./src/error.rs
|
||||
|
||||
@@ -29,7 +29,7 @@ cca65482e36d48035aca178121a378fe7d578d600acff267ae81a6399c0da653 ./ha-addon/hom
|
||||
a745cc458c235158d5d70b6a33d8000fd8b40ff93bfe2f2796af0f4b3a9eef9b ./ha-addon/home-assistant/custom_components/gree_controller/translations/en.json
|
||||
50b7d6fe6329ad4ea6bee9612ab141c2f73f8382fcc2af0bb076a8e8d4dd4465 ./ha-addon/home-assistant/custom_components/gree_controller/translations/pl.json
|
||||
c5fc5c87273d82d2834a0a5a365c821a416413ed509613441e24e4dc3507c4d2 ./ha-addon/home-assistant/generated/gree_controller_entities.example.json
|
||||
5f394912d8891101722e968af47f8c2a82e17287d01cd3987952b3c7311a0d23 ./ha-addon/repository/gree-controller/CHANGELOG.md
|
||||
fb9543f96b5f2cc6d464f102209c2fc1953e90f42a70ddf9610f70f0cea66b16 ./ha-addon/repository/gree-controller/CHANGELOG.md
|
||||
50b8ba050c6b4919e4d057f7b38c1e23d3913b5b7c87552626452e9695d37251 ./ha-addon/repository/gree-controller/DOCS.md
|
||||
aa4f0fea858a37cb5d0611cfe7791a09ba6dafed44fbd725f0236e6b9a9da086 ./ha-addon/repository/gree-controller/README.md
|
||||
539c6da3413640b4f468ae1f9884d4781342ed0bf3b75dd8342c6c8c4df6c406 ./ha-addon/repository/gree-controller/config.yaml
|
||||
@@ -135,7 +135,7 @@ d6b9b70a04c774173c97f7426487d5e2932d7713e12ae3fb7f64cf2b4e0b3c10 ./src/db/sched
|
||||
28ee42d08147b0f154af818065d7d014d74ee8ddd59fdef98115f5c5368056cc ./src/db/tests.rs
|
||||
f90fbb14f29a20b799b3856bdaa22812a9f0d9dfa46693f1341c160dccda8a97 ./src/db/zone_history.rs
|
||||
0e49ea4a52017b0a8501d5101b1906a7a1e8d5158acb0bb65caa43cde2836ec0 ./src/engine.rs
|
||||
969e4079cb9990c15b3366a99b68975de6466a5e11bbc54ab0405a863049f6b4 ./src/engine/automations.rs
|
||||
e39d0bbc4c1dda7c5538b2c2abdbad7923e56f40ad7a9788c8dbd338244f2c41 ./src/engine/automations.rs
|
||||
1dccb8779f87dfdbd4ccda3f02ec51273e7be2e34e85166861668685528eca79 ./src/engine/commands.rs
|
||||
357ef92c3cc42b243af4da31ac52bb360d7444ae423f58d7a13bdee79bf0a748 ./src/engine/connectivity.rs
|
||||
828657b3c13b68792991b5ca2a26ae0b1d5c417191c83c4e5f650f62b6440096 ./src/engine/control_plan.rs
|
||||
@@ -151,7 +151,7 @@ c73691c3637465ab0f79aecf7f5428d0317799a8ab5329ed564cf57963bbe86e ./src/engine/r
|
||||
b0189f28d0f337dfd3ce0934da7a565e4a5535afc1c242214c26ed584b3b7840 ./src/engine/targets.rs
|
||||
682c8b3956c657b655746cbd19ee97ee2f4cf953bc9de67d6d70a1b14f3dd746 ./src/engine/temperature.rs
|
||||
833b72907375e75c3f42b3921ad70a8e298f5a93743bf0d0c19059aa272462d1 ./src/engine/temporary_thermostat.rs
|
||||
9f15d890cb8fc0ccceba4d59b411a355503fcc269cfe6315e6bb0cc287759038 ./src/engine/tests.rs
|
||||
0d4f2df3c3881aceb41b9f8d78adde7ecbb5b39d2f8aea444b865166a0670dec ./src/engine/tests.rs
|
||||
c89ff36c6a67bf4fbf68c43e18aa0a556de2dc69263fd79db376363afc741a4f ./src/engine/zone_actions.rs
|
||||
87ab87d434a6462a2c3f25249b42c59ecb2bca6ed700ec73e95e4613349cf16f ./src/engine/zone_control.rs
|
||||
bfac95cec87f0df6ce562153cd3cfe6731359d703e6c592d2c2f7ba01ea62d99 ./src/error.rs
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
- Fixes Visual Flow `zone_thermostat` OFF semantics: `power=false` now powers the assigned unit off without setting the persistent Zone `enabled` flag to false.
|
||||
- Keeps the Zone available for subsequent Flow/schedule evaluation after an OFF action while preserving the existing explicit physical OFF command and ownership checks.
|
||||
- Preserves backward-compatible `power=true` recovery of Zones left disabled by older Flow executions.
|
||||
|
||||
## 0.15.18
|
||||
|
||||
|
||||
@@ -909,14 +909,6 @@ fn flow_condition_kind_runtime(kind: &str) -> bool {
|
||||
)
|
||||
}
|
||||
|
||||
fn apply_flow_zone_power_enabled_state(zone: &mut Zone, power: Option<bool>) {
|
||||
// OFF controls the thermostat/unit runtime only. It must not disable the administrative Zone.
|
||||
// Keep the historical ON recovery so installations affected by the old OFF behavior can heal.
|
||||
if power == Some(true) {
|
||||
zone.enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
async fn apply_flow_zone_action(state: &AppState, zone_id: &str, preset: Option<&str>, action: &DeviceCommand) -> Result<bool, AppError> {
|
||||
let _schedule_guard = state.lock_schedule_operation().await;
|
||||
// Match the canonical thermostat ordering used by Web/HA zone control. This prevents
|
||||
@@ -925,14 +917,10 @@ async fn apply_flow_zone_action(state: &AppState, zone_id: &str, preset: Option<
|
||||
let _zone_guard = state.lock_zone_operation(zone_id).await;
|
||||
let Some(mut zone) = state.db.get_zone(zone_id)? else { return Err(AppError::NotFound(format!("zone {zone_id}"))); };
|
||||
if zone.device_manual_override || zone.local_thermostat_power.is_some() || temporary_quick_thermostat_is_active(&zone, Utc::now()) { return Ok(false); }
|
||||
// Match the existing automatic-device ownership semantics: a disabled thermostat zone
|
||||
// remains an explicit gate unless this Flow action is the actor re-enabling it.
|
||||
if !zone.enabled && action.power != Some(true) { return Ok(false); }
|
||||
// A disabled Zone is an administrative gate for every Flow thermostat action.
|
||||
// Flow power commands control only the assigned unit runtime; they never change zone.enabled.
|
||||
if !zone.enabled { return Ok(false); }
|
||||
let device_id = zone.device_id.clone();
|
||||
// Flow thermostat OFF is a runtime climate command, not the persistent administrative
|
||||
// Zone enabled/disabled switch. Keep the zone enabled so later Flow/schedule evaluation can
|
||||
// continue normally.
|
||||
apply_flow_zone_power_enabled_state(&mut zone, action.power);
|
||||
if let Some(mode) = action.mode.as_deref() {
|
||||
match mode { "auto" => zone.inherit_house_mode = true, "heat" | "cool" => { zone.mode = mode.to_string(); zone.inherit_house_mode = false; }, _ => return Err(AppError::BadRequest("unsupported Flow thermostat mode".into())) }
|
||||
}
|
||||
|
||||
@@ -525,17 +525,6 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn flow_thermostat_off_keeps_zone_enabled() {
|
||||
let mut zone = test_zone("device");
|
||||
apply_flow_zone_power_enabled_state(&mut zone, Some(false));
|
||||
assert!(zone.enabled);
|
||||
|
||||
zone.enabled = false;
|
||||
apply_flow_zone_power_enabled_state(&mut zone, Some(true));
|
||||
assert!(zone.enabled);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn regulator_zone_event_dedup_ignores_only_updated_at_heartbeat() {
|
||||
let zone = test_zone("device");
|
||||
|
||||
Reference in new issue
Block a user