diff --git a/Scripts/web_server.py b/Scripts/web_server.py index 8775830..12d69d9 100644 --- a/Scripts/web_server.py +++ b/Scripts/web_server.py @@ -184,6 +184,24 @@ class TempWebServer: config['schedules'] = schedules + # ===== START: Validate all schedules ===== + for i, schedule in enumerate(schedules): + heater_temp = schedule.get('heater_target', 80.0) + ac_temp = schedule.get('ac_target', 77.0) + + if heater_temp > ac_temp: + print("❌ Schedule validation failed: Schedule {} has heater ({}) > AC ({})".format( + i+1, heater_temp, ac_temp + )) + return self._get_error_page( + "Invalid Schedule", + "Schedule {} ({}): Heater target ({:.1f}°F) cannot be greater than AC target ({:.1f}°F)".format( + i+1, schedule.get('name', 'Unnamed'), heater_temp, ac_temp + ), + sensors, ac_monitor, heater_monitor + ) + # ===== END: Validate all schedules ===== + # Save to file if self._save_config_to_file(config): print("Schedule configuration saved") @@ -224,6 +242,26 @@ class TempWebServer: # Load current config config = self._load_config() + # ===== START: Validate Heat <= AC ===== + # Get the values that will be set + new_heater_target = params.get('heater_target', config.get('heater_target', 80.0)) + new_ac_target = params.get('ac_target', config.get('ac_target', 77.0)) + + # Validation: Heater must be <= AC + if new_heater_target > new_ac_target: + print("❌ Validation failed: Heater target ({}) cannot be greater than AC target ({})".format( + new_heater_target, new_ac_target + )) + # Return error page + return self._get_error_page( + "Invalid Settings", + "Heater target ({:.1f}°F) cannot be greater than AC target ({:.1f}°F)".format( + new_heater_target, new_ac_target + ), + sensors, ac_monitor, heater_monitor + ) + # ===== END: Validate Heat <= AC ===== + # ===== START: Update AC Settings ===== if 'ac_target' in params and ac_monitor: ac_monitor.target_temp = params['ac_target'] # Update monitor @@ -630,35 +668,26 @@ class TempWebServer: