Skip to main content

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


Download files

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

Source Distribution

ipee_lemon-0.2.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

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

ipee_lemon-0.2.1-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file ipee_lemon-0.2.1.tar.gz.

File metadata

  • Download URL: ipee_lemon-0.2.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.17.0-19-generic

File hashes

Hashes for ipee_lemon-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e0f6bba0ae40ce65e271bd6d2ecc63b26e278888688eb15a84b1b4cc272146d2
MD5 80250447aee0f933d1752ebe8c396b79
BLAKE2b-256 86944970462b15637fe3dbf0bd96ae5315c75b5749e5aca144e3ab53f852068c

See more details on using hashes here.

File details

Details for the file ipee_lemon-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ipee_lemon-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.17.0-19-generic

File hashes

Hashes for ipee_lemon-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 531947df4e5dc597e008155a32820b5f590af8122ca939c695d97626824201e3
MD5 ed6669afdc96b1110883482d777ef8cb
BLAKE2b-256 e29956c56265dbad735d0894c180050a6134ec8fdd48165e75d967a81b9df323

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