Skip to content

Title: Improve BinaryIO telemetry pipeline, controls, and logging UI (adds resizable graph & full PID controls)#6

Open
ecarjat wants to merge 16 commits intogeekuillaume:mainfrom
ecarjat:main
Open

Title: Improve BinaryIO telemetry pipeline, controls, and logging UI (adds resizable graph & full PID controls)#6
ecarjat wants to merge 16 commits intogeekuillaume:mainfrom
ecarjat:main

Conversation

@ecarjat
Copy link
Copy Markdown

@ecarjat ecarjat commented Dec 22, 2025

@geekuillaume Fantastic work on this impressive app!

This PR for your consideration adds the performance and UX improvements described in BinaryIO_MIgration.md, Performance_Refactor.md, and LOG.md.

What changed

  • Telemetry & rendering: Introduced a throttled, buffered TelemetryPipeline with Plotly streaming (extendTraces) and configurable downsampling/backpressure. The motor monitor graph supports dynamic Y1/Y2 assignment, a draggable resizable plot area, and grouped register selection (primary signals on top, Velocity/Angle PID in collapsible accordions).
  • Serial/logging: BinaryIO now decodes log packets (L) per LOG.md, with toggles to show/hide telemetry/logs, freeze, decode, and auto-scroll controls in the serial viewer.
  • Control panels: Control and PID sections use compact inline sliders with bounds dialogs; Angle PID now exposes all registers (P/I/D, ramp, limit, filter); Control accordion opens by default.
  • UX polish: Motor avatar turns green when enabled (red otherwise) with deduped numeric labels; container layout widened; plot margins adjusted for axis visibility.

Spec highlights

  • BinaryIO_MIgration.md: Dual-mode serial with BinaryIO support, register-mapped controls, binary telemetry parsing, and DSL/packet visibility.
  • Performance_Refactor.md: Decoupled ingest/render with bounded buffers, render loop, streaming Plotly updates, and observability hooks.
  • LOG.md: BinaryIO log packet handling with

level/tag/message decoding in the UI.

Testing

Verified on BinaryIO protocol (telemetry/logs/control). Not tested on ASCII Commander.

Screenshot 2025-12-22 at 10 36 01

@ecarjat
Copy link
Copy Markdown
Author

ecarjat commented Dec 23, 2025

I realise this might be a bit much as a PR but there was a number of things I needed the interface to do. I you want to test it live, it lives here:
https://ecarjat.github.io/simplefoc-webcontroller/

Emmanuel Carjat added 3 commits December 24, 2025 18:01
- Add Download and Upload buttons to motor card header for saving
  and restoring motor configuration to/from text files
- Export CONFIG_REGISTER_NAMES list based on new includeInConfig flag
  in register definitions for config import/export
- Switch graph timestamps from performance.now() to Date.now() for
  absolute time values
- Display x-axis as formatted time (HH:MM:SS.mmm) instead of raw ms
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant