Skip to content
CARP Docs
Ask AISystemLightDark
On this page

Movisens Sampling Package

Collect physical activity, heart rate, HRV, EDA, skin temperature and tap markers from Movisens sensors in a CARP Mobile Sensing study.

Copy MarkdownOpen inOpen in GitHubView as MarkdownOpen in Scira AIOpen in ChatGPTOpen in ClaudeOpen in Cursor

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.

pub.devAPI referenceGitHub

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 typeDataAndroidiOS
dk.cachet.carp.movisens.activitySteps, body position, inclination, movement acceleration, MET and MET levelsYesYes
dk.cachet.carp.movisens.hrMean heart rate, RMSSD and HRV validityYesYes
dk.cachet.carp.movisens.edaMean skin conductance levelYesYes
dk.cachet.carp.movisens.skin_temperatureMean skin temperatureYesYes
dk.cachet.carp.movisens.respirationRespiratory movementYesYes
dk.cachet.carp.movisens.tap_markerTaps on the sensorYesYes

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:

SensorMeasures
Move4ACTIVITY, SKIN_TEMPERATURE and TAP_MARKER
EcgMove4ACTIVITY, HR, SKIN_TEMPERATURE and TAP_MARKER
EdaMove4ACTIVITY (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

ComponentRequirement
Dart SDK3.10 or later
Flutter3.38.1 or later
carp_mobile_sensing2.2.0 or later
flutter_blue_plus1.x (movisens_flutter requires ^1.29.1)
AndroidAPI level 24 (Android 7.0) or later
iOS15.0 or later
SensorA Movisens Move4, EcgMove4 or EdaMove4
TestingA 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: MovisensDeviceManager connects to the sensor by its Bluetooth name through movisens_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.

Quick links

Page · DocumentationCARP DocumentationPage · DocumentationIntroductionPage · DocumentationQuickstartPage · DocumentationTerminologyPage · DocumentationArchitecture