Skip to content

Unify Peel workflow, sensor matching, and optional hardware display - #25

Merged
leopozh merged 14 commits into
mainfrom
codex/phone-display
Sep 20, 2026
Merged

leopozh merged 14 commits into
mainfrom
codex/phone-display

Conversation

@leopozh

@leopozh leopozh commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

Peel now runs the original phone workflow with optional Seeed instrument control and BOX-3 display synchronization. This combines #21 and #23 into one app and one control layer; users can skip hardware without receiving fabricated sensor readings.

Final behavior

  • Phone USB → Seeed → ESP-NOW → BOX-3 mirrors all eight workflow stages, with capability checks, acknowledgements, retries, and reconnect synchronization. Display failures do not block the app.
  • Explicit water blanking, telemetry-confirmed start/stop, configurable run duration, USB/TCP diagnostics, and local raw logs preserve the tested instrument workflow.
  • Scans store real absorbance and up to 256 aligned readings, including temperature, transmission/scattering, dark and color channels. Research receives bounded numeric evidence.
  • A deterministic matcher compares absorbance against four generated reference curves using baseline subtraction, resampling, and RMSE. The UI says Closest match: with separate synthetic-library attribution. It reports ambiguity/out-of-range results and rejects flat or insufficient data. Bottle names do not determine the match. These synthetic profiles are demonstration fixtures, not validated chemical identification, purity, potency, or authenticity measurements.
  • Voice keeps Viktor’s concise flow and parser/date fixes, with conversational phrasing instead of spoken Bottle/Imprint/Pill headings. It receives the computed match without raw telemetry or long hardware findings; numeric distances stay out of the greeting.
  • Remove mock /pill and graph demo API behavior. Preserve explicit labeling of historical simulated records. Add additive Elasticsearch sensor/matcher mappings and backend CI.

Integration and validation

Includes both superseded PR histories and latest main through #28 (real hardware photo), with no duplicate controller app or instrument singleton. Keeps simulator/direct-debug launch options and optional hardware skip.

  • Backend: 1,282 tests passed; 14 live tests skipped. Final voice wording: 48 targeted tests passed.
  • Flutter: 95 tests passed; analyze clean; release APK built and installed on the Pixel.
  • Python instrument simulator: 36 passed. C++ display protocol tests passed.
  • Seeed and BOX-3 firmware previously built/flashed; all eight stages received actual radio render acknowledgements.
  • Live backend verified computed reference ranking and conversational voice session responses. The user confirmed the app/voice works. Backend is deployed at eeab9e0; the subsequent merge only brings in README artwork.

APKs, credentials, firmware backups, and local trial exports are excluded from Git. The separate hardware-component checkout's pre-existing bench edits are outside this PR.

@leopozh leopozh changed the title Unify Peel app, instrument control, and optional radio display Unify Peel workflow, sensor matching, and optional hardware display Sep 20, 2026
@leopozh
leopozh merged commit 3541b88 into main Sep 20, 2026
5 checks passed
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.

2 participants