PyVLX - controlling VELUX windows with Python
PyVLX uses the Velux KLF 200 interface to control io-Homecontrol devices, e.g. Velux Windows.
Please note: The KLF 200 is discontinued by Velux and even though the KLF 150 is marketed as its replacement device, it does not work with this library (it is missing the local API) unfortunately.
Installation
PyVLX can be installed via:
pip3 install pyvlx
Development
Contributor setup and dependency generation are documented in DEVELOPMENT.md.
Home Assistant Plugin
PyVLX is used within Home Assistant. The HA Velux integration can be added in the HA UI.
Please note that to connect you need to use the WiFi password, not the web login.
For debugging frames enable debug logging for the Velux integration in the HA UI.
Basic Operations
"""Just a demo of the PyVLX module."""
import asyncio
import logging
from pyvlx import Position, PyVLX
async def main() -> None:
"""Demonstrate functionality of PyVLX."""
pyvlx = PyVLX('pyvlx.yaml')
# Alternative:
# pyvlx = PyVLX(host="192.168.2.127", password="velux123")
# Runing scenes:
await pyvlx.load_scenes()
await pyvlx.scenes["All Windows Closed"].run()
# Changing position of windows:
await pyvlx.load_nodes()
await pyvlx.nodes['Bath'].open()
await pyvlx.nodes['Bath'].close()
await pyvlx.nodes['Bath'].set_position(Position(position_percent=45))
# Changing of on-off switches:
# await pyvlx.nodes['CoffeeMaker'].set_on()
# await pyvlx.nodes['CoffeeMaker'].set_off()
# You can easily rename nodes:
# await pyvlx.nodes["Window 10"].rename("Window 11")
await pyvlx.disconnect()
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
asyncio.run(main())
Metadata
Release files for pyvlx 0.2.36
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyvlx-0.2.36.tar.gz | 3.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyvlx-0.2.36-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.2 MB
Release files / pyvlx-0.2.36.tar.gz
| Download URL | pyvlx-0.2.36.tar.gz |
|---|---|
| Size | 3.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7820a7e6cfaee455f4ca75eb806568772f471b62fbd613fe6a7fac52d3970a92
|
|
BLAKE2b-256 checksum How to use checksums |
9659f74bb3464993e0704b1aeef79ec14b18b7094aac36504c4edf8a88456fa3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 24, 2026.
Transparency logRelease files / pyvlx-0.2.36-py3-none-any.whl
| Download URL | pyvlx-0.2.36-py3-none-any.whl |
|---|---|
| Size | 98.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
66c5dd269054a56113c3b935830f39a9bcfa983fd9cb193c7bb555b46f4a7766
|
|
BLAKE2b-256 checksum How to use checksums |
6c50936f12f0e40006765b3355a3c50a6a1e88aaa7ddd349ae8fc9175cc61491
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 24, 2026.
Transparency log