Link Search Menu Expand Document

Asynchronous Python Library for KNX

XKNX is an Asynchronous Python library for reading and writing KNX/IP packets.

Coverage Status

Overview

XKNX…

  • … does cooperative multitasking via asyncio and is 100% thread safe.
  • … provides support for KNX/IP routing and tunneling devices.
  • … has strong coverage with unit tests.
  • … automatically updates and synchronizes all devices in the background periodically.
  • … listens for all updates of all devices on the KNX bus and updates the corresponding internal objects.
  • … has a clear abstraction of data/network/logic-layer.
  • … provides Heartbeat monitoring for Tunneling connections + clean reconnect if KNX/IP connection failed.
  • … does clean connect and disconnect requests to the tunneling device.
  • … ships with Home Assistant.

Installation

XKNX depends on Python >= 3.7

You can install XKNX as Python package via pip:

pip install xknx

Hello World

import asyncio
from xknx import XKNX
from xknx.devices import Light

async def main():
    xknx = XKNX()
    await xknx.start()
    light = Light(xknx,
                  name='HelloWorldLight',
                  group_address_switch='1/0/9')
    await light.set_on()
    await asyncio.sleep(2)
    await light.set_off()
    await asyncio.sleep(2)
    await xknx.stop()

asyncio.run(main())

For more examples please check out the examples page

Getting Help

For questions, feature requests, bugreports either join the XKNX chat on Discord, open an issue at GitHub or write an email.