GEMS Telemetry

Get and parse data sent to GEMS website. Data from 2025-07-01 to present.

Get Data

Get data from website.

Use start_date parameter to limit download.

Add row, type, send and line number

Separate data into post times, met, status, and adv data

reshape rga data

Filter bad data before timestamping adv data

Calculate per-send means

Status

Last post was at: 2025-07-16 07:20:25

Last RGA reading was at: 2025-07-16 07:20:18.111111

Last ADV reading was at: 2025-07-16 07:20:23.125

GEMS Status changes

timestamp status
2025-07-09 19:08:07 GEMS Start
2025-07-09 19:08:07 GEMS Starting
2025-07-11 04:29:46 Turbo Error Shutdown
2025-07-11 04:29:47 Turbo Error Shutdown
2025-07-11 04:29:48 Turbo Error Shutdown
2025-07-11 04:29:49 Turbo Error Shutdown
2025-07-11 04:29:49 Turbo Error Shutdown
2025-07-11 04:29:50 Turbo Error Shutdown
2025-07-11 04:29:51 GEMS Stop
2025-07-11 04:29:53 RGA Filament Off
2025-07-11 04:29:53 GEMS shutdown complete
2025-07-11 04:29:55 GEMS Starting
2025-07-11 11:19:14 GEMS started
2025-07-11 11:19:14 RGA Starting filament
2025-07-11 11:20:09 Turbo at speed
2025-07-11 16:09:08 Turbo Error Shutdown
2025-07-11 16:09:09 Turbo Error Shutdown
2025-07-11 16:09:10 Turbo Error Shutdown
2025-07-11 16:09:11 Turbo Error Shutdown
2025-07-11 16:09:12 Turbo Error Shutdown
2025-07-11 16:09:13 Turbo Error Shutdown
2025-07-11 16:09:14 Turbo Error Shutdown
2025-07-11 16:09:14 GEMS Stop
2025-07-11 16:09:16 RGA Filament Off
2025-07-11 16:09:16 GEMS shutdown complete
2025-07-11 16:09:20 GEMS Starting

Post times

[1] "No incorrect lander timestamps"

Teensy Temp

Junction temp of Surface teensy. Runs at 50C at room temp. >95C kills teensies.

Battery

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Turbo

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

RGA

Scale for y is already present.
Adding another scale for y, which will replace the existing scale.

Oxygen

Carbon dioxide

Methane

Hydrogen sulphide

ADV

Pressure/Depth

ADV Correlation

ADV Amplitude

ADV Vertical Velocity

ADV Alongshore Velocity

ADV set up with x axis parallel to shore. Positive is North.

ADV Onshore velocity

Positive is offshore

IMU data

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Failed to fit group -1.
Caused by error in `gam.reparam()`:
! NA/NaN/Inf in foreign function call (arg 3)
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Data issues

Bad Packets

Garbled status or data packets. These need to be filtered out before timestamping. These should be caught on the lander by adding a checksum. Also need to check whether data is corrupted from ADV-lander, lander-surface, or surface-web.

Out of order packets

Not sure what causes this. Happening on the server side. Maybe parallel processing of POST requests? Handled by sorting each send by packet number.

Missing data

Missing data includes bad packets. Need to separate out.

Joining with `by = join_by(send)`
`summarise()` has grouped output by 'send'. You can override using the
`.groups` argument.

Average fraction missing per send in raw data 0.0587389

Average fraction of missing or bad data per send 0.0034735

Post times

timestamp send row_count
2025-07-16 04:10:25 1903 499
2025-07-16 04:20:25 1904 500
2025-07-16 04:30:25 1905 500
2025-07-16 04:40:25 1906 500
2025-07-16 04:50:25 1907 500
2025-07-16 05:00:25 1908 500
2025-07-16 05:10:25 1909 500
2025-07-16 05:20:24 1910 500
2025-07-16 05:30:25 1911 500
2025-07-16 05:40:25 1912 500
2025-07-16 05:50:25 1913 500
2025-07-16 06:00:25 1914 500
2025-07-16 06:10:25 1915 500
2025-07-16 06:20:25 1916 500
2025-07-16 06:30:25 1917 500
2025-07-16 06:40:00 1918 500
2025-07-16 06:50:25 1919 500
2025-07-16 07:00:25 1920 500
2025-07-16 07:10:25 1921 500
2025-07-16 07:20:25 1922 500

Lines per post