1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
PyVLX - controling VELUX windows with Python
============================================
[](https://github.com/Julius2342/pyvlx/actions/workflows/ci.yml)
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:
```bash
pip3 install pyvlx
```
Home Assistant Plugin
---------------------
PyVLX is used within [Home Assistant](https://www.home-assistant.io/integrations/velux/). 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
----------------
```python
"""Just a demo of the PyVLX module."""
import asyncio
import logging
from pyvlx import Position, PyVLX
async def main(loop):
"""Demonstrate functionality of PyVLX."""
pyvlx = PyVLX('pyvlx.yaml', loop=loop)
# Alternative:
# pyvlx = PyVLX(host="192.168.2.127", password="velux123", loop=loop)
# 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)
myloop = asyncio.new_event_loop()
myloop.run_until_complete(main(myloop))
# loop.run_forever()
myloop.close()
```
|