Metadata-Version: 2.4
Name: xknx
Version: 4.0.0
Summary: An Asynchronous Library for the KNX protocol. Documentation: https://xknx.io/
Author-email: Julius Mittenzwei <julius@mittenzwei.com>, Matthias Alphart <farmio@alphart.net>, Marvin Wichmann <me@marvin-wichmann.de>
License-Expression: MIT
Project-URL: homepage, https://xknx.io/
Project-URL: repository, https://github.com/XKNX/xknx.git
Keywords: KNX,EIB,Home Assistant,home automation
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Home Automation
Classifier: Topic :: System :: Hardware :: Hardware Drivers
Requires-Python: >=3.11.0
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typing_extensions; python_version < "3.13"
Requires-Dist: cryptography>=35.0.0
Requires-Dist: ifaddr>=0.1.7
Dynamic: license-file

# XKNX - An asynchronous KNX library written in Python

![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xknx?logo=python)
[![codecov](https://codecov.io/gh/XKNX/xknx/branch/main/graph/badge.svg?token=irWbIygS84)](https://codecov.io/gh/XKNX/xknx)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
[![prek](https://img.shields.io/badge/prek-enabled-brightgreen)](https://github.com/j178/prek)
[![HA integration usage](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fanalytics.home-assistant.io%2Fcurrent_data.json&query=%24.integrations.knx&logo=home-assistant&label=integration%20usage&color=41BDF5&cacheSeconds=21600)](https://www.home-assistant.io/integrations/knx/)
[![Discord](https://img.shields.io/discord/338619021215924227?color=7289da&label=Discord&logo=discord&logoColor=7289da)](https://discord.gg/bkZe9m4zvw)

## Documentation

See documentation at: [https://xknx.io/](https://xknx.io/)

## Help

We need your help for testing and improving XKNX. For questions, feature requests, bug reports either open an [issue](https://github.com/XKNX/xknx/issues), join the [XKNX chat on Discord](https://discord.gg/EuAQDXU) or write an [email](mailto:xknx@xknx.io).

## Development

You will need at least Python 3.11 in order to use XKNX.

Setting up your local environment:

1. Install [uv](https://docs.astral.sh/uv/getting-started/installation/)
2. Create the environment: `uv sync`
3. Install the git hooks: `uv run prek install`

Dependencies are declared in `pyproject.toml` and pinned in `uv.lock`.

## Testing

To run all linters, formatters and the type checker call `uv run prek run --all-files`

Unit tests are run with `uv run pytest`
Running specific unit tests can be invoked by: `uv run pytest -vv test/management_tests/procedures_test.py -k test_nm_individual_address_serial_number_write_fail`
Testing against another supported Python version: `uv run --python 3.11 pytest`

## Home-Assistant

XKNX is the underlying library for the KNX integration in [Home Assistant](https://home-assistant.io/).

## Example

```python
"""Example for switching a light on and off."""

import asyncio

from xknx import XKNX
from xknx.devices import Light


async def main():
    """Connect to KNX/IP bus, switch on light, wait 2 seconds and switch it off again."""
    async with XKNX() as xknx:
        light = Light(
            xknx,
            name="TestLight",
            group_address_switch="1/0/9",
        )
        xknx.devices.async_add(light)

        await light.set_on()
        await asyncio.sleep(2)
        await light.set_off()


asyncio.run(main())
```

## Attributions

Many thanks to [Enertex Bayern GmbH](https://enertex.de), [Weinzierl Engineering GmbH](https://weinzierl.de) and [MDT technologies GmbH](https://www.mdt.de) for providing us a device to support testing and development of xknx.
