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



EMS-ESP is an open-source firmware for the Espressif ESP8266 and ESP32 microcontroller that communicates with EMS (Energy Management System) based equipment from manufacturers like Bosch, Buderus, Nefit, Junkers, Worcester and Sieger.

This is the firmware for the ESP32. Compared to version 2 on the ESP8266, this version has

  • Ethernet Support
  • Pre-configured board layouts
  • Writing values directly from the Web UI
  • Mock API server for faster offline development
  • Expose to more commands, via MQTT
  • Improvements to Dallas sensors, Shower service

version release-date license Codacy Badge downloads Average time to resolve an issue Percentage of issues still open

If you like EMS-ESP, please give it a star, or fork it and contribute!

GitHub stars GitHub forks donate

Note, EMS-ESP requires a small hardware circuit that can convert the EMS bus data to be read by the microcontroller. These can be ordered at


  • Compatible with both ESP8266 and ESP32
  • A multi-user secure web interface to change settings and monitor the data
  • A console, accessible via Serial and Telnet for more monitoring
  • Native support for Home Assistant via MQTT Discovery
  • Can run standalone as an independent WiFi Access Point or join an existing WiFi network
  • Easy first-time configuration via a web Captive Portal
  • Support for more than 70 EMS devices (boilers, thermostats, solar modules, mixer modules, heat pumps, gateways)


Web Interface:

Telnet Console:

In Home Assistant:


Refer to the official documentation to how to install the firmware and configure it. The documentation is being constantly updated as new features and settings are added.

You can choose to use an pre-built firmware image or compile the code yourself:

Support Information

If you're looking for support on EMS-ESP there are some options available:


Support Community

  • Discord Server: For support, troubleshooting and general questions. You have better chances to get fast answers from members of the community
  • Search in Issues: You might find an answer to your question by searching current or closed issues

Developer's Community

  • Bug Report: For reporting Bugs
  • Feature Request: For requesting features/functions
  • Troubleshooting: As a last resort, you can open new Troubleshooting & Question issue on GitHub if the solution could not be found using the other channels. Just remember: the more info you provide the more chances you'll have to get an accurate answer


You can contribute to EMS-ESP by

  • providing Pull Requests (Features, Fixes, suggestions)
  • testing new released features and report issues on your EMS equipment
  • contributing to missing Documentation


A shout out to the people helping EMS-ESP get to where it is today...

  • @MichaelDvP for all his amazing contributions and patience. Specifically for the improved uart library, thermostat and mixer logic.
  • @BBQKees for his endless testing and building the awesome circuit boards
  • @rjwats for his esp8266-react framework that provides the new Web UI
  • @nomis for his core console, telnet and syslog core libraries
  • plus everyone else providing suggestions, PRs and the odd donation that keeps this project open source. Thanks!


This program is licensed under GPL-3.0

  • ems-esp is rebooting twice a day

    ems-esp is rebooting twice a day

    @proddy Hi Paul, I recognized that my ESP32 gateway is rebooting approx. after 11-12 hours. I can't see any reason why. Free memory is not the problem. Could it be that having http get requests per device every 15 sec per api is initiating the rebooting after a while?

    It's not a major issue for me. I just miss some data for approx 90 secs because of my 60 tx-delay on startup. Could I help to resolve this problem?

    opened by tp1de 103
  •  nervous modulation

    nervous modulation



    • BUDERUS Logamax plus GB192iT40
    • BOSCH RC310 thermostaat
    • BUDERUS Gateway Logamatic web KM100
    • BBQkees Gateway Premium II
    • ems-esp v2.1.1b7

    I noticed a very nervous behavior of the power consumption: With good modulation I would expect more cures like (1) and not sequences like (2) 2020-12-08_22-13-33

    or, some more recent graphs: 2020-12-09_17-04-38

    As you can see: (1) are the points where my automatic schedule of the thermostat starts, but no idea why (2) is such a strange behaviour.

    Has this something to do with the boiler, or is it a problem of communication between ems-esp and the ems-bus? Can someone share some experiences with this?

    kind regards, Bart Plessers

    opened by bartplessers 61
  • ESP32 uart handling

    ESP32 uart handling

    Question Do you have an implementation for ESP32 uart handling? Currently I am only interested in receiving. Unfortunately I have to ESP32 because it also servers other purposes.

    Additional context I have seen another question in Q&A (May 2019) where you stated that you aren't happy with your current ESP32 implementation - I hope now for some new status (especially if receiving only is relevant)...

    opened by ArwedL 61
  • Problem with system with more than 4 mixers.

    Problem with system with more than 4 mixers.

    Good afternoon.

    My heating system has the following equipment:

    1. 1 x Junkers CerapurMaxx ZBR 100-3
    2. 1 x Gateway MB LAN 2
    3. 1 x CW400 Thermostat
    4. 7 x MM100 Mixing modules

    I use 5 MM100 modules for heating, 1 MM100 module for hot water and 1 MM100 module for heating the pool. If I control the system via the Thermostat CW400, then everything works fine for me. Now I decided to connect the heating system to the Home Assistant via MQTT and I bought BBQKees Gateway E32. I can see all my equipment perfectly in the EMS-ESP web interface, but there is one problem. Mixer with 1-4 are shown as h1-h4, 5 becomes wwc1 Mixer, Mixer 6 becomes wwc2, but the mixer 7 (id8 for hot water) is wwc1!!! Thus in EMS-ESP got two mixer wwc1, MQTT and considers them as one and constantly reads the information for sensors from one to the other mixer!!! Is it possible to rename the mixer so that they are displayed correctly via MQTT? Is it possible, if there are more than 4 mixers in the system, then, for example, mixers 1-8 should be assigned the values h1-h8, and mixers 9 - wwc1, 10 - wwc2 (for CW800 users, for example)?

    opened by Shmul1 49
  • Adopt the OpenAPI 3.0 standard for the REST API

    Adopt the OpenAPI 3.0 standard for the REST API

    The current REST API is a bit sloppy and inconsistent. I'd like to use an industry standard for interfacing with EMS-ESP with these requirements in mind:

    • it's secure. Using Access Tokens for commands and eventually HTTPS with self-signed certificates
    • it's readable and easy to understand and adapt, with the specification publically available on Postman
    • Return responses make sense
    • it could possibly be used to replace MQTT when interfacing with home automation systems, like Home Assistant

    I picked OpenAPI, but also looked at RAML and JsonAPI.

    I'll be using the branch ft_https for implementation

    opened by proddy 49
  • Debugging missing data in ems-esp with help of km200 with use of API and Syslog

    Debugging missing data in ems-esp with help of km200 with use of API and Syslog

    Since I am using ems-esp and km200 in parallel, I ask myself what would be the most efficient / elegant way to debug missing fields in ems-esp while triggering changes on km200.

    My idea would be: Within a javascript code writing changes to km200 and analyzing the respective telegrams by "filtering the right ones" out of syslog.

    What do you think or what would be the easiest way to identify the right telegram types and content.

    opened by tp1de 46
  • How to add new values into code?

    How to add new values into code?

    I would like to add new values / entities into the code. From Discord I got from @MichaelDvP the following introduction:

    There is a guide "" how to make the PR, but for the code structure you have to read the code. It's mostly selfexplaining.

    Start with reading a simple device like switch.cpp to see the registertelegram() with it's callback process(telegramname). In the callback the value is read by has_update(..) and publishing the value is handled by the register _device_value().
    That's neary all to do.

    In thermostat for hc dependend telegrams you have to add a check in heatingcircuit(telegram).

    opened by tp1de 45
  • (ESP32) refactor device value rendering

    (ESP32) refactor device value rendering

    there's a lot of code duplication in the device libraries so I'm working through to clean up the code, moving functions back to the base class. One of the changes is in the way the device information is printed to the shell which is very similar to how we create the data to send to the web. I propose

    • have one method to form a structured json document with the key/value pairs
    • use this method for both web and console
    • remove the n= v= elements from the json object as this creates a lot of unnecessary memory. Just use a sequenced list of values as pairs, e.g. n1, v2, n2, v2....

    I've tested with Boiler with good results so far.

    opened by proddy 44
  • High RX Fail count and frequent restarts

    High RX Fail count and frequent restarts

    Bug description Unit is showing high RX Fail count and frequent restarts - raised at request of @proddy after discussion on Discord.

    Steps to reproduce Run the EMS-ESP32 and look at data in HA, telnet or web interface.

    Expected behavior Few RX Fails and stable operation.

    Screenshots image image image

    Device information

      |   -- | -- System |   version | "3.2.2b10" uptime | "000+04:51:32.053" uptime_sec | 17492 freemem | 129 Status |   bus | "connected" bus protocol | "HT3" telegrams received | 17581 read requests sent | 193 write requests sent | 0 incomplete telegrams | 3569 tx fails | 0 rx line quality | 80 tx line quality | 100 MQTT publishes | 22530 MQTT publish fails | 0 dallas sensors | 1 dallas reads | 3496 dallas fails | 1 Devices |   0 |   type | "Boiler" name | "Worcester Logamax Plus/GB192/Condens GC9000 (DeviceID:0x08 ProductID:208, Version:01.01)" handlers | "0x10 0x11 0xC2 0x14 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA" 1 |   type | "Thermostat" name | "RC300/RC310/Moduline 3000/1010H/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:33.03)" handlers | "0xA3 0x06 0xA2 0x12 0x2A5 0x2B9 0x2AF 0x29B 0x471 0x2A6 0x2BA 0x2B0 0x29C 0x472 0x2A7 0x2BB 0x2B1 0x29D 0x473 0x2A8 0x2BC 0x2B2 0x29E 0x474 0x2F5 0x31B 0x31D 0x31E 0x23A 0x267 0x240" 2 |   type | "Controller" name | "ErP (DeviceID:0x09, ProductID:209, Version:01.03)"

    Additional context Device is connected to boiler service jack. Not clear yet whether this is hardware or software problem (or both!!)

    help wanted 
    opened by glitter-ball 42
  • Improvements to the API

    Improvements to the API

    As reported from @tp1de

    While using rest api the return values from info command per device returns json on data fields with description and not with names of data fields. Is there any reason why not returning the field names? By the way when using the id return json is different and contains datafield names: eg mixer http://ems-esp/api?device=mixer&cmd=info vs http://ems-esp/api?device=mixer&id=2&cmd=info: {"(hc2) setpoint flow temperature":27,"(hc2) flow temperature in assigned hc (TC1)":29,"(hc2) pump status in assigned hc (PC1)":"on","(hc2) mixing valve actuator in assigned hc (VC1)":5} {"id":160,"flowsettemp":27,"flowtemphc":29,"pumpstatus":1,"valvestatus":5}

    Two things to do here:

    • fix the formatting if an id or hc is provided in the URL
    • decide whether to use verbose or short names
    opened by proddy 42
  • Junkers ISM 2 Module not recognized

    Junkers ISM 2 Module not recognized

    Is your feature request related to a problem? Please describe. EMS-ESP32 discoverd two unknow devices. One of them has to be the ISM 2 I use to control the components of my solar system together with the FW 200 controller.

    The ISM 2 module is connected as follows:

    R1 = solar circuit pump for 1st collector array (SP) R6 = valve return increase (DWU1) NTC1 = collector temperature sensor 1st field (T1) NTC2 = Bottom storage tank temperature sensor on the heating water side (solar storage tank T2) NTC3 = center heating water-side cylinder temperature sensor (solar cylinder T3) NTC6 = heating network return temperature sensor (T4)

    "Devices": [ { "type": "Boiler", "name": "Junkers GBx72/Trendline/Cerapur/Greenstar Si/27i (DeviceID:0x08 ProductID:123, Version:06.02)", "handlers": "0x10 0x11 0xC2 0x14 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA" }, { "type": "Thermostat", "name": "Junkers FW200 (DeviceID:0x10 ProductID:106, Version:12.14)", "handlers": "0xA3 0x06 0xA2 0x12 0x16F 0x170 0x171 0x172 0x165 0x166 0x167 0x168" }, { "type": "Mixer", "name": "Junkers IPM (DeviceID:0x20 ProductID:102, Version:20.08)", "handlers": "0x10C 0x11E" }, { "type": "Mixer", "name": "Junkers IPM (DeviceID:0x21 ProductID:102, Version:20.08)", "handlers": "0x10C 0x11E" }, { "type": "Controller", "name": "Controller (DeviceID:0x09, ProductID:152, Version:02.08)" }, { "type": "Unknown", "name": "Junkers unknown (DeviceID:0x30 ProductID:103, Version:23.04)" }, { "type": "Unknown", "name": "Junkers unknown (DeviceID:0x41 ProductID:100, Version:20.08)" } ] }

    opened by knopfsocke 41
  • The normalized unit of sensor.boiler_burner_starts (None) does not match the unit of already compiled statistics (times)

    The normalized unit of sensor.boiler_burner_starts (None) does not match the unit of already compiled statistics (times)

    Bug description

    Logger: homeassistant.components.sensor.recorder Source: components/sensor/ Integration: Sensor (documentation, issues) First occurred: 26 June 2022, 18:00:10 (1 occurrences) Last logged: 26 June 2022, 18:00:10

    The normalized unit of sensor.boiler_burner_starts (None) does not match the unit of already compiled statistics (times). Generation of long term statistics will be suppressed unless the unit changes back to times. Go to to fix this

    Steps to reproduce


    Expected behavior

    No log entry

    Screenshots N/A

    Device information Oddly, that URL gives me …

      "message": "unknown device"

    Additional context

    Upgraded from 3.3.1 to 3.4.1, I‘m on HA 2022.6

    help wanted 
    opened by swa72 1
  • Allow JSON for API - different formats for dashboard, MQTT and API

    Allow JSON for API - different formats for dashboard, MQTT and API

    The data content for holiday-modes and/or switch programs can be quite complex and can contain quite an number of datapoints and parameters. E.g. switch program for EMS+ (RC310) might contain up to 6 switch points per day - a maximum of 42 switch points per week. Each switch point is associated with a temp parameter (eco / comfort / temp).

    The RC310 has 2 switch programs for each hc and one for ww and one for circulation pump. For my quite standard heating system with 2 hc's and ww in total 6 switch programs with up to 42 switch points. A bit similar but less complex are the holiday modes hm1 to hm5.

    I believe it makes sense to add JSON for the API-interface to cover this complex data structures within one JSON-structure similar to the km200 web-API interface. In this case it does not make sense to include this into the dashboard and as far as I understood HA MQTT can't process this either.

    Let me recommend to differentiate between dashboard / HA-MQTT and API in this case. Either different data-content / data-structure or just API-content not shown in dashboard.

    opened by tp1de 5
  • hc1 summer mode shows always winter

    hc1 summer mode shows always winter

    In my case (Buderus WSW196iT) hc1 summer mode always shows winter, regardless of current hp working mode (now it's summer mode of course). Furthermore I noticed that hc1 set summer mode with options summer, auto, winter in v3.4.1 has been replaced by hc1 heatpump operating mode with options: off, auto, heating, cooling. Unfortunately my hp has no cooling functionality, so the previous was better (in my case). BTW, setting cooling switches mode to auto. If there is no way to detect if hp has cooling functionality or not, maybe you could simply enable both hc1 heatpump operating mode and hc1 set summer mode, so the user could disable irrelevant one by customization? What do you think?

    opened by pswid 19
  • No automatic MQTT reconnect after software restart in 3.4.2b2

    No automatic MQTT reconnect after software restart in 3.4.2b2

    After software restart doesn't start automatic mqtt connection - I must to go to mqtt settings tab, click save, than mqtt connects to my ha server. On previous versions - no problem - only in 3.4.2b2. No hardware changes beetween present and previous version. No errors in log.

    help wanted 
    opened by gaszu 4
  • Elektrisch Element toevoegen ?

    Elektrisch Element toevoegen ?

    I would like to monitor the electrical element can you add those sensors they could be seen at the Husdate box namely in 3 steps of 33/66 and 100 percent so you can see if the electric element is switched on during a defrost or legionella run BEST REGARDS

    Describe the solution you'd like elektrisch element in drie stappen zichtbaar met uw EMS-ESP32 kastje 33 66 100 procent vermogen

    picture Husdate box image

    opened by willemsenior 6
  • latest(Jun 30, 2022)

  • v3.4.1(May 29, 2022)

    [3.4.1] May 29 2022


    • Fix memory leak in api #524


    • Controller data in web-ui only for IVT #522
    • Rename hidden climate to a more explaining name #523
    • Minor changes to the Customizations web page #527


    • 472b97e: update to 3.4.1b0 (Proddy)
    • c32cdf5: React18 modifications (Proddy) #521
    • 77a8857: fix #522, device-flag for IVT controller (MichaelDvP) #525
    • d2609e4: fix #523, rename 'climate' to more explaning name (MichaelDvP) #525
    • 34cb3ad: fix #524, free memory of json response (MichaelDvP) #525
    • 89b0711: changelog (MichaelDvP) #525
    • 2d50f18: changelog from 3.4.0 (MichaelDvP) #525
    • c4cfabf: update test data for customizations (Proddy) #527
    • 31627bb: remove debug_flags (Proddy) #527
    • a9064ba: 3.4.1b1 (Proddy) #527
    • cba0813: rename generate_values_web_customization (Proddy) #527
    • af7cd7b: rename generate_values_web_customization (Proddy) #527
    • 2c468c7: formatting (Proddy) #527
    • 6ec67f7: rename ha_climate_config_creation (Proddy) #527
    • be844a5: if no fullname, use shortname in customizations json (Proddy) #527
    • f8bf6b5: fix isCmdOnly() function for commands like reset (Proddy) #527
    • 8824f4f: added formatName so hidden entities render nicely (Proddy) #527
    • 1e082f9: customizations, swap shortname and fullname, using id as unique shortname (Proddy) #527
    • 1fbd69b: fixes to customizations (Proddy) #527
    • 55133b0: typo (Proddy) #527
    • 356390c: fix standalone server for handling customizations (Proddy) #527
    • e4447ee: improved icon toggling (Proddy) #527
    • c693ef6: update packages (Proddy) #527
    • 3e7b743: updated changelog for 3.4.1 (Proddy) #527
    • 4352188: #513 (Proddy) #527
    • 18e9b99: Merge remote-tracking branch 'origin/dev' into main (Proddy)
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_4_1-ESP32.bin(1.73 MB)
  • v3.4.0(May 23, 2022)


    • WebUI optimizations, updated look&feel and better performance #124
    • Auto refresh of WebUI after successful firmware upload #178
    • New Customization Service in WebUI. First feature is the ability to enable/disabled Enitites (device values) from EMS devices #206
    • Option to disable Telnet Console #209
    • Added Hide SSID, Max Clients and Preferred Channel to Access Point
    • Merged in MichaelDvP's changes like Fahrenheit conversion, publish single (for IOBroker) and a few other critical optimizations
    • Enabled bi-directional read/write with Home Assistant, so values can be changed automatically from the UI without scripting #265
    • Added GC7000F Boiler #270
    • Revised LED flash sequence on boot up to show system health (1 flash=no ems, 2 flashes=no wifi) #224
    • Analog Sensor support #271
    • Solar cylinder priority #247
    • Read only mode in Settings, where EMS Tx/Write commands are blocked #286
    • Added 8700i Boiler device
    • Added Cascade CM10 Controller device
    • Add Olimex ESP32-POE-ISO to board profiles plus settings to customize Ethernet modules #301
    • Help text for string commands in WebUI #320
    • Germany translations (at compile time)
    • #entities added to system/info` endpoint #322
    • analog outputs digital/pwm/dac
    • remove MQTT retained configs if discovery is disabled
    • timeout 10 min for MQTT-QoS wait
    • Moduline 300 auto-temperatures T1-T4, RC300 romminfluencefactor
    • RC35 parameters #392, #398
    • sync time with thermostat #386, #408
    • set mode has immediate effect #395
    • min/max in web value setting
    • Extend customization to select if an entity is to be shown in the WebUI or forced as read-only #317
    • Added Moduline 400 installation parameters PR #449 by @kwertie01
    • Read time from IVT-controller #439
    • Hybrid Heatpump product-id 168 #459, thermostat settings
    • Junkers ISM2 and IPM in warm water mode #437
    • Added Shower Alert trigger time and cold shot time #436
    • Improved Table layout in Web UI (searching, filtering, sorting, exporting to CSV)
    • API fetch individual attributes from an entity #462
    • Option to disable mDNS
    • Option for rendering booleans on dashboard #456
    • Upload customization settings from a file #256


    • lastcode broke MQTT JSON structure #228
    • fixed issue with overlapping while reading sequence of EMS1.0 telegrams
    • fixed redundant telegram readings (because of offset overflow)
    • added missing RC30/Moduline 400 #243
    • Correct modes for RC25 #106
    • Clean up old HA config's in MQTT before publishing data. This will prevent HA giving the 'dict' warnings #229
    • RC25 temperature setting #272
    • Buderus RC25 - "hc1 mode type" incorrect value #273
    • Increased number of Mixers and Heating Circuits #294
    • Check receive status before removing a telegram fetch #268, #282
    • Fix uploading firmware on OSX #345
    • Non-nested MQTT would corrupt the json #354
    • Burner selected max power can have a value higher than 100% #314
    • some missing fahrenheit calculations
    • limited number of exclusions #339
    • MQTT sometimes would not reconnect after a WiFi outage


    • Use flash system to show system health (1 flash=no ems, 2 flashes=no wifi) #224
    • Renamed Dallas Sensor to Temperature Sensor in UI
    • Dallas Format removed. Use the name to give each sensor an alias
    • No longer MQTT subscribes to topic /thermostat_hc<n> as it supports a path similar to the API endpoint construct
    • Show Sensors quality in WebUI
    • Controller not shown in WebUI dashboard
    • renamed "Home Assistant Integration" to "MQTT Discovery" in MQTT Settings #290
    • Show ems tx reads and writes separately
    • Show ems device handlers separated for received, fetched and pending handlers.
    • Wired renamed to Ethernet
    • removed system/pin command, new commands in analogsensors
    • system/info device-info split to name/version/brand
    • exclude list uses short-names, possible flags for web/api/mqtt excludes, readonly and favorite (selection not yet implemented)
    • thermostat clock formate date-time: hh:mm
    • RC300 summermode as other thermostats winter/summer instead of off/on


    • Settings:
      • order of Boolean Format has changed in Application Settings - check your settings
      • Dallas Format setting removed. Now customize name of each Dallas sensor via the UI
    • MQTT/API
      • Boiler wwheat renamed to ww3wayon #211
      • Boiler ww tag renamed to dhw. Any custom Home Assistant lovelace dashboards will need updating.
      • Renamed description of wwtapactivated to "turn on/off DHW". Otherwise would have looked like "boiler_dhw_turn_on_off_dhw" in HA.
      • /api/system/info endpoint has updated keys. Now lowercase, no underscores and not capitalized. Replace "handlers" with "handlers received", "handlers fetched" and "handlers pending".


    • 786a94b: try to fix #408 and #412 (MichaelDvP) #424
    • 9775cc7: update packages (proddy) #425
    • 4bcbcf4: update test data (proddy) #425
    • 4118a57: enum for dv flags (proddy) #425
    • a5ba70a: some cosmetic changes (proddy) #425
    • d3002ce: show all mask icons (proddy) #425
    • 4f1b768: Merge branch 'emsesp:dev' into dev (Proddy) #425
    • 5096964: put total at start of description #418 (proddy) #426
    • 2bf7bf3: Merge branch 'dev' of into dev (proddy) #426
    • 07b438f: add NTP status to mqtt/ha (heartbeat) and log (MichaelDvP) #427
    • c41344e: Merge branch 'emsesp:dev' into dev (Proddy) #426
    • 9e5fdb7: use boolean rendering to fix Web errors with enums (proddy) #429
    • cb9ddb2: show commands differently (proddy) #429
    • 84e21ab: layout changes to help text (proddy) #429
    • 7c37c9a: recreate ha config on readonly changes (MichaelDvP) #430
    • 55d7ef1: boiler Errormessage 0xBF to trigger 0xC2 reading (MichaelDvP) #430
    • 744154c: make customization change test data (proddy) #431
    • 2ebb77f: don't prefix a count with more than 1 thermostats (proddy) #431
    • cf4fa9e: formatting icon table (proddy) #431
    • efd758d: seltemp command, check mode first for RC30_n and Junkers (MichaelDvP) #432
    • eeec714: fix mode preset after change for different thermostats (MichaelDvP) #432
    • ad27f76: update packages (Proddy) #434
    • b455827: Merge branch 'emsesp:dev' into dev (Proddy) #434
    • d427a4b: smaller icons (Proddy) #434
    • d747ba0: check readonly before set datetime to thermostat (MichaelDvP) #435
    • 4c2408d: add ISM2 and DHW module #437 (MichaelDvP) #445
    • 6069af3: ISM2 missing values, ISM2dhw in solar class (MichaelDvP) #445
    • ae16d01: add comment about has_cmd (Proddy) #442
    • 14593f6: reset some test data (Proddy) #442
    • 4f3dacf: make deviceentity.w mandatory (Proddy) #442
    • 4a56726: bump version (Proddy) #442
    • 77f583f: only add entities who's mask has changed to list (Proddy) #442
    • b2de5d4: small code changes (Proddy) #442
    • fce9a25: add const function (Proddy) #442
    • 1f8213e: changes for handling entities in customization (Proddy) #442
    • 38128f7: changes to mask_entity() (Proddy) #442
    • 9774661: send complete list of entites to server (Proddy) #442
    • d94eb26: solar mqtt (MichaelDvP) #445
    • 728ccae: dont set ivt clock automaically (MichaelDvP) #445
    • 7553684: customization advice with selected icons (MichaelDvP) #445
    • 45e0998: Merge branch 'dev' of into dev (MichaelDvP) #445
    • f02621d: formatting (MichaelDvP) #445
    • 917e4f5: check/format solar (MichaelDvP) #445
    • 26758b9: ivt clock check dst (MichaelDvP) #445
    • 462bf81: ntp status and time button (MichaelDvP) #445
    • 30d6fc0: customization buffer 4k, log(debug) buffer size (MichaelDvP) #445
    • 51af4b3: removed comments (Proddy) #447
    • d9716ce: added debug line for customization (Proddy) #447
    • 077c20f: minor formatting (Proddy) #447
    • 4fc5932: only send back changed entities, put in limit at 50 #444 (Proddy) #447
    • 2674b3a: added moduline 400 installation parameters (kwertie01) #449
    • 4a93adb: remove aliases (Proddy) #452
    • 503df08: fix saving customizatons #450 (Proddy) #452
    • 3d8396a: added moduline 400 additions (Proddy) #453
    • 56bb543: updated packages (Proddy) #453
    • d5245f7: added missing v3.3.1 to the changelog history (Proddy) #453
    • 4eddad2: mqtt clean session default off #441 (Proddy) #455
    • f9b2a71: tag to wwstarts2, thermostat clock format, formatting (MichaelDvP) #457
    • f771bb8: add clock to controller #439 (MichaelDvP) #457
    • d203092: Don't show banner while uploading (MichaelDvP) #457
    • 9c68142: mqtt HA uses only json, disable single (MichaelDvP) #458
    • 15a8d6d: add Hybrid Heatpump (MichaelDvP) #460
    • 6d6cb75: update hybrid heatpump #459 (MichaelDvP) #471
    • cf876ac: rename hybrid entities (MichaelDvP) #471
    • 75914da: thermostat switchpoints allow T1-T4 (MichaelDvP) #471
    • 0d79138: product-id 100 is mixer with max wwc10, add handlers_ignored (MichaelDvP) #471
    • eec4d78: move Hybrid settings to thermostat (MichaelDvP) #471
    • 4009a1a: b12, cleanup, formatting, small fixes (MichaelDvP) #471
    • 49eb049: Added Moduline 400 WW settings and clock program (kwertie01) #467
    • cffc269: fix wrong offset in set_party (kwertie01) #467
    • 5882218: fix sunday in dayofweek enum (kwertie01) #467
    • ec1b0b3: add IPM ww-parameters to mixer (MichaelDvP) #471
    • 8839909: Added Moduline 400 WW settings and clock program (kwertie01) #467
    • f23bf27: fix wrong offset in set_party (kwertie01) #467
    • 7bad5d1: fix sunday in dayofweek enum (kwertie01) #467
    • 9f86444: Merge branch 'feature/moduline400WWandTimer' of into feature/moduline400WWandTimer (Friso) #467
    • 9ed2a99: fix duplicate functions after rebase (Friso) #467
    • 94f5d4d: fix set_switchtime (MichaelDvP) #471
    • b59ef15: fixed set_switchtemp, process_RC20Timer (Friso) #467
    • 258db5c: disable usage of T0 for RC30 in set_switchtime (Friso) #467
    • 4cdeef2: fixed T1 to T4 for RC20 (Friso) #467
    • 47410ce: Merge branch 'dev' of into dev_ (MichaelDvP) #471
    • 2a4288e: initial commit with new table code (Proddy) #475
    • a9a11f4: add comment to boiler: hybrid heatpump (MichaelDvP) #471
    • cd5fef6: add export button (Proddy) #475
    • 9e29313: Merge branch 'dev' of into newtable (Proddy) #475
    • 4b3b952: changes to backend, some refactoring (Proddy) #475
    • 04a374c: more tables (Proddy) #475
    • 2f21c89: fix dallas sensor checking (Proddy) #475
    • 275044b: customizations table part 1 (Proddy) #475
    • 9d7820d: togglebutton (proddy) #475
    • 615e86d: update (Proddy) #475
    • 3acb9c4: formatting (proddy) #475
    • 3c9cad2: add set all enabled button (proddy) #475
    • 52847b0: text changes (proddy) #475
    • 9f6bbac: formatting (Proddy) #475
    • 22595b0: show resize column header bars, disable default sorting (Proddy) #475
    • d76a838: Increase range for the selected_room_temperature variable (bavo) #472
    • 15f5f55: Merge branch 'emsesp:dev' into dev (Proddy) #475
    • 09d25c0: add search (Proddy) #475
    • 929a976: Merge branch 'dev' of into dev (Proddy) #475
    • 56860da: remove TODO on sorting (proddy) #475
    • 726b4fc: more updates to tables (proddy) #475
    • 9ff4979: fix to arduino 3.5.0 (proddy) #475
    • c0c33d8: fix typo in sorting (proddy) #475
    • b2a885b: hide web also deselects favourite (proddy) #475
    • 271b36c: update packages (proddy) #475
    • c80d5c6: fix sort when click on icon and 3-way sort cycle (proddy) #475
    • b688f6f: b13 (Proddy)
    • 343d0a7: fix arduino core to 3.5.0 for ci jobs (Proddy)
    • eafec30: hp full names lower case (see #450) (MichaelDvP) #478
    • 00abae1: network security names fixed (MichaelDvP) #478
    • 4bba52a: native boolean values in commands, fix #476 (MichaelDvP) #478
    • a721826: fix Updating table component in the WebUI to support sorting & filtering #470 (Proddy) #481
    • 7130513: update packages (Proddy) #481
    • 0143e89: table formatting (Proddy) #481
    • 6b315d5: update axioserror (Proddy) #481
    • 6241999: more formatting (Proddy) #481
    • 2c490e4: possible fix for #476 (Proddy) #481
    • 7fe2b84: b14 (Proddy) #481
    • c1a71af: update ArduinoJson to 6.19.4 (Proddy) #481
    • da2c818: table formatting (Proddy) #481
    • 3ff75db: add more minor formatting (Proddy) #482
    • 2c54caf: Merge branch 'emsesp:dev' into dev (Proddy) #482
    • 08135ba: update dropzone (proddy) #483
    • a0759f6: Merge branch 'emsesp:dev' into dev (Proddy) #483
    • 191e47e: rename value to stop static code analysis complaining (Proddy) #484
    • 270b81f: static code analysis warning fixes (Proddy) #484
    • 5e9e995: added shower trigger and coldshot times - #436 (Proddy) #484
    • 473b870: Merge branch 'emsesp:dev' into dev (Proddy) #484
    • 5438d7b: API extract individual attributes - #462 (Proddy) #485
    • 75317d2: Merge branch 'emsesp:dev' into dev (Proddy) #485
    • 883c813: package updates (Proddy) #486
    • 7172ed3: make table headers consistent (Proddy) #486
    • 66b3572: Merge branch 'emsesp:dev' into dev (Proddy) #486
    • 8e65e31: table formatting (Proddy) #487
    • 931782d: Merge branch 'emsesp:dev' into dev (Proddy) #487
    • 501726c: remove comments, render nicer on mobiles (Proddy) #488
    • c2f3839: Merge branch 'dev' of into dev (Proddy) #488
    • 7f405e5: Merge branch 'emsesp:dev' into dev (Proddy) #488
    • e00da5a: add option to switch mDNS off/on (MichaelDvP) #489
    • 5d2f648: add option for rendering booleans on Dashboard #456 (MichaelDvP) #489
    • 39d9eec: mdns in lib_standanlone (MichaelDvP) #492
    • 90aa385: shower-times in system/settings (MichaelDvP) #492
    • b2429e3: charset for plain text output (MichaelDvP) #492
    • 1a5b012: csv utf-8 with semicolon and Intl.Number format (MichaelDvP) #492
    • 6277fbb: api entitiy attributes with hcs (MichaelDvP) #493
    • 4f399b5: package updates (Proddy) #494
    • b35ab94: upload script example (Proddy) #494
    • f243162: comments (Proddy) #494
    • upload customization settings from a file #256 #494 (Proddy)
    • 02fc579: remove id (Proddy) #494
    • c49928b: remove id in User (Proddy) #494
    • a383925: fix axios error reporting (Proddy) #494
    • 84a2a73: comments (Proddy) #494
    • cb16be6: remove id from User (Proddy) #494
    • 964e75e: minor change (Proddy) #494
    • ee04927: text change (Proddy) #494
    • ce60bd1: telnet and analog on by default (Proddy) #494
    • fd53999: Merge branch 'dev' of into dev (Proddy) #494
    • 87c9d4d: fix duplication (Proddy) #494
    • c0aa263: parse_command checks prefix-numbers and prefix id (MichaelDvP) #493
    • 0faa56f: Merge branch 'emsesp:dev' into dev (Proddy) #494
    • 1f933fb: updates for #256 (Proddy) #494
    • 8b521aa: fix standalone compiling (Proddy) #495
    • 8dab64b: Merge branch 'emsesp:dev' into dev (Proddy) #495
    • 0e9202a: change to saving customization file after upload (Proddy) #502
    • db8c30d: fix for customizations after upload new file (Proddy)
    • 0802113: Merge branch 'emsesp:dev' into dev (Proddy) #502
    • 226a557: prevent build failing (Proddy)
    • 7e26c06: Merge branch 'emsesp:dev' into dev (Proddy) #502
    • 1863e57: fix #496, RC30 design temp (MichaelDvP) #497
    • f3e99f9: Add HM200 hybrid manager as heatpump (MichaelDvP) #506
    • 1bdaaf0: Merge branch 'emsesp:dev' into dev (Proddy) #502
    • ae9af3b: update packages (Proddy) #502
    • fc29a3a: replace api/settings and customizatons with secure REST calls #501 (Proddy) #502
    • 3a04e89: Merge branch 'dev' of into dev (MichaelDvP) #506
    • 6072606: heatpump summer mode, fix #503 (MichaelDvP) #506
    • e175b5a: heatpump summermode -> heatpump operatingsmode (MichaelDvP) #506
    • 33e58ec: RC30 designtemp write, 2.fix #496 (MichaelDvP) #506
    • 9034c16: wwFlowTempOffset RC310 (tp1de) #510
    • c481e1f: wwcomfort1 for UBAParameterWWPlus (RC310) (tp1de) #510
    • e2de89c: Update locale_EN.h (Thomas) #510
    • 571f557: wwchargeoptimization UBAParameterWWPlus (tp1de) #510
    • 6fef399: locale_EN.h (tp1de) #510
    • 353853a: max must be a integer (changed 19.9 to 20) (Proddy) #511
    • 6545dbd: updated packages (Proddy) #511
    • f9d4690: updated URL for api/system/info (Proddy) #511
    • 8afb5b3: formatting (Proddy) #512
    • 5b4c5b0: increase # devices supported (Proddy) #512
    • 7ea6c54: updated screenshots (Proddy) #512
    • 9310f60: change tooltips #504 (Proddy) #512
    • c637dcb: wwmaxtemp for RC310 (tp1de) #514
    • 4263860: Merge branch 'dev' of into dev (tp1de) #514
    • 5ab22af: correct boilers.h (tp1de) #514
    • 2c0c5ba: emergencyops and emergencytemp for RC310 (tp1de) #515
    • 22668d7: upgrade to react18 (Proddy) #516
    • 86b79a2: package update (Proddy) #518
    • b9f63bc: autoformatting (Proddy) #518
    • f412ddc: Merge remote-tracking branch 'origin/dev' into main (Proddy)
    • a47e0e8: update for 3.4.0 (Proddy)
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_4_0-ESP32.bin(1.72 MB)
  • v3.3.1(Jan 20, 2022)


    • lastcode broke MQTT JSON structure #228
    • overlapping while reading sequence of EMS1.0 telegrams
    • redundant telegram readings (because of offset overflow)
    • added missing RC30/Moduline400 #243
    • check received status before toggling fetch on empty telegram [#268][#282]


    • b0a0974: 3.3.1b0 (proddy)
    • 3c6fd0c: Update boiler.cpp (pswid) #234
    • 69976c2: Update (pswid) #234
    • 92da613: Update boiler.cpp (pswid) #234
    • 1343bbf: fix overlapping 0xC2 and overflow of offset (pswid) #235
    • 9cd20cf: fix overlaping while reading sequence of EMS1.0 telegrams (pswid) #235
    • 7f30e8d: fix overlaping while reading sequence of EMS1.0 telegrams (pswid) #235
    • 312f969: add back RC30 - Setting mode on a RC30/Moduline400 via MQTT in HA doesn't work #243 (proddy) #245
    • e9588cc: check received status before toggling fetch on empty telegram (MichaelDvP) #307
    • 29110e9: Merge remote-tracking branch 'origin/dev' (proddy)
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_3_1-ESP32.bin(1.57 MB)
  • v3.3.0(Nov 28, 2021)


    • Add system commands for syslog level and watch #98
    • Added pool data to telegrams 0x494 & 0x495 #102
    • Add RC300 second summermode telegram #108
    • Add support for the RC25 thermostat #106
    • Add new command 'entities' for a device, e.g. http://ems-esp/api/boiler/entities to show the shortname, description and HA Entity name (if HA enabled) #116
    • Support for Junkers program and remote (fb10/fb110) temperature
    • Home Assistant state_class attribute for Wh, kWh, W and KW #129
    • Add current room influence for RC300 #136
    • Added Home Assistant device_class to sensor entities
    • Added another Buderus RC10 thermostat with Product ID 65 #160
    • Added support for mDNS #161
    • Added last system ESP32 reset code to log (and system info output)
    • Firmware Checker in WebUI #168
    • Added new MQTT setting for enabling 'response' topic
    • Support for non-standard Thermostats like Tado #174
    • Include MQTT connection status in 'api/system/info'
    • Include Network status in 'api/system/info' and also the MQTT topic info #202
    • Added Ethernet PHY module as an option in the Board Profile #210


    • MQTT reconnecting after WiFi reconnect #99
    • Manually Controlling Solar Circuit #107
    • Fix thermostat commands not defaulting to the master thermostat #110
    • Enlarge parse-buffer for long names like cylinderpumpmodulation
    • MQTT not subscribing to all device entities #166
    • Help fix issues with WebUI unable to fully load UI over Ethernet #177
    • Shower alert never reset after limit reached when enabled [(PR #185)]
    • Remove HA entity entries when a device value goes dormant #196
    • deciphering last error code dates on 0xC2 telegram #204


    • Syslog BOM only for utf-8 messages #91
    • Check for KM200 by device-id 0x48, remove tx-delay #90
    • rename fastheatupfactor to fastheatup and add percent #122
    • "unit" renamed to "uom" in API call to recall a Device Value
    • initial backend React changes to replace the class components (HOCs) with React Hooks
    • Use program-names instead of numbers
    • Boiler's maintenancemessage always published in MQTT (to prevent HA missing entity)
    • Unit of Measure 'times' added to MQTT Fails, Rx fails, Rx received, Tx fails, Tx reads & Tx writes
    • Improved API. Restful HTTP API works in the same way as MQTT calls
    • Removed settings for MQTT subscribe format #173
    • Improve Nefit Moduline 200 functionality #183
    • status in the MQTT heartbeat renamed to bus_status
    • Layout changes in the WebUI, showing stripped table rows in Dashboard
    • Alternative font for log window #219


    • API: "unit" renamed to "uom" in API call to recall a Device Value
    • HA: sensor.boiler_boiler_temperature renamed to sensor.actual_boiler_temperature
    • HA: binary_sensor.boiler_ww_disinfecting renamed to binary_sensor.boiler_ww_disinfection
    • HA: # removed from counts in MQTT Fails, Rx fails, Rx received, Tx fails, Tx reads & Tx writes
    • txread renamed to txreads and txwrite renamed to txwrites in MQTT heartbeat payload
    • 'dallas sensors' in api/system/info moved to the "System" section. Renamed "uptime (seconds)" and "reset reason"
    • status in the MQTT heartbeat renamed to bus_status


    • 3b2a89d: solar turnOnOffDiff allow setting decimals #107 (MichaelDvP)
    • d0346e4: remove PSTR() (proddy)
    • 538a9cf: mention RC25 support (proddy)
    • db34785: add missing offset to telgram::to_string() (MichaelDvP)
    • 1159006: fix wwcharge-command #112 (MichaelDvP)
    • 78b2efd: add rounding test (proddy)
    • 28bf7c3: formatting (proddy)
    • adebea1: add pseudo for snprintf_P (proddy)
    • 079a40c: update to 16.18.4 (proddy)
    • b214d7a: extended test for ha and entities command (proddy)
    • ee34dd7: rename snprintf_P to snprintf (proddy)
    • 401929d: round2 use float instead of double (6 point precision is enough) (proddy)
    • 418b1b3: bump (proddy)
    • e01bfe1: rename duplicate function publish_mqtt_ha_sensor (proddy)
    • 2adef52: add "entitied" as new command (proddy)
    • 500e089: for standalone ncrease mem due to compiler (proddy)
    • f8bee9b: formatting (proddy)
    • bea0b4b: add entities command, only show master thermostat if >1 thermostats (proddy)
    • 0ebd9e1: make sure all std::strings are consts (proddy)
    • 88a4275: rename snprintf_P, rename unit to uom (proddy)
    • 56f1c79: snprintf_P rename (proddy)
    • a9748f5: snprintf_P to snprintf() again (proddy)
    • 258bc2b: increase json before from 4KB to 16KB (EMSESP_JSON_SIZE_XXLARGE_DYN) (proddy)
    • 915749d: updated (proddy)
    • 5686094: factor for charge duration (MichaelDvP)
    • e92a3ad: add MM10 valvetime (MichaelDvP)
    • 2516d2d: add boiler disinfect command (MichaelDvP)
    • 6a828e9: Merge branch 'dev_' into dev (MichaelDvP)
    • 769301c: rename boiltemp to 'actual boiler temperature' (proddy)
    • 6d12fff: add API test (proddy)
    • 1a71921: remove debug (proddy)
    • d8add7e: rename DeviceValueType::TEXT to STRING and ignore UOM if its NONE (proddy)
    • b1f59d4: ignore UOM if its TEXT (proddy)
    • 09d8a63: only use UOM of NONE for hidden Device Values (proddy)
    • a31cf53: replace class components (HOCs) with React Hooks (proddy)
    • 16e390f: v3.3 (proddy)
    • fcc2c0b: fastheatup as percent-value, enlarge parse-buffer #122 (MichaelDvP)
    • 6ef8ff7: add check to prevent crash on null strings (proddy)
    • ba3d491: updated packages (proddy)
    • 252554e: added comment about nesting (proddy)
    • 8fab4e2: use float instead of double (proddy)
    • 30d1e7e: bump version (proddy)
    • 906813b: don't show handlers if there arn't any (proddy)
    • 4d88c6a: add comments about nesting (proddy)
    • 54199af: removed DeviceValueUOM::TEXT (proddy)
    • d4b06cf: formatting (proddy)
    • f836209: added output target when rendering json (proddy)
    • 3086342: fix bug in nested json and added output targets (proddy)
    • c3874d7: remove DeviceValueUOM::TEXT (proddy)
    • eba6324: more API tests (proddy)
    • 29f2335: remove DeviceValueUOM::TEXT (proddy)
    • 8523cdf: Merge branch 'ft_reacthooks' into dev (proddy)
    • 80fedf3: fix not showing dv is UOM is NONE (proddy)
    • 548b5ff: remove unused check (MichaelDvP)
    • 87774e7: fix some thermstat uoms (MichaelDvP)
    • b631030: add C2 error message, fix a uom (MichaelDvP)
    • 7942d52: npm audit fix (MichaelDvP)
    • 89a249e: add breaking changes (proddy)
    • b111869: remove invalid UOMs (MichaelDvP)
    • 4f927ee: remove unused type from form (MichaelDvP)
    • 6a134dd: Merge branch 'dev' of into dev (proddy)
    • 9378fdf: use TAG_DEVICE_DATA_WW (MichaelDvP) #130
    • 84cc964: 3.2.2b8 (proddy)
    • a6095fc: init poolShuntStatus__ as its not done in the constructor (proddy)
    • 33d7ba1: reduce variable scope (proddy)
    • ced4403: fix possible buffer overflow (proddy)
    • da5b4aa: add test for MQTT heatingactivated (proddy)
    • 9100587: use device names from flash (MichaelDvP)
    • fcc521d: enum thermostat programs, add junkers remote, program (MichaelDvP)
    • 2c337f1: fixed #129 (proddy) #134
    • 24fae0d: updated comment (proddy) #134
    • 49c7c7a: Added CONNECT device 0x236 "Wireless sensor base" (sunbuzz) #135
    • 9f49afa: read wwSelTemp/wwDisinfectionTemp from 0xEA, #96 (MichaelDvP)
    • 7b0f7cd: fix typo wW->ww (MichaelDvP)
    • 98828ed: another typo (MichaelDvP)
    • 0b0b1d9: rename internal names wW/warmwater to ww (MichaelDvP)
    • 4f24035: add id to solar ww-circuit (MichaelDvP)
    • eea32ad: add RC30 ww parameters, #117 (MichaelDvP)
    • 85f54dd: add current room influence #136 (MichaelDvP)
    • b1e1c44: add divider #136 (MichaelDvP)
    • 9d7c2de: rename HA icon mdi:flash-circle to mdi:lightning-bolt-circle (Proddy)
    • d6711ac: always show a maintenancemessage even if there isn't one, so its not missing in the MQTT boiler_data payload (Proddy)
    • f42c265: minor text changes (Proddy)
    • 6433d5f: formatting (Proddy)
    • 3113d39: minor text changes (Proddy)
    • cddadcf: changes to allow restart command from API to complete before rebooting (Proddy)
    • ded90dc: minor text changes (Proddy)
    • f2457a7: auto-formatting (Proddy)
    • 676268d: rename rxread/txread to rxreads/txreads (Proddy)
    • 50befd8: add HA device_class (Proddy)
    • 3ecf92f: add times as a new HA UOM - #156 (Proddy)
    • 2d1126b: updated comment (Proddy)
    • 0c50233: removed # (e.g in front of starts) (Proddy)
    • 372aee3: removed # in front of telegram count (Proddy)
    • 25616ae: added time to UOM and replaced seconds with second (pluralization handled in code) (Proddy)
    • 22a2b92: added number formatting and pluralization for uom times and seconds (Proddy)
    • 6a259f7: removed # from comments (Proddy)
    • d8191f7: removed # from comments (Proddy)
    • 0b796a8: use DeviceValueUOM::TIMES for all 'starts' which count numerically (Proddy)
    • c029cf7: use smaller json key names, increase buffer size. fixes #157 (Proddy)
    • 235f789: increase max dallas sensors from 10 to 20 - #157 (Proddy)
    • e4b7314: enlarge filesystem buffer (MichaelDvP)
    • b3453d9: no need to recompile C++ code if Web code doesn't change (Proddy)
    • 6582ba6: added another Buderus RC10 - #160 (Proddy)
    • 4d5f588: reset reason to system info (MichaelDvP)
    • b77a56a: timeout 60s for KM200 wait #160, reset-reason to log (MichaelDvP)
    • 2657b9d: do not fetch broadcasted telegrams 0x14/0x19 (#160) (MichaelDvP)
    • e17ce9c: Junkers modetype #163 (MichaelDvP)
    • 45fc6da: Add support for mDNS #161 (proddy)
    • 752530a: auto formatting (proddy)
    • 48cedbd: fix standalone building (proddy)
    • 8fed47f: fix case fall through for HA state_class (proddy)
    • f30d3cf: update test data for standalone (proddy)
    • d587f44: updated (proddy)
    • aad4b0a: change text about MQTT subscribe formats (proddy)
    • 7f3ff43: add test for Dan "ems-esp/boiler/wwcircpump with payload off" (proddy)
    • 547ccb9: Thermostat 0x65 to RC20_N, #160 (MichaelDvP)
    • 4f47712: minor formatting (proddy)
    • b3472c3: add test for 'send' command (proddy)
    • fb7bafd: fix display of mqtt subscriptions (proddy)
    • 50f6d0a: fixes #166 (proddy)
    • df13081: update URL (proddy)
    • c387f65: some minor refactor (proddy)
    • 337c07d: firmware version checker in Web - #168 (proddy)
    • 068bb5c: fix obsolete JS in padding & justification (proddy)
    • aaab9f4: text change (proddy)
    • becaff0: updated with #168 (proddy)
    • 3001a2d: fix #169, prod-id:111 settings use telegram 0x179 (MichaelDvP)
    • be27033: typo (MichaelDvP)
    • 47cb296: updates to #168 (proddy)
    • 40a7026: update example with ESP32 core debug levels (Proddy)
    • d5f8419: do not fetch CRF200 monitor #138 (MichaelDvP)
    • 01bace4: Refactor MQTT subscriptions #173 (proddy)
    • a79a67e: Merge branch 'dev' of into dev (proddy)
    • 7cba52d: bump to 3.3.0 (proddy)
    • e6a44c9: be able to set mqtt base (proddy)
    • 2c5c4d6: update test for different mqtt base paths (proddy)
    • 54889fe: fix issue where OK was not sent on successfull API call (proddy)
    • d78fb53: fix for mqtt base paths - Refactor MQTT subscriptions #173 (proddy)
    • b8f69ee: lint warning fix (proddy)
    • b76b6be: logic cleanup (proddy)
    • 5850a82: error handling improvements - Refactor MQTT subscriptions #173 (proddy)
    • 131b936: siwtch info with list - #176 (proddy)
    • e1419ed: more fixes - Refactor MQTT subscriptions #173 (proddy)
    • bf40222: validate devices to see if they are present - Refactor MQTT subscriptions #173 (proddy)
    • fb3de2e: add RC300 wwdisinfect #175 (MichaelDvP)
    • af27101: mqtt subscriptions include device #173 (MichaelDvP)
    • 7a079d8: put/# back - Refactor MQTT subscriptions and API calls #173 (proddy)
    • 0e480bb: add known devices without product-id or version-info #174 (MichaelDvP)
    • 3e0f6f5: bump to 3.3.0b1 (proddy)
    • 452921d: MQTT subscribe to devices - Refactor MQTT subscriptions and API calls #173 (proddy)
    • 8d9fd95: remove useless extra subscriptions #173 (MichaelDvP)
    • f1a859c: show devices with product-id zero, m200 wait improved (MichaelDvP)
    • 95e3a11: add missing RC25 parameters (MichaelDvP)
    • ae4a135: show rf sensor temperature (MichaelDvP)
    • 7bca3fb: rename "name" to "entity" for API key - Refactor MQTT subscriptions and API calls #173 (proddy)
    • 57f5381: add RC20_N write extmintemp, formatting (MichaelDvP)
    • 8284520: increase tcp event queue from 32 to 64 - fixes Launching the WebUI from crashes EMS-ESP on some environments #177 (proddy)
    • 23b6d81: 3.3.0b2 (proddy)
    • 316832f: Show mode (off / heat) in Home Assistant for Moduline 200 (Koen Schaper) #181
    • 95e81ad: auto-fetch 0x14 which is not broadcasted on all boilers - (proddy)
    • d20741c: add a little more buffer for concurrent web sockets (proddy)
    • ea550b1: read command checks device id - #184 (proddy)
    • 9406c76: fix shower timer; doing_cold_shot is never being reset + remove unnecessary conditions (Koen Schaper) #185
    • df7be9d: update to 3.3.0b3 (proddy)
    • 578ba38: add moduline200 values #183, RC35 holidays/vacations #182 (MichaelDvP)
    • 95f7583: fix wrong RC10 tag (MichaelDvP)
    • a3022f6: RC35 switchtime for prog 1 and prog 2 (MichaelDvP)
    • b1f72b0: fix crash on empty mqtt-payload (MichaelDvP)
    • 234533f: fix RC35 program no. #182 (MichaelDvP)
    • 88f78f6: fix authentication check for GET commands that need admin - Refactor MQTT subscriptions and API calls #173 (proddy)
    • 05f56be: bump version to 3.3.0b4 (proddy)
    • e821e8d: update (proddy)
    • 5f2a9b0: improve error handling, fix crash on empty /api URL (proddy)
    • e347ac5: formatting and text changes (proddy)
    • a8f1892: rename system/info text, added MQTT status (proddy)
    • d4eaede: text changes (proddy)
    • 3c13c14: fix wwc ids (MichaelDvP)
    • 4f2da03: add hc to console calls (MichaelDvP)
    • ffd61a9: removed unused pragma (MichaelDvP) #188
    • 6c20a5f: prevent double messages in weblog (MichaelDvP) #188
    • 27bfc14: set mode and heatingPID for RC10 #183 (MichaelDvP) #188
    • 09addcb: with the release of espressif32 3.4.0 we don't need the delay anymore for telnet (proddy)
    • 805cef6: fix handling on non json payloads - #173 (proddy) #189
    • c229371: fix typo (proddy) #189
    • 9c5c271: Allow mode "off" to be set from home assistant + remove non available "auto" mode from home assistant (Koen Schaper) #193
    • bf68a55: Update changelog (Koen Schaper) #193
    • f54ccd4: revert auto mode -> the mode is hardcoded for the thermostat_ha_cmd #183 (Koen Schaper) #194
    • a19f2f1: update test data (proddy) #195
    • 999a05f: bump to b6 (proddy) #195
    • fd810ff: add comments on format param (proddy) #195
    • d7576eb: fix bug showing UOM in Console (proddy) #195
    • 9d9ac4e: force temperatures in degrees to always show 1 decimal place (proddy) #195
    • 822f554: tidy up, mention HA enttity fix (proddy) #197
    • cde3b75: update test for 196 (proddy) #197
    • 898e2e5: bump b7 (proddy) #197
    • 7197df9: replace read_flash_string (proddy) #197
    • 72c032a: replace read_flash_string (proddy) #197
    • 27712ba: allow empty payloads, refactor to also delete a HA topic (proddy) #197
    • 5ed3cbe: add days (proddy) #197
    • e2dad61: publish HA config topic after device values (proddy) #197
    • 18f22d3: add state to dv, using DeviceValueState (proddy) #197
    • c0bf623: rename publish_ha* functions (proddy) #197
    • cb2c898: click row to edit (proddy) #197
    • 22c9e3e: tidy up generate_values_json_web (proddy) #197
    • 2458240: b7 (proddy) #197
    • 8b40c92: fixes #199 - change value formats degrees to strings (proddy) #201
    • bffad5e: allow thermostat hc3 on device_id 0x1A - #200 (proddy) #203
    • da20cf1: add Network to MQTT info topic and system/info command (proddy) #203
    • 51d487b: formatting (proddy) #208
    • a63f2e6: fixes #207 - allow both data and value as MQTT keys (proddy) #208
    • 50e54e6: fix removing old HA config topics (proddy) #215
    • 7e4494a: rename status to bus_status in MQTT heartbeat (proddy) #215
    • 4be6626: fixed edge case in shower logic when state didn't change (proddy) #215
    • dc84f91: debug comments (proddy) #215
    • 53de2ca: added ethernet phy type as an option in settings - #210 (proddy) #217
    • bb38458: stripped table rows (proddy) #217
    • 1c6a683: rename bus to bus_status in info command (proddy) #217
    • 07dabb4: fix name of status -> bus_status in heartbeat (proddy) #217
    • 9698035: fix boiler last error code timestamp (pswid) #218
    • 0847ccc: Revert "fix boiler last error code timestamp" (pswid) #218
    • 4fd1d8e: Boiler last error code change (pswid) #218
    • 3dec4bd: fix double click (proddy) #220
    • b2a0519: change font type and size (proddy) #220
    • 1b86314: formatting (proddy) #220
    • ce9b7d1: added test for lastcode (proddy) #220
    • a3391af: bump to b11 (proddy) #220
    • 61e2739: updated for b11 (proddy) #220
    • 611e3b1: Merge remote-tracking branch 'origin/dev' (proddy)
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_3_0-ESP32.bin(1.57 MB)
  • v3.2.1(Aug 8, 2021)


    • support for IPv6 (web/api/mqtt, not syslog yet) #83
    • System Log in Web UI will show current time if the NTP Service is enabled #82
    • Network settings for Tx-power, WiFi-bandwidth, WiFi-sleepmode #83
    • optional low CPU clockrate (160 MHz) #83
    • select format for enumerated values in web
    • settings for water hysteresis on/off
    • dallas sensor name editable. sensorname console-command, replace sensorid with a unique name #84
    • 'restart' system command. Can be invoked via API with authentication. #87
    • add Download button in Web UI for log
    • json body in API can now take device, name, cmd, hc and id
    • added example of how to use API directly to control values from Home Assistant
    • API calls are shown in debug log (For troubleshooting)


    • set mode allow numbers
    • Junkers thermostat shows mode as selected by set_mode
    • HA thermostat mode if bool-format: numbers is selected
    • Web UI System Log sometimes skipped a few log messages when watching real-time
    • fix wwactivated #89
    • don't show commands (like reset) as Device values in the Web or Console
    • fixed issue with Home Assistant entity naming where boiler's ww was duplicated in entity name
    • fixed issue where wwSetTemp was written too instead of wwSeltemp


    • removed Rx echo failures counting as incomplete telegrams. Bad telegrams show as Warning and not Errors. #80
    • add upload_sec to api/system/info and removed # from some names to keep consistent with MQTT heartbeat
    • added debug target to PlatformIO build to help hunt down system crashes
    • enumerated values always start at zero
    • maintenance settings for time/date as extra setting
    • move api/mqtt formats to settings, add enum format
    • UI improvements for editing Dallas Sensor details
    • RESTful GET commands can also require authentication (via bearer access token) for better security
    • Updated AsyncMqttClient to 0.9.0 and ArduinoJson to 6.18.3
    • Download buttons for settings and info under the Help tab
    • fixed case on mqtt names, like 'wwtankmiddletemp'
    • renamed Product ID to 'EMS Product ID' in Home Assistant
    • removed brackets around tags, e.g. (hc1) selected room temperature" is now just "hc1 selected room temperature"
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_2_1-ESP32.bin(1.54 MB)
  • v3.2.0(Aug 6, 2021)


    • support for IPv6 (web/api/mqtt, not syslog yet) #83
    • System Log in Web UI will show current time if the NTP Service is enabled #82
    • Network settings for Tx-power, WiFi-bandwidth, WiFi-sleepmode #83
    • optional low CPU clockrate (160 MHz) #83
    • select format for enumerated values in web
    • settings for water hysteresis on/off
    • dallas sensor name editable. sensorname console-command, replace sensorid with a unique name #84
    • 'restart' system command. Can be invoked via API with authentication. #87
    • add Download button in Web UI for log


    • set mode allow numbers
    • Junkers thermostat shows mode as selected by set_mode
    • HA thermostat mode if bool-format: numbers is selected
    • Web UI System Log sometimes skipped a few log messages when watching real-time
    • fix wwactivated #89
    • don't show commands (like reset) as Device values in the Web or Console


    • removed Rx echo failures counting as incomplete telegrams. Bad telegrams show as Warning and not Errors. #80
    • add upload_sec to api/system/info and removed # from some names to keep consistent with MQTT heartbeat
    • added debug target to PlatformIO build to help hunt down system crashes
    • enumerated values always start at zero
    • maintenance settings for time/date as extra setting
    • move api/mqtt formats to settings, add enum format
    • UI improvements for editing Dallas Sensor details
    • RESTful GET commands can also require authentication (via bearer access token) for better security
    • Updated AsyncMqttClient to 0.9.0 and ArduinoJson to 6.18.3
    • Download buttons for settings and info under the Help tab
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_2_0-ESP32.bin(1.54 MB)
  • v3.1.1(Jun 26, 2021)

    [3.1.1] June 26 2021


    • new command called commands which lists all available commands. ems-esp/api/{device}/commands
    • More Home Assistant icons to match the UOMs
    • new API. Using secure access tokens and OpenAPI 3.0 standard. See doc/EMS-ESP32 and #50
    • show log messages in Web UI #71


    • HA thermostat mode was not in sync with actual mode #66
    • Don't publish rssi if Wifi is disabled and ethernet is being used
    • Booleans are shown as true/false in API GETs


    • info command always shows full names in API. For short names query the device or name directly, e.g. http://ems-esp/api/boiler
    • free memory is shown in kilobytes
    • boiler's warm water entities have ww added to the Home Assistant entity name #67
    • improved layout and rendering of device values in the WebUI, also the edit value screen

    Bug Fixes

    • move showing version to settings. fixes JWT resetting after each version change (proddy)


    • 6c41c49: remove asyncjson.h (proddy)
    • 4a4e5f1: Merge branch 'dev' into ft_https (proddy)
    • c43fe4f: add doc on API spec (proddy)
    • 7d0ed22: auto formatting (proddy)
    • 23218bc: some minor formatting (proddy)
    • 101978f: include fullname in info command (proddy)
    • e113ebd: fetch command also per device type (proddy)
    • a595bde: Merge remote-tracking branch 'origin/dev' into ft_https (proddy)
    • f0e7ede: merge with latest dev (proddy)
    • e97f6c0: Merge remote-tracking branch 'origin/ft_https' into dev (proddy)
    • e9068e7: fix mixer HA-id nested (MichaelDvP)
    • 32f4777: allow not only commands in api (MichaelDvP)
    • 7f52ef8: info shows shortnames, only valid hcs (MichaelDvP)
    • 3c1b30a: auto formatting (proddy)
    • 9211d29: upgrade to 6.18 (proddy)
    • 461aa1f: updated text about bearer token (proddy)
    • 54c2a73: auto formatting (proddy)
    • c0d5bd1: add examples (proddy)
    • d15aa79: add prettier to tidy up typescript (proddy)
    • c6a40d2: auto formatting (proddy)
    • 039d60a: use new API path (proddy)
    • bb262ed: so 'serve' command works for local builds (proddy)
    • bcef360: hide ssid from system settings (proddy)
    • 4a269fd: added hidden commands, sort commands (proddy)
    • efac668: hidden command info_short (proddy)
    • c0cb121: API defauls to hidden command info_short (proddy)
    • ce2fa15: remove TODO (proddy)
    • 4dab735: moved to wiki doc (proddy)
    • 4a06d32: minor comment change (proddy)
    • 81f4724: added new command called commands (proddy)
    • 0e67e83: show commands has a verbose mode (proddy)
    • 370af11: include description in the command (proddy)
    • e19566e: comment change (proddy)
    • dbd3c04: remove comment (proddy)
    • e7dae28: bump version (proddy)
    • 0f78df5: fix formatting (proddy)
    • e0b1ff1: add hosted (proddy)
    • f8c7da6: remove ESP8266 AsyncTCP lib (proddy)
    • ed843ba: updated images (proddy)
    • 37bee39: remove (proddy)
    • 57a516a: updated README and images (proddy)
    • 312fd85: prevent multiple reading of long messages with no offset (MichaelDvP) #57
    • fd9ac28: do not publish empty messages, free mem (MichaelDvP) #57
    • bc69ca0: show freemem in KB, add more HA icons (proddy)
    • 28068bd: add SM10 solar values and commands (MichaelDvP) #57
    • 7425d0e: updated with latest changes (proddy)
    • 5cccfac: show mqtt-count and sensor-reads in info (MichaelDvP) #58
    • a9fca73: command default id=-1, command_check, add "warm water" to long names (MichaelDvP) #58
    • bc78dd3: Merge branch 'dev' of into dev_cmd (MichaelDvP) #58
    • 8641e9d: Merge branch 'dev' of into dev (MichaelDvP) #57
    • 2f0f45f: fix build error with debug_flag (MichaelDvP) #58
    • 70fd0ad: fix empty commands '/hcx' (MichaelDvP)
    • 4027003: add SM100 values and commands (MichaelDvP)
    • 6ff3d24: add missing names (MichaelDvP)
    • e7dbcca: bump version (proddy)
    • 47eaeba: remove ESP32 (proddy)
    • 7808959: added log.h (proddy)
    • 505e846: added (proddy)
    • e467e73: updated tabs and comma (proddy)
    • 75f3a6f: added eslint to prettier (proddy)
    • ab28013: removed EMSESP_PLATFORM (proddy)
    • 42a3621: updated doc (proddy)
    • 15df0c0: added lint & standalone as targets (proddy)
    • fec5ff3: eslint (proddy)
    • 4d69846: eslint (proddy)
    • 5e7bed1: fix #68, add hc as prefix to web cmd (MichaelDvP)
    • 01fd90f: added more HA icons (proddy)
    • 5b66528: rssi shows real rssi and wifistrength shows % in heartbeat (proddy)
    • 964db8e: more HA icons (proddy)
    • 6a73ee4: more HA icons (proddy)
    • c62183f: comment change (proddy)
    • de63d10: add default HA icon for each device (proddy)
    • 4bce819: fix Incorrect Thermostat mode mapping in Home Assistant (RC310) #66 (proddy)
    • 4a6ca63: add product id to HA, and top of entity list (proddy)
    • 8c48639: Merge branch 'dev' of into dev (proddy)
    • b077d86: fixes prefix ww to the HA entity names #67 (proddy)
    • 8530520: updated changelog (proddy)
    • 8dd1880: Update tagged_release.yml (Proddy)
    • 62b15a5: Update pre_release.yml (Proddy)
    • ddb3633: test build (proddy)
    • 8417c71: remove local make (proddy)
    • 9e432ef: remove code check (proddy)
    • 3bc280b: Delete check_code.yml (Proddy)
    • 70943f5: Update pre_release.yml (Proddy)
    • 66f14ff: fix prettier on win10 (proddy)
    • feed65b: don't create HA sensor for wifi rssi if only ethernet (proddy)
    • af41f35: change spelling (proddy)
    • cf416ee: fix spelling (proddy)
    • e9741ea: improve layout, booleans show as a menu (proddy)
    • db43f2d: remove debug log to console (proddy)
    • 8dd18aa: Render values in Web natively #70 (proddy)
    • 5c282b7: fix charging type (MichaelDvP)
    • 40206a2: fix '0 hours' display (MichaelDvP)
    • a84ae9e: fix console commands (proddy)
    • ee6a09c: do not default to info if no command specificied (proddy)
    • b3d6478: add ww to those ww values (proddy)
    • adf4584: remove TAG_DEVICE_DATA_WW (proddy)
    • 07a943e: rename warm water to ww (proddy)
    • cc30e09: TAG_DEVICE_DATA_WW is only for BOILER (proddy)
    • a191240: Merge branch 'dev' of into dev (proddy)
    • fad1b09: bump to 3.1.1b6 (proddy)
    • 50540f1: add API to test suite (proddy)
    • 3143ed1: fix comment (proddy)
    • 17a28d2: remove old code (proddy)
    • fc11db0: make 'call system' commands work again (proddy)
    • 9738c08: update package (proddy)
    • fffed3b: comment (proddy)
    • 37da9d3: fix #73 RC300 summersetmode (MichaelDvP)
    • fc2bcd5: log to webui - initial version (proddy)
    • 19b37d9: Show realtime debug log in WebUI #71 (proddy)
    • 7e7bd29: show # messages, use msgpack to compress json (proddy)
    • 270298e: text changes (proddy)
    • 2056d3f: UI updates #71 (proddy)
    • c234503: Merge remote-tracking branch 'origin/ft_webui_log' into dev (proddy)
    • 9ef2e62: update for 3.1.1b7 (proddy)
    • e79d460: replace TRACE with ALL (proddy)
    • fdbbfe8: Update pre_release.yml (Proddy)
    • 1e4eb52: auto formatting (proddy)
    • 469f78a: update node to v16 (proddy)
    • 967eee6: Merge branch 'dev' of into dev (proddy)
    • 85161ec: node to v16 (proddy)
    • 2d96aa1: Update pre_release.yml (Proddy)
    • 050c759: fixes #76 (proddy)
    • 65dae7a: Merge branch 'dev' of into dev (proddy)
    • e99c920: Update pre_release.yml (Proddy)
    • 82a4f14: added more screenshots (proddy)
    • b5921d1: show TRACE messages correctly (proddy)
    • 4b7aa95: Merge remote-tracking branch 'origin/dev' (proddy)
    • 5bf53c3: 3.1.1 (proddy)
    • 50459a2: force v16 of nodejs (proddy)
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_1_1-ESP32.bin(1.50 MB)
  • v3.1.0(May 4, 2021)


    • add remaining mock calls #41 (Proddy)
    • Call commands from the Web UI #18 (Proddy)
    • add generate token endpoint and ui for generating tokens for users (proddy)
    • Mock API to simulate an ESP, for testing web
    • Able to write values from the Web UI
    • check values with "cmd":<valuename> and data empty or ?
    • set hc for values and commands by id or prefix hc<x>+separator, separator can be any char

    Bug Fixes

    • offline standalone compiling (proddy)
    • rx sent -> rx recieved (proddy)
    • Don't create Home Assistant MQTT discovery entries for device values that don't exists (#756 on EMS-ESP repo)
    • Update shower MQTT when a shower start is detected
    • S32 board profile


    • Icon for Network
    • MQTT Formatting payload (nested vs single) is a pull-down option
    • moved mqtt-topics and texts to local_EN, all topics lower case
    • Re-enabled Shower Alert (still experimental)
    • lowercased Flow temp in commands
    • system console commands to main


    • [81e2c31]: use native esp32 64bit timer for uptime (MichaelDvP) #40
    • [f28fafe]: check all commands lower case (MichaelDvP) #40
    • [5cf41bd]: number format for enum-bool (MichaelDvP) #40
    • [9771ea8]: allow read commands with length (MichaelDvP) #40
    • [d891c7a]: publish command to trigger device-publishes (MichaelDvP) #40
    • [9983269]: allow info command from mqtt, publish in topic:response (MichaelDvP) #40
    • [5c605e1]: move topics/texts to local_EN, some thermostat commands read values (MichaelDvP) #40
    • [6fb8a4b]: changelog, missing macro (MichaelDvP) #40
    • [1b73006]: 3.0.2b0 prep (proddy)
    • [5d21ba2]: Merge branch 'dev' into dev (Proddy) #40
    • [3bacfc3]: value2enum texts from local_EN (MichaelDvP)
    • [d553542]: quick proxy test (proddy)
    • [601f91e]: remove (proddy)
    • [f6fefc9]: update npm (proddy)
    • [74179ab]: add mocks for get and posts (Proddy)
    • [6e3b496]: update packages (proddy)
    • [8c52145]: make all default settings configurable at build (proddy)
    • [3ace3e2]: remove EMSESP_TEST (proddy)
    • [166f8f6]: update packages and readme (proddy)
    • [e1f777e]: updates (proddy)
    • [2021a2e]: fix nodemon for realtime changing of mock values (proddy)
    • [84e76e2]: adjusted network icons (proddy)
    • [7fa93a8]: MQTT Formatting payload (nested vs single) is a pull-down option (proddy)
    • [4f239d0]: re-enable shower alert (proddy)
    • [8c1a138]: update (proddy)
    • [33c3ef6]: bump version to 3.0.2b1 (proddy)
    • [9dbc6d4]: device values table reformatting (proddy)
    • [060802c]: added thermostat temp (proddy)
    • [11bdff9]: show device name in debug (proddy)
    • [5ef1c7e]: more error controls (proddy)
    • [7e19678]: only write access in API is enabled (proddy)
    • [365e2fd]: added temp and seltemp (same) (proddy)
    • [8318981]: formatting (proddy)
    • [314fff5]: formatting (proddy)
    • [5fe5750]: rename register_mqtt_cmd to register_cmd and rename some device names (Proddy)
    • [ed7b2ef]: update with list of enhancements (proddy)
    • [ac26d58]: allow web commands only for admin (MichaelDvP)
    • [b77d9d4]: combine commands and values, some extra commands (MichaelDvP)
    • [4cac160]: mqtt-HA-config dynamically (MichaelDvP) #44
    • [015ab64]: fix publish_ha_config, and add clear (MichaelDvP) #44
    • [9aea9aa]: bump version (Proddy)
    • [dabb48f]: send mqtt when shower starts (Proddy)
    • [4bcc236]: lowercase flowtemp commands (Proddy)
    • [784ba7f]: lowercase flowtemp commands (Proddy)
    • [ddd2684]: tooltip color, edit icon color, text changes (Proddy)
    • [47a401b]: update npm & typescript (Proddy)
    • [8071fe0]: create-react-app uses webpack 4 so compression-webpack-plugin needs to be locked to version 6.1.1. (Proddy)
    • [9f089ba]: back to v5 of compression-webpack-plugin (Proddy)
    • [a9ec926]: update lockfile ver (proddy)
    • [14199ee]: Fix syslog level (MichaelDvP)
    • [73e478c]: Fix syslog level (MichaelDvP)
    • [031f1ab]: right align device/brand (proddy)
    • [e59f349]: increase mqtt payload max size - (proddy)
    • [67a8b4e]: Merge remote-tracking branch 'origin/ft_webcallcmd' into dev (proddy)
    • [462a91b]: 3.0.3b2 with mockapi & webcommands (proddy)
    • [cf64147]: More linebuffers to shell (MichaelDvP)
    • timestamp to local, add appname (MichaelDvP)
    • [6b327e3]: move system commands to main (MichaelDvP)
    • [a633225]: Fix #47 Gateway S32 board profile (MichaelDvP)
    • [8ea48f7]: don't publish dallas if there are none (proddy)
    • [48c3aa7]: auto formatting (proddy)
    • [3678050]: larger dialog boxes (proddy)
    • [7baf5c1]: Add value_info (MichaelDvP)
    • [7cabae7]: add thermostat remotetemp (MichaelDvP)
    • [2345575]: value-info enum as text with list (MichaelDvP)
    • [7faa0d6]: Typo (MichaelDvP)
    • [3797342]: Fix codecheck complain (MichaelDvP)
    • [28fde37]: shell reset lineold if edited (MichaelDvP)
    • [c9a30a2]: API output utf-8 (MichaelDvP)
    • [661b879]: fix errormessage for shell-commands (MichaelDvP)
    • [c4e7747]: check devicename lowercase (MichaelDvP)
    • [70d8b68]: id to value_info, alternative prefix to command/value (MichaelDvP)
    • [0a82c28]: add min/max to values, boiler flags, ww-prefix, ha-prefix to mqtt (MichaelDvP) #49
    • [9036967]: do not show hatemp, etc. (MichaelDvP) #49
    • [018b4af]: value_info bool format (MichaelDvP) #49
    • [1bd8349]: auto formatting (proddy)
    • [bf892aa]: bump version (proddy)
    • [2b60eaf]: add heatpump values #45, circuit "ww" to info (MichaelDvP)
    • [e6e507a]: system_info_id=0 for heartbeat output to API (MichaelDvP)
    • [b01264f]: terminal linebuffers on edit (MichaelDvP)
    • [6f435cb]: MC110Status to HT3 boilers (MichaelDvP)
    • [fcc4831]: bool value info, dont show command only in mqtt/telnet (MichaelDvP)
    • [de9ff6a]: fix heatpump value position (MichaelDvP)
    • [44d0b52]: show sent telegram on tx-error (MichaelDvP)
    • [87b2a05]: add CRF200 thermostat flag and no_write (MichaelDvP)
    • [2b95a0d]: add boiler command selburnpow, update packages (MichaelDvP)
    • [4f98b4b]: fix remote thermostat roomtemp (MichaelDvP)
    • [ee5b1b8]: add dallassensors to api-info (MichaelDvP)
    • [1ae7380]: prep for 3.1.0 (proddy)
    • [a57fdaa]: Merge remote-tracking branch 'origin/dev' into main (proddy)
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_1_0-ESP32.bin(1.46 MB)
  • v3.0.1(Mar 30, 2021)


    • expose cmd's via MQTT directly #31 (proddy)
    • board profiles (#11) (proddy)
    • board profiles (#11) (proddy)

    Bug Fixes

    • rendering of floats (proddy)
    • only create mqtt subs for Boiler (expose individual commands via MQTT topics #31) (proddy)
    • show all devices, except system (#31) (proddy)


    • [fd11a09]: fix negative rounding (MichaelDvP)
    • [25b1957]: minor cleanup (proddy)
    • [8ec0731]: update upload scripts (proddy)
    • [7003301]: fix #33, Junkers mode names sorted (MichaelDvP)
    • [355b71c]: minor tidyups (proddy)
    • [71dfc0e]: fix uart out of bounds warning (MichaelDvP)
    • [03e43ba]: add mqtt subscribe settings, thermostat switchtime, boiler heatingsources (MichaelDvP)
    • [83f46ff]: add back reset command (MichaelDvP)
    • [7d177ca]: fix compile error standalone? (MichaelDvP)
    • [273efbc]: update changelog (MichaelDvP)
    • [fecfe9d]: added text for board profiles (proddy)
    • [c01c098]: added more board profiles for ethernet (proddy)
    • [e25d6e4]: quit if no valid board profile (proddy)
    • [1dae9f8]: fix LED when connection made (proddy)
    • [a83d3a1]: individual subscriptions: resubscribe, show, some system commands (MichaelDvP)
    • [720a82b]: thermostat datetime command only for supported models (MichaelDvP)
    • [9089e5d]: mixer IPM add header temperature for unmixed circuits (MichaelDvP)
    • [c341148]: minor cleanup (proddy)
    • [cc0f4c4]: formatting (proddy)
    • [56a3dfd]: on ESP32 no need to use flash strings for MQTT names (proddy)
    • [def585f]: bump to b3 (proddy)
    • [118cbd9]: improve value detection (proddy)
    • [966f82e]: gpio checker (proddy)
    • [66df803]: use gpio checker. wrong values will cause crash (proddy)
    • [b931e28]: added extra gpio pins to avoid (proddy)
    • [8f12438]: more tests (proddy)
    • [c75a1c9]: added toUpper (proddy)
    • [49d7197]: remove comment (proddy)
    • [c8b6d1e]: rename WiFi to Network (proddy)
    • [d0fc09f]: snack popups from 5 to 3 seconds (proddy)
    • [0c89d90]: dallas pin fix for mt-et & nodemcu (proddy)
    • [c8d8b50]: MQTT base from std::string to String (proddy)
    • [6d3feaf]: MQTT base from std::string to String (proddy)
    • [cafc610]: board profiles: pre-configured pin layouts #11 (proddy)
    • [0c8dd1d]: added generic LAN8720 (proddy)
    • [7fe4b99]: fix bug when CUSTOM is chosen as board profile (proddy)
    • [e21ad6a]: re-enable ethernet detection code (proddy)
    • [96b83e3]: fix ems line quality calculation (proddy)
    • [56b597d]: update to new version (proddy)
    • [8bac9f6]: hide led is default off/false (proddy)
    • [0c76ed2]: custom board profile is allowed (proddy)
    • [94d7047]: rename network scan to wifi scan (proddy)
    • [b8dca3d]: mention that blank SSID = disabling wifi (proddy)
    • [ebb71c7]: fix GH URL (proddy)
    • [bcdb49f]: show "quality" next to the line quality % (proddy)
    • [e34620e]: local ip mods (proddy)
    • [fca4586]: fix flashing led on ethernet connection (proddy)
    • [6d42066]: formatting (proddy)
    • [07c7ef2]: remove wemos mini d1 (proddy)
    • [bcd79bc]: formatting (proddy)
    • [bf90056]: syslog also works when Ethernet connected (proddy)
    • [7c3b895]: added info messages for NTP (proddy)
    • [942d062]: formatting, remove wemos from board profile, fix olimex (proddy)
    • [22b4b66]: added logger so external functions can use (proddy)
    • [0c17e8d]: don't process dallas if gpio is 0 (proddy)
    • [2a070ef]: fallback to AP when Ethernet is dropped (proddy)
    • [1938c93]: rename subscribes to subscribe_format (proddy)
    • [4208c35]: fix lint errors in formatting (proddy)
    • [ac70031]: fix ld issue (proddy)
    • [621c73a]: move around build defines (proddy)
    • [6a4b7a1]: if on ethernet, show it's IP and not WiFi (proddy)
    • [a920e89]: uppercase esp32 (proddy)
    • [4948272]: fix MQTT when only on Ethernet (proddy)
    • [2b6a986]: text changes (proddy)
    • [3b4bfaa]: remove ESP8266 references (proddy)
    • [fbef1ca]: remove comment (proddy)
    • [0237cc1]: add comment (proddy)
    • [4b6c676]: text changes (proddy)
    • [8e59460]: start sys;log after network to prevent crash on Ethernet (proddy)
    • [4d00324]: start syslog when network connected (proddy)
    • [391feca]: formatting (proddy)
    • [324a6da]: add ubadevices, which is 1st telegram sent (proddy)
    • [d9b577d]: fix syslog reboots without eth (MichaelDvP)
    • [6dd9018]: remove redundant code (proddy)
    • [ed17739]: cleaned up pio scripts (proddy)
    • [ca08316]: show board profile on boot (proddy)
    • [89f1fc8]: remove redundant code (proddy)
    • [15c4a3e]: don't disable bluetooth or adc for now (proddy)
    • [06008fc]: Merge branch 'dev' of into dev (proddy)
    • [df1c227]: fix heartbeat on Ethernet (proddy)
    • [4841e42]: Merge remote-tracking branch 'origin/dev' into main (proddy)
    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_0_1-ESP32.bin(1.45 MB)
  • v3.0.0(Mar 18, 2021)


    [3.0.0] March 18 2021

    ESP32 version based off ESP-ESP v2.1


    • Power settings, disabling BLE and turning off Wifi sleep
    • Rx and Tx counts to Heartbeat MQTT payload
    • Ethernet support
    • id to info command to show only a heatingcircuit
    • add sending devices that are not listed to 0x07
    • extra MQTT boolean option for "ON" and "OFF"
    • Support for chunked MQTT payloads to allow large data sets > 2kb
    • External Button support (#708) for resetting to factory defaults and other actions
    • new console set command in system, set ethernet <profile> for quickly enabling cabled ethernet connections without using the captive wifi portal
    • Added in MQTT nested mode, for thermostat and mixer, like we had back in v2
    • Cascade MC400 (product-id 210) (3.0.0b6)
    • values for wwMaxPower, wwFlowtempOffset
    • RC300 thermostat temp -1 to clear temporary setpoint in auto mode
    • Syslog port selectable (#744)


    • telegrams matched to masterthermostat 0x18
    • multiple roomcontrollers
    • readback after write with delay (give ems-devices time to set the value)
    • Thermostat ES72/RC20 device 66 to command-set RC20_2
    • MQTT payloads not adding to queue when MQTT is re-connecting (fixes #369)
    • fix for HA topics with invalid command formats (#728)
    • wrong position of values #723, #732
    • OTA Upload via Web on OSX


    • changed how telegram parameters are rendered for mqtt, console and web (#632)
    • split show values in smaller packages (edited)
    • extended length of IP/hostname from 32 to 48 chars (#676)
    • check flowsensor for tap_water_active
    • mqtt prefixed with Base
    • count Dallas sensor fails
    • switch from SPIFFS to LITTLEFS
    • Added ID to MQTT payloads which is the Device's product ID and used in HA to identify a unique HA device
    • Increased MQTT buffer and reduced wait time between publishes
    • Updated to the latest ArduinoJson library
    • some names of mqtt-tags like in v2.2.1
    • new ESP32 partition side to allow for smoother OTA and fallback
    • Network Gateway IP is optional (#682)emsesp/EMS-ESP
    • moved to a new GitHub repo

    Firmware Installation

    Follow the instructions in the documentation on how to install the firmware binaries in the Assets below.

    Source code(tar.gz)
    Source code(zip) KB)
    EMS-ESP-3_0_0-ESP32.bin(1.61 MB)
Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

null 1.3k Jun 23, 2022
a pc heat verifier using arduino uno and oled screen(ssd1306)

pc-heat-check a pc heat verifier using arduino uno and oled screen(ssd1306) to this application works needs this other application running: https://gi

Helder Lourenço de Abreu Marques 1 Oct 30, 2021
A basic system that waters a plant according to the heat index of the environment.

Basic-Plant-Watering-System ?? This is a basic plant watering system created on Arduino Uno using DHT11 Temperature and Humidity sensor. DHT Sensor Li

Aydanur Akça 5 Apr 11, 2021
ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

esp32-internet-ota ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

Husarnet 28 Apr 30, 2022
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.

analogWrite() ESP32 Installation Instructions This library was tested using using the ESP32 Arduino IDE Boards Manager installation method. Stable rel

null 22 Jun 18, 2022
Arduino Interface for cheap 2.4ghz RF enabled Solar Micro Inverters

NETSGPClient Arduino Interface for cheap 2.4ghz RF enabled Solar Micro Inverters using the so-called NETSGP protocol for communication. Here is a YouT

null 28 Jun 25, 2022
Grafana/Prometheus exporter for EPEVER/EPSOLAR Tracer solar charge controllers

epever_exporter epever_exporter is a standalone program written in C that can query Epever/Epsolar Tracer solar charge controllers and output metrics

Cédric Félizard 1 Nov 23, 2021
CC1312R1 Sub-G Solar power asset tracker

Sub-G Solar Power Asset Tracker TOP BOTTOM Sub-G Solar Power Asset Tracker 은 AxDen 의 Aggregator Platform 를 이용하여 온도, 가속도, GPS 위치와 같은 Asset tracking 에 필

AXDEN 3 Feb 22, 2022
ESP32-Skid-Steer - Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on the model.

ESP32-Skid-Steer Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on

null 5 Feb 4, 2022
Arduino firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

lucidgloves-firmware This repo contains the arduino firmware as well as the STL files for Prototype 3 of the LucidVR glove prototype. This is a finger

null 1.3k Jul 1, 2022
Flashrom/serprog compatible firmware for the Raspberry Pi Pico

pico-serprog This is a very basic flashrom/serprog compatible SPI flash reader/writer for the Raspberry Pi Pico. It does not require a custom version

stacksmashing 23 May 24, 2022
Firmware for ExpressLRS compatible backpacks

What is a "TX Backpack"? Some of the ExpressLRS TX modules include an additional ESP8285 chip, which lets us communicate wirelessly with other ESP8285

ExpressLRS 38 Jun 21, 2022
A free and open-source cross-platform application to control your Philips hue compatible lights💡

?? OpenHue ?? A cross platform application to control your Philips hue compatible lights. licensed under the gpl 3.0 license. Currently in super early

BOB450 3 Dec 19, 2021
This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32

ESP32 nRF52 SWD flasher This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32 using t

null 117 Jun 22, 2022
FluidNC - The next generation of motion control firmware

FluidNC (CNC Controller) For ESP32 Introduction FluidNC is the next generation of Grbl_ESP32. It has a lot of improvements over Grbl_ESP32 as listed b

null 441 Jul 1, 2022
Harsh Badwaik 1 Dec 19, 2021
Control Heidelberg Wallbox Energy Control over WiFi using ESP8266 and configure your own local load management

< scroll down for English version and additional information > wbec WLAN-Anbindung der Heidelberg WallBox Energy Control über ESP8266 Die Heidelberg W

null 69 Jun 21, 2022
ESP32 S2 C++ host library compatible with arduino, esp-idf.

Info I would like to announce USB host library for esp32 S2 compatible with arduino, esp-idf and PIO (when pio will be updated to most recent esp-idf)

null 15 Jun 2, 2022
Adafruit GFX compatible arduino library for using cat thermal printers with the ESP32

CatGFX This library offers a Adafruit GFX "driver" for ESP32 and the cheap cat (or rabbit?) BLE thermal printers like this one: For usage information

Claus Näveke 2 May 19, 2022