A Privacy-First Wearable Biosignal Platform
A wearable health-sensing algorithm is only ever as good as the physiological data it learns from — and the hardest place to keep that data clean is real life. In a lab, a PPG or accelerometer signal is pristine; out in the free-living world, phones die mid-afternoon, Bluetooth cuts out on a walk, networks vanish, and the OS kills the app to save battery. Every reading lost or malformed to those failures is a hole in the very substrate a health model is trained and evaluated on.
How I solved itSo I built MotionPI around a single assumption: everything will fail, and no signal may be lost when it does. It captures wristband biosignals — PPG for heart rate and HRV, tri-axial accelerometry, and wristband-computed ENMO — writing every reading locally, validating it against a schema, and syncing only when it is safe, so a dropped connection costs seconds of buffering rather than hours of sensor data. On-device, a real-time rule-based detector classifies moderate-to-vigorous activity — 70% of ENMO in a 7-minute sliding window above 100.6 mg — and fires an EMA survey at the moment the behavior occurs. Through an active NIH field study it has sustained ~7.7M records a day with zero malformed writes: clean, timestamped, free-living physiological data.
I built MotionPI in the Kahlert School of Computing at the University of Utah, advised by Jeff M. Phillips — a privacy-first wearable-sensing platform that turns BLE wristbands and a smartphone into a reliable source of clean, free-living physiological data. It captures the biosignal modalities health-sensing models are built on — PPG (for heart rate and HRV), tri-axial accelerometry, and wristband-computed ENMO — and couples them to a real-time, on-device activity detector and in-the-moment EMA surveys. I engineered it for signal quality, robustness, and participant privacy, and built and deployed it through close collaboration with the Department of Health & Kinesiology, the Huntsman Cancer Institute, the College of Social & Behavioral Science, and wearable-hardware teams at the College of Engineering at The Ohio State University.
- 7.7Mrecords / day
- 0malformed writes
- 5 sGPS sampling
- 3 × 1 wkwaves / cohort
Signals captured — one timestamped, multimodal stream
- PPG (optical cardiac) — wristband green-light sensor kept active for heart rate & HRV
- Tri-axial accelerometry (IMU) — inertial motion streamed from the wristband
- ENMO — gravity-adjusted acceleration magnitude, computed on the wristband and sent as 15-s averages
- GPS location — free-living trajectories sampled ~every 5 s from the phone
- EMA self-report — in-the-moment surveys fired at detected activity: contextual labels tied to the sensor stream
- Device telemetry & logs — battery, storage, charging, BLE-state and survey events — every element timestamped
On this page
Animated ENMO-based activity detection: when 70% of the ENMO values in a 7-minute window (green) exceed 100.6 mg, MotionPI flags moderate-to-vigorous physical activity and fires a survey at the moment it happens. Open full visualization → Code on GitHub
The Study
MotionPI powers an active, multi-million-dollar NIH-funded behavioral study — Using Momentary Measures to Understand Physical Activity Adoption and Maintenance among Pacific Islanders in the United States, led by PI Professor Neng Wan. The study uses momentary, in-the-wild measurement to understand how Pacific Islander communities in the U.S. adopt and sustain physical activity over time.
Each study runs in small cohorts of 15–20 participants, observed across three separate one-week intervals, with data collected daily from 8:30 AM to 10:00 PM. Participants carry a smartphone running the MotionPI app and wear BLE wristbands developed by the team; the wristbands measure movement and communicate with the phone, which relays data to a secure backend. Formal participant data collection began on May 23, 2025.
Privacy by design
All data is keyed by participant ID and stored on the University of Utah’s Center for High-Performance Computing (CHPC). The research team never has direct access to participants’ identities.
What the platform collects
During an active session, MotionPI captures:
- Movement — a single magnitude value from the wristbands, sampled ~every second
- GPS location — from the phone, ~every 5 seconds
- Battery level — for both the wristbands and the phone, ~every 30 minutes
- EMA surveys — triggered on the phone when movement stays high enough over a ~7-minute window; completed responses are uploaded to the CHPC server
- System logs — survey triggers, connection-state changes, and similar events
Every data element is timestamped.
MotionPI Publication
Paper: arXiv:2510.19938This interdisciplinary effort resulted in the SmartSP 2025 paper. For more technical details about the system design and reliability framework, see our preprint on arXiv:
Designing a Secure and Resilient Distributed Smartphone Participant Data Collection System.
MotionPI App Example Screens
Example MotionPI app states, including connectivity status, wristband battery and storage, data-collection indicators, BLE connection status, and Ecological Momentary Assessment (EMA) survey interfaces.
At its core, MotionPI uses a Flutter-based mobile application that performs continuous sensing, manages background processes, buffers data offline when necessary, and automatically recovers from interruptions. Custom wristbands developed at OSU stream IMU and ENMO data along with battery, storage, and charging information, while the app maintains stable BLE communication through intelligent reconnection and resubscription logic. All sensor data is sent to a Node.js and Express backend, where MongoDB stores only schema-validated records. This strict validation pipeline enabled the system to handle nearly 7.7 million records per day without producing a single malformed write during deployment.
Privacy and reliability are built into the system’s foundation. No login information or PHI is ever collected; instead, the app uses the device’s advertising ID as a pseudonymous participant identifier. MotionPI is designed to withstand real-world constraints, including Bluetooth dropouts, background task interruptions, and intermittent network availability, automatically restoring full functionality and synchronizing buffered data.
MotionPI Wristband Hardware
The study extends the MotionSense HRV research wristband. Each device carries a full biosignal sensor suite, on-device signal processing, and 30-day onboard storage — streaming motion summaries and activity triggers to the phone over BLE while archiving the raw high-rate waveforms locally.
Pre-Pilot System Validation
During pre-pilot testing, we validated the end-to-end pipeline: left- and right-hand wristbands were shaken in separate bags to simulate continuous activity and trigger the 7-minute MVPA rule. The wristbands detected activity, sent a trigger bit over BLE, and the phone delivered an Ecological Momentary Assessment (EMA) survey notification. PPG sensors (green indicator) remained active during activity for HR/HRV measurement. This confirms firmware, BLE sync, app logic, and sensor integration before the pilot study.
32-second validation clip: wristbands trigger Ecological Momentary Assessment (EMA) survey after 7-minute activity threshold.
High-Resolution Location Accuracy
MotionPI collects GPS samples every five seconds during study periods, enabling precise reconstruction of movement patterns while maintaining strict privacy safeguards. The trajectory shown below is a decrypted-for-visualization validation example from a test participant, illustrating the high positional accuracy achieved after secure processing. All location traces remain encrypted at rest, pseudonymized, and kept separate from direct personal identifiers; only aggregated or de-identified outputs are accessible, and solely to a restricted group of authorized study researchers.
Five-second GPS trajectory from a test participant, showing MotionPI’s high-accuracy location reconstruction after secure decryption. Raw GPS traces remain encrypted, pseudonymized, and not directly tied to personal identity.
ENMO-Based Activity Detection in MotionPI
MotionPI incorporates a real-time physical activity detection pipeline built on ENMO (Euclidean Norm Minus One), a gravity-adjusted measure of acceleration magnitude. MotionSense wristbands compute ENMO continuously and transmit 15-second averaged values to the phone, where MotionPI processes them to identify meaningful activity bouts. When 70% of ENMO values within a 7-minute sliding window exceed the intensity threshold of 100.6 mg, the system classifies the period as moderate-to-vigorous physical activity (MVPA). The wristband then transmits a trigger bit to the phone, prompting MotionPI to deliver an activity Ecological Momentary Assessment (EMA) survey at the moment the behavior occurs.
The animated ENMO detection demo is featured at the top of the page — the interactive version and code are linked there.
This ENMO-triggered survey mechanism allows MotionPI to capture contextual, psychosocial, and environmental factors surrounding moments of real physical activity—something that traditional surveys and retrospective recall cannot achieve.
By tying real-time sensing to real-time self-report, MotionPI provides researchers with high-resolution insight into why activity occurs (or fails to occur) in everyday life.
Participant Monitoring & Compliance Reporting
Running a multi-week field study requires knowing, day to day, whether each participant’s device is actually collecting data. To support this, I built the MotionPI Active Participants Report — a MongoDB-backed reporting tool that summarizes activity across every data stream (location, ENMO, surveys, logs, and battery) for a configurable time window and timezone.
The report surfaces compliance and reliability signals straight from the study database: per-participant counts of wristband disconnects, data-collection toggles, expired activity surveys, and denied PA surveys — so the research team can catch problems (a dead battery, a disconnected wristband, a participant who stopped responding) while there is still time to intervene.
To make it usable by non-technical collaborators at the Huntsman Cancer Institute and across the study team, the tool ships in several forms: a command-line report, a Flask-backed web app with interactive tables, charts, and CSV/PNG export, and a double-click packaged application (built with PyInstaller for both Apple Silicon and Intel Macs) that starts the server and opens the browser automatically — no Python install required. An in-app Help page and a separate log-event reference define every metric and give MongoDB query examples. The system follows secure-by-default practices: no secrets in the repository, localhost binding, optional API-key protection, and configurable CORS.
MotionPI Active Participants Report: choose a time window and data sources, run the report, and explore per-participant tables and charts (location, ENMO, surveys, logs, batteries) with CSV/PNG export.
Code: motionpi-behavior-monitoring
If you are working on wearable biosignals, on-device sensing algorithms, or the data pipelines and signal-quality tooling behind health-sensing models, I would love to talk.