This commit is contained in:
Mateusz Gruszczyński
2026-09-15 18:47:20 +02:00
parent 7ffaba6c7a
commit 3d69e74319
37 changed files with 426 additions and 318 deletions
+14 -2
View File
@@ -27,7 +27,7 @@ async fn export_configuration(
fn validate_configuration_header(export: &ConfigurationExport) -> Result<(), AppError> {
if export.format_version != 3 {
return Err(AppError::BadRequest("unsupported configuration export version; version 3 is required by GREE Controller 0.14.2".into()));
return Err(AppError::BadRequest("unsupported configuration export version; version 3 is required by GREE Controller 0.14.4".into()));
}
if export.settings.control_strategy != "setpoint" {
return Err(AppError::BadRequest(
@@ -157,6 +157,18 @@ fn validate_configuration_devices_and_zones(
"import contains an invalid zone sensor source".into(),
));
}
if matches!(zone.sensor_source.as_str(), "home_assistant" | "combined")
&& zone
.ha_entity_id
.as_deref()
.map(str::trim)
.unwrap_or("")
.is_empty()
{
return Err(AppError::BadRequest(
"import contains a zone that needs a per-zone Home Assistant room temperature entity_id".into(),
));
}
}
let mut installation_devices = std::collections::HashSet::new();
for group in &export.device_groups {
@@ -687,7 +699,7 @@ fn normalize_imported_runtime_settings(settings: &mut RuntimeSettings) -> Result
fn prepare_configuration_import(export: &mut ConfigurationExport) -> Result<(), AppError> {
normalize_imported_runtime_settings(&mut export.settings)?;
for zone in &mut export.zones {
canonicalize_zone_ha_entity(zone, &export.settings.home_assistant);
canonicalize_zone_ha_entities(zone, &export.settings.home_assistant);
}
Ok(())
}