Releases: davidusb-geek/emhass
EMHASS version 0.16.2
Improvement
- Added support for a thermal inertia parameter for the basic thermal model
- Handle time-dependent battery weights (@rmounce)
Fix
- Fix Docker signal handling with tini and pin uvicorn version (@rmounce)
- Fix "typical" load forecast method fails with maximum_power_from_grid as vector (list)
- Fix warning logging messages on sensor_replace_zero
- Fix for correct handling of open-meteo temp_air variable
What's Changed
- Fix Docker signal handling with tini and pin uvicorn version by @rmounce in #698
- Added support for a thermal inertia on the basic thermal model by @davidusb-geek in #704
- Handle time-dependent battery weights by @rmounce in #699
- Fix for correct handling of open-meteo temp_air variable by @davidusb-geek in #702
- Fix typical load when maximum_power_from_grid is a list and uneeded w… by @davidusb-geek in #706
Full Changelog: v0.16.1...v0.16.2
EMHASS version 0.16.1
Fix
- Hot fix for InfluxDB not passed credentials
- Fixed optimization window size mismatch issue
- Fixed optim_status key not found error when falling back to LP problem
What's Changed
- Hot fix for InfluxDB not passed credentials by @davidusb-geek in #695
Full Changelog: v0.16.0...v0.16.1
EMHASS version 0.16.0
🚀 Major Optimization Engine Overhaul
This release marks a significant milestone in the evolution of EMHASS. We have completely re-engineered the core optimization backend, moving from PuLP to CVXPY. This modern, vectorized architecture unlocks substantial performance improvements and paves the way for advanced energy management features.
Key Highlights
- ⚡ CVXPY & Vectorization: The constraint generation logic has been rewritten using vectorization. This mathematical streamlining allows EMHASS to construct optimization problems significantly faster, reducing overhead especially for complex configurations or long prediction horizons. Benchmarks show optimization times are 4-5x faster, clocking in at approximately 0.1s per iteration for standard use cases compared to previous implementation.
- 🏎️ HiGHS Solver Standard: We have adopted HiGHS as the new default solver. HiGHS is a state-of-the-art, open-source linear optimization solver that offers vastly superior performance and stability compared to the legacy CBC/GLPK solvers.
- 📦 Simplified Dependencies: No more system-level dependencies! Because HiGHS is bundled as a Python wheel, the Docker image is lighter, and installation is more robust—you no longer need to install
coinor-cbcorglpkvia apt. - 🔧 Commercial Solver Support: Power users with licenses for Gurobi or CPLEX can now easily plug them in via environment variables (
LP_SOLVER=GUROBI) without code modifications, thanks to the standardized interface of CVXPY. - 🏗️ Modular Architecture: The optimization class has been refactored into smaller, testable helper methods, improving code maintainability and making it easier for contributors to add new constraints (like the new internal gains logic for thermal batteries) without breaking existing features.
Improvement
- Refactor optimization.py to use cvxpy
- Added internal gains factor to heating demand calculation (@sokorn)
- Add vector support for maximum power to or from grid (@mk2lehe)
⚠️ BREAKING CHANGE: Solver Configuration
We have modernized the optimization backend to use CVXPY. As a result, the solver configuration has been simplified and both lp_solver and lp_solver_path parameters have been removed.
- Removed:
lp_solverandlp_solver_pathare no longer supported in the configuration. - New Default: The application now defaults to the HiGHS solver, which is bundled directly with EMHASS. No external binary paths or apt packages are required.
- Commercial Solvers: If you wish to use Gurobi or CPLEX (requiring your own license), you must now specify this using the
LP_SOLVERenvironment variable (e.g.,LP_SOLVER=GUROBI), rather than the configuration file.
Action Required:
- Remove
lp_solverandlp_solver_pathfrom your configuration files (config.jsonoroptions.json) to avoid validation warnings. - If you previously relied on a custom solver path, ensure you are satisfied with the new default HiGHS solver (recommended) or configure the environment variable for a commercial alternative.
What's Changed
- Added internal gains factor to heating demand calculation by @sokorn in #684
- Missing unit convertion for load_power by @sokorn in #690
- Add vector support for maximum power to or from grid by @mk2lehe in #687
- Refactor optimization.py to use cvxpy by @davidusb-geek in #688
- Solve secrets handling and MILP big-M solve hang issues by @davidusb-geek in #693
New Contributors
Full Changelog: v0.15.6...v0.16.0
EMHASS version 0.15.6
Improvement
- New feature that allows users to disable SSL communication with Home Assistant
Fix
- Fix issues with missing
long_train_data.pklfile and load power sensor name updated by the user - Fix broken MLRegressor by removing unnecessary loading of a CSV file
- Fix missing outdoor temperature data for thermal model
What's Changed
- Fix missing outdoor temperature data for thermal model by @davidusb-geek in #679
- Fix broken MLRegressor with not needed load treatment of a CSV file by @davidusb-geek in #681
- New feature to allow to disable SSL communication with Home Assistant by @davidusb-geek in #682
- Fix issues with missing file and updated load power sensor name by @davidusb-geek in #683
Full Changelog: v0.15.5...v0.15.6
EMHASS version 0.15.5
Fix
- Fix the thermal load parsing to use it on any type of optimization
What's Changed
- Fix the thermal load parsing to use it on any type of optimization by @davidusb-geek in #678
Full Changelog: v0.15.4...v0.15.5
EMHASS version 0.15.4
Refactor Home Assistant data retrieval, forecasting, optimization, and publishing flows for better structure, error handling, and configurability while enhancing docs, web UI, and CI integration.
Improvement
- Support selecting PV module and inverter models by approximate power rating in addition to explicit database names
- Introduce helper contexts and structured helpers for optimization setup, publishing, and forecast preparation
- Add explicit SonarCloud analysis and Codecov integration in CI workflow
- Added support to publish emhass package to conda repository
- Improved documentation: Reorganize and expand documentation sections, including for using InfluxDB as a data source and for passing secret parameters, clarifying differences between Docker/Python deployments and the Home Assistant add-on, and moving this content into the passing_data guide. Change theme to PyData Sphinx Theme
- Added extensive unit tests around Home Assistant data retrieval helpers, PV adjustment behavior, regressor preparation errors, weather forecast method branching, thermal loads publishing, and web server runtime parameter handling
- Update existing optimization and CLI tests to use mocks for heavy optimization routines allowing faster tests
Fix
- Ensure InfluxDB is prioritized over WebSocket and REST when configured as a data source to avoid redundant queries to Home Assistant
- Fix runtime parameter parsing in the web server to properly handle malformed JSON payloads and default safely to empty parameters
What's Changed
- SonarQube code improvements by @davidusb-geek in #677
Full Changelog: v0.15.3...v0.15.4
EMHASS version 0.15.3
What's Changed
- Solve power limits when is hybrid inverter true and false by @davidusb-geek in #658
- Update skforecast by @gieljnssns in #661
- Make n_trials in tune configurable by @gieljnssns in #662
- Codecov Coverage improvements by @davidusb-geek in #660
- Adding new dynamic frontend options by @davidusb-geek in #663
- Add new inverter and module entries by @F21 in #669
- Revert "Implement inverter AC input limit constraint" by @rmounce in #666
- Add hybrid inverter stress cost by @rmounce in #667
- Documentation for inverter stress cost feature by @davidusb-geek in #672
- Implement thermal battery for underfloor heating from Langer & Volling (2020) by @sokorn in #668
- Update thermal battery parameters to support per-timestep temperature… by @sokorn in #674
- Fix/influxdb skip renaming by @sokorn in #676
- New thermal load plot and other several fixes by @davidusb-geek in #675
New Contributors
Full Changelog: v0.15.2...v0.15.3
EMHASS version 0.15.2
Improvement
- Update documentation and parameter definitions for adjusted PV regression models to include all available scikit-learn options (@sokorn)
- Removed device class and unit of measurement for optim status (@mime24)
Fix
- Fixing some docs math mode and rearrange sections
- Refactor REST API data retrieval to reuse one aiohttp ClientSession, solve issue #648 (@gieljnssns)
- Change regressor parameter to estimator in forecaster
- Remove warning log for runtime parameters parsing
What's Changed
- Remove warning log for runtime parameters parsing by @davidusb-geek in #647
- Change regressor parameter to estimator in forecaster by @davidusb-geek in #649
- Use one ClientSession by @gieljnssns in #650
- removed device class and unit of measurement for optim status by @mime24 in #652
- Update documentation and parameter definitions for adjusted PV regres… by @sokorn in #654
- Fixing some docs math mode and rearrange sections by @davidusb-geek in #656
New Contributors
Full Changelog: v0.15.1...v0.15.2
EMHASS version 0.15.1
Fix
- Hot fix for thermal model semi-continuous mode and continual publish caped to 60s
What's Changed
- Hot fix for thermal model semi-continuous mode and continual publish … by @davidusb-geek in #646
Full Changelog: v0.15.0...v0.15.1
EMHASS version 0.15.0
Improvement
- Added support for async emhass code (@gieljnssns)
- Added support for websocket data retrieval (@gieljnssns)
- Add feature to cache pv regression model (@sokorn)
- Added support for a more comprehensive list of
scikit-learnmodels for both ML Forecaster and Regressor classes - Improved documentation re-arranged sections
- Thermal model improvements:
- Implemented a Min/Max temperature control, proposed by @werdnum
- Implemented needed unit tests
- Improved documentation
Fix
- Fixed warning message because pickle files saved with old Numpy version
- A buch of code refactor following SonarCloud Code Analysis
- Solved runtime param optimization_time_step not recognized, issue #563
- Attempt at solving data publish problem when containing both battery sensor definitions and a def_load_config, issue #587
- Fix timezone comparison issue with InfluxDB (@sokorn)
- Update skforecast requirement from <0.19.0,>=0.18.0 to >=0.18.0,<0.20.0
- Implement inverter AC input limit constraint
What's Changed
- Thermal model improvements by @davidusb-geek in #637
- Emhass async + websocket data retrieval by @gieljnssns in #626
- Code fix sonar cube by @davidusb-geek in #640
- Add feature to cache pv regression model by @sokorn in #638
- Implement inverter AC input limit constraint by @davidusb-geek in #643
- Fix timezone comparison issue with InfluxDB by @sokorn in #642
- Update skforecast requirement from <0.19.0,>=0.18.0 to >=0.18.0,<0.20.0 by @dependabot[bot] in #641
- Add new inverter and module data entries to CSV and database files by @sokorn in #645
- Added support for a more comprehensive list of Scikit-Learn models by @davidusb-geek in #644
Full Changelog: v0.14.1...v0.15.0