# PyPlumIO is a native ecoNET library for Plum ecoMAX controllers
[](https://badge.fury.io/py/PyPlumIO)
[](https://pypi.python.org/pypi/pyplumio/)
[](https://github.com/denpamusic/PyPlumIO/actions/workflows/ci.yml)
[](https://qlty.sh/gh/denpamusic/projects/PyPlumIO)
[](https://qlty.sh/gh/denpamusic/projects/PyPlumIO)
[](https://guidelines.denpa.pro/stability#release-candidate)
[](https://github.com/astral-sh/ruff)
## Overview
This package aims to provide complete and easy to use solution for
communicating with climate devices by [Plum Sp. z o.o.](https://www.plum.pl/)

Currently it supports reading and writing parameters of ecoMAX controllers by
Plum Sp. z o.o., getting service password and sending network information to
show on controller's display.
Devices can be connected directly via RS-485 to USB adapter or
through network by using RS-485 to Ethernet/WiFi converter.

## Table of contents
- [Connecting](https://pyplumio.denpa.pro/connecting.html)
- [Reading](https://pyplumio.denpa.pro/reading.html)
- [Writing](https://pyplumio.denpa.pro/writing.html)
- [Callbacks](https://pyplumio.denpa.pro/callbacks.html)
- [Mixers/Thermostats](https://pyplumio.denpa.pro/mixers_thermostats.html)
- [Schedules](https://pyplumio.denpa.pro/schedules.html)
- [Protocol](https://pyplumio.denpa.pro/protocol.html)
- [Frame Structure](https://pyplumio.denpa.pro/protocol.html#frame-structure)
- [Requests and Responses](https://pyplumio.denpa.pro/protocol.html#requests-and-responses)
- [Communication](https://pyplumio.denpa.pro/protocol.html#communication)
- [Versioning](https://pyplumio.denpa.pro/protocol.html#versioning)
- [Supported frames](https://pyplumio.denpa.pro/frames.html)
## Quickstart
1. To use PyPlumIO, first install it using pip:
```bash
pip install pyplumio
```
2. Connect to the ecoMAX controller:
```python
>>> connection = pyplumio.open_serial_connection("/dev/ttyUSB0")
>>> await connection.connect()
>>> ecomax = await connection.get("ecomax")
```
3. Print some values:
```python
>>> print(await ecomax.get("heating_temp"))
```
4. Don’t forget to close the connection:
```python
>>> await connection.close()
```
## Home Assistant Integration
There is companion Home Assistant integration that is being co-developed with
this package and depends on it. Click button below to check it out.
[](https://github.com/denpamusic/homeassistant-plum-ecomax)
## Attribution
Special thanks to [econetanalyze](https://github.com/twkrol/econetanalyze)
project by twkrol for initial information about protocol.
## License
This product is distributed under MIT license.
Raw data
{
"_id": null,
"home_page": null,
"name": "PyPlumIO",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "home, automation, heating",
"author": null,
"author_email": "Denis Paavilainen <denpa@denpa.pro>",
"download_url": "https://files.pythonhosted.org/packages/3c/7b/e018a8ae3a4606d90022b22a8f6f9638fd44ac0f81841dc718a8347cf4fa/pyplumio-0.6.2.tar.gz",
"platform": "any",
"description": "# PyPlumIO is a native ecoNET library for Plum ecoMAX controllers\n\n[](https://badge.fury.io/py/PyPlumIO)\n[](https://pypi.python.org/pypi/pyplumio/)\n[](https://github.com/denpamusic/PyPlumIO/actions/workflows/ci.yml)\n[](https://qlty.sh/gh/denpamusic/projects/PyPlumIO)\n[](https://qlty.sh/gh/denpamusic/projects/PyPlumIO)\n[](https://guidelines.denpa.pro/stability#release-candidate)\n[](https://github.com/astral-sh/ruff)\n\n## Overview\n\nThis package aims to provide complete and easy to use solution for\ncommunicating with climate devices by [Plum Sp. z o.o.](https://www.plum.pl/)\n\n\n\nCurrently it supports reading and writing parameters of ecoMAX controllers by\nPlum Sp. z o.o., getting service password and sending network information to\nshow on controller's display.\n\nDevices can be connected directly via RS-485 to USB adapter or\nthrough network by using RS-485 to Ethernet/WiFi converter.\n\n\n\n## Table of contents\n\n- [Connecting](https://pyplumio.denpa.pro/connecting.html)\n- [Reading](https://pyplumio.denpa.pro/reading.html)\n- [Writing](https://pyplumio.denpa.pro/writing.html)\n- [Callbacks](https://pyplumio.denpa.pro/callbacks.html)\n- [Mixers/Thermostats](https://pyplumio.denpa.pro/mixers_thermostats.html)\n- [Schedules](https://pyplumio.denpa.pro/schedules.html)\n- [Protocol](https://pyplumio.denpa.pro/protocol.html)\n - [Frame Structure](https://pyplumio.denpa.pro/protocol.html#frame-structure)\n - [Requests and Responses](https://pyplumio.denpa.pro/protocol.html#requests-and-responses)\n - [Communication](https://pyplumio.denpa.pro/protocol.html#communication)\n - [Versioning](https://pyplumio.denpa.pro/protocol.html#versioning)\n- [Supported frames](https://pyplumio.denpa.pro/frames.html)\n\n## Quickstart\n\n1. To use PyPlumIO, first install it using pip:\n\n```bash\npip install pyplumio\n```\n\n2. Connect to the ecoMAX controller:\n\n```python\n>>> connection = pyplumio.open_serial_connection(\"/dev/ttyUSB0\")\n>>> await connection.connect()\n>>> ecomax = await connection.get(\"ecomax\")\n```\n\n3. Print some values:\n\n```python\n>>> print(await ecomax.get(\"heating_temp\"))\n```\n\n4. Don\u2019t forget to close the connection:\n\n```python\n>>> await connection.close()\n```\n\n## Home Assistant Integration\n\nThere is companion Home Assistant integration that is being co-developed with\nthis package and depends on it. Click button below to check it out.\n\n[](https://github.com/denpamusic/homeassistant-plum-ecomax)\n\n## Attribution\n\nSpecial thanks to [econetanalyze](https://github.com/twkrol/econetanalyze)\nproject by twkrol for initial information about protocol.\n\n## License\n\nThis product is distributed under MIT license.\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "PyPlumIO is a native ecoNET library for Plum ecoMAX controllers.",
"version": "0.6.2",
"project_urls": {
"Bug Tracker": "https://github.com/denpamusic/PyPlumIO/issues",
"Documentation": "https://pyplumio.denpa.pro",
"Source Code": "https://github.com/denpamusic/PyPlumIO"
},
"split_keywords": [
"home",
" automation",
" heating"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "28e104b92044eb49f32a651fd96dbf35f542b3c6bdf8a3e4e19e0b65124f07df",
"md5": "4daf0e8d9ed2384e848f7aa96e0acae7",
"sha256": "d829bf2323930fc5d4e7a82102de7d4bcb94426cdb4b141420a6ca957d03a820"
},
"downloads": -1,
"filename": "pyplumio-0.6.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4daf0e8d9ed2384e848f7aa96e0acae7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 72380,
"upload_time": "2025-10-11T22:35:34",
"upload_time_iso_8601": "2025-10-11T22:35:34.067870Z",
"url": "https://files.pythonhosted.org/packages/28/e1/04b92044eb49f32a651fd96dbf35f542b3c6bdf8a3e4e19e0b65124f07df/pyplumio-0.6.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3c7be018a8ae3a4606d90022b22a8f6f9638fd44ac0f81841dc718a8347cf4fa",
"md5": "15d75ce4bfff5b264822539fbca7d59c",
"sha256": "ad97715e4ed51678025ef9cf3d1108025bb76792079801b4345a5fd14fd20154"
},
"downloads": -1,
"filename": "pyplumio-0.6.2.tar.gz",
"has_sig": false,
"md5_digest": "15d75ce4bfff5b264822539fbca7d59c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 285654,
"upload_time": "2025-10-11T22:35:35",
"upload_time_iso_8601": "2025-10-11T22:35:35.616259Z",
"url": "https://files.pythonhosted.org/packages/3c/7b/e018a8ae3a4606d90022b22a8f6f9638fd44ac0f81841dc718a8347cf4fa/pyplumio-0.6.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-11 22:35:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "denpamusic",
"github_project": "PyPlumIO",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "pyserial-asyncio",
"specs": [
[
"==",
"0.6"
]
]
}
],
"lcname": "pyplumio"
}