PhloemDocs

Files & recordings

Play back a recording as if it were live, with the same channels, charts and tests.

Three types are built in:

TypeWhat it is
csvrows under a header
jsonlone JSON object per line
jsonl_watcha folder you drop .jsonl files into

Add one on Inputs (how). For MCAP, ROS 2 bags, CAN logs, NI TDMS or PX4 flight logs, install a connector from Connectors, then add it on Inputs the same way. Those connectors are listed at the end of this page.

Type
FieldRequiredExample
File pathyes/path/to/telemetry.csv
Loop (true/false)notrue
t,output_v,current_a,temp_c
1721037600,0.0,25.1,31.4
1721037601,0.8,25.1,31.6

Each column except the time becomes a channel, with a / in front: /output_v, /current_a, /temp_c.

Time column
Namet, ts, time, timestamp, time_ns, t_ns or event_time — found by name, not position
A plain numberseconds, milliseconds, microseconds or nanoseconds since 1970, judged by its size
A written-out timeneeds sub-second digits: 2024-07-15T10:00:00.000000Z

Without sub-second digits it is not read as a time, and rows are stamped by row number instead.

Loop and follow

FieldTypesEffect
Loop (true/false)csvstarts over at the end, timed as if arriving now
Tail (true/false)jsonlkeeps reading lines as they are added

Both are text boxes: type true. A connector's recordings have their own Loop checkbox.

Nothing appears until the whole file has loaded. A big recording takes a while, then plays at its original speed.

Note

Without Loop, a recording keeps the times it was recorded at. Find it on Replay, not Live: set the time control to All history, or pick the day it was recorded. It is not listed by file name; that list only holds runs you recorded.

#Connectors

Install one on Connectors and it becomes an input type here. Each page has its setup and fields.

Updated