EMS-ESP32 is a free, open source internet of things (iot) project written in C++ and released under LGPL-3.0. It has 1,053 GitHub stars, 159 forks and 15 open issues, and was last pushed 6 hours ago. On this registry it ranks #80 of 99 tracked projects in Internet of Things (IoT), with 5 head-to-head comparisons available. It gained 33 stars over the last 30 tracked days.

What is EMS-ESP32?

EMS-ESP32 is an open-source C++ firmware for the Espressif ESP32 microcontroller that reads and controls EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules and heat pumps, built for technically confident home-automation users who own Bosch, Buderus, Nefit, Junkers, Worcester, Sieger, elm.leblanc or iVT heating hardware.

What it is

EMS-ESP32 is firmware flashed onto an ESP32 board that joins the home-automation and IoT ecosystem by speaking the proprietary two-wire EMS bus. The equipment it targets uses bus variants called EMS, EMS+, EMS2, EMS Plus, Logamatic EMS, Junkers 2-wire, and Heatronic 3 and 4, and none of those variants can be read by a general-purpose home-automation controller on its own. The project requires a small interface circuit to connect to that bus, and gateways built for the purpose are tested and certified to work with EMS-ESP.

The concrete problem it solves is access. A heating system built on EMS or Heatronic normally reports only to its manufacturer's own controls, leaving the owner with no local, machine-readable view of boiler state, thermostat set points, solar output or heat-pump behaviour. EMS-ESP32 turns that bus into data and commands that ordinary automation software can consume, supporting over 120 different EMS compatible devices including thermostats, boilers, heat pumps, mixing units, solar modules, connect modules, ventilation units and switches. It also allows external temperature and analog sensors to be attached to GPIO pins on the ESP32 board, so readings from outside the bus can be folded into the same view.

Key capabilities

  • Speaks EMS, EMS+, EMS2, EMS Plus, Logamatic EMS, Junkers 2-wire, Heatronic 3 and Heatronic 4 bus variants.
  • Supports over 120 EMS compatible devices, covering thermostats, boilers, heat pumps, mixing units, solar modules, connect modules, ventilation units and switches.
  • Provides a multi-user, multi-language web interface for changing settings and monitoring incoming data, localised in 11 languages and able to rename any device or sensor.
  • Offers a console reachable over Serial/USB or Telnet for advanced operations and detailed monitoring.
  • Integrates natively with Home Assistant, Domoticz, openHAB and Modbus, with MQTT published as a project topic.
  • Includes a Scheduler that automates tasks and triggers events on data changes, plus a Notification service that alerts on important events.
  • Extends through custom EMS entities, user-built external modules, external temperature and analog sensors on GPIO pins, and simulation of remote thermostats.

Who uses it and how

  • Households already running Home Assistant, Domoticz or openHAB that want Bosch, Buderus, Nefit, Junkers, Worcester, Sieger, elm.leblanc or iVT heating equipment visible inside their existing dashboards.
  • Heat-pump and solar-module owners who want local monitoring and control rather than a vendor-supplied view.
  • Installers and tinkerers adding wired temperature and analog sensors to ESP32 GPIO pins so measurements outside the EMS bus sit alongside bus data.
  • Multi-person homes and non-English-speaking households, since the web interface is multi-user and localised in 11 languages.
  • Builders of custom logic, who use the Scheduler, the Notification service and custom EMS entities to react to changes in boiler or thermostat data, including simulating a remote thermostat.

Getting started

The README does not give an inline package name, Docker image or compose file; it directs readers to the Installation Guide at emsesp.org/Installing for the installation method. A live demo is available at demo.emsesp.org, where any username and password are accepted and static example data is shown.

How it compares

No list of paid products that this project replaces is provided in the facts, and no comparable self-hosted tools are named there either, so it stands alone in this registry. It is licensed LGPL-3.0 and distributed as source firmware rather than as a hosted service, with community support handled through a Discord server and the project documentation site.

When to use it — and when not to

A self-hoster must own the relevant EMS or Heatronic equipment, obtain an ESP32 board, and acquire or build the interface circuit for the bus; gateways other than BBQKees units may require contacting that manufacturer for support. Anyone without that hardware, or without the patience to read external installation documentation, should not pick it. The README excerpt itself is thin on operational detail, deferring installation to the documentation site and offering no inline package, image or command, so setup depends heavily on emsesp.org.

project readme (upstream, from github) — read inline

EMS-ESP

Website Contribute Guides Discord Changelog

version release-date license Quality Gate Status Codacy Badge downloads chat Ask DeepWiki

GitHub stars GitHub forks donate

EMS-ESP is an open-source firmware for the Espressif ESP32 microcontroller to communicate with EMS (Energy Management System) compatible equipment from manufacturers such as Bosch, Buderus, Nefit, Junkers, Worcester, Sieger, elm.leblanc and iVT.

It requires a small circuit to interface with the EMS bus which can be purchased from . These gateways are tested thoroughly and certified to work with EMS-ESP.

📦  Key Features

  • Compatible with EMS, EMS+, EMS2, EMS Plus, Logamatic EMS, Junkers 2-wire, Heatronic 3 and 4
  • Supporting over 120 different EMS compatible devices such as thermostats, boilers, heat pumps, mixing units, solar modules, connect modules, ventilation units, switches and more
  • Easy to add external Temperature and Analog sensors that are attached to GPIO pins on the ESP32 board
  • A multi-user, multi-language web interface to change settings and monitor incoming data
  • A simple to use console, accessible via Serial/USB or Telnet for advanced operations and detailed monitoring
  • Native integration with Home Assistant, Domoticz, openHAB and Modbus
  • Easy setup and install with automatic updates
  • Simulation of remote thermostats
  • Localized in 11 languages, and customizable to rename any device or sensor
  • Extendable by adding own custom EMS entities
  • Expandable via adding user-built external modules
  • A powerful Scheduler to automate tasks and trigger events based data changes
  • A Notification service to alert you of important events

🚀  Installing

Head over to the Installation Guide section of the documentation for instructions on how to install EMS-ESP.

📋  Documentation

Visit emsesp.org for more details on how to setup and configure EMS-ESP. You'll also find more a collection of example configuarations, Frequently Asked Questions and Troubleshooting tips.

💬  Getting Support

To chat with the community reach out on our Discord Server.

If you find an issue or have a request, see the Getting Support section of the documentation. Note if you are using a non-BBQKees EMS gateway, you may need to contact the manufacturer for support.

🎥  Live Demo

To see a live demo go to demo.emsesp.org. Pick a language and use any username and password to log in. Note whast you're seeing is static example data so not all features are operational.

💖  Contributors

EMS-ESP is a project originally created by proddy and maintained by the ems-esp community.

If you like EMS-ESP, please give it a ✨ on GitHub, or even better fork it and contribute. You can also offer a small donation. This is an open-source project maintained by volunteers, and your support is greatly appreciated.

📦  Building

See the Building the firmware guide in the documentation for instructions on how to build EMS-ESP from this source code.

📢  Libraries used

  • esp8266-react originally by @rjwats for the core framework that provides the Web UI, which has been heavily modified
  • uuid-* from @nomis. The console, syslog, telnet and logging are based off these awesome open source libraries
  • ArduinoJson for all the JSON processing
  • espMqttClient for the MQTT client
  • ESPAsyncWebServer and AsyncTCP for the Web server

📜  License

This program is licensed under GPL-3.0

Screenshots

Web Interface

Web Settings Web Status
Web Devices Web MQTT
Web Edit Web Log

Telnet Console

Console

Home Assistant

Home Assistant

Frequently asked questions

Is EMS-ESP32 free to use?

EMS-ESP32 is open source under the LGPL-3.0 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 EMS-ESP32 do?

ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps

What is EMS-ESP32 written in?

EMS-ESP32 is primarily written in C++. Its source is publicly available at https://github.com/emsesp/EMS-ESP32, and it has 1,053 GitHub stars.