Python example UI for OPEN Motion used for Hardware Testing and Basic Usage
- Python 3.12 or later: Make sure you have Python 3.12 or later installed on your system (the Open-Motion SDK requires 3.12+). You can download it from the official Python website.
-
Install the Open-Motion SDK (
omotionPython library)git clone https://github.com/OpenwaterHealth/openmotion-sdk.git cd openmotion-sdk pip install .
-
Clone the repository and Install Required Packages:
git clone https://github.com/OpenwaterHealth/openmotion-test-app.git cd openmotion-test-app pip install -r requirements.txt -
Install libusb for your system requires libusb to be installed, for windows install the dll to c:\windows\system32, download the correct dll from github
https://github.com/libusb/libusb/releases -
Run application requires the Open-Motion SDK (
omotion) to be installed or referenced prior to running main.pypython main.py
The app queries GitHub for firmware releases at startup. On a machine with no internet, launch with:
python main.py --no-github
This skips every release query. The firmware dropdowns then offer only
Upload File..., and all three flashing paths work from a file on disk:
| What | File to select |
|---|---|
| Console / sensor application firmware | motion-console-fw.bin / motion-console-fw-*.bin / motion-sensor-fw.bin / motion-sensor-fw-*.bin |
| Bootloader (converts a bare-metal device) | motion-console-production.bin / motion-sensor-production.bin |
| FPGA (TA, Seed, Safety EE, Safety OPT) | the target's .jed |
Installing the bootloader is irreversible over USB — afterwards the device
only accepts signed firmware, and returning it to a normal image needs an
ST-LINK/SWD debugger or a BOOT0 strap into the ROM loader. The app confirms
before doing it, and refuses an image whose filename is for the other
device — validation is filename-only, so this is the only signal available.
Never rename or re-label production images; a renamed
motion-sensor-production.bin masquerading as
motion-console-production.bin will pass every gate and permanently convert
the console with the wrong image. The SDK also aborts without writing if the
device already has a bootloader installed.
python -m PyInstaller -y openwater.spec
This repository includes a CycloneDX SBOM at sbom.cyclonedx.json.
Regenerate it after dependency or packaging changes:
python scripts/generate_sbom.pyThe SBOM is derived from the repository's declared Python dependencies and packaging evidence in requirements.txt, openwater.spec, README.md, and .github/workflows/release-build.yml.
