This commit is contained in:
Mateusz Gruszczyński
2026-09-04 11:30:48 +02:00
parent 236540e0f0
commit 9b4fafdfa6
14 changed files with 262 additions and 62 deletions
+41 -22
View File
@@ -200,8 +200,7 @@ fn persist_zone_cycle_with_history(
) -> Result<Zone> {
record_zone_history(state, zone, outdoor_temperature, poll_interval_seconds);
let persisted = persist_zone_cycle(state, zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted)?);
Ok(persisted)
Ok(publish_persisted_zone_cycle(state, persisted)?)
}
async fn handle_zone_pre_control_state(
@@ -607,8 +606,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
@@ -686,8 +687,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
@@ -702,8 +705,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
};
@@ -866,8 +871,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
if let Some(last_change) = zone.last_power_change_at {
@@ -884,8 +891,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
}
@@ -924,8 +933,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
if !device.power {
@@ -944,8 +955,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
if settings.compressor_protection_enabled {
@@ -963,8 +976,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
}
@@ -1052,8 +1067,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
continue;
}
Err(err) => state.log(
@@ -1071,8 +1088,10 @@ async fn control_zones(state: &AppState) -> Result<()> {
outdoor_temperature,
settings.poll_interval_seconds,
);
let persisted_zone = persist_zone_cycle(state, &zone, cycle_started_at)?;
state.broadcast("zone.updated", serde_json::to_value(&persisted_zone)?);
publish_persisted_zone_cycle(
state,
persist_zone_cycle(state, &zone, cycle_started_at)?,
)?;
}
Ok(())