Skip to content

Releases: emsesp/EMS-ESP32

Development Build v3.9.0-dev.15

Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Sep 08:05
960a7a5

Development build of EMS-ESP v3.9.0-dev.15.

Changes since 3.9.0-dev.12

Added

  • Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format
  • heatpump pool: poolon (switch, 0x48A), hppoolon (pool heating active, 0x488), MP100 poolshuntset (0x5C4) and poolrequest (0x5BA), shorter pool names

Changed

  • optimized the LED library to support WS2812B V5 and the newer V6 RGB LEDs
Full v3.9.0 changelog so far

[3.9.0]

This release is based on the latest Espressif/Arduino core version 3. It brings in many memory and performance optimizations.

Added

  • user-requested LED blink #3063
  • Commands Service that can be called via MQTT or API or used in the Scheduler Service
  • option to disable factory reset #3150
  • TLS support with 4MB boards without PSRAM
  • added eth_10mbit to Network Settings, which forces 10BASE-T half-duplex & autonegotiation off, halving the PHY’s power draw. It’s off by default as it will cause issues on managed switches with a port forced to 100Mb #3213
  • cleaner MD5 and firmware uploading in WebUI #3222
  • pc0Flow in l/min #3224
  • remove HA config for excluded entities #3229
  • show system reports the Ethernet status on boards with a PHY, so a failed initialisation or a link that never came up is visible instead of Ethernet being omitted completely. Also shows the loop task's lowest free stack, to help diagnose reboots
  • new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org
  • Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format
  • heatpump pool: poolon (switch, 0x48A), hppoolon (pool heating active, 0x488), MP100 poolshuntset (0x5C4) and poolrequest (0x5BA), shorter pool names

Fixed

  • shunting yard show json
  • system/sendmail called from a Command or the Scheduler computed its value twice, which stripped the quotes from literal text and then failed on characters like !. Also shunting yard treated a ? inside a quoted string as a ternary, so text like "too hot?" returned nothing
  • memory leak when using different timezones for ems-esp and thermostat#3184
  • LED stayed off on a healthy system when "Disable LED" was unchecked
  • Ethernet MAC address changed with the new SDK, breaking DHCP reservations (currently disabled)
  • "IPv4 nameserver" showed an IPv6 address when IPv6 was in use
  • the Network status page showed at most one IPv6 address and could hide the IPv4 DNS server entirely. It only read the link-local address, so a dual-stack host's ULA and global addresses were never reported, and it only read two of the three DNS slots, which are shared between IPv4 and IPv6. It now lists every address the interface holds, each labelled with its IPv6 scope, and every configured DNS server #3246
  • the Gateway was only ever reported for IPv4, so on a dual-stack network the IPv6 default router was missing from the Network status page, show system and the MQTT info topic. Routers are learnt from router advertisements rather than configured, so all of them are now listed #3246
  • show system had the same gaps, reporting a link-local IPv6 address only and a single IPv4 DNS server. The WiFi and Ethernet sections now list every IPv6 address with its scope, and every DNS server labelled with its own family #3246
  • the Access Point status page reported whichever interface happened to be active, so with the AP down it showed the station's IP and MAC address under an "Inactive" heading. It now always reports the soft-AP's own details, and shows none when the AP isn't running
  • the MQTT info topic published no addresses at all when connected over Ethernet, and over WiFi only an IPv4 address plus a link-local IPv6 one. Both interfaces now report their MAC, IPv4 address and gateway, every IPv6 address and every DNS server. Note that IPv6 address is now an array, and IPv4 DNS Server is replaced by a DNS Server array that covers both families #3246
  • HA Discovery warning on Uptime after EMS-ESP boot due to NTP not ready
  • hc/control setting for UI800 thermostats #3181
  • solar module switches #3223
  • possible crash when the WebUI asked for version information while the versions.json refresh was rewriting the cache from the main loop task
  • HTTP client could write past a fixed 64 byte buffer when a URL had a hostname of 64 characters or more, could busy-spin for the whole read budget if the socket reported bytes it wouldn't return, and buffered responses without any size limit
  • the "Ethernet clock mode (GPIO16/17) conflicts with PSRAM" error was never logged because Ethernet had already been skipped by the time the check ran
  • heat limit entities (maxheatcomp, maxheatheat, dhw.maxheat) read as unknown on heat pumps with an auxiliary heater larger than 9 kW - enum_maxHeat was missing the 12 kW and 15 kW steps

Changed

  • various memory optimizations #3083
  • Scheduler name is now mandatory
  • network fallback to AP only after start #3090
  • replaced Web async-validator with custom validator and toast with native snackbar to reduce bundle size
  • Gateway and Connect devices are shown in the Devices page, but disabled 3126
  • show control setting only for master thermostats (0x10) #3173
  • remove devices without entities not listed in 0x07 telegram
  • changes to the Dialogs in Dashboard page, removed the run icon in the Commands page. Renamed Execute to Run.
  • set None for undefined values in HA val_tpl
  • changes in WebUI - remove multiple calls systemInfo endpoint, Vewrsion pages checks for internet connection #3195
  • multiple optimization in network, power down WiFi when Ethernet and WiFi nosleep is instant when selected #3213
  • TLS buffers (~17KB per HTTPS request) are taken from PSRAM on boards that have it, instead of fragmenting the internal heap
  • failed versions.json fetches back off from 5 up to 160 minutes instead of retrying every 5 minutes, as each attempt blocks the main loop for as long as the DNS, connect and read timeouts allow
  • optimized the LED library to support WS2812B V5 and the newer V6 RGB LEDs
Commits (2)
  • 74ff39b22 chore: update generated files for v3.9.0-dev.15 (proddy)
  • 960a7a554 Merge pull request #3254 from proddy/dev (Proddy)

Compare all changes

v3.8.6

Choose a tag to compare

@github-actions github-actions released this 24 Sep 18:51
  • support newer rgb WS2812B V6 LEDs

v3.8.5

Choose a tag to compare

@github-actions github-actions released this 22 Sep 20:45
  • change message when upgrading to major release

v3.8.4

Choose a tag to compare

@github-actions github-actions released this 04 Aug 06:26

Commits

v3.8.3

Choose a tag to compare

@github-actions github-actions released this 02 Aug 08:16

[3.8.3] 1 August 2026

Added

  • KM300 at address 0x4A #3084

Fixed

  • signed value for solarInfuence #3077
  • set bin file upload limit to 1M again #3086
  • check arithmetric operations on strings #3127
  • prevent system crash during WiFi network discovery on ESP32-S3 hardware #3128
  • fix setting date/time on Junkers thermostats
  • offset of hpminflowtemp #3144
  • water circulation command #3149
  • start scheduler after customEntities, delay scheduler loop after startup, handling of system/restart command #3146
  • possible memory leaks fixed.
  • repeated startup schedules compute value
  • call system/message called from scheduler processes compute twice
  • water module SM100/200 as dhw1/dhw2 #3164

Changed

  • call compute value direct, enlarge TCP stack #3127
  • Dewtemperature for Easycontrol calculated by ems-esp #3135
  • add option for sync thermostat to ntp, allow different time zones #3148, defaults to sync.
  • block too many GET requests mentioned in #3104
  • set 10 sec timeout for http requests #3104
  • language code "cs" #3161

v3.8.2

Choose a tag to compare

@github-actions github-actions released this 12 May 18:29

[3.8.2] 12 May 2026

Added

  • comfortpoint for BC400 #2935
  • customize device brand #2784
  • set model for ems-esp devices temperature, analog, etc. #2958
  • prometheus metrics for temperature/analog/scheduler/custom #2962
  • boiler pumpkick #2965
  • heatpump reset #2933
  • 2.nd freshwater module (dhw4, dhw5) #2991
  • full system backup and restore
  • auto-logic to set ht3/ems+ tx-mode
  • polariity for digital_in sensors #3070

Fixed

  • SRC climate creation #2936 and #2960
  • missing translations #3015
  • custom entities check fetch length
  • modbus initialization #3064

Changed

  • weblogbuffer up to 1000 messages with PSRAM, mentioned in #2933
  • validate custom entity writes, #2931
  • remove wrong burnMinPower #2918
  • store scheduler active state to nvs #2946
  • translated modes heat and eco for HA-climate mode-str-tpl
  • support minflowtemp and baseflowtemp #2969
  • update version if it is 00.00 in first read #2981
  • device class for % values #2980
  • fetch telegrams: set length to fetch #3017
  • move http client from stack to heap
  • heap optimizations #3021
  • check and read 0x470 as summer2_typeids[0] only if received #2686, #3055
  • default bus-id: gateway1(0x49), tx-mode: auto

Commits

Read more

v3.8.1

Choose a tag to compare

@github-actions github-actions released this 11 Jan 18:41

[3.8.1] 11 January 2026

Added

  • update time saved in nvs
  • heatpump entities #2883
  • HA input number format (mode) selectable box/slider (slider for max range 100) #2900

Fixed

  • fix EMS bus disconnected errors on some systems #2881
  • selflowtemp fix #2876
  • updated valid GPIOs for ESP32S2, ESP32S3 and ESP32 that caused custom systems to block gpios #2887
  • Junkers wwcharge offset #2860
  • fixed minflowtemp #2890
  • don't add HA uom/classes for bool values #2885
  • fixed missing progress bar on web firmware uploads

Changed

  • snapshot gpios stored in temporary ram
  • GPIOs stored along with the name and reported in log if conflicting
  • free GPIOs depend on board profile #2901
  • prefer PSram for mqtt queue #2889
  • day schedule defult to all days, no day selected is not allowed
  • board profile CUSTOM can only be selected in developer mode
  • mqtt sends round values without decimals (28 instead of 28.0)

v3.8.0

Choose a tag to compare

@github-actions github-actions released this 31 Dec 20:37

Added

  • analogsensor types: NTC and RGB-Led
  • Flag for HMC310 #2465
  • boiler auxheatersource #2489
  • thermostat last error for RC100/300 #2501
  • boiler 0xC6 telegram #1963
  • CS6800i changes #2448, #2449
  • charging pump #2544
  • hybrid CSH5800iG #2569
  • added EMS Device details to Home Assistant MQTT Discovery
  • disinfection command #2601
  • added new board profile for upcoming BBQKees E32V2.2
  • set differential pressure entity in Mixer device
  • set set climate action cooling/heating in HA #2583
  • Internal sensors of E32V2_2
  • FW200 display options #2610
  • CR11 mode settings OFF/MANUAL depends on selTemp #2437
  • implemented eFuse settings for BBQKees boards to store model type and ESP chipset
  • Analogsensors for pulse output #2624
  • Analogsensors frequency input #2631
  • SRC plus thermostats #2636
  • Greenstar 2000 #2645
  • RC3xx dhw modetype #2659
  • new boiler entities VR0,VR1, compressor speed #2669
  • solar temperature TS16 #2690
  • pumpmode enum for HT3 boilers, add commands for manual defrost, chimneysweeper #2727
  • pid settings #2735
  • refresh MQTT button added to MQTT Settings page
  • heating assistance, rounding custum settings #2763
  • added counter 0..2 for short pulses, high frequency #2758
  • added LWT (Last Will and Testament) to MQTT entities in Home Assistant
  • added api/metrics endpoint for prometheus integration by @gr3enk #2774
  • added RTL8201 to eth phy list #2800
  • added partitions to Web UI Version page, so previous firmware versions can be installed #2837
  • button pressures show LED. On a long press (10 seconds) the LED flashes for 5 seconds to indicate a factory reset is about to happen. #2848
  • added txpause command to pause the TX, by setting Txmode to 0 (disabled) #2850

Fixed

  • dhw/switchtime #2490
  • switch to secure mqtt #2492
  • update link buttons #2497
  • refresh scheduler states #2502
  • also rebuild HA config on mqtt connect for scheduler, custom and shower
  • FB100 controls the hc, not the master #2510
  • IPM DHW module, #2524
  • charge optimization #2543
  • shower active state retained, shows correctly in HA
  • MQTT Command Topic with slashes #2571
  • Add pulsed water meter input to V1.3 gateway with Lilygo S3 #2550
  • fix missing long 10-second press of Button to perform a factory reset
  • fix wwMaxPower on Junkers ZBS14 #2609
  • ventilation bypass state from telegram 0x55C #1197
  • set selflowtemp for ems+ boilers #2641
  • syslog timestamp #2704
  • fixed FS format command #2720
  • dhw priority setting to boiler and mixer, telegrams 0x2CC, 0x2CD, etc.
  • check for valid GPIOs when board profile is changed #2841

Changed

  • show console log with ISO date/time #2533
  • removed ESP32 CPU temperature
  • updated core libraries like AsyncTCP, AsyncWebServer and Modbus
  • remove command scan deep
  • ignore repeated forceheatingoff commands #2641
  • optimized web for better performance by adding lazy loading and caching
  • internal system analog sensors (core_voltage, supply_voltage and gateway_temperature) cannot be accidentally removed
  • double click button reconnects EMS-ESP to AP
  • place system message command in side scheduler loop to reduce stack memory usage by 2KB
  • syslog mark interval set to 1 hour
  • handle process_telegram in oneloop
  • improved GPIO validation for Analog Sensors and System GPIOs
  • entities with no values are greyed out in the Web UI in the Customization page
  • added System Status to Web Status page
  • show number on entities and supported languages in log on boot
  • on tx read fail delay the 3rd. retry 2 sec
  • move vectors and lists to PSRAM
  • removed unused last topic/payload echo-check
  • added Home Assistant device details to MQTT Discovery for all devices
  • device_class and state_class changes for HA MQTT Discovery #2825

v3.7.2

Choose a tag to compare

@github-actions github-actions released this 22 Mar 09:41

[3.7.2] 22 March 2025

Added

  • change enum_heatingtype for remote control #2268
  • system service commands #2182
  • read 0x02A5 for thermostat CT200 #2277
  • add "duplicate" option to Custom Entities #2266
  • mask bits for bool custom entities
  • thermostat reduce threshold #2288
  • thermostat absent #1957
  • CR11 thermostat #2295
  • Show ESP32's CPU temp in Hardware Status
  • vacation mode for the CR50 #2403
  • new Console command "set admin password" to set WebUI admin password
  • support nested conditions in scheduler #2451
  • allow mixed case in scheduler expressions #2457
  • Suprapur-o #2470

Fixed

  • long numbers of custom entities #2267
  • modbus command path to api/ #2276
  • info command for devices without entity-commands #2274
  • CW100 settings telegram 0x241 #2290
  • modbus signed 8bit values #2294
  • thermostat date #2313
  • Updated unknown compressor stati "enum_hpactivity" #2311
  • Underline Tab headers in WebUI
  • console unit tests fixed due to changed shell output
  • tx-queue overflow in some heatpump systems #2455

Changed

  • show operation in pretty telegram between src and dst #2263
  • update eModbus to 1.7.2 #2254
  • modbus timeout default to 300 sec, change setting from ms to sec #2254
  • update AsyncTCP and ESPAsyncWebServer to latest versions
  • update Arduino pio platform to 3.10.0 and optimized flash using build flags
  • Version checker in WebUI improved
  • rename remoteseltemp to cooltemp #2456

v3.7.1

Choose a tag to compare

@github-actions github-actions released this 30 Nov 20:51

[3.7.1] 29 November 2024

Added

  • include HA "unit_of_meas", "stat_cla" and "dev_cla" attributes for Number sensors #2149
  • Bosch CS6800i AW - Silent Mode + Electrical Power Reduction (HP) #2147
  • /api/system/showeralert and /api/system/showertimer #2182
  • MX400 #2198
  • SM200 values #2212

Fixed

  • Modbus integration in 3.7.0 missing offset #2148
  • fix changing TZ in NTPsettings without clearing enable+server, added DST support #2142
  • Support MQTT Discovery (AD) with Domoticz #2177
  • wwExtra (dhw extra) changed from temperature reading to number
  • auxheaterstatus #2192
  • lastCode character check #2189
  • reading too many telegram parts
  • heatpump cost UOMs #2188
  • analog dac output and inputs on dac pins #2201
  • api memory leak #2216
  • modbus multiple mixers #2229
  • Last Will (LWT) not set on MQTT Connect #2247

Changed

  • name of wwstarts2 #2217

Commits

Read more