I have few of these new Ensto bluetooth electric underfloor thermostats. They comply with the new EcoDesign requirements so there is bluetooth connection.
They are so called combination thermostats so there is in-floor and room thermostats available. There is an IOS and android app available where you can do limited configs and see status/stats.
I think that there is no active work ongoing for adding HA support. Or is there?
Would there be a group of coders interested to join forces for this project?
Any “push-to-the-right-direction” from the more experienced thermostat/BT integration experts?
Really, how big is this kind of project? I am not an HA/unix expert so I would love to have some kind of scale for this project requiremets. Any idea?
I am currently having hassio running on RPi3 and BTLE connection is already in use for Xiaomi temp sensor. However, for the connection I am using ESPHome due to the very limited BT range in RPi3.
Did you explore this any further?
A few months back i tested the connection from raspbian terminal and managed to receive some sensorvalues. But with my limited knowledge I didn’t get any further than that…
Someone have this BT IOT interface specification PDF? I asked from Ensto techical support but didnt got any answer. I had it somewhere downloaded but couldn’t find it anywhere anymore…
Please post a follow up if you get it to work with home assistant .
I got totally stuck since I couldn’t get any bluetooth npm’s to work with node-red on hassio.
I’m also very curious to integrate these into my smart home. Either via an ESPhome node or anything similar.
I got five ENSTO thermostats (ECO16BT & ECO10BTW) and it would be much, much cheaper to integrate these than replacing them with e.g. Heatit Zwave comparables.
Please keep me updated and if there’s any progress or wish to get this started.
I bet there are quite a few of these out there especially in the Nordics?
I think they are here in Finland as it seems like they are a Finnish brand?
After some tinkering around, got this log in the BLE sniffer:
08:30:51.1980: received update from characteristic 4CC07BCF-0868-4B32-9DAD-BA4CC41E5316___1D14D6EE-FD63-4FA1-BFA4-8F47B42119F0: <00>
08:30:56.9440: failed to retrieve data from characteristic CBCC825B-5841-4852-A4F7-E33F539D4F72___F49CEFD5-209B-4531-99BD-123456789012: Error Domain=CBATTErrorDomain Code=15 "Encryption is insufficient." UserInfo={NSLocalizedDescription=Encryption is insufficient.}
08:30:56.9730: failed to retrieve data from characteristic 81D3B33C-BAFD-4F85-9BB2-8EEE9C0C6C33___F49CEFD5-209B-4531-99BD-123456789012: Error Domain=CBATTErrorDomain Code=15 "Encryption is insufficient." UserInfo={NSLocalizedDescription=Encryption is insufficient.}
And based on the document procured by @MikaJ, it looks like the devices and the mobile app are deployed with pre-configured keys (Section 3) to encrypt and exchange data. So unless those keys are known or Ensto provides an API to retrieve data from their servers, this integration is a deal breaker!
Hi,
Thanks to @MikaJ for the spec and @tuomassalo for nice example implementation.
I was able to hack together an ESPHome implementation by only using YAML and lambdas.
It should work with all Ensto thermostats which follow that spec.
Hi, I upgraded my floor thermostat to ensto eco16bt, but noticed that there were quite interesting new? product on the shelf too. It was just a bit too expensive for my application.
I got the integration by @jumakki working today, thanks a lot! I had to comment out the web_server -part to make it work, don’t know the exact issue why. I did not need to use Docker, as descripted in instructions, because HAAS now has nice ESPHome add-on where we can paste the ESPHome YAML.
As I understand this only supports one thermostat for each ESP32 unit? Should it be possible to develop this further to support multiple thermostat connecting using same ESP32? I might be interested to try out that track… Winter is coming.
I got the integration by @jumakki working today, thanks a lot!
Good to hear! Please check the updates I made just 2 days ago. I noticed that reconnecting didn’t work anymore after updating ESPHome and Home Assistant to latest versions. I had to always pair again after any connection issues. I fixed that and made some simplifications. Now it uses ble_client’s write API instead of writing manually. That should make it less prone to breakups in future ESPHome updates. Note that the used write API is supported only with ESPHome 2022.8.0 or later. So update to latest.
As I understand this only supports one thermostat for each ESP32 unit? Should it be possible to develop this further to support multiple thermostat connecting using same ESP32?
I believe it should be possible to support multiple thermostats. I have only one, so can’t test it myself, but you could make duplicates of all sensors, globals, ble_client etc. in YAML and change “ensto1” in all names and IDs in duplicates with “ensto2”. Should be simple enough to test. Note that there is max limit of 3 devices in BLE Client, as mentioned in https://esphome.io/components/ble_client.html
I am trying to use this, but can’t get it working. I have ECO16BT thermostat. ESP can’t keep or establish connection with thermostat. Doesn’t matter if thermostat is pairing or not. ESP board that I am using is https://www.amazon.de/-/en/gp/product/B07VJ34N2Q/
[I][ble_adv:033]: New BLE device
[I][ble_adv:034]: address: XX:XX:XX:XX:XX:XX
[I][ble_adv:035]: Advertised manufacturer data:
[I][ble_adv:038]: - 0x2806 (length 23)
[I][ble_adv:043]: - ECO16BT;0;0;0;
[I][ble_adv:053]: - is pairing = false
[D][esp32_ble_client:036]: Found device at MAC address [XX:XX:XX:XX:XX:XX]
[I][esp32_ble_client:058]: Attempting BLE connection to xx:xx:xx:xx:xx:xx
lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[W][ble_sensor:037]: [ensto1_adaptive_temp_control_characteristic] Disconnected!
[D][sensor:127]: 'ensto1_adaptive_temp_control_characteristic': Sending state nan with 0 decimals of accuracy
[D][ble_client.automation:067]: Disconnected from xx:xx:xx:xx:xx:xx
[D][ble_client.automation:067]: Disconnected from xx:xx:xx:xx:xx:xx
[D][ble_client.automation:067]: Disconnected from xx:xx:xx:xx:xx:xx
[D][ble_client.automation:067]: Disconnected from xx:xx:xx:xx:xx:xx
[D][ble_client.automation:067]: Disconnected from xx:xx:xx:xx:xx:xx