Skip to main content

Python client for Dimplex heating controllers (GDHV IoT)

Project description

Dimplex Controller Python Client

PyPI Tests Downloads Python 3.10+ License: MIT GitHub

A Python asyncio client for controlling Dimplex heating systems (GDHV IoT).

Features

  • Authentication: Easy login flow and automatic token refresh (Azure B2C).
  • Discovery: List Hubs, Zones, and Appliances associated with your account.
  • Detailed Status: Fetch real-time data including room temperature, setpoints, comfort status, and active boost settings.
  • Control:
    • Set operation modes (Manual, Timer, Frost Protection).
    • Activate Boost and Away modes.
    • Toggle EcoStart and Open Window Detection.
    • Program heating schedules (Timer Periods).

Installation

This project is managed with Poetry.

git clone <repo-url>
cd dimplex-controller-py
poetry install

Getting Started

1. Initial Authentication

Due to the nature of the Azure B2C flow, you must perform the initial login manually to capture an authorization code.

Run the demo script to guide you through the process:

poetry run python demo.py

Follow the on-screen instructions. Once successful, a dimplex_tokens.json file will be created, allowing the library to authenticate automatically in the future.

2. Basic Usage

import asyncio
import aiohttp
from dimplex_controller import DimplexControl

async def main():
    async with aiohttp.ClientSession() as session:
        # Pass tokens from dimplex_tokens.json or just the refresh_token
        client = DimplexControl(session, refresh_token="YOUR_REFRESH_TOKEN")

        # Get Hubs
        hubs = await client.get_hubs()
        for hub in hubs:
            print(f"Hub: {hub.Name}")

            # Get Zones and Appliances
            zones = await client.get_hub_zones(hub.HubId)
            for zone in zones:
                print(f"  Zone: {zone.ZoneName}")

if __name__ == "__main__":
    asyncio.run(main())

3. Advanced Operations

Get Real-time Status

# Fetch status for a list of appliance IDs
status_list = await client.get_appliance_overview(hub_id, ["appliance_id_1", "appliance_id_2"])

for status in status_list:
    print(f"Temp: {status.RoomTemperature}°C, Target: {status.ActiveSetPointTemperature}°C")
    print(f"EcoStart: {status.EcoStartEnabled}")

Control Features

from dimplex_controller.models import ApplianceModeSettings

# Enable EcoStart
await client.set_eco_start(hub_id, [appliance_id], True)

# Enable Open Window Detection
await client.set_open_window_detection(hub_id, [appliance_id], True)

# Activate Boost (Mode 16, Status 1 = On)
boost_settings = ApplianceModeSettings(ApplianceModes=16, Status=1, Temperature=25.0)
await client.set_appliance_mode(hub_id, [appliance_id], boost_settings)

Development & API Reference

  • openapi.yaml: This file contains the most complete technical specification of the API discovered so far. It includes all known endpoints, request bodies, and response schemas.
  • Traffic Logs: If you identify new features in the mobile app, capture the traffic and add the endpoints to openapi.yaml and the DimplexControl client.

Disclaimer

This is an unofficial library and is not affiliated with or endorsed by Glen Dimplex Heating & Ventilation (GDHV). Use it at your own risk.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dimplex_controller-0.4.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dimplex_controller-0.4.0-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file dimplex_controller-0.4.0.tar.gz.

File metadata

  • Download URL: dimplex_controller-0.4.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dimplex_controller-0.4.0.tar.gz
Algorithm Hash digest
SHA256 0adf1fc7b9244ba5f94afe76a65a30735df398ec1749697a9b641711d2c44e12
MD5 37b217799dff8131bde0b9bb9bb92f0d
BLAKE2b-256 2a013276c2a16e31bcad38c9baf69d163933ebef933ed3733c2baa6af848f845

See more details on using hashes here.

Provenance

The following attestation bundles were made for dimplex_controller-0.4.0.tar.gz:

Publisher: publish-to-pypi.yml on KRoperUK/dimplex-controller-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dimplex_controller-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dimplex_controller-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 93972967cb284f6e1549052632fc6e891fc3196b20c03de9ed4b1a5af8171e99
MD5 fa41fe2575ca30b516d6a9a981c6dda2
BLAKE2b-256 84d7fc8eb0d4dbd9a5dbb2918cecb16f52364d3073a110a2f3738aac5f4f5db7

See more details on using hashes here.

Provenance

The following attestation bundles were made for dimplex_controller-0.4.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on KRoperUK/dimplex-controller-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page