Skip to main content

A library for controlling MohuanLED lights via Bluetooth

Project description

🌈 MohuanLED Bluetooth Control

BJ_LED_M is a Python library designed to control MohuanLED brand lights via Bluetooth, directly from your laptop or PC (you’ll need a Bluetooth adapter if it’s not built-in). This library allows you to perform simple actions like turning the lights on/off, changing colors, and applying animations or reactions to external events. It also includes a PyQt6-based GUI for more intuitive control over the lights. 🌟

🚀 Usage

The library is fully asynchronous, so you'll need to use asyncio and await. Here's an example of how to establish a direct connection, knowing the UUID and MAC address of the LEDs:

from bj_led import BJLEDInstance
import asyncio

ADDRESS = '64:11:a8:00:8b:a6'                      # Example address
UUID = '0000ee02-0000-1000-2000-00805f9b34fb'      # Example UUID

async def main():
    led = BJLEDInstance(address=ADDRESS, uuid=UUID)

    await led.turn_on()
    await led.set_color_to_rgb(255, 0, 0)          # Change color to red (RGB)

    await asyncio.sleep(5)                         # Wait 5 seconds
    await led.turn_off()                           # Turn off LEDs and disconnect
    await led._disconnect()                        # Clear the buffer
     
asyncio.run(main())

A dynamic example with the same orders:

from bj_led import BJLEDInstance
import asyncio

async def main():
    led = BJLEDInstance()                          # The Scanner will look for 'BJ_LED_M' (name of the devices) and connect

    await led.turn_on()
    await led.set_color_to_rgb(255, 0, 0)          # Change color to red (RGB)

    await asyncio.sleep(5)                         # Wait 5 seconds
    await led.turn_off()                           # Turn off LEDs and disconnect
    await led._disconnect()                        # Clear the buffer
     
asyncio.run(main())

⚙️ Features

  • Control MohuanLED lights via Bluetooth (BLE)
  • Turn the LEDs on and off 💡
  • Change colors across the full RGB spectrum 🎨
  • Apply effects like:
    • 🔄 Color fade
    • 💡 Color strobe
    • 🌬️ Breathing effect between colors
    • 🌈 Rainbow cycle
    • 🌊 Wave effect
  • Graphical user interface (GUI) using PyQt6 (In development 🛠️)
  • Command Line Interface (CLI) for basic commands (In development 🛠️)
  • Dynamic MohuanLED device scanner for easy connections (In development 🛠️)
  • Automatic detection of UUIDs and MAC addresses

🛠️ Installation

Requirements

  • Python 3.8 or higher
  • PyQt6 and qasync
  • Built-in or external Bluetooth adapter
  • MohuanLED lights

You can install the library via pip:

pip install BJ_LED_M

Or install it directly from the repository:

git clone https://github.com/Walkercito/MohuanLED-Bluetooth_LED
cd BJ_LED_M
pip install .

🌈 Applying Effects

You can add various effects to the lights, such as rainbow_cycle, wave_effect, or strobe_light. Here are a few examples:

# Apply the 'rainbow_cycle' effect
await led.rainbow_cycle(duration_per_color=5.0)

# Apply the 'strobe_light' effect with 10 flashes
await led.strobe_light(color=(255, 255, 255), duration=5.0, flashes=10)

🖥️ GUI Control

The library also provides a graphical user interface (GUI) built with PyQt6 to visually control the lights.

To launch the GUI:

python -m bj_led.gui.app

The GUI includes sliders to adjust RGB values and buttons to control the lights and apply effects like fading and color cycling.

⚙️ Configuration

You can configure your setup using an .env file to store your MohuanLED light’s MAC address and UUID.

Create a .env file in the project directory with the following structure:

LED_MAC_ADDRESS=xx:xx:xx:xx:xx:xx
LED_UUID=0000xxxx-0000-1000-8000-00805f9b34fb

The library will automatically load these values when you instantiate the LEDs.

🛠️ Development

If you want to contribute or modify the project, you can set up the development environment as follows:

Clone the repository:

git clone https://github.com/Walkercito/MohuanLED-Bluetooth_LED

Install the dependencies:

pip install -r requirements.txt

📜 License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

  • Bleak: For Bluetooth Low Energy (BLE) device control 🔗
  • PyQt6: For creating the graphical interface 🖼️
  • asyncio: For asyncronus tasks
  • qasync: For handling asynchronous processes in PyQt6 ⚡
  • python-dotenv: For auto-loading of LED_MAC_ADDRESS and LED_UUID in case of a .env file
  • nest_asyncio: For asyncio control

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bluelights-0.2.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

BlueLights-0.2-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file bluelights-0.2.tar.gz.

File metadata

  • Download URL: bluelights-0.2.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for bluelights-0.2.tar.gz
Algorithm Hash digest
SHA256 77c88f8899bad45e825b361bfc54f5f15ce1fb9da1af27287442b21af4d78f77
MD5 9d945b72f60963ba12d0687aa847332d
BLAKE2b-256 1287f535cca44cd483c07bb0fca91b36d00e450c30d73274e1d4b0e4f8b1a972

See more details on using hashes here.

File details

Details for the file BlueLights-0.2-py3-none-any.whl.

File metadata

  • Download URL: BlueLights-0.2-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for BlueLights-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 02352a2b7f034c73366deea2a99aa1df2cdbc5f2a9c339520d8539382ea49773
MD5 0b03b68f254e2559e976dc258ec92c18
BLAKE2b-256 e1f4bda02a50b167d87f621de8a3e35ca2a307a5a905f20305f3e54ae8357f08

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page