eurotronic-cometblue-ha is a library to communicate with your Eurotronic GmbH Comet Blue radiator controllers.
Note
This library is a fork of zero-udo/eurotronic-cometblue with changes specifically for using it in a Home Assistant custom component. For changes, see zero-udo/eurotronic-cometblue#8.
The device supports up to four programmable schedules for each weekday. Longer periods can be set as holidays. There are 8 holiday slots available. It depends on bleak and bleak-retry-connector and runs therefore on Linux, Windows and macOS in addition to the Home Assistant component.
Comet Blue radiator controllers are sold under different names:
| "Manufacturer" | Model | Tested |
|---|---|---|
| Eurotronic | Comet Blue | ✔️ |
| Sygonix | HT100 BT | ✔️ |
| Xavax | Hama | ❔ |
| Silvercrest | RT2000BT | ❔ |
This library should work with all listed radiator controllers, but is only tested with a Sygonix HT100BT which is the only one I own.
If your device is not listed here but looks similar (or you know it is a rebranded Comet Blue), or if you are able to test this library with another device - let me know your results.
Just
pip install eurotronic-cometblue-ha
Import the library and instantiate an object.
Parameters are the device MAC-Address and the (optional) PIN. Depending on your connection quality you can specify a longer or shorter discovery duration.
| Parameter | required? | default value |
|---|---|---|
| mac | yes | None |
| pin | no | 0 |
| timeout | no | 2 |
from eurotronic_cometblue_ha import CometBlue
blue = CometBlue(mac="00:00:00:00:00:00", pin=123456, timeout=2)or
from eurotronic_cometblue_ha import AsyncCometBlue
blue = AsyncCometBlue(mac="00:00:00:00:00:00", pin=123456, timeout=2)for an asynchronous client.
The following (synchronous) methods are available, for the asynchronous variants add _async:
| Method | Parameter | Return Value |
|---|---|---|
get_temperature |
None | dict with
|
set_temperature |
dict with the same values as get_temperature. Not all values have to be set. |
None |
get_battery |
None | int - Battery value in percent |
get_datetime |
None | datetime - currently set date and time of the device. Used for schedules |
set_datetime |
An optional datetime-object. The current date and time is used if the parameter is omitted. |
None |
get_weekday |
A Weekday-Enum value eg. Weekday.MONDAY |
dict with start# and end# (# = 1-4) keys and the time as HH:mm formatted strs as values |
set_weekday |
A Weekday-Enum value eg. Weekday.MONDAY and a dict containing start# and end# (# = 1-4) as keys and HH:mm formatted strs as values |
None |
get_holiday |
int 1-8 to select the holiday period |
dict with
|
set_holiday |
dict with the same values as get_holidays return value. |
None |
get_manual_mode |
None | True if manual mode is set. False if the schedule is used |
set_manual_mode |
boolean - True if manual mode should be used. False if the schedule should be used |
None |
get_multiple |
Retrieves multiple values specified in a list. Valid values are:
|
The values as a dict in the format defined by the appropriate methods |
discover |
timeout: int, timeout used for discovery |
MAC-addresses of all discovery Comet Blue devices |
Use CometBlueAsync and [method_name]_async for asynchronous handling.
from eurotronic_cometblue_ha import CometBlue
blue = CometBlue("00:00:00:00:00:00", 123456)
blue.connect()
temp = blue.get_temperature()
print(temp)
blue.disconnect()or
from eurotronic_cometblue_ha import CometBlue
with CometBlue("00:00:00:00:00:00", 123456) as blue:
temp = blue.get_temperature()
print(temp)results in
{
'currentTemp': 24.5,
'manualTemp': 16.0,
'targetTempLow': 16.0,
'targetTempHigh': 20.0,
'tempOffset': 0.0,
'windowOpen': True,
'windowOpenMinutes': 10
}Setting a new schedule for Mondays with two heating periods:
-
Period 1 from 06:00 to 08:00
-
Period 2 from 16:00 to 22:00
All unmentioned periods (periods 3 and 4) will be disabled (start and end set to 00:00).
Set periods will be consolidated, meaning setting only period 3 via this method will write period 1 and disable the others.
To use this schedule, make sure to disable manual mode.
blue.set_weekday(Weekday.MONDAY,
{"start1": "06:00", "end1": "08:00",
"start2": "16:00", "end2": "22:00"})
blue.set_manual_mode(False)Setting a holiday (slot 2) from 26th December 2020 18:00 till 5th January 2021 14:00 and keep the temperature at 16.5 °C
blue.set_holiday(2, {"start": datetime(2020, 12, 26, 18),
"end": datetime(2021, 1, 5, 14),
"temperature": 16.5})- Thorsten Tränker for his reverse engineering work done here
- @zero-udo for the inital library zero-udo/eurotronic-cometblue
- @FloSchmidt for checking the Eurotronic Comet Blue
- @rikroe for the switch to bleak