Monitoring My Mobility (M3): Continuous mobility monitoring project.
- 150 API requests per hour per user
GET https://api.fitbit.com/1/user/-/[resource-path]/date/[date]/[date]/[detail-level].json
GET https://api.fitbit.com/1/user/-/[resource-path]/date/[date]/1d/[detail-level].json
GET https://api.fitbit.com/1/user/-/[resource-path]/date/[date]/[date]/[detail-level]/time/[start-time]/[end-time].json
GET https://api.fitbit.com/1/user/-/[resource-path]/date/[date]/1d/[detail-level]/time/[start-time]/[end-time].json
- [resource-path]
- activities/calories
- activities/steps
- activities/distance
- activities/floors
- activities/elevation
- Timestamp resolution is 1 minute or 15 minutes
- Other activity series are available by specific sport
- Logging must be activated on device for information to be monitored
- Cannot be activated on device because relevant app is a system app
- Cannot be programmatically opened
- Not feasible
GET https://api.fitbit.com/1/user/-/activities/heart/date/[date]/[end-date]/[detail-level].json
GET https://api.fitbit.com/1/user/-/activities/heart/date/[date]/[end-date]/[detail-level]/time/[start-time]/[end-time].json
GET https://api.fitbit.com/1/user/-/activities/heart/date/[date]/1d/[detail-level].json
GET https://api.fitbit.com/1/user/-/activities/heart/date/[date]/1d/[detail-level]/time/[start-time]/[end-time].json
- Timestamp resolution is 1 second or 1 minute
GET https://api.fitbit.com/1.2/user/[user-id]/sleep/date/[startDate]/[endDate].json
- Timestamp resolution is 1 second, only start time
- Stores intervals of sleep including naps
- deep
- light
- rem
- wake
- 15 MB of internal storage capped per app
- Doubly linked list of instance apps
- Forward sweep to store data on device
- Backwards sweep to export stored data
- One app running at a time
- Minimal battery life impact
- Using rxjs
- Easier to extend
- More memory, which is a premium
- Issue with
App msg queue is full
- Too many contiguous synchronous calls
- Added delay between
syncWrite
calls
- Upon adding more features, ran out of memory
- Switch to functional programming to reduce memory footprint
- Determine fixed IP address to send data from companion to be localhost
- Use mapping between MAC address and user account to identify each device
- Use adaptive frequency to sample according to spatial dimensions instead of temporal dimension
- Sample more frequently during large variations and less frequently during small variations
- Date.now() returns a number that requires a Float64Array
- Does not update in Float32Array
- Geolocation timestamp updates in Float32Array
- Accurate to approximately sampling interval
- Memory is not an issue
- 65 KB on Ionic
- App msg queue is full
- Appear during console.log
- App doing too much contiguous work
- Test each sensor incrementally
- Test without any sensors, only app running
- Would include body presence sensor by default
- Test with accelerometer
- Test with accelerometer, and barometer
- Test with accelerometer, barometer, and gyroscope
- Test with accelerometer, barometer, gyroscope, and heart rate sensor
- Test with accelerometer, barometer, gyroscope, heart rate sensor, and orientation sensor
- Test with accelerometer, barometer, gyroscope, heart rate sensor, orientation sensor, and geolocation sensor
- Test at fixed sampling frequency of 1 Hz
- Perform each test for six hours