Hassio + with EQ3 Bluetooth Smart Thermostats

Hi @YJB/ @btsimonh I would be very interested in something like this (using ESP32 to talk with EQ3). I have been trying in the last months with different USB dongles but I haven’t found one with enough range. If you need a tester, just let me know.

I tried ESP32 and they had very poor range. I ended up using Raspberry PI zeroW with home assistant running on it and remote home assistant from HACS on my main Home assistant. Runs very well on RPIZeroW as it only runs 4 EQ3 on it.

Hi,

The current version is here:
EQ3-2021-04-08
Preliminary documentation (needs an update as things have developed, but should get you going:
EQ3 Documentation

It’s still not released, but its working pretty good.

You can alias your trv’s as well, so that you do not have to use the mac addresses:
BLEAlias 001A2228C457=room1
(hint use the new autoexec.bat in Tasmota to set them all at boot time)

MQTT topics:
There is one generic topic across all ESP32 for the EQ3 trv’s. This means you can have multiple ESP32 around the house without worrying which ESP32 is actually talking to your trv:
stat/EQ3/room1
In the same way you can define a regular group topic that includes all the ESP32 which are controlling your trv’s to send commands.

Anyways, give it a try and let us know how it’s going

I’m running 9 * EQ3 right now across 2 * ESP32

  • 2 floors
  • Total coverage (each floor) 2 * 18 m.

As my second floor is not made of concrete, I can cover both floors with a single ESP32 for 50% of the house. So you might need extra, but then the cost of an ESP32 is around USD4 (compared to USD 15-20 for the Raspberry PI zeroW).

Yeah, I have concrete floors. You also have the price of the SD card to add and I use an ethernet to USB connection. I find the WIFI on ESP32 great , just not the Bluetooth. It was ok if good line of site in a room on an opposite wall but poor if even 2m away on the same wall. Turning the ESP 90 degrees didn’t fit with the case. Response to changing target temp is faster on the RPI I found.

Hello everyone,
is it possible to show the schedule and adjust it via Home Assistant?
I set everything up and have the normal default UI integration, but I do not see any options to adjust the scheduling. :slight_smile:

I use scheduler-component and the scheduler card from HACS to control the programming of the EQ3s.

I’m using 2.0.5 of scheduler card as 2.1.1(perhaps it was 2.1.0) didn’t work. This doesn’t change the built in schedule in the device memory but works very well except when you lose connection to the bluetooth.

That looks really promising, thank you!
I would prefer to be able to adjust the built in scheduler as this would save some energy (not sure how much the BLE interface drains the battery and would like to only recharge the batteries once per year in summer).
Especiakky since the device opens the valve when the battery dies and so the heating will run full power. Usually happens when we are away for a few days :smiley:

Hi,

Assuming you are talking about the ESP32 implementation:
Yes, we have considered the definition of schedules in HA, but we decided it was not worth the effort. We thought that the device based schedule would be your fallback scenario (in case HA was not operational, or contact with HA was lost).

Setting up a schedule is a failrly easy process (this example assumes that eq3_devices is the group topic for all your esp’s):

/usr/bin/mosquitto_pub  -h <mqtt_ip> -p 1883 -u mqtt_username -P mqtt_password -t cmnd/eq3_devices/EQ3/001A2216A458/setprofile -m "0 12.5-06:00,21.0-21:00,12.0-24:00"
/usr/bin/mosquitto_pub  -h <mqtt_ip> -p 1883 -u mqtt_username -P mqtt_password -t cmnd/eq3_devices/EQ3/001A2216A458/setprofile -m "1 12.5-06:00,21.0-21:00,12.0-24:00"
/usr/bin/mosquitto_pub  -h <mqtt_ip> -p 1883 -u mqtt_username -P mqtt_password -t cmnd/eq3_devices/EQ3/001A2216A458/setprofile -m "2 12.5-06:00,21.0-21:00,12.0-24:00"
/usr/bin/mosquitto_pub  -h <mqtt_ip> -p 1883 -u mqtt_username -P mqtt_password -t cmnd/eq3_devices/EQ3/001A2216A458/setprofile -m "3 12.5-06:00,21.0-21:00,12.0-24:00"
/usr/bin/mosquitto_pub  -h <mqtt_ip> -p 1883 -u mqtt_username -P mqtt_password -t cmnd/eq3_devices/EQ3/001A2216A458/setprofile -m "4 12.5-06:00,21.0-21:00,12.0-24:00"
/usr/bin/mosquitto_pub  -h <mqtt_ip> -p 1883 -u mqtt_username -P mqtt_password -t cmnd/eq3_devices/EQ3/001A2216A458/setprofile -m "5 12.5-06:00,20.0-21:00,12.0-24:00"
/usr/bin/mosquitto_pub  -h <mqtt_ip> -p 1883 -u mqtt_username -P mqtt_password -t cmnd/eq3_devices/EQ3/001A2216A458/setprofile -m "6 12.5-06:00,20.0-21:00,12.0-24:00"

Battery consumption is mostly caused by the motor that drives the valve. Also keep in mind that, unless you disable BLE on the device, it will transmit the messages every so many seconds (so even when you are not listening, it still sends the message anyway). I’ve got 9 devices which are being polled for an update 5 every 5 minutes during the last months and the batteries are still have a status of good.

Also, the battery condition is part of the mqtt message, so you should know when it is due for replacement.

I think the BLE is very low energy and even when it sends commands it’s done in 3ms compared to few hundred ms in old bluetooth.

Hmmm, maybe I will give it a try. Do you know how often HA pulls the info from the thermostats? Is it time based or obly before/after every command and whenever a user opens the UI?
In the FHEM original module, I think this was customizable and was every 2 hours or so by default.

The ESP32 implementation polls the EQ3’s every ~5 minutes. HA is simply waiting for the MQTT messages, so it should be updated every 5 mins as well (unless you have multiple overlapping ESP32’s, then it might be more frequent).

Okay, that seems a bit excessive given that the thermostat does not report back any measured temperature that might need monitoring.
But since it does not seem to drain the battery too much, why change it.

I am actually talking about the eq3smart integration that is linked in this thread. I need to check out what the ESP32 implementation is then.

I always had BLE disabled before since the app does not allow unlimited time settings. Only 5 state changes per day or something like that. The device itself has no such restrictions.

I would have preferred in device changes because it is then independent of any power outage, server maintenance etc. And probably consumes a little less power. But I can live with either of course :slight_smile:

EDIT: Okay, ESP32 is for the something else. I am running a RPi 4 with HA supervised. And I am using the RPi’s bluetooth interface.

I have the feeling that the connection is pretty unreliable.

I keep getting


Updating the state failed: Failed to connect to peripheral 00:de:22:08:45:75, addr type: public
1:35:56 PM – (WARNING) eq3btsmart - message first occurred at 11:00:58 AM and shows up 100 times
Updating eq3btsmart climate took longer than the scheduled update interval 0:01:00
1:35:21 PM – (WARNING) Climate - message first occurred at 11:04:20 AM and shows up 77 times

Sometimes all three of my thermostats are available, sometimes only one. Quite often it is the same one that is available (btw, the one farthest away from the RPi).

Anybody experienced anything similar?

Which is the reason that we decided to develop the ESP32 based. In most cases the connectivity to the EQ3 will be better as you can place one or more ESP32 around the house.

Also, I’m surprised with the mac address that you are showing in your logs, all EQ3 trv’s that I’ve seen are starting with “00:1A:22”

Never post a real MAC address on a public forum :wink:

The ESP32 has built in wifi and bluetooth? So it communicates with the thermostat via BLE and with the RPi via Wifi?

Yes, the ESP32 has wifi and BLE

The ESP32 acts as a proxy between the TRV and the HA instance using wifi and MQTT.
The software on the ESP32 is Tasmota (download from the 28/02/2021 post as it’s not part of the public release).

One quick question: which is the correct ESP32 ?
Is there one that can also be used with a battery so I don’t need another power supply?

Most of the ESP32 units should work.

Personally I’ve used 3 different ones: ESP32­WROOM­32D. ESP32­WROOM­32U and the ESP32 CAM module as well as the new SONOFF DUALR3 (a bit troublesome to flash).

As these units are wifi based, battery is most likely not going to work. Someone has tried deepsleep etc, but with a low success rate.

@YJB
I have now flashed the tasmota32-bluetooth.bin and can see the eQ-3s in the BLE configuration. But how do I actually connect the ESP32-WROOM-32D to them? And how do I then have to setup Home Assistant to go through the ESP32?
I saw that there was a special driver in development but is it now part of the “-bluetooth” firmware or is it a dedicated one? I could not find the answer to that.

Current module configuartion is ESP32 DevKit (1).

Thank you :slight_smile: