Awesome
EQ3 Bluetooth Smart Thermostat
A modernized temporary replacement for the native Home Assistant component.
Installation
Option 1: HACS Link
Option 2: HACS
- Or
HACS
>Integrations
>⋮
>Custom Repositories
Repository
: paste the url of this repoCategory
: Integration- Click
Add
- Close
Custom Repositories
modal - Click
+ EXPLORE & DOWNLOAD REPOSITORIES
- Search for
dbuezas_eq3btsmart
- Click
Download
- Restart Home Assistant
Option 2: Manual copy
- Copy the
dbuezas_eq3btsmart
folder insidecustom_components
of this repo to/config/custom_components
in your Home Assistant instance - Restart Home Assistant
Adding devices
- Go to
Settings
>Integrations
- Either wait for automatic discovery,
<img width="290" alt="image" src="https://user-images.githubusercontent.com/777196/204042747-633106fb-f63c-439a-9dea-802df341e45d.png">
<img width="290" alt="image" src="https://user-images.githubusercontent.com/777196/204042753-6d08d4b2-d220-4d9b-9fd9-35ca57b5acc9.png">
or click + ADD INTEGRATION
and search for dbuezas_eq3btsmart
- Addition will succeed immediately, so give the entity some minutes to connect to the thermostat
Pairing issues
See here https://github.com/rytilahti/python-eq3bt#pairing
Device entities
<img width="685" alt="image" src="https://user-images.githubusercontent.com/777196/202929567-04d769f4-8f43-4032-9036-446ad447512b.png">Setting schedules
The internal schedules of the Auto mode can be set via a service. Use Devices or Areas as target, not entities.
<img width="445" alt="image" src="https://user-images.githubusercontent.com/777196/204042126-b0e434cb-eceb-487b-bf0c-7ce178904622.png">Viewing schedules
There is a button to fetch the schedules from the thermostats. These are shown as attributes of that button.
<img width="385" alt="image" src="https://user-images.githubusercontent.com/777196/204042508-2d95e613-76f3-4b14-b6e4-944de487a9ed.png">Setting Vacation Mode / Away Mode
There is a service to set up Away mode (vacation) with an end date/time, and target temperature.
Use Devices or Areas as target, not entities.
<img width="445" alt="image" src="https://user-images.githubusercontent.com/777196/222268603-a312f691-2174-43c0-a14e-0790f19db929.png">To easily set all thermostats to away you can combine it with an input timedate helper and a script and add them to lovelace like this:
<img width="445" alt="image" src="https://user-images.githubusercontent.com/777196/222269450-fef3a62c-70f0-4184-92ac-c1dc939753be.png">Device options
Most notably, you can select a specific bluetooth adapter, or limit to local ones.
<img width="420" alt="image" src="https://user-images.githubusercontent.com/777196/208250665-9cead674-6ea3-4260-aa3f-a3237196934b.png">Differences with the original component:
- It works in HA version > 2022.7
- Support for BTProxy thanks to @ignisf (make sure you configure
active: true
in the BTProxy). - Supports auto discovery
- Supports adding via config flow (UI)
- Fixes setting operation mode
- Allows to turn off by setting temp to 4.5°
- Retries (10 times) when you change a thermostat attribute.
[x] Push instead of Pull. It updates on bluetooth advertisement instead of polling every x minutes (seems to generate less unsuccessful tries)- Connections are persistent (this may or may not reduce the battery life, but it makes the thermostats more responsive)
- Fully uses asyncio (less resource intensive)
-
Current Temperature
updates immediately, regardless of when the bluetooth connection is made. The component will apply the change as soon as it can connect with the device. - Service to fetch heating schedules and serial inside the thermostat
- Only one concurrent request per thermostat
- Service to set the heating schedules
[ ] Support for installing via yaml[ ] Support pairing while adding entity- All features of the thermostat are exposed as entities
- Bluetooth adapter, scan interval, etc are configurable.
Previous Art
This is heavily based on https://github.com/rytilahti/python-eq3bt and https://github.com/home-assistant/core/tree/dev/homeassistant/components/eq3btsmart and it should ideally be two PRs instead. Unfortunately, the changes go too deep and remove support for the CLI and other backends. Therefore, here's a self contained custom component instead.