Skip to content

Releases: davidusb-geek/emhass

EMHASS version 0.16.2

29 Jan 16:17
7460ae3

Choose a tag to compare

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

23 Jan 10:31
44097b5

Choose a tag to compare

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

Full Changelog: v0.16.0...v0.16.1

EMHASS version 0.16.0

22 Jan 16:15
1c426f2

Choose a tag to compare

🚀 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-cbc or glpk via 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_solver and lp_solver_path are 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_SOLVER environment variable (e.g., LP_SOLVER=GUROBI), rather than the configuration file.

Action Required:

  1. Remove lp_solver and lp_solver_path from your configuration files (config.json or options.json) to avoid validation warnings.
  2. 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

18 Jan 18:22

Choose a tag to compare

Improvement

  • New feature that allows users to disable SSL communication with Home Assistant

Fix

  • Fix issues with missing long_train_data.pkl file 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

16 Jan 10:42

Choose a tag to compare

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

13 Jan 21:50
bcac784

Choose a tag to compare

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

Full Changelog: v0.15.3...v0.15.4

EMHASS version 0.15.3

07 Jan 15:19

Choose a tag to compare

What's Changed

New Contributors

  • @F21 made their first contribution in #669

Full Changelog: v0.15.2...v0.15.3

EMHASS version 0.15.2

19 Dec 14:36

Choose a tag to compare

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

New Contributors

Full Changelog: v0.15.1...v0.15.2

EMHASS version 0.15.1

10 Dec 09:28

Choose a tag to compare

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

09 Dec 19:30

Choose a tag to compare

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-learn models 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

Full Changelog: v0.14.1...v0.15.0