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.4.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.4-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

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

Hashes for ipee_lemon-0.2.4.tar.gz
Algorithm Hash digest
SHA256 7a7a15f8dce954450c9fd1aee21a3f3ea8fff5099961756349774bd0e9fb1305
MD5 1e6959e46598e5ad7952467629dd0ad7
BLAKE2b-256 4cf95b39d39ec41d28e9de27ea536dfa1293255ddbcde40af5e6d9cd59f533dc

See more details on using hashes here.

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

Hashes for ipee_lemon-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 734543cbe1b2f3957717a5dfd68553899ae80f8808059c4f8c00d2b7de5489fd
MD5 163f71dc762a90f12321429b46902c2f
BLAKE2b-256 f0ab1647c2a49369bc1db00d39b6e27f83fd06070b4bb0756f5922bece7aef06

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