CometBlue
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.
Compatible devices
Comet Blue radiator controllers are sold under different names:
| "Manufacturer" | Model | Tested |
|---|---|---|
| Eurotronic | Comet Blue | :heavy_check_mark: |
| Sygonix | HT100 BT | :heavy_check_mark: |
| Xavax | Hama | :grey_question: |
| Silvercrest | RT2000BT | :grey_question: |
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.
Installation
Just
pip install eurotronic-cometblue-ha
Usage
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 |
:warning: the device applies set values when the connection is closed, not directly after setting them
Examples
Use CometBlueAsync and [method_name]_async for asynchronous handling.
Instantiating and retrieving the current temperature
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
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
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})
Credits:
- 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
Metadata
Release files for eurotronic-cometblue-ha 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eurotronic_cometblue_ha-1.4.0.tar.gz | 14.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eurotronic_cometblue_ha-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.4 kB
Release files / eurotronic_cometblue_ha-1.4.0.tar.gz
| Download URL | eurotronic_cometblue_ha-1.4.0.tar.gz |
|---|---|
| Size | 14.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b6d3e0dacc1962b72315ed6705fcdb16c9e7031fd85e07c38c9aa9755a925c8
|
|
BLAKE2b-256 checksum How to use checksums |
60120064b26a35a4c0198f13c74e7ac28b3c9070d8e0bcb363b53cb373c10978
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 14, 2026.
Transparency logRelease files / eurotronic_cometblue_ha-1.4.0-py3-none-any.whl
| Download URL | eurotronic_cometblue_ha-1.4.0-py3-none-any.whl |
|---|---|
| Size | 12.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9c0f31af84279c6739946c98472e62beff606d36aceadf1f8dd2576069920be3
|
|
BLAKE2b-256 checksum How to use checksums |
acdb4930419dd8c9f6a315a69fc78b6310e8b33370ff278d8a8fdb0289a253ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 14, 2026.
Transparency log