Emthera Nederlands

Manual · for version 1.4.6 · View on GitHub

This manual comes from the public repository of the Home Assistant integration. It still uses the old name OpenThermostat, and calls the box the E32: the BBQKees Gateway E32 V2 that Emthera runs on today.

Install OpenThermostat #

The firmware and the project's main repository are not public at the moment. What these guides say about downloading the firmware or a release ZIP from GitHub, updating the E32's firmware from Home Assistant or with Check for updates, and the tester program's GitHub form does not work for now. The Home Assistant integration is installed and updated through the Marketplace as described. A few references to pages that are not public have no link here. Questions or problems: open an issue.

This guide takes you from a new BBQKees E32 V2 gateway to a working OpenThermostat with Home Assistant: firmware installed, connected to your network and boiler, linked to Home Assistant, and your rooms set up with a week program. You do not need to be a developer. You do need to be comfortable adding a custom integration to Home Assistant (with the Marketplace, or by copying files) and, once, connecting the E32 to your boiler.

It matches the E32 firmware of the release you download and the Home Assistant integration that the same release notes pair with it. Always install the firmware and the integration versions that the release notes pair together: a firmware and an integration from different releases may not understand each other.

The E32 sends nothing to the boiler until you confirm the takeover. The default path is: connect the E32, run the boiler test, take over. When the E32 hears that your old thermostat still asks the boiler for heat, it first runs a trial run (shadow mode) beside it: it measures your rooms, follows your week programs and calculates what it would ask of the boiler, and your thermostat keeps controlling the boiler. The trial run is optional: you can always go straight to the boiler test. The one thing that acts on your home before the takeover is an optional setting device (a valve or thermostat that Home Assistant sets to your week program); see The route to the takeover.

Want someone to check the guide as they go? Give them the installation checklist: each step, its expected result and where to look.

Installing as a field tester? Start with the field tester pack: what to prepare, the install order, how to hand back to your thermostat, and what to report.

Time needed: about one hour for the E32, plus about half an hour for Home Assistant.

Contents #

  1. What you need
  2. Install the firmware on the E32 (first time, over USB)
  3. First start: connect the E32 to your Wi-Fi
  4. Sign in and change the admin password
  5. Basic settings: time zone and boiler reception
  6. Connect the E32 to the boiler
  7. Pair Bluetooth thermometers (optional)
  8. MQTT: let the E32 talk to Home Assistant
  9. Install the Home Assistant integration
  10. Add the integration and connect the E32
  11. Add your rooms
  12. The route to the takeover: boiler test, or a trial run first
  13. Updates
  14. Backup and restore
  15. Secure your setup
  16. Forgotten password and Wi-Fi recovery over USB
  17. Troubleshooting

1. What you need #

Hardware

Network

Home Assistant

Optional

Not needed: a cloud account or the ESPHome integration. Without Home Assistant, sections 8 to 11 do not apply: you then set up the rooms on the E32 itself (see the user guide).

2. Install the firmware on the E32 (first time, over USB) #

You do this only once. Later updates go over your network and keep your settings (see Updates).

This erases the E32. A BBQKees gateway usually comes with EMS-ESP installed. Installing OpenThermostat replaces it and deletes its settings. If you might want to go back, first export your EMS-ESP settings and make a full backup as described in USB backup and recovery.

2.1 Download the release #

  1. Open the releases page and choose the newest E32 V2 release. Its tag starts with v and contains e32v2, for example v1.4.6-e32v2.

  2. Under Assets, download open-thermostat-e32v2-<version>.zip. Do not use the "Source code" downloads that GitHub adds automatically.

  3. Extract the ZIP into a new folder. You need two files from it:

    • e32v2-factory.bin: the complete installation image, written at address 0x0;
    • FACTORY-CHECK.txt: the image length and the checksum (MD5) you use to check that the image was written correctly.

    The firmware.bin in the same release is for updates only. The factory image is only for a first installation or a clean reinstall.

2.2 Connect the E32 to your computer #

  1. Disconnect the E32 from the boiler (the EMS cable) and from any other power supply.
  2. Connect the E32's USB-C port to your computer. USB powers the E32 while you install.
  3. If your computer shows no new serial port (a COM port on Windows), install the USB driver that BBQKees recommends; see the BBQKees firmware update guide.

Then choose one of the two routes below. Route A needs no installation on your computer.

2.3 Route A: in the browser with ESPConnect #

ESPConnect is a free, open-source flashing tool that runs in Chrome or Edge (not Safari or Firefox). It is made by an independent developer, not by this project.

  1. Open ESPConnect, choose 115200 baud if it asks, click Connect and pick the E32's serial port.
  2. Check Device Info: it must show an ESP32 (not ESP32-S3) with 16 MB flash. If it does not, stop: this is not an E32 V2.
  3. Go to Flash Tools → Flash Firmware and select e32v2-factory.bin.
  4. Set the flash offset to exactly 0x0 and tick Erase entire flash before writing.
  5. Click Flash Firmware, check the file name and 0x0 in the confirmation, and wait until it reports success. Keep the cable connected.
  6. Before the first restart, check the result under Flash Tools → Flash Integrity: start offset 0x0, length = the Length from FACTORY-CHECK.txt (a number of bytes). Click Compute MD5. The result must equal the "MD5 before first boot" in FACTORY-CHECK.txt. If it differs, flash again. Why now: at its first start the E32 writes its own settings, after which the checksum no longer matches.
  7. Click Disconnect, unplug the USB cable and plug it in again. The E32 starts OpenThermostat.

2.4 Route B: on the command line with esptool #

For people who prefer a terminal. Install Python, then run these commands in the folder with the extracted files. Replace PORT with the E32's port, for example COM5 on Windows or /dev/ttyUSB0 on Linux.

python -m pip install esptool==4.5.1
python -m esptool --chip esp32 --port PORT flash_id
# Continue only if this reports an ESP32 with 16MB flash.
python -m esptool --chip esp32 --port PORT --after no_reset erase_flash
python -m esptool --chip esp32 --port PORT --baud 115200 --after no_reset write_flash \
  --flash_mode dio --flash_freq 80m --flash_size 16MB 0x0 e32v2-factory.bin
python -m esptool --chip esp32 --port PORT --after no_reset verify_flash 0x0 e32v2-factory.bin

--after no_reset keeps the E32 from starting before the check. When verify_flash succeeds, unplug the USB cable and plug it in again.

If neither tool can connect: try another data cable, plug directly into the computer (not through a hub), close other programs that use the same port, and follow BBQKees' instructions for starting the board in download mode. Do not bridge pins on the board.

3. First start: connect the E32 to your Wi-Fi #

A new E32 has no Wi-Fi settings yet, so it opens its own temporary setup network for you to connect to.

  1. Power the E32 (USB is fine for now). After a few seconds a Wi-Fi network called OpenThermostat-xxxxxx appears, where xxxxxx is the end of the E32's hardware address. Its password is openthermostat.
  2. Join that network with your phone or laptop. The page Connect to your WiFi usually opens by itself; if not, open http://10.10.10.1/ in a browser. If your phone asks whether to stay on a network without internet, choose to stay.
  3. Choose Find networks, pick your home network under Networks found (only 2.4 GHz networks are listed), or type its name under WiFi name. Enter the WiFi password and choose Connect.
  4. The E32 tests the connection; this takes up to 30 seconds. Your settings are saved only after a successful connection. If it fails, the page says so, the setup network stays available, and you can try again.
  5. When it succeeds, the page shows WiFi connected and the E32's address on your home network, then closes the setup network after a few seconds. Reconnect your phone or laptop to your home network and open that address. Save it as a bookmark: you will need it again for Home Assistant.

A new E32 is also reachable by its name, for example http://openthermostat-a1b2c3.local/, if your network supports .local names. Your router's list of connected devices shows it too (its name starts with openthermostat-).

The setup network stays open for about 15 minutes. If it closes before you are done, unplug the E32 and plug it in again: it opens again as long as no Wi-Fi network has been saved.

Ethernet instead of Wi-Fi (optional): after signing in, open System → Settings, section Network, set E32 network (active after restart) to Ethernet only, choose Save settings, let the E32 restart and plug in the network cable. Your router then gives the E32 a new address; look it up in the router.

4. Sign in and change the admin password #

  1. Open the E32's address. Sign in with user admin and password admin.
  2. The page asks you straight away to Choose your own password. Enter Your new password (8 to 64 characters) and Repeat your new password, then choose Save password. The user name stays admin. Until you do, the E32 shows its pages but accepts no change, from the browser or from Home Assistant, with one exception: giving control back to your old thermostat always works (a button on this step while the E32 controls the boiler).

Why it matters: with the default password, anyone on your network could change your heating. Write the new password down: Home Assistant asks for it in section 10. If you ever forget it, you can reset it over USB (section 16).

An E32 that was set up with an older firmware and still uses admin: after the update it keeps heating as before and Home Assistant keeps reading it, but changes wait. Home Assistant shows the repair E32 still uses the default password; choose Fix, enter a new password twice and submit. Home Assistant changes it on the E32 and stores it, in one step. You can also sign in on the E32 page, which asks for the new password at once; Home Assistant then asks you for it once (Settings → Devices & services).

The E32 menu reads Overview, Rooms, Home, Boiler and System. System holds Settings, Password, Backup and restore, Devices (Bluetooth sensors and Shelly devices), Firmware update, Diagnostics and system log, About, Restart device and, once you are signed in, Sign out. In Dutch: Overzicht, Ruimtes, Huis, Ketel and Systeem (Sign out is Afmelden). The language follows your browser; change it at the bottom of any page.

System → Settings opens the page with the sections Password, Network, Home Assistant (the link and its MQTT broker), Time, Backup and restore and Advanced; Password and Backup and restore also have their own menu rows. The tools for developers are under System → Diagnostics and system log → For developers. Messages of an older Home Assistant integration may still name the earlier menu path System → Network and Home Assistant → MQTT; it is now System → Settings → Home Assistant.

5. Basic settings: time zone and boiler reception #

Both are on the System → Settings page. When you are done, choose Save settings at the bottom. The E32 then offers a restart so the changes take effect; choose Restart now.

  1. Time zone (section Time). Week programs follow the E32's own clock, so it must know your time zone. Pick yours under Time zone, or choose Use this time zone when the page suggests your browser's time zone. Keep the time server (pool.ntp.org) unless your network needs another. For a time zone that is not listed, choose "Other (enter POSIX text under Advanced)" and enter it under Advanced, for example EST5EDT,M3.2.0,M11.1.0 for US Eastern.
  2. Boiler reception (fold Advanced, near the bottom): tick Boiler bus (EMS) on. A newly installed E32 starts with this off, so it receives no boiler data until you turn it on. Turning it on only lets the E32 listen to the boiler; it does not let it send heat requests.

Leave the other settings as they are for now. MQTT follows in section 8.

6. Connect the E32 to the boiler #

Safety first. Switch the boiler off (and disconnect its power) before you connect or disconnect anything on the EMS bus. Follow BBQKees' instructions for your gateway and boiler: see the BBQKees wiki and the gateway hardware details. If you are not sure how your boiler is wired, ask an installer.

  1. Connect the E32 to the boiler's EMS bus and power it the way BBQKees describes for your setup.
  2. Leave your existing thermostat connected and in control for now. The E32 only listens; it hears whether a thermostat still asks the boiler for heat and picks its route from that (section 12). The boiler test tells you when to disconnect it.
  3. Switch the boiler on again.
  4. On the E32, open Boiler. Within a few minutes it shows live values such as flow and return temperature, the burner status and the boiler's Display code in words. "Listening to the boiler bus (EMS) is off." means the Boiler bus (EMS) on setting from section 5 is still off.
  5. Open Boiler model, choose your boiler and choose Save boiler selection. This only changes the name and picture shown; it does not change how the E32 talks to the boiler.
  6. After about 10 minutes, the block My boiler names the boiler the E32 recognised on the bus, and whether it may control it (boiler recognition).

Not every boiler reports every value; water pressure, for example, is missing on many models. The E32 never makes up a value that the boiler does not report. See Boiler values are missing.

7. Pair Bluetooth thermometers (optional) #

Skip this section if all your room temperatures come from Home Assistant. Bluetooth thermometers have one advantage: the E32 receives them itself, so they keep working when Home Assistant is offline.

Supported: Shelly BLU H&T Display, Xiaomi Monitor 3 (MJWSD05MMC) with its bindkey, and thermometers with pvvx firmware (BTHome v2, plain or with a bindkey, or the older PVVX Custom format).

  1. Place the sensor in the room, away from radiators, windows and direct sun, and within Bluetooth range of the E32.
  2. On the E32, open System → Devices and, under Bluetooth sensors, choose Search nearby. The list shows up to 32 of the strongest nearby devices.
  3. Click your sensor. Give it a clear name (for example "Living room thermometer") and check its profile. Enter the encryption key only if the sensor uses one; Xiaomi Monitor 3 always needs its bindkey. Keys are stored on the E32 and never shown again.
  4. Choose Save Bluetooth settings. The E32 restarts by itself about 30 seconds later to apply them.
  5. After the restart the sensor shows a temperature under Your sensors. "Waiting" means nothing has been received yet.

With Home Assistant and OpenThermostat already set up, the dashboard tab Settings → Devices → Bluetooth sensors → Pair a sensor does steps 2 to 4: the E32 searches, you choose your sensor, check its name and Sensor type, fill in the key only if it encrypts, and choose Pair.

Up to eight sensors can be paired. A reading stays valid for 15 minutes. The user guide has a worked example for a pvvx thermometer.

8. MQTT: let the E32 talk to Home Assistant #

MQTT is the messenger between the E32 and Home Assistant: the E32 sends its room temperatures, boiler values and calculations through an MQTT broker, and Home Assistant reads them there. Home Assistant's own setup step (section 10) refuses to continue until MQTT is on, so do this first.

8.1 A broker and Home Assistant's MQTT integration #

Skip this if Home Assistant already uses an MQTT broker.

  1. In Home Assistant, go to Settings → Add-ons → Add-on store, install the Mosquitto broker add-on and start it. (Add-ons exist on Home Assistant OS and Supervised installations. On other installation types, run an MQTT broker yourself.)
  2. Home Assistant then offers the MQTT integration under Settings → Devices & services. Add it. If you use another broker, add the MQTT integration and enter that broker.

8.2 A login for the E32 on the broker #

The E32 needs its own user name and password on the broker; it does not connect to Home Assistant through a broker without a login.

With the Mosquitto add-on, the simplest way is a separate Home Assistant user, for example e32: Settings → People → Users → Add user. (The Users tab appears when Advanced mode is on in your Home Assistant user profile.) The user does not need to be an administrator.

8.3 MQTT settings on the E32 #

On the E32, open System → Settings, section Home Assistant, part MQTT broker:

  1. Tick Connect to the MQTT broker.
  2. Broker address: the IP address or name of the broker. With the Mosquitto add-on, this is the address of your Home Assistant, for example 192.168.1.10.
  3. Broker port: 1883, unless your broker uses another port.
  4. User name and Password: the login from section 8.2.
  5. Leave everything under Advanced as it is. The Base is openthermostat on a new E32 (an E32 set up before beta.19 keeps ib-therm); Home Assistant fills in what it needs when it connects.
  6. Leave Home Assistant link and HA adapter ID at the top of the same section alone. Home Assistant fills them in itself in section 10.
  7. Choose Save settings and let the E32 restart. Under the broker switch the page says (E32 1.4.5) that the E32 sends nothing over MQTT without the Home Assistant link: that is right at this point. Connect E32 in Home Assistant (section 10) switches the link on.

After the restart, the log on System → Diagnostics and system log shows whether the E32 reached the broker; the console command mqtt on the same page shows the connection and its counters.

9. Install the Home Assistant integration #

Install the integration with the Marketplace (9.1), or copy the release ZIP by hand (9.2). Both put the same files in the same place: <config>/custom_components/open_thermostat, where <config> is your Home Assistant configuration folder (the folder that contains configuration.yaml). Use one route, not both. Already installed by hand? See 9.3 to move to the Marketplace.

Always install the integration version that the release notes pair with your E32 firmware.

OpenThermostat is a custom repository in the Marketplace: you add it once.

  1. In Home Assistant, open Settings → Marketplace. The first time, tick I understand the risks to continue.
  2. Choose Add from link at the top right. Under GitHub link enter https://github.com/dielessen/openthermostat-ha and choose Add. If the Marketplace does not recognise the type by itself, choose Integration under Type and add it again.
  3. Search the Marketplace for OpenThermostat, open it and choose Install. The newest stable version is selected.
  4. Restart Home Assistant (Settings → System → Restart). Why: Home Assistant only loads new integrations at start-up.

Updates. A new version appears under Settings → Updates. Select it, choose Install and restart Home Assistant: updates of an integration still need a restart.

Home Assistant 2026.10 and older. There the Marketplace does not exist and the same steps are done with HACS: open HACS, the three dots at the top right, Custom repositories, add the repository above (type Integration), then search HACS for OpenThermostat and choose Download. HACS checks a repository added by URL only every 48 hours of Home Assistant uptime; to see a new version at once, open the three dots of the OpenThermostat entry and choose Update information. HACS offers release candidates (versions such as 1.0.0rc7) only through Need a different version? or the Pre-release switch of its OpenThermostat device. When you upgrade to Home Assistant 2026.11, your HACS custom repositories move to the Marketplace by themselves.

9.2 Without the Marketplace: the release ZIP #

  1. On the releases page, choose the Home Assistant release that the release notes pair with your E32 firmware. Its tag starts with ha-v, for example ha-v1.4.6. Download OpenThermostat-HA-<version>.zip.
  2. Extract the ZIP on your computer. It contains a folder custom_components/open_thermostat.
  3. Copy that open_thermostat folder into the custom_components folder of your Home Assistant configuration folder. Create custom_components if it does not exist yet. When you are done, this file must exist: <config>/custom_components/open_thermostat/manifest.json. Any way of copying files to Home Assistant works, for example the Samba share or File editor add-on.
  4. Restart Home Assistant (Settings → System → Restart). Why: Home Assistant only loads new integrations at start-up.

The other files in the ZIP (licence, checksums, release notes, SOURCE.json) do not need to be copied. The optional Zigbee2MQTT companion in the same release is not needed.

9.3 Move a manual install to the Marketplace #

The Marketplace writes to the same custom_components/open_thermostat folder as the manual install, so your OpenThermostat entry, rooms, programs and entities stay as they are. Nothing needs to be removed first.

  1. Make a Home Assistant backup: Settings → System → Backups → Back up now.
  2. Keep the OpenThermostat entry under Settings → Devices & services. Do not delete it and do not add the integration a second time.
  3. Follow 9.1: add the custom repository and install the version that matches your E32 firmware (the version you have, or the newer one the release notes pair with it). The Marketplace replaces the files in custom_components/open_thermostat.
  4. Restart Home Assistant.
  5. Check: Settings → Devices & services shows one OpenThermostat entry with your rooms, and the Marketplace lists OpenThermostat as installed.

Keep no second copy of the integration inside custom_components (for example a renamed open_thermostat_old folder): Home Assistant would see two integrations with the same name. Store a copy outside the configuration folder if you want one.

10. Add the integration and connect the E32 #

10.1 Add OpenThermostat #

  1. Go to Settings → Devices & services → Add integration and choose OpenThermostat.
  2. The form Set up your heating installation opens:
    • Installation name: any name you recognise, for example "Home".
    • Show the OpenThermostat dashboard: tick it. The dashboard holds the visual week planner, so it makes the next steps easier. Your own dashboards are kept.
    • Advanced → Controller MQTT prefix: keep openthermostat. Change it only if the Base on your E32's MQTT settings is different (for example ib-therm on an older E32). The two must match.
  3. Choose Add installation.

Home Assistant then tells you the next step: Configure → E32 connection. You do not need to add a room yet; that comes right after connecting.

10.2 Connect the E32 #

Before you start, check that MQTT on the E32 is on with a broker user name and password (section 8.3). Without it, this step stops with a message.

  1. Go to Settings → Devices & services → OpenThermostat and choose Configure (the gear icon). Before the E32 is connected, Configure starts with E32 connection. Once it is connected and the OpenThermostat dashboard is shown, Configure has two items: Open the settings page (the way to the dashboard's Settings tab, where every setting is) and E32 connection. Without the dashboard it has nine: Rooms, House, Heating and boiler, Energy and outdoor temperature, Notifications, E32 connection, E32 devices, Dashboard and name and Advanced and diagnostics. Every submenu has ← Back. After you save you are back in the menu, and Done closes Configure.
  2. Choose E32 connection.
  3. E32 web address: the address you use in your browser, including http://, for example http://192.168.1.50 or http://openthermostat-a1b2c3.local. An IP address or a home-network name ending in .local, .lan, .home, .internal, .localdomain, .fritz.box or .home.arpa works.
  4. E32 password: the password you chose in section 4.
  5. Choose Submit. Home Assistant checks the E32, points its MQTT link to Home Assistant and waits for the E32's first report over MQTT. This can take up to two minutes, and the E32 may restart once.
  6. When E32 connected appears, continue with Add the first room (section 11).

Home Assistant stores the E32 password. If you change it on the E32 later, Home Assistant asks for the new one (a Re-authenticate prompt on the integration).

The E32's Overview now shows Home Assistant: connected.

11. Add your rooms #

Every room has:

11.1 Add a room #

Right after connecting, choose Add the first room. Later, use Add room on the dashboard's Settings → Rooms (the same fields, the temperature sources in one list; without the dashboard: Configure's room form, Configure → Rooms → Add a room). Fill in the E32 room form:

  1. Room name, for example "Living room" (up to 40 letters).

  2. Heating: On. (Off (no heat demand) keeps the room in the plan but it never asks for heat.)

  3. Heating type: Radiators or Floor heating. Each type gets its own flow temperature.

  4. Temperature sources from Home Assistant: choose one or more sensors or thermostats that measure this room. Drag them to change the order.

  5. Bluetooth sensors on the E32: choose the sensors from section 7, if any. Tick Use the Bluetooth sensors first to make them lead and keep the Home Assistant sources as backup.

  6. Setting device (optional): see 11.3.

  7. Temperature without a week program: a safe fixed temperature, for example 19 °C. The room keeps it when it has no week program, and until the E32 has a valid clock.

  8. Week program on the E32: the form fills in the Workdays and weekend template. You can keep it and fine-tune it later in the visual planner (11.2), or type your own: one line per group of days, for example

    mon-fri: 06:30 20.5; 22:30 18
    sat-sun: 08:00 20.5; 23:00 18
    

    Each temperature holds until the next switch time; a line without days applies to every day; up to six switch times per day.

  9. Windows and doors (folded section, optional): the room's window and door contacts (up to 8: after you choose one, an empty field appears below it for the next) and Pause after (2 minutes by default). See 11.5.

  10. Temperature limits (folded section): the lowest and highest target this room may get. The program and any manual change stay within them.

  11. Persons (folded section, optional): Persons of this room, for example the people who sleep in a bedroom. See 11.5.

  12. Choose Submit. The room is saved on the E32 right away. Choose Add a room for the next one, or close the window.

The "Workdays and weekend" template is: on workdays 20 °C from 06:30, 18 °C from 08:30, 20 °C from 17:00 and 16 °C from 22:30; at the weekend 20 °C from 08:00 and 16 °C from 23:00.

To change or remove a room later: the dashboard's Settings → Rooms, then the room (Remove room is at the bottom); its radiator valves, persons and temperature limits are on the same screen (see Radiator valves). Without the dashboard: Configure → Rooms → Edit or remove a room, pick the room and choose Edit room.

On the E32 Rooms page each room is a card that opens with a click. Inside it, the blocks Temperature, Week program, Windows and doors, Persons and, since 1.4.4, Learning (with Learn again) fold open too; a closed block shows a one-line summary.

11.2 Edit the week program in the visual planner #

The easiest way to change a program is the week planner on the room's own screen: the OpenThermostat dashboard in the Home Assistant sidebar, Settings → Rooms → the room → Week program. Every room has three levels, Comfort, Eco and Night, each with its own temperature; changing a level changes every block that uses it. Paint a block with a level, drag the edges of the blocks, use Copy… to copy a day to other days, Undo a step, or Start from a template. On a phone the planner also lists each day's blocks. The same planner is on the E32's Rooms page. Both edit the same program on the E32, and neither overwrites a change the other made in the meantime.

11.3 The setting device #

The setting device is how you turn a room up or down by hand. Choose what fits the room:

Your room has Choose as setting device What happens
A radiator valve (TRV) in Home Assistant The valve's thermostat entity The valve shows the room's temperature; turning it changes the room.
A smart thermostat such as tado Its thermostat entity The same, on the tado.
A number or input number with a target (for example a sensor with a settable temperature) That number The number shows the room's temperature; changing it changes the room.
None of these Leave the field empty You use the room's own thermostat in Home Assistant (one per room, created by the integration) or the E32 Overview as a virtual thermostat.

A setting device shows the room's temperature, and what you turn on it is a manual change of the room. Valves that the E32 should drive itself after the switch-over (with the room's measured temperature, and the boiler flow kept as low as the valves allow) go under the room's Radiator valves instead; see the reference.

How it works:

The setting device is a convenience, not a requirement. It needs Home Assistant: without Home Assistant the E32 keeps running the program, but changes on the device are not seen until Home Assistant is back.

11.4 Water temperature limits #

These limits are the lowest and highest water temperature to the heating (flow temperature) that the E32 may ask of the boiler, for all rooms together. Check them on the dashboard's Settings → Heating and boiler → Water temperature limits in Home Assistant (without the dashboard: Configure → Heating and boiler → Water temperature limits; without Home Assistant: the E32 Home page, section Water temperature limits, then Save limits). The default is 30–60 °C. Floor heating fed without a mixing valve usually needs at most 45–50 °C; radiators often need 60–75 °C on cold days. The E32 never asks for more than the maximum heating temperature set on the boiler itself.

11.5 More options (optional) #

On the dashboard's Settings tab (without the dashboard: the same items under Configure):

11.6 Check it #

Without Home Assistant, rooms are set up on the E32 Rooms page instead; see Add your first room on the E32.

12. The route to the takeover: boiler test, or a trial run first #

The route to the takeover follows what the E32 hears on the boiler bus during its first two minutes, as long as it has no room plan stored yet:

The Rooms page says which route it chose and why, and you can always choose the other one: Trial run first (compare with your thermostat) or Go straight to the boiler test. An installation that already has a room plan keeps its mode.

Boiler test and takeover (E32 Boiler page, right under Now). With someone at the boiler, about 30 minutes; Start the boiler test first asks you to stay near the boiler, so you can switch it off if something looks wrong. The E32 checks each step itself from what the boiler reports and shows it as passed, waiting or failed, with what to do. No existing thermostat is required: the page speaks of an old thermostat only when the E32 has heard another controller ask the boiler for heat (it remembers that).

  1. No other thermostat on the boiler (Disconnect your old thermostat when the E32 heard one): with an old thermostat, switch the boiler off, disconnect the thermostat from the boiler and switch the boiler on again. Passes when no other thermostat is heard for 2 minutes while boiler messages arrive.
  2. Confirm the takeover: Confirm the takeover opens the usual confirmation ("Let the E32 control the boiler?"; after an old thermostat: "Confirm that your current thermostat is disconnected…"). Passes once the E32 controls the boiler.
  3. Start heating: the E32 sets the first active room with a working sensor about 1 °C above its temperature, as a temporary change with an end time (the week program is not changed). Passes when the burner starts for heating within 10 minutes and the water to heating gets at least 3 °C warmer within 15 minutes.
  4. Hot water while heating: open a hot tap for 3 minutes. Passes when hot water goes first and heating resumes within 5 minutes after it, without a warning. A boiler without hot water can skip this step.
  5. Stop heating: the room is set 0.5 °C below its temperature. Passes when the burner switches off within about 45 seconds of the E32's request for no heat (after its shortest run) and stays off for 5 minutes.
  6. Done: "The E32 now controls your boiler." The temporary change ends and the week program continues.

Each step has a time limit. The E32 stops the test with "Stop and give control back to your thermostat" (without a thermostat it ever heard: "Stop E32 control") and the steps to do so when another thermostat asks the boiler for heat, control is given back, room measurements are lost, a warning of active control appears, the water to heating goes above the highest water temperature, the boiler is silent for 3 minutes, or a boiler settings change or the installer check (Diagnostics, For the installer) uses the connection to the boiler (a start is refused while one runs). Stop the test ends it at any step.

The E32 remembers the test over restarts and firmware updates. The Boiler page says for example "Last test: passed on 1 Nov 2026, 21:12." with the highest water temperature the E32 asked during it; a test that was still running when the E32 restarted shows as ended by the restart. I have already done this test marks it as done without running it: the page then says "Marked as done by you on 3 Nov 2026. This is your own mark, not a test the E32 measured." Undo my mark takes it back, and running the test replaces it. An E32 that has controlled this boiler before (for example since an earlier release) shows "Not needed: the E32 has controlled this boiler before." When the test passed, is marked or is not needed, its steps fold away and Run the test anyway stays available. While the test needs you (running, before the takeover, after a safety stop), Active control on the Rooms page says so in one line with a link to it. Home Assistant shows it as attributes of the sensor Ready for E32 control (boiler_test, boiler_test_summary, boiler_test_at, boiler_test_flow_c, boiler_test_marked_at, boiler_test_steps, boiler_test_step, boiler_test_reason). The test is optional: Skip the test and confirm the takeover now does the same takeover without it. Starting the test during a trial run asks first, because it ends the trial run; a start the E32 refuses leaves the trial run as it was.

This is the only boiler test: the attended heating test of the Boiler page is retired. What stays, since 1.2.0 under System → Diagnostics and system log → For the installer, never asks the boiler for heat: the zero-only check, reading the heating settings and a device identity, and the measurement report.

What the trial run does and does not do #

The trial run is optional. The E32 does:

The E32 does not, until you confirm the takeover:

Watch out: setting devices are real devices. Home Assistant really sets them, also during the trial run:

That is usually what you want, but it means your heating can change on the day you set it up. If you only want to watch during the trial run first, leave the setting device empty and add it later.

The firmware can control the boiler, but it never starts on its own. The E32 takes over only after you confirm it (with an existing thermostat on the boiler: after you disconnected it): in the boiler test (step 2), or with Let the E32 control the boiler (after an old thermostat: My thermostat is disconnected from the boiler — let the E32 take over) in the Active control section of the Rooms page. Do that with someone at the boiler; the switch-over procedure has the details and the hand-back. Until then, an existing thermostat stays connected and in control.

An EMS+ boiler: the attended test with the thermostat disconnected #

An EMS+ boiler is read, and the E32 runs a trial run beside your thermostat, but it does not control the boiler. The boiler test above does not run on an EMS+ boiler, and there is no takeover for it until its model is verified. Keep your thermostat connected and in control.

Testers who want to help can run one attended test instead. It is the only moment the thermostat is disconnected from an EMS+ boiler. The steps are in the user guide; the details in the reference. In short:

Warning. During the test the E32 asks your boiler for heat, at a low water temperature, for at most 10 minutes. Stay at the boiler for the whole test, about 20 minutes. If anything looks wrong, switch the boiler off with its main switch: heating stops at once.

  1. Photograph and label the thermostat's wires at the boiler.
  2. Switch the boiler off, disconnect the thermostat, switch the boiler on.
  3. Wait 10 minutes: the E32 starts the test only after 10 minutes without another thermostat on the bus.
  4. On the E32, open Boiler, block Test your EMS+ boiler (under My boiler). Tick The thermostat is disconnected and choose Start the test. Choose I am at the boiler within 60 seconds.
  5. Watch the boiler, with the E32 page open and signed in: the block shows each step, its countdown and what the boiler shows. Stop the test ends it at any moment. The E32 ends the test by itself, always with three requests for no heat; at any doubt it does so at once, and also when your sign-in ends.

Put the thermostat back as soon as the test has ended, also when it stopped early:

  1. Switch the boiler off.
  2. Reconnect the thermostat's two labelled wires, as in the photo.
  3. Switch the boiler on. Within a few minutes the thermostat asks for heat again. Check hot water, the water pressure and the boiler display.

The E32 goes back to its trial run by itself. The block says Last test and the result. A passed test makes My boiler say Tested by you: the result waits for review until the E32 restarts; the E32 still does not control the boiler. Share the result as the user guide describes.

13. Updates #

Updates keep your network settings, rooms, programs and paired sensors. Never use the factory image (e32v2-factory.bin) for an update; it erases everything.

13.1 Update order #

When a new release pair comes out, read its release notes first. They say which integration goes with which firmware. Usually: update the integration first, then the firmware.

The usual order, for every release:

  1. Update OpenThermostat in the Marketplace (Settings → Updates) and restart Home Assistant (13.2). The integration comes first.
  2. Install the E32 firmware from the Firmware update entity (13.3), while someone is home.
  3. The takeover stays. Since E32 1.4.6 a firmware update keeps it while the boiler and the way the E32 talks to it are unchanged; the E32 resumes about two minutes after its restart, as after any restart. Only when something changed (another boiler, another way to talk to it, a boiler it could not check, or a firmware with new takeover rules) does the E32 ask again, and until you confirm it keeps only frost protection. Home Assistant then shows a repair that says why (Settings → System → Repairs): choose Fix, or confirm on the E32 Boiler page under Boiler test and takeover. Up to 1.4.5 every firmware update asked again.

Every release has one block below, newest first. Two or more releases behind? Updating straight from an older version works: read every block from your version up to the new one and do the install check afterwards. The changes add up, and the order is the same each time. Releases are tested one step at a time, from one version to the next.

You have Next release Read
1.4.5 1.4.6 From 1.4.5 to 1.4.6
1.4.4 1.4.5 From 1.4.4 to 1.4.5
1.4.3 1.4.4 From 1.4.3 to 1.4.4
1.4.2 1.4.3 From 1.4.2 to 1.4.3
1.4.1 1.4.2 From 1.4.1 to 1.4.2
1.4.0 1.4.1 From 1.4.0 to 1.4.1
1.3.0 1.4.0 From 1.3.0 to 1.4.0
1.2.0 1.3.0 From 1.2.0 to 1.3.0
1.1.0 1.2.0 From 1.1.0 to 1.2.0
1.0.0 1.1.0 From 1.0.0 to 1.1.0

From 1.4.5 to 1.4.6 (Home Assistant integration 1.4.6). Update in the usual order (above): the integration first, then the firmware. You do not confirm the takeover again.

What the update changes in an existing installation:

From 1.4.4 to 1.4.5 (Home Assistant integration 1.4.5), while someone is home. Both the integration and the E32 firmware change. Update in the usual order (above): the integration first, then the firmware, then confirm the takeover again. No reload is needed.

What the update changes in an existing installation:

From 1.4.3 to 1.4.4 (Home Assistant integration 1.4.4), while someone is home. Both the integration and the E32 firmware change this time.

Update in the usual order (above). Home Assistant sees the new abilities of the firmware at once. No reload is needed.

What the update changes in an existing installation:

Mixed versions:

From 1.4.2 to 1.4.3 (Home Assistant integration 1.4.3), while someone is home. The update is small: the dashboard changes most; the E32 firmware only gets one fix.

Update in the usual order (above). No reload is needed.

What the update changes in an existing installation:

From 1.4.1 to 1.4.2 (Home Assistant integration 1.4.2), while someone is home.

Update in the usual order (above). Home Assistant sees the new abilities of the firmware at once. No reload is needed.

What the update changes in an existing installation:

From 1.4.0 to 1.4.1 (Home Assistant integration 1.4.1), while someone is home.

Update in the usual order (above). The integration must come first: the new Settings screens need it.

What the update changes in an existing installation:

From 1.3.0 to 1.4.0 (Home Assistant integration 1.4.0), while someone is home.

Update in the usual order (above). The integration must come first: the Settings tab, reset times and Smart warm-up per room need it.

What the update changes in an existing installation:

From 1.2.0 to 1.3.0 (Home Assistant integration 1.3.0), while someone is home.

Update in the usual order (above). The integration must come first: the E32 devices menu, Heat along only and the automatic lowest water temperature need it.

What the update changes in an existing installation:

From 1.1.0 to 1.2.0 (Home Assistant integration 1.2.0), while someone is home.

Update in the usual order (above). The integration must come first: the new devices, the notifications and the room models need it.

What the update changes in an existing installation:

From 1.0.0 to 1.1.0 (Home Assistant integration 1.1.0): update in the usual order (above). Every window or door contact you chose before is a window: move a door to Door contacts in the room form, section Windows and doors. The options that came with 1.1.0 (boiler settings, the EMS+ tester, Shelly devices) stay off until you choose them. Settings, rooms, programs and paired sensors are kept.

13.2 Update the integration #

With the Marketplace: Settings → Updates shows the new OpenThermostat version. Select it, Install, then restart Home Assistant. A stable release shows up there by itself. On Home Assistant 2026.10 and older, HACS does this; if it has not shown a new version yet, choose Update information in the OpenThermostat menu of the HACS list (section 9.1 explains why).

Without the Marketplace:

  1. Download the new OpenThermostat-HA-<version>.zip from the releases page.
  2. Delete the old custom_components/open_thermostat folder in your Home Assistant configuration folder and copy the new one in its place.
  3. Restart Home Assistant.

Keep your existing OpenThermostat entry; there is no need to remove and add it again. If you copied blueprints, copy them again.

  1. The OpenThermostat device has an update entity called Firmware. Home Assistant checks GitHub for a new version every 6 hours.
  2. A new version appears under Settings → Updates. Choose it and choose Install.
  3. Home Assistant downloads firmware.bin, checks its checksum, size and version, uploads it to the E32 and waits until the E32 reports the new version. Keep the E32 powered.

13.4 Update the E32 firmware without Home Assistant #

On the E32, open System → Firmware update:

13.5 Automatic rollback #

A new firmware confirms itself after it has run normally for about a minute and the network has worked. If it fails to start, or gets no working network connection within 10 minutes (router, MQTT broker or the web page answering), the E32 goes back to the previous version by itself.

14. Backup and restore #

Make a backup once your setup works, and again after big changes. It saves your network and time settings, MQTT and the Home Assistant link, rooms and week programs, planned holidays, Bluetooth sensors, flow settings, boiler model and language.

14.1 Make a backup #

  1. On the E32, open System → Backup and restore.
  2. Optionally tick Include passwords and Bluetooth keys, encrypted with a passphrase and enter a Passphrase (12 to 64 characters) twice. Without it the file holds no secrets, and the page lists what you would need to enter again after a restore (the MQTT password and the Bluetooth sensor keys).
  3. Choose Download backup and keep the file somewhere safe. Keep the passphrase too: nobody can recover it.

The Wi-Fi password and the E32 web password are never in a backup. The encrypted passwords are tied to the network settings in the same file: a backup whose broker address was edited does not open them. (Backups made by older firmware still restore; the E32 says they are older. Make a new one afterwards.)

14.2 Restore a backup #

Use this on a new or reset E32, or to undo a change.

  1. First connect the E32 to your network (section 3) and sign in.
  2. Open System → Backup and restore, section Restore a backup. Choose the Backup file, enter the Passphrase of this backup if it has one, and choose Check backup.
  3. The E32 shows what will change, what it skips and what you need to enter again. Nothing is saved yet.
  4. Choose Restore these settings. If network or Bluetooth settings change, the E32 restarts about 10 seconds later; sign in again afterwards.
  5. If the backup had no passphrase, enter the MQTT password again under System → Settings → Home Assistant. Why: MQTT stays off until you do, so Home Assistant receives nothing.

A restore never changes the Wi-Fi network or the web page port. The rooms keep the mode of the backup (active control stays active), but the takeover is not part of a backup: a new or reset E32 sends nothing to the boiler until you confirm the takeover on its Rooms page again. It is refused while a boiler test runs.

Home Assistant's own backup (Settings → System → Backups) covers the integration's settings in Home Assistant, including the copied custom_components folder.

15. Secure your setup #

The E32 sits on your home network, so its protection is your network's. A few steps make a big difference.

  1. Your own E32 password. Choose it at the first sign-in (section 4); the E32 accepts no change until you do. Use one you do not use elsewhere.

  2. One MQTT user per client, and a broker ACL. Give Home Assistant, the E32 and Zigbee2MQTT each their own broker login (section 8.2), and let each write only its own topics: the E32 publishes under <base>/fw/, Home Assistant under <base>/ha/, and only Zigbee2MQTT publishes the states under zigbee2mqtt/ (the others only send commands to zigbee2mqtt/<device>/set). <base> is the Base of section 8.3 (openthermostat on a new E32). With the Mosquitto add-on, turn on customize in its configuration (active: true, folder: mosquitto), and put two files in Home Assistant's /share/mosquitto/. First accesscontrollist, the rules:

    # Home Assistant: reads everything; writes its own E32 topics, discovery
    # and Zigbee2MQTT commands.
    user homeassistant
    topic read #
    topic write openthermostat/ha/#
    topic readwrite homeassistant/#
    topic write zigbee2mqtt/+/set
    
    # The E32: reads Home Assistant's messages, writes its own topics,
    # its discovery and the radiator valve commands.
    user e32
    topic read openthermostat/#
    topic write openthermostat/fw/#
    topic readwrite homeassistant/#
    topic read zigbee2mqtt/#
    topic write zigbee2mqtt/+/set
    
    # Zigbee2MQTT: its own tree and its discovery.
    user zigbee2mqtt
    topic readwrite zigbee2mqtt/#
    topic readwrite homeassistant/#
    

    Then acl.conf, which turns them on:

    acl_file /share/mosquitto/accesscontrollist
    

    Use the user names you created, restart the add-on and check that Home Assistant, the E32 (System → Diagnostics, console command mqtt) and Zigbee2MQTT still connect. Replace openthermostat if your Base differs.

  3. Broker TLS (optional). Home Assistant and Zigbee2MQTT can reach the broker over TLS (usually port 8883). The E32 itself connects without TLS on port 1883 for now; keep that port reachable only from your home network, never from the internet.

  4. The setup network. The setup Wi-Fi OpenThermostat-xxxxxx uses the password openthermostat for every E32. It only opens on a new E32 without Wi-Fi settings, or after the setup command over USB, and closes itself after about 15 minutes. Finish the setup in one go, and do not leave a new E32 powered and unconfigured where others can reach it.

Not yet available, planned for a later release: a setup Wi-Fi password of its own per E32, encrypted settings storage on the E32 and secure boot.

16. Forgotten password and Wi-Fi recovery over USB #

Two commands work over the USB cable. They need physical access to the E32, so nobody can use them over the network.

  1. Connect the E32 to a computer with a USB-C data cable.
  2. Open a serial terminal at 115200 baud that sends a line ending when you press Enter, for example the Arduino IDE Serial Monitor, PuTTY, or python -m serial.tools.miniterm PORT 115200 (from the pyserial package).
  3. Type one of these commands and press Enter:
    • password-reset sets the web password back to admin. Sign in with admin / admin; the page asks for a new password at once. Home Assistant then asks for the new password.
    • setup restarts the E32 into the setup network OpenThermostat-xxxxxx for 15 minutes, also when a Wi-Fi network is saved or the E32 uses Ethernet. Use it after a router or Wi-Fi password change. The old network settings stay until a new connection works.

While the E32 still works on your network, you can also change Wi-Fi from System → Settings → Network → Start WiFi setup (restart).

17. Troubleshooting #

The E32 is not reachable #

I cannot sign in on the E32 #

Connect E32 does not work #

The form says what is wrong. The most common messages:

No values in Home Assistant #

All live values come over MQTT.

  1. In Home Assistant, check that the MQTT integration is set up and connected.
  2. On the E32, check System → Settings → Home Assistant: Connect to the MQTT broker ticked, the right broker address and port, and a user name and password the broker accepts. Save and restart after a change. System → Diagnostics and system log shows connection errors.
  3. The Base on the E32 (System → Settings → Home Assistant → Advanced) and the controller MQTT prefix of the integration must match. Connect E32 sets this up; if you changed either by hand, run Configure → E32 connection again.
  4. Check that the firmware and integration versions are a pair from the same release notes. An older integration does not understand newer firmware, and the other way round.

Values become unavailable only when the E32 reports itself offline or about 3 minutes pass without its heartbeat. The Heating problem sensor turns on when the E32 has sent nothing for 10 minutes.

The E32 and Home Assistant keep a running session over MQTT. It restarts by itself after a restart of Home Assistant, the broker or the E32, or after a Wi-Fi outage. The E32 Overview shows its state: Home Assistant: connected, or "last connected ... ago".

If it stays disconnected for more than a few minutes:

  1. Check MQTT as in No values in Home Assistant.
  2. If the E32 changed its password, Home Assistant shows a Re-authenticate prompt on the integration. Enter the new E32 password there.
  3. If Home Assistant's clock jumped, a repair message "Room measurements paused: the clock of Home Assistant jumped" appears. Check the time of the Home Assistant host, then reload the integration (Settings → Devices & services → OpenThermostat → ⋮ → Reload).
  4. Otherwise reload the integration, or run Configure → E32 connection again with the same address and password. Your rooms on the E32 stay as they are.

The E32 keeps running its rooms and week programs while the link is down.

Boiler values are missing #

The E32 learns which values your boiler really reports and Home Assistant only creates entities for those. This keeps Home Assistant free of empty sensors, but it can look as if something is missing.

A room shows no measurement #

A Bluetooth reading is valid for 15 minutes, so the sensor must be heard at least that often. A Home Assistant source needs Home Assistant and MQTT running and must report a temperature in °C or °F. Adding a second source keeps the room measured when one drops out.

A Bluetooth sensor is not found or stays "Waiting" #

Heating needs attention #

Settings → System → Repairs shows Heating needs attention and the Heating problem sensor is on. The message says what is wrong, for example a room without a usable measurement for 30 minutes, no report from the E32 for 10 minutes, a room that asks for heat but stays more than 0.5 °C below its target for 3 hours, or no working link with the E32 for 15 minutes while the E32 is online. The message clears itself once the cause is gone.

The setting device changes the temperature by itself #

The device runs its own schedule. Put it in manual mode (in its own app or on the device). Home Assistant shows a repair message "{device} seems to run its own schedule" when it notices this.

Remove an old Home Assistant room #

Installations set up with integration 0.4.0b10 or older had to create a room in Home Assistant before the E32 could connect. That room is no longer used: your rooms live on the E32 now. Home Assistant offers to remove it:

  1. Go to Settings → System → Repairs.
  2. Open Old Home Assistant room no longer used and follow the steps. The same is available on the dashboard's Settings → Installation → Remove old Home Assistant rooms (without the dashboard: Configure → Advanced and diagnostics → Remove old Home Assistant rooms).
  3. Home Assistant updates the E32 room plan first and then removes the old room's devices and entities. Your own sensors, thermostats and valves stay as they are, and so do the rooms on the E32. The E32 may restart once (about 30 seconds).

If an E32 room used the old room's thermostat as its only temperature source, a repair Choose a temperature source for ... asks you to pick a new one.

An update was rolled back #

The E32 shows the previous version after an update when the new firmware did not start properly or did not reach the network within 10 minutes. Check that the router and the MQTT broker were available, then try again. System → Firmware update → Recovery (advanced) → Update diagnostics and the system log show what happened. If Home Assistant says the E32 did not report the new version in time, check the version on the E32 itself before trying again. A failed installation from Home Assistant now says in words where it stopped (downloading, checking the file, sending it to the E32, or the E32 not confirming the new version).

Something else #

The user guide takes you through the setup, and its reference explains every setting. For a return to the original firmware, see USB backup and recovery. When you report a problem on GitHub, include the firmware and integration versions, the relevant part of the E32 system log and, if you can, Home Assistant's Download diagnostics file of the integration (it leaves out passwords, keys, addresses and Wi-Fi names). Remove any passwords from logs before you share them.