Metadata-Version: 2.3
Name: pylukeroberts
Version: 0.6.1
Summary: A library to control Luke Roberts lamps via Bluetooth Low Energy
License: MIT
Keywords: bluetooth,BLE,luvo,control,Luke Roberts
Author: Timur Pulathaneli
Author-email: timur@koeln.de
Requires-Python: >=3.10
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Home Automation
Classifier: Framework :: AsyncIO
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: bleak (>=2.1.1)
Requires-Dist: bleak-retry-connector (>=4.6.0)
Project-URL: Homepage, https://github.com/tpulatha/pylukeroberts
Project-URL: Issues, https://github.com/tpulatha/pylukeroberts/issues
Project-URL: Repository, https://github.com/tpulatha/pylukeroberts
Description-Content-Type: text/markdown

# pyLukeRoberts

This library enables control of Luke Roberts Luvo lamps via Bluetooth Low Energy. It was written as a library to power a future Home Assistant Plug-In.



## Table of Contents

- [Capabilities](#capabilities)
- [Installation](#installation)
- [Usage](#usage)
- [Contributing](#contributing)
- [License](#license)
- [Contact](#contact)

## Capabilities
* Discover Luke Roberts Luvo lamps
* Switch Lamps On/Off
* Read all configured scenes
* Read current scene
* Change scene
* Change Color for Uplight
* Change Brightness (absolute and relative)
* Change Color Temperature for Downlight


## Installation


```bash
# Install via pypi
pip install pylukeroberts
```

## Dependencies

pyLukeRoberts uses bleak for Bluetooth Low Energy connectivity

## Usage

Example from `examples/switch_scene.py`

```python
from pylukeroberts import LuvoLamp, find_lamp
import asyncio

async def main():
    device = await find_lamp()
    if device is None:
        print("No Luke Roberts lamp found")
        return
    print(f"Found Luke Roberts Lamp at address: {device.address}")
    lamp = LuvoLamp(device)
    await lamp.update_scenes()
    await lamp.update_current_scene()
    print(f"{lamp.current_scene_name} with ID: {lamp.current_scene_id}")
    await lamp.select_scene(12)
    await lamp.switch_off()

if __name__ == "__main__":
    asyncio.run(main())
```

## Contributing

Guidelines for contributing to the project.

1. Fork the repository.
2. Create a new branch (`git checkout -b feature-branch`).
3. Make your changes.
4. Commit your changes (`git commit -m 'Add some feature'`).
5. Push to the branch (`git push origin feature-branch`).
6. Open a pull request.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE.txt) file for details.

## Contact

Timur Pulathaneli - [timur@koeln.de](mailto:timur@koeln.de)

Project Link: [https://github.com/tpulatha/pylukeroberts](https://github.com/tpulatha/pylukeroberts)

