Skip to main content

Host-side tools that interact with the ESP-IDF firmware.

Project description

Host Python Tools

This folder contains host-side Python code that interacts with the ESP-IDF firmware (e.g., over serial, sockets, or file exchange). It is kept separate from the firmware build to avoid mixing tool dependencies with ESP-IDF.

Quick start

python -m venv .venv
source .venv/bin/activate
pip install -e .

enode-host --help
enode-host socket 127.0.0.1 3333 "hello"
enode-host server --port 3333 --interactive
enode-host gui --port 3333

Notes

  • Add runtime dependencies to pyproject.toml under project.dependencies.
  • Keep device/transport details in small modules so they can be shared by scripts and tests.
  • The GUI uses wxPython; install it if you plan to run enode-host gui.
  • The GUI needs an active X11/Wayland display. On headless hosts, use xvfb-run enode-host gui or run enode-host server instead.
  • The GUI sets WEBKIT_DISABLE_DMABUF_RENDERER=1 by default on Linux to avoid WebView/EGL crashes. You can override it by exporting a different value.
  • If the GUI still aborts with WebView/EGL errors, you can disable the map panel with ENODE_DISABLE_WEBVIEW=1 enode-host gui.

Protocol (TCP, length-prefixed)

Frame format: 1 byte message type, 2 bytes big-endian payload length, payload.

Message types:

  • 0x10 COMMAND (host -> device)
  • 0x20 STATUS (device -> host)
  • 0x30 ACK (either direction)
  • 0x40 DATA (device -> host, ACC batch)
  • 0x41 PPS (device -> host, immediate PPS)

Commands (payload begins with command_id):

  • 0x01 start_daq
  • 0x02 stop_daq
  • 0x03 set_mode (1 byte: 0 realtime, 1 past)
  • 0x04 start_realtime_stream
  • 0x05 stop_realtime_stream
  • 0x06 start_past_stream (payload: 8-byte start_ms, 8-byte end_ms)
  • 0x07 stop_past_stream

Status payload (16 bytes):

  • node_type: uint8
  • node_number: uint8
  • level: uint8
  • parent_mac: 6 bytes
  • self_mac: 6 bytes
  • rssi: int8

DATA payload:

  • node_type: uint8
  • node_number: uint8
  • sample_count: uint8
  • repeated samples (count):
    • cc: uint64 (big-endian)
    • acc_x: float32 (big-endian)
    • acc_y: float32 (big-endian)
    • acc_z: float32 (big-endian)

PPS payload:

  • node_type: uint8
  • node_number: uint8
  • cc: uint64 (big-endian)
  • epoch: int64 (big-endian)

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

enode_host-0.1.2.tar.gz (65.1 kB view details)

Uploaded Source

Built Distribution

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

enode_host-0.1.2-py3-none-any.whl (77.1 kB view details)

Uploaded Python 3

File details

Details for the file enode_host-0.1.2.tar.gz.

File metadata

  • Download URL: enode_host-0.1.2.tar.gz
  • Upload date:
  • Size: 65.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for enode_host-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9719032338683566d790262588a6ef2bdf037545fdc20307a0c757ae1f7de15e
MD5 a3900c76b14efebc0aa416fd44a244ad
BLAKE2b-256 63ec6ee6ec9eac7de66f066a6d16ade9b7bbf16197ebc871ebd4704404657c05

See more details on using hashes here.

File details

Details for the file enode_host-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: enode_host-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 77.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for enode_host-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fd6115266719f90ffe1e919e54bb79b93be3f9ce923604833d7271b1bc138bea
MD5 c3418b5beb0c609c4d5c9db3c7dc85a1
BLAKE2b-256 c650cb6aebd904ce052de88a22b3924ae66d9fed0b927e5fbdfbe35cc78fcfb3

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