Movisens Sampling Package
Collect physical activity, heart rate, HRV, EDA, skin temperature and tap markers from Movisens sensors in a CARP Mobile Sensing study.
carp_movisens_package adds Movisens sensors as connected devices to a CARP Mobile Sensing (CAMS) study. The sensor computes values such as step count, body position, heart rate variability (HRV) and electrodermal activity (EDA). It sends most of them to the phone once per minute over Bluetooth Low Energy (BLE).
The package uses the movisens_flutter plugin, which talks to the sensor through flutter_blue_plus. No Movisens SDK is involved.
Not medical devices
Movisens sensors are research instruments, not medical devices. Do not use them or their data for medical purposes.
Features
Activity
Steps, body position, inclination, movement acceleration, metabolic equivalent of task (MET) and time per MET level, computed by the sensor.
Heart rate and HRV
Mean heart rate and HRV as the root mean square of successive differences (RMSSD), computed per minute by an EcgMove4.
EDA and skin temperature
Mean skin conductance level from an EdaMove4, and mean skin temperature per minute.
Tap markers
An event without delay each time the participant taps the sensor, for example to mark a moment in the day.
Measure types
The package provides six measure types in the dk.cachet.carp.movisens namespace:
| Measure type | Data | Android | iOS |
|---|---|---|---|
dk.cachet.carp.movisens.activity | Steps, body position, inclination, movement acceleration, MET and MET levels | Yes | Yes |
dk.cachet.carp.movisens.hr | Mean heart rate, RMSSD and HRV validity | Yes | Yes |
dk.cachet.carp.movisens.eda | Mean skin conductance level | Yes | Yes |
dk.cachet.carp.movisens.skin_temperature | Mean skin temperature | Yes | Yes |
dk.cachet.carp.movisens.respiration | Respiratory movement | Yes | Yes |
dk.cachet.carp.movisens.tap_marker | Taps on the sensor | Yes | Yes |
ACTIVITY and HR each produce several data types. See Measure types for the data types, fields, units and example data.
Known issues in version 2.1.0
ACTIVITY, HR and RESPIRATION collect no data. The other measures collect data only when the app is already connected to the sensor or, on Android, the sensor is bonded with the phone. See Measure types and Connecting a device.
Supported models
Not every sensor provides every measure. This table follows the signals that Movisens lists for each sensor:
| Sensor | Measures |
|---|---|
| Move4 | ACTIVITY, SKIN_TEMPERATURE and TAP_MARKER |
| EcgMove4 | ACTIVITY, HR, SKIN_TEMPERATURE and TAP_MARKER |
| EdaMove4 | ACTIVITY (steps and movement acceleration only), EDA, SKIN_TEMPERATURE and TAP_MARKER |
For the other measures on your sensor and firmware, see Available signals per sensor in the Movisens documentation. A measure whose service the sensor lacks collects no data.
Requirements
| Component | Requirement |
|---|---|
| Dart SDK | 3.10 or later |
| Flutter | 3.38.1 or later |
carp_mobile_sensing | 2.2.0 or later |
flutter_blue_plus | 1.x (movisens_flutter requires ^1.29.1) |
| Android | API level 24 (Android 7.0) or later |
| iOS | 15.0 or later |
| Sensor | A Movisens Move4, EcgMove4 or EdaMove4 |
| Testing | A physical phone, because emulators and simulators cannot connect to the sensor |
See Installation for the platform setup.
How it works
The sensor is a connected device of the phone. The phone connects to it by its name and stores the values that the sensor sends:
flowchart LR
Sensor["<b>Movisens sensor</b><br/>computes values<br/>every minute"] -->|BLE| Phone
subgraph Phone["Phone app"]
direction TB
Manager["<b>Device manager</b><br/>finds the sensor<br/>by its name"] --> Probes["<b>Movisens probes</b><br/>one per measure"]
Probes --> DataManager[("<b>Data manager</b><br/>stores or uploads<br/>the measurements")]
end
- Movisens sensor: computes values such as steps and mean heart rate. It sends each one over BLE 0–84 seconds after measuring it.
- Device manager:
MovisensDeviceManagerconnects to the sensor by its Bluetooth name throughmovisens_flutter. It writes the wearer's age, sex, height, weight and sensor location to the sensor. - Movisens probes: one probe per measure turns on the notifications of a service on the sensor. It turns each value into a measurement, stamped with the phone's time of arrival.
- Data manager: stores or uploads the measurements, as the data endpoint of the protocol specifies.
See Connecting a device for how the app binds and connects the sensor.
Next steps
Installation
Add the package to a CAMS app and configure Bluetooth on Android and iOS.
Quickstart
Build an app that prints tap markers and skin temperature.
Connecting a device
Bind a sensor by its name, connect it and follow its status.
Measure types
The six measure types, their data types, fields and timing.