Skip to main content

ovum-mira-modbus

CI PyPI Python License

A modern Python device library for communicating with Ovum Mira heat pump systems over Modbus TCP.

This is not an official library and not sponsored by Ovum.


Overview

Ovum Mira heat pump systems expose Modbus communication across multiple Modbus units:

  • System Unit (110, "HSM"): Heating manager registers:
    • System outdoor temperature
    • Heating Circuit 1 (HK1): target setpoint, actual flow temperature, room temperature
    • Hot Water (DHW / Warmwasser): reservoir target setpoint, top actual temperature, bottom actual temperature
    • Buffer Storage (Pufferspeicher): target setpoint, actual buffer temperature
  • Heat Pump Unit (111-118, "WPM"): Heat pump specific registers:
    • Operating status (HEATING, HOT_WATER, COOLING, DEFROSTING, etc.)
    • Electrical power consumption (kW)
    • Thermal power production (kW)
    • Heat pump demand percentage (%)

Installation

pip install ovum-mira-modbus

To include the CLI query tool and actual Modbus backend:

pip install "ovum-mira-modbus[cli]"

Development

Use bin/install.sh to get a local development setup.


Quickstart

Example usage

from modbus_connection import (
    ModbusConnection,
    ModbusError,
    ModbusTcpParams,
)

from modbus_connection.tmodbus import TmodbusConnection

from ovum_mira_modbus import (
    OvumMira,
    OvumLicense,
)


async def main():
    connection = TmodbusConnection(ModbusTcpParams(host="192.168.1.100", port=502))
    await connection.connect()

    # specify the license level (default: 1) according to your local device
    device = OvumMira(license=OvumLicense(2), wpm_unit=111)
    await device.async_update()

    print(f"Outdoor Temperature: {device.hsm.outdoor_temperature} °C")
    print(f"Heat Pump Status: {device.heat_pump.status.name}")
    print(f"Power Consumption: {device.heat_pump.power_consumption} kW")
    print(f"Heat Production: {device.heat_pump.power_production} kW")
    print(
        f"HK1 Flow / Target: {device.heating1.temperature} / {device.heating1.target_temperature} °C"
    )
    print(
        f"DHW Top / Target: {device.hot_water.reservoir_temperature_top} / {device.hot_water.target_temperature} °C"
    )

    # set hot water target temperature to 60 °C
    await device.hot_water.async_write_datapoint("temperature_target", 60)
    # set heating circuit photovoltaic target temperature to 25.5 °C
    await device.heating1.async_write_datapoint("room_temperature_target", 25.5)

CLI Tools

bin/query.sh

Use this script to print all known components and their values, filtered by license level, or only one specific value:

bin/query.sh IP_OR_HOST [-u HEATPUMP_UNIT] [-p PORT] [-l LICENSE_LEVEL] [--probe] [-a ATTRIBUTE]

Examples

  • bin/query.sh 192.168.1.100 --probe
  • bin/query.sh 192.168.1.100
  • bin/query.sh 192.168.1.100 --level=2 -a heating1.cooling_room_temperature_target

bin/write.sh

Use this script to write a value to component:

bin/write.sh IP_OR_HOST [-u HEATPUMP_UNIT] [-p PORT] [-l LEVEL] component.attribute

Examples

  • bin/write.sh 192.168.1.100 heating1.cooling_room_temperature_target 22.5

Architecture

  • OvumMira: Top-level device class coordinating communication across both Modbus units.
  • subsystems.Hsm: Hydraulic unit (indoor system)
  • subsystems.HeatingCircuit: Target setpoint, actual flow temperature, and measured room temperature.
  • subsystems.HotWater: Tank setpoint, top sensor, and bottom sensor.
  • subsystems.BufferStorage: Buffer setpoint and actual temperature.
  • subsystems.HeatPump: Heat pump status enum, power consumption, heat production, and demand.

AI

This repository was initially generated pointing AI at the blog post describing new features in Home Assistant's Modbus implementation. The results were full of hallucinations and needed a lot of work.

Most structuring and implementation hints were taken from https://github.com/Tom-Bom-badil/trovis-modbus/.

Further development, adaptations, fixes, etc. were done without any AI.

License

Apache License 2.0. See LICENSE for details.

Release files for ovum-mira-modbus 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovum-mira-modbus 0.0.5
File Size Uploaded
ovum_mira_modbus-0.0.5.tar.gz 20.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ovum-mira-modbus 0.0.5
File Interpreter ABI Platform
ovum_mira_modbus-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 40.2 kB

Release files / ovum_mira_modbus-0.0.5.tar.gz

Download URL ovum_mira_modbus-0.0.5.tar.gz
Size 20.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3e27854810ff148fd9dae4255fe2afcd35633c29b359e6b5ad3b636b4a84c35a
BLAKE2b-256 checksum
How to use checksums
f4585cc7ba74610907a3e5641428fbea4b3f65784ef166d3967604c40f153a91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 21, 2026.

Transparency log

Release files / ovum_mira_modbus-0.0.5-py3-none-any.whl

Download URL ovum_mira_modbus-0.0.5-py3-none-any.whl
Size 20.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a52e9d7dbd9954b7b82b86fc393f8f151776d856ede3b83f9bf48d61a71cf430
BLAKE2b-256 checksum
How to use checksums
fb28763ef82907360a7f7f0bc9aeb58ba00eb85e7ab025fd94dc8bd0f9fb777b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

0.0.6

2 release files

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page