From 269d2162a9d94bdf2d570e9d91b6dab4f39b918a Mon Sep 17 00:00:00 2001 From: Bobby Noelte Date: Sat, 8 Aug 2026 11:37:50 +0200 Subject: [PATCH] fix: server crash on prediction update failure (#1222) Catch exceptions from prediction update and log as error message. Keep executing the energy management run. Signed-off-by: Bobby Noelte --- .env | 2 +- config.yaml | 2 +- docs/_generated/openapi.md | 2 +- openapi.json | 2 +- src/akkudoktoreos/core/ems.py | 11 ++++++++++- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.env b/.env index a8690f40..89d85e9d 100644 --- a/.env +++ b/.env @@ -11,7 +11,7 @@ DOCKER_COMPOSE_DATA_DIR=${HOME}/.local/share/net.akkudoktor.eos # ----------------------------------------------------------------------------- # Image / build # ----------------------------------------------------------------------------- -VERSION=0.3.0.dev2608010961051894 +VERSION=0.3.0.dev2608080910933529 PYTHON_VERSION=3.13.9 # ----------------------------------------------------------------------------- diff --git a/config.yaml b/config.yaml index be065ddc..262c3d0b 100644 --- a/config.yaml +++ b/config.yaml @@ -6,7 +6,7 @@ # the root directory (no add-on folder as usual). name: "Akkudoktor-EOS" -version: "0.3.0.dev2608010961051894" +version: "0.3.0.dev2608080910933529" slug: "eos" description: "Akkudoktor-EOS add-on" url: "https://github.com/Akkudoktor-EOS/EOS" diff --git a/docs/_generated/openapi.md b/docs/_generated/openapi.md index e43e338a..02445423 100644 --- a/docs/_generated/openapi.md +++ b/docs/_generated/openapi.md @@ -1,6 +1,6 @@ # Akkudoktor-EOS -**Version**: `v0.3.0.dev2608071015082558` +**Version**: `v0.3.0.dev2608080910933529` **Description**: This project provides a comprehensive solution for simulating and optimizing an energy system based on renewable energy sources. With a focus on photovoltaic (PV) systems, battery storage (batteries), load management (consumer requirements), heat pumps, electric vehicles, and consideration of electricity price data, this system enables forecasting and optimization of energy flow and costs over a specified period. diff --git a/openapi.json b/openapi.json index 4b65ea27..35d607ad 100644 --- a/openapi.json +++ b/openapi.json @@ -8,7 +8,7 @@ "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, - "version": "v0.3.0.dev2608071015082558" + "version": "v0.3.0.dev2608080910933529" }, "paths": { "/v1/admin/cache/clear": { diff --git a/src/akkudoktoreos/core/ems.py b/src/akkudoktoreos/core/ems.py index 651a6ec0..ffb97bbd 100644 --- a/src/akkudoktoreos/core/ems.py +++ b/src/akkudoktoreos/core/ems.py @@ -263,7 +263,16 @@ class EnergyManagement( # Update the predictions logger.info("Starting energy management prediction update.") - await self.prediction.update_data(force_enable=force_enable, force_update=force_update) + try: + await self.prediction.update_data( + force_enable=force_enable, force_update=force_update + ) + except Exception as e: + trace = "".join(traceback.TracebackException.from_exception(e).format()) + error_msg = ( + f"Prediction update failed - phase {EnergyManagement._stage}:\n{e}\n{trace}" + ) + logger.error(error_msg) if mode == EnergyManagementMode.PREDICTION: logger.info("Energy management run done (predictions updated)")