No project description provided
Project description
ipee-lemon
Python library for controlling IPEE Lemon devices over Bluetooth Low Energy (BLE) and serial (CLI).
Installation
Requires Python >= 3.12.
pip install ipee-lemon
Or with Poetry:
poetry add ipee-lemon
BLE
Connect to a Lemon device over BLE using the async API built on Bleak.
import asyncio
from ipee.lemon.ble.lemon_ble import LemonBleDevice
async def main():
device = LemonBleDevice("AA:BB:CC:DD:EE:FF")
await device.connect()
# Send data via Nordic UART Service (NUS)
await device.write("6E400002-B5A3-F393-E0A9-E50E24DCCA9E", b"hello")
# Provision Wi-Fi credentials
from ipee.lemon.ble.wifi_provision_service import WifiProvisioningService
await device.write(WifiProvisioningService.SSID_UUID, b"MyNetwork")
await device.write(WifiProvisioningService.PASSWORD_UUID, b"secret")
# Trigger an OTA firmware update (requires Wi-Fi connection)
from ipee.lemon.ble.ota_service import OtaService
await device.write(OtaService.OTA_URL_UUID, b"https://example.com/firmware.bin")
await device.disconnect()
asyncio.run(main())
LemonBleDevice comes with three services pre-registered:
| Service | Purpose |
|---|---|
| NUS (Nordic UART) | Text-based communication with the device |
| Wi-Fi Provisioning | Set SSID and password for network connection |
| OTA | Trigger over-the-air firmware updates |
Serial (CLI)
Control a Lemon device over a serial connection using command wrappers built on pySerial.
from serial import Serial
from ipee.lemon.cli.cli_wifi_service import CliWifiService
from ipee.lemon.cli.cli_ble_service import CliBleService
from ipee.lemon.cli.cli_sweep_service import CliSweepService, SweepMeasurementType
ser = Serial("/dev/ttyUSB0", baudrate=115200)
# Wi-Fi
wifi = CliWifiService()
wifi.set_ssid(ser, "MyNetwork")
wifi.set_password(ser, "secret")
wifi.connect(ser)
info = wifi.get_connection_info(ser)
print(info.ip, info.subnet, info.gateway)
# BLE
ble = CliBleService()
ble.enable(ser)
ble.send(ser, "hello from serial")
# Voltage sweep
sweep = CliSweepService()
sweep.start_voltage(ser, 0)
sweep.end_voltage(ser, 3_300_000)
sweep.set_step_size(ser, 1000)
sweep.set_step_duration(ser, 500)
sweep.set_measurement_type(ser, SweepMeasurementType.AMPLITUDE)
ser.close()
Available CLI services:
| Service | Tag | Purpose |
|---|---|---|
CliBleService |
ble |
Enable/disable BLE, send NUS data |
CliWifiService |
wifi |
Configure and connect to Wi-Fi |
CliOtaService |
ota_start |
Start OTA firmware update from a URL |
CliLemonService |
lemon |
Set settle time and measurement frequency |
CliSweepService |
sweep |
Configure and run voltage sweeps |
Development
poetry install
make lint # runs black, isort, flake8
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ipee_lemon-0.2.4.tar.gz.
File metadata
- Download URL: ipee_lemon-0.2.4.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.12.3 Linux/6.1.79
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a7a15f8dce954450c9fd1aee21a3f3ea8fff5099961756349774bd0e9fb1305
|
|
| MD5 |
1e6959e46598e5ad7952467629dd0ad7
|
|
| BLAKE2b-256 |
4cf95b39d39ec41d28e9de27ea536dfa1293255ddbcde40af5e6d9cd59f533dc
|
File details
Details for the file ipee_lemon-0.2.4-py3-none-any.whl.
File metadata
- Download URL: ipee_lemon-0.2.4-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.12.3 Linux/6.1.79
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
734543cbe1b2f3957717a5dfd68553899ae80f8808059c4f8c00d2b7de5489fd
|
|
| MD5 |
163f71dc762a90f12321429b46902c2f
|
|
| BLAKE2b-256 |
f0ab1647c2a49369bc1db00d39b6e27f83fd06070b4bb0756f5922bece7aef06
|