node-red-contrib-piwebapi 3.4.0
Node-RED nodes for OSIsoft PI Web API with OMF support and real-time subscriptions
node-red-contrib-piwebapi
Node-RED nodes for OSIsoft PI Web API with OMF support and real-time subscriptions.
Installation
npm install node-red-contrib-piwebapi
Or install directly from Node-RED palette manager.
Nodes
Configuration
PI Web API Config
Configuration node for PI Web API connection settings.
- Base URL: PI Web API endpoint (e.g.,
https://piserver/piwebapi) - Username/Password: Basic authentication credentials
- Verify SSL: Enable/disable SSL certificate verification
Read Operations
PI Point List
List PI Points from a PI Data Archive server.
- Filter by name pattern (e.g.,
sin*,*temperature*) - Store results in global context for use by other nodes
- Returns WebId, name, and path for each point
PI Point Read
Read values from PI Points.
- Current Value: Get the latest value
- Recorded Values: Get historical data with time range
- Interpolated Values: Get evenly spaced interpolated data
- Plot Values: Get values optimized for plotting
Output format:
{
topic: "PointName",
payload: 42.5,
time: "2024-01-18T12:00:00.000Z",
quality: "Good",
web_id: "F1DP...",
read_mode: "value"
}
Asset Read
Read attribute values from AF elements.
Attribute List
List attributes from AF elements.
Write Operations
PI Point Write
Write values to existing PI Points.
Numeric values:
msg.payload = 42.5;
msg.timestamp = new Date().toISOString();
msg.webId = "F1DP...";
Digital state values:
msg.payload = {
Name: "Active",
Value: 1,
IsSystem: false
};
msg.timestamp = new Date().toISOString();
msg.webId = "F1DP...";
System digital states (Bad, Comm Fail, etc.):
msg.payload = {
Name: "Comm Fail",
Value: 313,
IsSystem: true
};
OMF (OSIsoft Message Format)
Use OMF to create new data streams in PI. Requires three steps:
- Create Type (schema definition)
- Create Container (stream/point)
- Send Data
OMF Type Builder
Visual interface to define OMF type schemas.
- Set Type ID and classification (dynamic/static)
- Define properties with types and formats
- Mark index property (usually Timestamp)
OMF Container Builder
Create OMF containers (streams) that use defined types.
- Single container mode
- Multiple containers mode (batch creation)
- Select types from global context
OMF Writer
Send OMF messages to PI Web API.
- Message types:
type,container,data - Actions:
create,update,delete - Supports gzip compression
Real-time
Subscribe
WebSocket subscription to PI Point value changes.
PI Web API Configuration
Required Settings
For OMF support, configure these in PI Web API Admin:
| Setting | Value |
|---|---|
| CorsMethods | GET,OPTIONS,POST,PUT |
| DisableWrites | False |
| OmfCreateMode | Insert |
CSRF Defense
If EnableCSRFDefense is True, the nodes automatically include the X-Requested-With: XMLHttpRequest header.
Examples
Read Current Value
[Inject] -> [PI Point Read] -> [Debug]
Write to Existing Point
[Inject] -> [Function: Set Value] -> [PI Point Write] -> [Debug]
OMF Workflow (Create New Stream)
[Inject] -> [OMF Type Builder] -> [OMF Writer] -> [Debug]
[Inject] -> [OMF Container Builder] -> [OMF Writer] -> [Debug]
[Inject] -> [Function: Build Data] -> [OMF Writer] -> [Debug]
OMF Data Message Format
msg.payload = [{
containerid: 'Sensor001',
values: [{
Timestamp: new Date().toISOString(),
Value: 23.5
}]
}];
msg.omfMessageType = 'data';
Global Context Integration
PI Point List can store discovered points in global context, making them available to other nodes via dropdown selection:
- Configure PI Point List with a global context key (e.g.,
piPoints) - Run the list operation
- Other nodes (Read, Write) can select points from the dropdown
License
MIT
Author
Holger Amort