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.4

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.4
File Size Uploaded
ovum_mira_modbus-0.0.4.tar.gz 19.8 kB Details

Built distribution (wheel)

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

Total release size: 39.8 kB

Release files / ovum_mira_modbus-0.0.4.tar.gz

Download URL ovum_mira_modbus-0.0.4.tar.gz
Size 19.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b05b92a62923017b2a51f6615183c5f41d6785ec54c5da7b8b7e9bf5d53d664d
BLAKE2b-256 checksum
How to use checksums
926c472d7684644f6da3e60fe72748edc8865ce9367f1d0c294fe0ade8a9bf45
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 15, 2026.

Transparency log

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

Download URL ovum_mira_modbus-0.0.4-py3-none-any.whl
Size 20.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
40d174e35d9fe48bd6b12480287e082e7e61d7f03aab8cbf482ff2cc42155b90
BLAKE2b-256 checksum
How to use checksums
4d06989aa73b449cb68fecb2c6cbb498d0427ed5cfe0d9770b624af22f5a5b1e
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 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.0.6

2 release files

0.0.5

2 release files

This release

0.0.4 This release

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