Async Python client for De'Longhi 'My Comfort Hub' (Daedalus) connected heaters
Project description
delonghi-comfort
Async Python client for De'Longhi "My Comfort Hub" (Daedalus platform) connected
heaters — e.g. the Dragon 5 Connect (TRD51024WIFI.G).
It authenticates with Gigya, discovers your appliances, reads live state from the AWS IoT
device shadow, and sends control commands over MQTT. It is transport-friendly for Home
Assistant: bring your own aiohttp session and the library stays framework-agnostic.
⚠️ Unofficial. Built by reverse-engineering the public app for interoperability with hardware you own. Not affiliated with or endorsed by De'Longhi. API keys shipped here are app-global public client identifiers (like OAuth client IDs), not user secrets.
Installation
pip install delonghi-comfort
Usage
import asyncio
import aiohttp
from delonghi_comfort import DelonghiComfort
async def main() -> None:
async with aiohttp.ClientSession() as session:
client = DelonghiComfort(session=session)
await client.async_login("you@example.com", "password")
devices = await client.async_get_devices()
heater = devices[0]
print(heater.thing_name, heater.model, heater.online)
await client.async_connect(heater)
status = await client.async_get_status()
print("on:", status.is_on, "room:", status.current_temperature,
"target:", status.target_temperature)
# live push updates
client.add_status_listener(lambda s: print("update:", s.raw))
# control
await client.async_set_power(True)
await client.async_set_temperature(21)
await client.async_set_eco(True)
await client.async_close()
asyncio.run(main())
Persisting credentials
async_login stores a long-lived Gigya session in client.credentials. Persist it and
reconstruct the client without a password later:
client = DelonghiComfort(session=session, credentials=saved_credentials)
await client.async_refresh_jwt() # mint a fresh JWT from the stored session
Command reference
| Method | Message | Reported field |
|---|---|---|
async_set_power(bool) |
SetDeviceStatusRequest |
DeviceStatus |
async_set_temperature(int) |
SetRoomTempRequest_degC |
TempSetPoint |
async_set_eco(bool) |
SetEcoModeRequest |
PowerLimit |
async_set_child_lock(bool) |
SetLockModeRequest |
KeyLock |
async_set_night_mode(bool) |
SetNightModeRequest |
NightModeEnable |
async_set_silent(bool) |
SetSoundRequest |
SilentEnable |
async_set_brightness(0-3) |
SetBrightnessLevelRequest |
BrightnessLevel |
async_set_schedule_enabled(bool) |
SetScheduleEnRequest |
ScheduleEnable |
async_set_temp_unit(TemperatureUnit) |
SetTempUnitRequest |
TempUnit |
Read-only status telemetry (no control command exists): on_off_timer_minutes,
timer_remaining, timer_active, ota_progress, running_partition. (The shadow's
PowerLevel field is deliberately not surfaced — on real hardware it stays at 255
whether idle, in Eco, or at full power, so it carries no usable information.)
How it works
- Auth: Gigya
accounts.login→accounts.getJWT(OAuth1-signed), auto-probing pools. - Devices:
GET deviceson the AWS API Gateway, authorized by the JWT as a Bearer token. - Read: subscribe +
gettheMachineStatus/MachineCapabilitiesnamed shadows over MQTT 5 (TLS:443, ALPNmqtt, JWT custom authorizer). A unique client-id is used so the physical heater is never evicted. - Control: publish
{"Message": "...", "AppId": "Comfort", "Value": N, "RequestId": "..."}to<thing>/commands/requestand await the ack on<thing>/commands/response.
Development
uv sync
uv run pytest
uv run ruff check
uv run mypy delonghi_comfort
License
GPL-3.0-or-later.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file delonghi_comfort-0.2.0.tar.gz.
File metadata
- Download URL: delonghi_comfort-0.2.0.tar.gz
- Upload date:
- Size: 99.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f5c5a110886277d4bbb5f7e15fd820e0ecb3e07e5e17dd6b4821d988df8e39e
|
|
| MD5 |
cb709c4aae9c20cf0e365b4d9b655a86
|
|
| BLAKE2b-256 |
eb6baef83ba0ceb24419e805fbbabce9ea30e2e3366a0017cd1be90db859d7ba
|
Provenance
The following attestation bundles were made for delonghi_comfort-0.2.0.tar.gz:
Publisher:
publish.yml on comfort-hub/delonghi-comfort
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
delonghi_comfort-0.2.0.tar.gz -
Subject digest:
3f5c5a110886277d4bbb5f7e15fd820e0ecb3e07e5e17dd6b4821d988df8e39e - Sigstore transparency entry: 2193550260
- Sigstore integration time:
-
Permalink:
comfort-hub/delonghi-comfort@6371a164677d1b941c16106a5fcc5ce23e9a66aa -
Branch / Tag:
refs/heads/main - Owner: https://github.com/comfort-hub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6371a164677d1b941c16106a5fcc5ce23e9a66aa -
Trigger Event:
push
-
Statement type:
File details
Details for the file delonghi_comfort-0.2.0-py3-none-any.whl.
File metadata
- Download URL: delonghi_comfort-0.2.0-py3-none-any.whl
- Upload date:
- Size: 30.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fc1b529beb6e29adffb79f108361590cb51a596cba748d268754d660c3bfc36
|
|
| MD5 |
2ed67d1142e3f73bc9f5b6011eb3f629
|
|
| BLAKE2b-256 |
5528ef42ba8733d26e6d9de2810ae00eb7f9e3fa75ae61a3822ec80659793778
|
Provenance
The following attestation bundles were made for delonghi_comfort-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on comfort-hub/delonghi-comfort
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
delonghi_comfort-0.2.0-py3-none-any.whl -
Subject digest:
2fc1b529beb6e29adffb79f108361590cb51a596cba748d268754d660c3bfc36 - Sigstore transparency entry: 2193550272
- Sigstore integration time:
-
Permalink:
comfort-hub/delonghi-comfort@6371a164677d1b941c16106a5fcc5ce23e9a66aa -
Branch / Tag:
refs/heads/main - Owner: https://github.com/comfort-hub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6371a164677d1b941c16106a5fcc5ce23e9a66aa -
Trigger Event:
push
-
Statement type: