node-red-contrib-iaes
v2.0.2
Published
IAES Industrial Asset Event Standard nodes for Node-RED — create, validate, route, publish, and bridge Sparkplug B industrial asset events
Maintainers
Readme
node-red-contrib-iaes
IAES Industrial Asset Event Standard nodes for Node-RED.
Create, validate, route, and bridge Sparkplug B industrial asset events — no code required.
Part of IAES
The standard ships as four packages that version together. The first two
numbers of a package version are the specification it implements — 2.0.x
implements IAES 2.0.
| Runtime | Package | Install |
|---|---|---|
| TypeScript / JavaScript | @iaes/sdk | npm install @iaes/sdk |
| Python | iaes | pip install iaes |
| Node-RED | node-red-contrib-iaes | npm install node-red-contrib-iaes |
| n8n | n8n-nodes-iaes | npm install n8n-nodes-iaes |
Specification, JSON Schemas and governance: iaes.dev.
Install
In your Node-RED directory:
npm install node-red-contrib-iaesOr via the Node-RED palette manager: search for node-red-contrib-iaes.
Nodes
| Node | Purpose |
|------|---------|
| iaes measurement | Create asset.measurement events (vibration, temperature, pressure, power factor, THD...) |
| iaes health | Create asset.health events (AI diagnosis, health index, fault classification, RUL) |
| iaes work order | Create maintenance.work_order_intent events |
| iaes validate | Validate an IAES envelope: required fields, formats, and the required data fields per event type |
| iaes sparkplug | Bridge Sparkplug B metrics to IAES events (Ignition, Cirrus Link, DXM) |
| iaes publish | POST IAES events to any IAES-compatible HTTP endpoint (batching, auth) |
| iaes route | Route IAES events by event_type to 7 typed outputs |
Usage
Sensor to IAES measurement
[inject] --> [iaes measurement] --> [mqtt out]Configure the iaes measurement node with asset_id, measurement_type, and unit. The node reads msg.payload as the value and outputs a complete IAES envelope.
Dynamic values from msg
All nodes accept values from msg properties. Leave a field empty in the config and set it via msg:
msg.payload— the measurement value (number)msg.asset_id— override asset IDmsg.source— override source identifiermsg.measurement_type— override measurement typemsg.unit— override unit
Validate incoming events
[mqtt in] --> [iaes validate] --> [function]
|
+--> [debug] (invalid events)The iaes validate node has two outputs: valid events on output 1, invalid
events on output 2. Every problem found is listed in msg.iaes_errors, and the
first one in msg.iaes_error.
Sparkplug B to IAES bridge
[mqtt in: spBv1.0/+/DDATA/+/+] --> [iaes sparkplug] --> [mqtt out: iaes/events]
|
+--> [debug] (errors/skipped)The iaes sparkplug node decodes Sparkplug B protobuf payloads and converts each numeric metric into an IAES asset.measurement event. It auto-detects measurement types from metric names and maps the Sparkplug device ID to the IAES asset ID.
Compatible with: Ignition (Inductive Automation), Cirrus Link, Banner DXM (Sparkplug mode), Eclipse Tahu, any Sparkplug B 3.0 gateway.
Protobuf support: Install sparkplug-payload in your Node-RED directory for native protobuf decoding. JSON payloads work out of the box.
cd ~/.node-red && npm install sparkplug-payloadExamples
Vibration monitoring
[Modbus read] --> [function: extract value] --> [iaes measurement] --> [mqtt out]Power quality (ION 8650)
[Modbus TCP] --> [iaes measurement (power_factor)] --> [mqtt out]
[Modbus TCP] --> [iaes measurement (thd_voltage)] --> [mqtt out]AI health diagnosis pipeline
[mqtt in] --> [iaes validate] --> [function: run model] --> [iaes health] --> [mqtt out]Publish events to a remote IAES endpoint
[iaes measurement] --> [iaes publish]
|
+--> [debug] (errors)Configure the iaes publish node with the base URL of your IAES-compatible
server and an API key. The node appends /iaes/ingest (configurable) and sends
the key as X-API-Key — the key needs the iaes.ingest scope. Set
Batch Size > 1 to buffer events and send them as a single HTTP POST, up to the
server limit of 100.
If the server refuses events for arriving faster than the asset's registered
cadence, the node reports that as backpressure (yellow status, cadence_dropped)
rather than as an error. Rate limiting is enforced by the server, never by the node.
Route events by type
[mqtt in] --> [iaes route] --1--> [function: process measurement]
--2--> [function: process health]
--3--> [function: process work order]
--4--> [function: process completion]
--5--> [function: process hierarchy]
--6--> [function: process sensor]
--7--> [debug] (spare parts + unknown)The iaes route node reads event_type from the IAES envelope and sends the message to the corresponding output. Output 7 receives maintenance.spare_part_usage and any unrecognized event types.
Links
- IAES Specification
- Python SDK —
pip install iaes - TypeScript SDK —
npm install @iaes/sdk - GitHub
