hydrate-protobuf (Transform Node)
The Hydrate Protobuf node reads binary or JSON payloads from a HEAT capture bundle (e.g. from an upstream ingest or node that emits DataPacketBundle-style data), extracts a specific protobuf type from the bundle, and writes the hydrated payloads as JSON, CSV, or raw binary.
Use this node when you need to turn opaque protobuf blobs into a structured format (JSON/CSV) for downstream analytics, dashboards, or export. The node supports multiple inputs and can aggregate simulation frames into a single time-ordered stream when configured.
Configuration Schema
| Property | Type | Required | Description |
|---|---|---|---|
targetProtoType | string | Yes | Fully-qualified protobuf type inside the bundle. Supported values depend on the runner implementation (e.g. GazeComponent, FolderUploadData, HEAT.OpenDISModule.PDU). |
outputFormat | "json" | "csv" | "bin" | Yes | Encoding for the output. json and csv produce human-readable or tabular data; bin writes the raw serialized protobuf bytes. Defaults to json. |
aggregateSimulationFrames | boolean | No | When targetProtoType is a simulation frame type, combine all frames into a single time-ordered stream. Defaults to true. |
emitFrameIndex | boolean | No | When aggregating frames, include a synthetic frame index column/field in CSV/JSON. Defaults to true. |
enableUploadDeduplication | boolean | No | Compute an MD5 hash of the output and skip uploading if the same hash already exists for this node instance. Defaults to false. |
Supported protobuf types
The runner implements decoders for a fixed set of types. Typical values include:
- GazeComponent — Gaze and biometric sensor data; output is JSON with a
gaze_componentarray. - FolderUploadData — Uploaded file/folder content; time-series CSV content is merged into a single artefact.
- HEAT.OpenDISModule.PDU — OpenDIS PDU records; output can be JSON or CSV with PDU fields.
If you specify a targetProtoType not implemented by the runner, the node fails with an error. Check the runner’s supported types when authoring the configuration.
Example configuration
{
"targetProtoType": "HEAT.OpenDISModule.PDU",
"outputFormat": "json",
"aggregateSimulationFrames": true,
"emitFrameIndex": true,
"enableUploadDeduplication": false
}Inputs and outputs
- Inputs: The node accepts multiple inputs (e.g. from a single upstream node that emits a list of payloads, or from several nodes). All payloads are collected and decoded according to
targetProtoType. - Output: One or more artefacts are produced. For
outputFormatjsonorcsv, the content is UTF-8 encoded. Forbin, the artefact is the raw serialized protobuf bytes.
Integration in a session template
- Place a
hydrate-protobufnode after a node or ingest that produces HEAT capture bundles (or raw protobuf payloads the runner can decode). - Set
targetProtoTypeto the type you want to extract andoutputFormatto the desired encoding. - Connect downstream nodes (e.g. tabular-query, json-template, or dashboard nodes) to consume the hydrated output.
Related concepts
- Core Utils Runner
- Node Templates
- Tabular Remap or tabular-query (for further processing of CSV output)