Skip to main content
Version: 3.0 (next)
Open Protocol Results Trigger nodeOpen Protocol Results Trigger node

Open Protocol Results trigger node

Open Protocol Trigger Nodes

Start a pipeline with every tightening result, alarm, parameter set selection or job event a tightening controller reports.

Status
Beta
Triggers
Results · Alarms · Parameter Set Selected · Job Info
Output
One event per controller message
Dedup
None: every event starts a run

Overview​

Four trigger nodes start a MaestroHub pipeline from what a tightening controller pushes over Open Protocol. Each uses a function of the matching type on an Open Protocol connection:

NodeFunctionStarts a run for
Open Protocol Results Trigger (trigger.openprotocol.results)Tightening ResultsEvery tightening result (MID 0061)
Open Protocol Alarms Trigger (trigger.openprotocol.alarms)AlarmsAn alarm raised, the alarm status after subscribing, an alarm acknowledged on the controller
Open Protocol Parameter Set Trigger (trigger.openprotocol.psetSelected)Parameter Set SelectedThe current parameter set after subscribing, then every change
Open Protocol Job Info Trigger (trigger.openprotocol.jobInfo)Job InfoEach job event: selected, batch step, completed

Unlike the Read Tightening Result node, which reads one stored result inside an already-running pipeline, the triggers start a new execution for each message. A result is acknowledged to the controller only after MaestroHub has stored the event; see the connection guide.

Reconnection Handling​

  • When the link to the controller drops, each trigger fires once with _metadata.quality bad and the reason under _metadata.error. Its result is the last event delivered (an empty object if none had arrived yet).
  • The connection reconnects on its own and sends every subscription again; the next event is good again. Nothing needs re-enabling.
  • The Parameter Set trigger fires right after each new subscription with the current parameter set, so it also marks every reconnect.

Configuration Options​

FieldMeaning
ConnectionAn Open Protocol connection
FunctionA function of the trigger's type on it
EnabledOff keeps the node but never subscribes

The Tightening Results function has one setting, Include Non-Tightening Results (default on). See Tightening Results.

Output Data Structure​

Output Format​

A Results trigger event:

{
"_metadata": {
"type": "openprotocol_results",
"protocol": "openprotocol",
"connectionId": "bf29be94-fc0a-4dc4-8e5c-092f1b74eb4b",
"functionId": "aef374c3-aa2b-454e-aabc-5657faac5950",
"mid": "0061",
"revision": "12",
"controllerName": "Line3 Station 4",
"sourceTimestamp": "2026-10-21T07:14:03Z",
"serverTimestamp": "2026-10-21T07:14:03.412Z",
"quality": "good",
"timestamp": "2026-10-21T07:14:03.412123456Z"
},
"result": {
"tighteningId": 4711,
"status": "NOK",
"resultType": "tightening",
"psetId": 4,
"jobId": 1,
"vin": "WAUZZZ8V5KA012345",
"torque": { "value": 12.48, "min": 11, "max": 13, "target": 12, "status": "ok", "unit": "Nm" },
"angle": { "value": 182, "min": 90, "max": 180, "target": 150, "status": "high" },
"batch": { "size": 10, "counter": 4, "status": "running" },
"controller": { "name": "Line3 Station 4", "cellId": 1, "channelId": 1 },
"timestamp": "2026-10-21T07:14:03Z"
}
}

Which keys are present depends on the revision the controller sends (_metadata.revision); a field the controller leaves blank is absent, never 0.

Results trigger result Fields​

FieldDescription
tighteningIdThe controller's ID of this tightening
statusOK or NOK
resultTypetightening, loosening, batchIncrement, … (revision 3 and later)
timestampWhen the tightening happened, UTC
psetId, psetName, psetLastChangeThe parameter set used, its name (revision 3 and later) and when it last changed
jobId, jobSequenceNumberThe job and its sequence number
vin, identifierResultPart2, identifierResultPart3, identifierResultPart4The VIN and further identifiers
selectedIdentifierNumber, jointIdIdentifier number and joint ID (revision 12)
controllername, cellId and channelId of the controller
toolSerialNumberThe tool that tightened
strategy, strategyOptionsThe tightening strategy and its option bits
torquevalue, min, max, target, status (low, ok, high) and, from revision 3, unit
anglevalue, min, max, target in degrees, and status
batchsize, counter and status (ok, nok, notUsed, running)
errorStatus, errorStatus2Tightening error bits, each a boolean
rundownAngle, selfTap, prevailTorque, prevailTorqueCompensate, currentMonitoring, currentMonitoringAmp, overallAngleEach monitored value with its limits and status
postViewTorquePost-view torque settings and limits
peakTorque, residualBreakawayTorque, clickTorque, clickAngleFurther measured values (later revisions)
compensatedAngle, finalAngleDecimal, startFinalAngle, startRundownAngle, rundownAngleCompleteAngle details (revision 7 and later)
angleNumeratorScaleFactor, angleDenominatorScaleFactorAngle scale factors (revision 10 and later)
customerTighteningErrorCodeThe customer error code (revision 5 and later)
syncTighteningIdThe synchronised tightening ID

Alarms trigger result Fields​

FieldDescription
eventraised, status (sent after subscribing) or acknowledged (on the controller)
errorCodeThe controller's alarm code, e.g. E851
controllerReadyStatus, toolReadyStatusok or nok
timeWhen the alarm happened, UTC
toolHealthok, nok or notApplicable (revision 3)
alarmTextThe alarm text (revision 3; revision 2 on controllers before spec 2.9)
alarmStatusactive or inactive (status events)

Parameter Set trigger result Fields​

FieldDescription
psetId, psetName, psetLastChangeThe selected parameter set, its name and when it last changed
rotationDirectionCW or CCW
batchSizeThe parameter set's batch size
torque, angleThe parameter set's limits and targets
firstTarget, startFinalAngleFurther targets (revision 2 and later)
selectedIdentifierNumber, jointIdIdentifier number and joint ID (revision 3)

Job Info trigger result Fields​

FieldDescription
jobIdThe job
statusok, nok or notCompleted
batchModeokOnly or okAndNok: which tightenings count
batchsize and counter
timestampWhen the event happened, UTC
currentStep, totalSteps, stepTypeJob step progress (later revisions)
tighteningStatusThe job's last tightening status: ok, nok, aborted, …
jobSequenceNumberThe job sequence number
vin, identifierResultPart2, identifierResultPart3, identifierResultPart4, jointIdIdentifiers (revision 6)

_metadata Fields​

FieldTypeDescription
typestringopenprotocol_results, openprotocol_alarms, openprotocol_pset_selected or openprotocol_job_info.
protocolstringAlways "openprotocol".
connectionIdstringThe connection profile ID.
functionIdstringThe trigger function's ID.
midstringThe Open Protocol message, e.g. 0061.
revisionstringThe message revision the controller sent.
controllerNamestringThe controller's name, when it reports one.
sourceTimestampstringRFC 3339, UTC; the controller's time of the event.
serverTimestampstringRFC 3339, UTC; when MaestroHub received the message.
qualitystringgood, or bad on the once-per-outage failure event.
quality_reasonstringOnly on a failure event: comm_error.
errorstringOnly on a failure event: why the link was lost.
timestampstringRFC 3339 (nanoseconds); when the trigger event was created, UTC.

Referencing in Downstream Nodes​

  • $trigger.result.status: OK or NOK
  • $trigger.result.torque.value and $trigger.result.torque.status: the final torque and whether it was in range
  • $trigger.result.vin: the part the tightening belongs to
  • $trigger.result.tighteningId: the controller's ID, to read the result again later
  • $trigger.result.errorCode: an alarm's code (Alarms trigger)
  • $trigger._metadata.revision, $trigger._metadata.controllerName: which revision and controller sent it
  • $trigger._metadata.quality: bad on the failure event

Best Practices​

  • Store every result with its vin and tighteningId: the ID lets a quality review read the same result again with the Read Tightening Result node.
  • Branch on status and on torque.status / angle.status rather than comparing numbers to limits yourself; the controller already judged the result against its own limits.
  • Keep the Keep-Alive Interval below 15 seconds: a silent link is closed by the controller and every trigger fires bad once.