emhass is a free, open source internet of things (iot) project written in Python and released under MIT. It has 722 GitHub stars, 181 forks and 50 open issues, and was last pushed 8 hours ago. On this registry it ranks #88 of 99 tracked projects in Internet of Things (IoT), with 5 head-to-head comparisons available. It gained 30 stars over the last 30 tracked days.

What is emhass?

EMHASS (Energy Management for Home Assistant) is an MIT-licensed Python module for residential households that optimizes home energy use around electricity prices, solar panel generation, and battery storage, and that interfaces with Home Assistant.

What it is

EMHASS is an optimization tool designed for residential households, written in Python and released under the MIT License, with copyright held by David Hernandez Torres for the 2021–2026 period. It applies a Linear Programming approach to decide how energy should be used across a home, taking electricity prices, power generation from solar panels, and energy storage from batteries as its inputs. The project is published as a Python module, documented at emhass.readthedocs.io, and carries 679 stars, 165 forks, and 50 open issues.

The concrete problem it solves is scheduling. Rather than switching appliances and charging cycles by hand or by fixed rule, EMHASS produces an optimized daily schedule for a household's devices, allowing energy consumption to be shifted toward cheaper or cleaner moments. It replaces the manual or ad-hoc logic a Home Assistant user would otherwise write to decide when a battery charges, when a load runs, and how solar production is spent. Its topics place it squarely in home-automation and energy management, with linear-programming, optimization, and model-predictive-control named as the methods involved.

Key capabilities

  • Linear Programming based optimization of home energy usage, per the package description and the linear-programming topic.
  • Optimization over electricity prices, solar panel power generation, and battery energy storage as stated inputs.
  • Model-predictive-control approach, named in the project topics.
  • Generation of an optimized daily schedule for controllable devices in the home.
  • Interfacing with Home Assistant, with dedicated guides for Home Assistant automations (docs/automations.md).
  • High degree of configurability, described in the README as making integration with Home Assistant and other smart home systems easy.
  • Suitability for households with solar panels, with energy storage, or with only a controllable load.
  • MIT License, permitting use, copy, modification, merge, publication, distribution, sublicensing, and sale.

Who uses it and how

  • Residential households with solar panels, where generation forecasts and prices shape the daily plan.
  • Households with battery storage, where charging and discharging are scheduled rather than fixed.
  • Households with only a controllable load, which the README explicitly names as a supported case.
  • Home Assistant users who wire the optimization output into automations using the project's Home Assistant automations guide.
  • Developers and contributors, since pull requests are accepted and development instructions live in docs/develop.md.

Getting started

The README directs new users to the Quick Start guide at docs/quick_start.md, with installation methods documented in docs/installation_methods.md. The README excerpt does not embed an exact package name, Docker image, or compose file; the installation methods page in the documentation is the authoritative source.

How it compares

No paid products are listed as being replaced by this project, and no comparable tools are named in the facts. On the evidence available, it stands alone in this registry.

When to use it — and when not to

It fits users already running Home Assistant or another smart home system who want optimization rather than hand-written scheduling rules for solar, batteries, and controllable loads. It does not fit users who want a hosted service, or who are unwilling to install and configure a Python module and read through separate installation and usage guides before anything runs. Honest limitations: the README excerpt is brief and carries no inline install command, and the project carries 50 open issues, so expect to work from the documentation site rather than the repository front page.

project readme (upstream, from github) — read inline

EMHASS

Energy Management for Home Assistant


PyPI - Version Conda - Version EMHASS GitHub Workflow Status GitHub PyPI - Python Version PyPI - Status Read the Docs SonarQube security rating SonarQube security Vulnerabilities SonarQube reliability SonarQube bugs

Documentation Community Issues EMHASS Add-on

EMHASS is a Python module designed to optimize your home energy interfacing with Home Assistant.

Introduction

EMHASS (Energy Management for Home Assistant) is an optimization tool designed for residential households. The package uses a Linear Programming approach to optimize energy usage while considering factors such as electricity prices, power generation from solar panels, and energy storage from batteries. EMHASS provides a high degree of configurability, making it easy to integrate with Home Assistant and other smart home systems. Whether you have solar panels, energy storage, or just a controllable load, EMHASS can provide an optimized daily schedule for your devices, allowing you to save money and minimize your environmental impact.

The complete documentation for this package is available here.

To get started you can follow our 🚀 Quick Start guide in the documentation.

Here are the guides for:

Development

Pull requests are very much accepted on this project. For development, you can find some instructions here Development.

License

MIT License

Copyright (c) 2021-2026 David HERNANDEZ TORRES

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Frequently asked questions

Is emhass free to use?

emhass is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does emhass do?

emhass: Energy Management for Home Assistant, is a Python module designed to optimize your home energy interfacing with Home Assistant.

What is emhass written in?

emhass is primarily written in Python. Its source is publicly available at https://github.com/davidusb-geek/emhass, and it has 722 GitHub stars.