Skip to main content

Module eggtimer

Module eggtimer 

Source
Expand description

An Eggtimer’s flight data, as the flight computer’s own download writes it: the Eggtimer Classic’s and TRS’s over a serial cable, the Quantum’s and Proton’s from their WiFi page.

The file is comma-separated text: one header row naming the columns, then one row per sample, every column on the row’s time. There is no preamble and the header states no units:

T,Alt,Veloc,FAlt,FVeloc,LDA,LowV,Apogee,N-O,Drogue,Main
0,0,0,0,0,0,0,0,0,0,0
0.05,4,80,0.8,16,0,0,0,0,0,0
0.1,9,100,2.44,32.8,0,0,0,0,0,0

Layouts. The first column is the time, T, and the second the barometric altitude, Alt. Then come the logger’s figures, which differ by model and firmware: a raw velocity, a filtered altitude and velocity (FAlt, Filt_Alt or KAlt, then FVeloc or KVeloc), and on the Proton the accelerometer’s figures. Last come the event markers, from LDA on. The Classic’s manual shows T,Alt,Veloc,KAlt,KVeloc,LDA,BurnT,LowV,Apogee,N-O,CHA,CHB (Eggtimer Flight Computer User’s Manual, firmware 1.52, board RevD, p37), the TRS’s T,Alt,Veloc,FAlt,FVeloc,LDA,LowV,Apogee,N-O,Drogue,Main (Eggtimer TRS Flight Computer User’s Manual, firmware 2.07, p37), and an older guide T, Alt, VRaw, VFilt (Using Excel to Graph Eggtimer Flight Data, p3). The project’s sample logs add a layout without the raw velocity (T,Alt,FAlt,FVeloc,…) and the Proton’s 22 columns, whose accelerometer columns are named AccelG, AccelFPSS, VAccel, AltAccel and filtered FAccel… where its manual writes Accel, AccelFPSS, VelocAcc and AltAcc (Eggtimer Proton User’s Guide, software 2.01C, p45). The Proton lets its owner name each deployment channel, up to 8 characters, and writes that name in the header (Proton p26; Eggtimer Proton Release Notes, version 2.01C, p2), so a marker column may carry any name.

A file is this layout if its first line that isn’t blank is comma-separated, names T then Alt, and names at least one more column this reader knows (the table below). That keeps out a PerfectFlite export (Time,Altitude,…) and an RRC3’s (Time,Altitude,Pressure,…).

Units. The header states none. Each column, what it is read as, and where that comes from:

ColumnRead asFrom
Tthe clock: seconds, or milliseconds when the step says so (below)the Classic’s and TRS’s manuals (p37) and the Excel guide (p3): milliseconds; the Quantum’s (Eggtimer Quantum User’s Guide, software 1.09G, p38) and Proton’s (p45): seconds
AltQuantity::AltitudeAboveGround, ftthe Classic and TRS manuals (p37) state feet; the Quantum and Proton manuals state no unit for the download, but give every height in feet (Quantum p24: launch detect “50’-500’”), and no Eggtimer manual offers meters
FAlt, Filt_Alt, KAltQuantity::AltitudeAboveGround, ft: the logger’s filtered AltQuantum p38, Proton p45; Classic p37 (“the two K fields are filtered data”)
Veloc, VRawQuantity::Speed, ft/s: the change in Alt over the stepClassic and TRS p37 (“velocity in ft/sec”); Quantum p38, Proton p45; checked against Alt (below)
FVeloc, KVeloc, VFiltQuantity::Speed, ft/s: the change in the filtered altitude over the stepQuantum p38, Proton p46; the Excel guide (p3, p7: “Velocity in ft/sec”); checked against the filtered altitude (below)
AccelQuantity::Acceleration, g × 9.806 65 m/s² (standard gravity)Proton p45 (“in G’s”)
AccelG, FAccelGQuantity::Acceleration, g × 9.806 65 m/s²the name; Proton p45
AccelFPSS, FAccelFPSSQuantity::Acceleration, ft/s²Proton p45 (“ft/sec^2”); the name
VAccel, VelocAcc, FAccelVelQuantity::Speed, ft/s, from the accelerometerProton p45 (“the velocity derived from the accelerometer in ft/sec”)
AltAccel, AltAcc, FAccelAltQuantity::InertialAltitude, ftProton p45 (“the DISTANCE TRAVELED derived from the accelerometer in ft.”)
LDA, LowV, Apogee, N-O, Drogue, Main, AUX, BurnT, CHA, CHB, CH1…, MaxV, MaxA, Boost#1…, BO#1…, and any column after LDAQuantity::Unrecognized, as written: an event marker (below)Quantum p38–39, Proton p46

No Eggtimer manual offers a unit other than feet: the Classic’s, TRS’s, Quantum’s and Proton’s manuals and release notes name no meter or metric setting. Each column whose name doesn’t state its unit gets a note on the record saying how it was read, once per name.

Speeds checked. A speed is read in feet per second only if the rows bear out that it is its altitude’s change over the step: Veloc and VRaw of Alt, FVeloc, KVeloc and VFilt of the first filtered altitude, within 1 % or 1 ft/s, on at least 90 % of the rows after the first. A speed that falls short is kept as written, Quantity::Unrecognized, with a note; a file of one row, or a filtered speed with no filtered altitude, has nothing to check, and is read as the manual says. As of 2026-10-12, over the 43 Eggtimer files among the project’s sample logs, the least share is 95.9 %, and with the clock read in the wrong unit, a factor of 1,000 off, at most 9.5 %: the check also guards the time’s unit (below).

The accelerometer. As of 2026-10-12, in the 4 of those files with an accelerometer, AccelFPSS is about 32 times AccelG (32.17 ft/s² is one g), VAccel tracks the sum of AccelFPSS over the steps, and AccelG’s median before the start of flight (T below 0) is 0 to 0.2 g. Standing on the pad, an accelerometer that keeps gravity reads 1 g, so the Proton’s acceleration has gravity taken out. Its manual doesn’t say so; its release notes have it calibrate the accelerometer as it is armed, standing up (2.01C, p8). A note on the record says whether this file’s acceleration holds gravity, from its own pad reading: taken out below 0.5 g, held within 0.5 g of 1 g, not known otherwise or with no rows before the start of flight. The values are kept as written either way. The F-prefixed accelerometer columns are read as their unfiltered namesakes, as FAlt is Alt filtered: no manual describes them.

The time’s unit. The Classic’s and TRS’s downloads, and the older guide’s, write T in milliseconds; the Quantum’s and Proton’s in seconds; and the sample logs hold eleven-column files in both. The logger takes 4 to 33 samples a second going up and 1 to 10 coming down (Classic p19–20; Quantum p25), so a step between rows is 0.03 to 1 in seconds and 30 to 1,000 in milliseconds. The reader takes the median step between rows: above 5, a factor of 5 clear of either range, T is in milliseconds; otherwise in seconds. A file of one row has no step, and is read in seconds. A note on the record says which, and why.

Event markers. The manuals put the markers last, from LDA on: each is 0 at every sample but the one that triggers its event, where the Quantum’s and Proton’s manuals say it holds “the RAW altitude data”, in feet (Quantum p38; Proton p46). MaxV and MaxA hold the top speed and acceleration instead, ft/s and ft/s² (Eggtimer Proton Release Notes, version 1.02N, p13: “now referenced to the actual value”); in the sample logs they are the whole part of VAccel and AccelFPSS on their row. A marker may also be held from its event to the end of the file, as 3 marker columns among the 43 sample files are (as of 2026-10-12). Each marker column is kept as a channel as written, Quantity::Unrecognized: its 0 means “no event”, not 0 ft, so converting it as a height would mislead. One note on the record lists them. Each run of non-zero samples is an Event named as the column (a name past 80 characters cut short, as a note quotes it), at the run’s first sample, up to MAX_EVENTS_PER_MARKER a column; past that, the rises are counted in a note. An event that happened at a raw altitude of exactly 0 ft can’t be told from no event, and is lost. A column after LDA whose name this reader doesn’t know, such as a Proton channel’s own name, is read as a marker, with a note.

The primary track. FlightLog::altitude_m is Alt, the barometer’s raw altitude above the logger’s zero. The vertical speed is Veloc (or VRaw), the barometer’s; without it, or with it kept as written because its check failed, the filtered FVeloc (or KVeloc, VFilt), also the barometer’s, with a note. VAccel is the accelerometer’s, a channel only. The file names no model, serial number or flight, so the logger reads Eggtimer.

Cells. Lines end in CR, LF, CR LF or CR CR LF (a blank line after every row, which is skipped). A row whose every cell is empty, as some downloads end with hundreds of, is skipped and counted in a note. An empty cell, or a row shorter than the header, leaves a gap, NaN, counted per column in a note. A cell that isn’t a number, a row longer than the header, an empty time, and a time that doesn’t increase are refused, naming the line. A column this reader doesn’t know, before LDA, is kept as written, Quantity::Unrecognized, with a note.

Where this comes from. The layouts and units are the manuals’ above; the time-unit rule, the blank-row rule and the column names they don’t show are the sample logs’. Debrief’s reader (lib/parsers/eggtimer.ts, MIT, the project owner’s own) also tells milliseconds from seconds by the median step, over the first 60 rows with its line at 3. Where this reader departs from it: it keeps every column and reads the markers as events, where Debrief maps the time, the altitude and one velocity; it takes the raw Veloc as the vertical speed where Debrief prefers the filtered one; it reads the layouts without Veloc, which Debrief doesn’t recognize; and it refuses what Debrief passes over, naming the line. Debrief’s note that the logger can be set to metric units cites no source, and none of the manuals above offers such a setting.

Constants§

MAX_EVENTS_PER_MARKER
The most events one marker column gives; past it, the column’s rises are counted in a note instead. A marker marks one event of the flight (Quantum p38, Proton p46): as of 2026-10-12, no marker column among the 43 Eggtimer files in the project’s sample logs rises more than once. The cap keeps a file whose marker flips on every row from filling the record with events.

Functions§

read
Reads an Eggtimer’s flight data from its text.