Skip to main content

Async client library for Helty Flow VMC (mechanical ventilation) units with the smart Wi-Fi interface

Project description

pyhelty

Async Python client for Helty Flow VMC (mechanical ventilation / MVHR) units equipped with the smart Wi-Fi interface, such as the Flow Plus.

It speaks the unit's reverse-engineered TCP protocol (default port 5001) and exposes a small, fully typed asyncio API. It is the device-communication layer behind the Home Assistant helty integration; it has no Home Assistant dependency and can be used standalone.

The protocol has no official specification. Behaviour is reverse-engineered from a real Helty FlowPlus; your mileage may vary on other models.

Install

pip install pyhelty

Usage

import asyncio
from pyhelty import HeltyClient, FanMode

async def main() -> None:
    client = HeltyClient("192.168.1.50")  # port defaults to 5001

    data = await client.async_get_data()
    print(data.name, data.fan_mode, data.indoor_temperature, data.indoor_humidity)

    await client.async_set_fan_mode(FanMode.NIGHT)
    await client.async_set_led(False)

asyncio.run(main())

API

  • HeltyClient(host, port=5001, *, timeout=10.0)
  • async_get_name() -> str — the user-assigned name (also used as a stable id)
  • async_get_data() -> HeltyData — name, fan mode, LED state, indoor/outdoor temperature, indoor humidity, plus the raw VMGI/VMGO integer fields for fields not yet decoded
  • async_set_fan_mode(mode: FanMode)OFF, LOW, MEDIUM, HIGH, MAX, BOOST, NIGHT, FREE_COOLING
  • async_set_led(on: bool)
  • async_reset_filter()

Errors derive from HeltyError: HeltyConnectionError, HeltyResponseError, HeltyCommandError.

Protocol notes

Command Purpose Reply
VMNM? device name VMNM <name>
VMGI? sensors (15 fields, tenths) VMGI,<indoor_t>,<outdoor_t>,<indoor_rh>,...
VMGH? status (15 fields) VMGO,<fan_mode>,<led>,...
VMWH000000<n> set fan mode n (0-7) OK
VMWH0100010 / VMWH0100000 LED on / off OK
VMWH0417744 reset filter counter OK

The unit serves one command per TCP connection and then closes it; the client serialises commands with a lock.

Development

pip install -e ".[test,dev]"
pytest
ruff check .
mypy src

License

MIT

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

pyhelty-0.1.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

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

pyhelty-0.1.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file pyhelty-0.1.0.tar.gz.

File metadata

  • Download URL: pyhelty-0.1.0.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelty-0.1.0.tar.gz
Algorithm Hash digest
SHA256 75b9d98c1a2f026832084186a1e122aefbb0eda91855c71865947ba3cde78951
MD5 4e7abf4a2975b0c4cc7ef583dafffa65
BLAKE2b-256 197c3e4e6965a55e00813e6c91db89022bb24264d1e5a4181a306c5b94eba769

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelty-0.1.0.tar.gz:

Publisher: release.yml on ebaschiera/pyhelty

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

File details

Details for the file pyhelty-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyhelty-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelty-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e2de6055593c30853fe1bc485c1c19ee67fd98d4f3dbb8b805374b389a69aee4
MD5 1eb02ee8d08e20e4023053cc0734c42d
BLAKE2b-256 5c179db2dca85911f9a1583fde07def542dafc8daf41db3ea5b8096dcce51d33

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelty-0.1.0-py3-none-any.whl:

Publisher: release.yml on ebaschiera/pyhelty

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