A json IPC interface for interacting with pybricks hubs
Project description
BrickPipe
Brickpipe provides a JSON-based Inter-Process Communication (IPC) interface to interact with Pybricks hubs. It
communicates via standard input (stdin) for commands and standard output (stdout) for events.
Each message (incoming or outgoing) must be a single-line JSON object.
Message Format
All messages are JSON objects that contain an event_type field.
{
"event_type": "event_name",
"other_field": "value"
}
Incoming Events (Commands)
These commands are sent to the script via stdin.
event_type |
Parameters | Description |
|---|---|---|
start_ble_scanning |
timout : int | float (required) |
Begins bluetooth scanning with a specified timeout. |
connect_to_hub |
conn_type: "ble" or "usb" (required)ble_address: string (optional)ble_hub_name: string (optional) |
Connects to a hub. ble_address and ble_hub_name are used for filtering bluetooth hubs. |
disconnect_from_hub |
None | Disconnects the currently connected hub. |
recompile_download |
program_path: string (required) |
Stops any running program, recompiles the specified Python file, and downloads it to the hub. |
recompile_run |
program_path: string (required) |
Stops any running program, recompiles, downloads, and then starts the program. |
run_stored |
None | Stops any running program and starts the program already stored in the hub. |
send_string |
string: string (required) |
Sends a string to the hub's stdin. |
cancel_running_program |
None | Stops the user program currently running on the hub. This has no effect if a program is not running. |
exit |
None | Disconnects any active hub and terminates the process. |
Outgoing Events
These events are sent from the script via stdout.
event_type |
Payload Fields | Description |
|---|---|---|
ble_device_found |
device_name: stringaddress: stringrssi: int |
Found a hub from scanning. Also triggered by an rssi update when scanning. |
hub_connected |
None | Successfully established a connection with a hub. |
connection_timeout |
None | Failed to find or connect to a hub. |
download_progress_update |
percentage: float (0.00 - 100.00) |
Indicates the current progress when downloading a program onto the hub. |
program_started |
None | A user program has started running on the hub. |
program_complete |
None | The user program has finished running or was stopped. |
hub_printed_line |
line: string |
A line of text output from the hub (stdout). |
compile_error |
traceback: string |
The Python script failed to compile. Contains the error details. |
precondition_violated |
explanation: string |
The command could not be executed (e.g., missing arguments, or hub not connected). |
hub_firmware_outdated |
explanation: string |
The hub's firmware version is not supported. Can only appear when connecting to a hub. |
hub_disconnected |
None | The hub has been disconnected (either manually or due to an error). |
Example Usage
Connecting and Running a Script
1. Connect via bluetooth:
- Input:
{"event_type": "connect_to_hub", "conn_type": "ble", "hub_name": "Robot"} - Output:
{"event_type": "hub_connected"}
2. Download and Run a Program:
- Input:
{"event_type": "recompile_run", "program_path": "main.py"} - Output:
{"event_type": "download_progress_update", "percentage": 50.0}{"event_type": "download_progress_update", "percentage": 100.0}{"event_type": "program_started"}{"event_type": "hub_printed_line", "line": "Hello, World!"}{"event_type": "program_complete"}
3. Handling a Compile Error:
- Input:
{"event_type": "recompile_run", "program_path": "broken.py"} - Output:
{"event_type": "compile_error", "traceback": "..."}
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 brickpipe-0.2.0.tar.gz.
File metadata
- Download URL: brickpipe-0.2.0.tar.gz
- Upload date:
- Size: 41.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f0b3be0d2de007051e9296707fdd673656ae33b5c60a0ed557990995fd28e4c
|
|
| MD5 |
3b45b1672b810d34d6d187440b5f024d
|
|
| BLAKE2b-256 |
74542fdce75ce2f6eb818a5112c936afb5df0b7acd8179a2a3345a3164b26353
|
File details
Details for the file brickpipe-0.2.0-py3-none-any.whl.
File metadata
- Download URL: brickpipe-0.2.0-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db1fea5e8bbfb52c7834d87afc8bc3e1c4bc88a571b881a7661a97f809631260
|
|
| MD5 |
f763751d563465cf90f7ccaf429802f4
|
|
| BLAKE2b-256 |
997bf94c1fc17fd2e9a77fa211d148c654b81c59bca5ead7f406a8734b17a817
|