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()


# pylint: disable=invalid-name
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

For more examples please check out the examples page

Getting Help

For questions, feature requests, bugreports wither join the XKNX chat on Discord or write an email.