Write Acknowledgements and Round Readings to AVEVA PI
Enable mRounds to write to AVEVA PI, and understand the two separate writes: the alert acknowledgement and the operator's round reading.
Tenant settings
Outbound posting to AVEVA PI is configured for the tenant through Tenant Manager.
| Key | Value |
|---|---|
| enableRoundsPiOutbound | Turns posting of mRounds values to AVEVA PI on (true) or off. |
| piOutboundIntegration.eventType | Event type. Use pi_outbound. |
| piOutboundIntegration.identifierLevel | Identifier level. Use element. |
| piOutboundIntegration.unifiedEnvMapping.development | Unified environment name for the development environment (example: dev-cwp-maximo). |
"enableRoundsPiOutbound": true,
"piOutboundIntegration": {
"eventType": "pi_outbound",
"identifierLevel": "element",
"unifiedEnvMapping": {
"development": "<unified-environment-name>"
}
}
Values in angle brackets are tenant-specific inputs.
Two separate writes
| Write | When Innovapptive sends it | Attribute | Value written | Timestamp |
|---|---|---|---|---|
| Alert acknowledgement | After the event frame is stored. For a webhook, after the HTTP 200; for a poll, after the polled frame is stored. | The acknowledgement attribute you name, for example Acknowledged (Boolean) | true | When Innovapptive received the alert |
| Round reading | After an operator records a reading on a round | The measurement attribute mapped to that round task, for example BearingTemp | The value the operator recorded, not the value read earlier from the event frame | When the operator recorded the reading |
Both writes use the same request, the same sign-in (see Authentication), and "Good": true.
Request
POST https://pi.example-customer.com/piwebapi/streams/{attributeWebId}/value
Content-Type: application/json
Accept: application/json
- One request updates one attribute. A round that records three tags sends three requests.
- The URL uses the attribute's stream WebId. Innovapptive does not look it up, and element or event-frame WebIds cannot be used.
Valuemust match the attribute type: a JSON boolean, number or string.- Units are not sent; PI already has them on the attribute.
- A successful write returns HTTP 202 or 204 with no body.
Acknowledge the alert (Acknowledged attribute):
POST https://pi.example-customer.com/piwebapi/streams/F1AbEbgZy4oKQ9kiBiZJTW7eugwPVA1y2Hm7xGoYvuP1UXqzglh3z0Ld8YUmKpDQwX3W4bQ/value
Content-Type: application/json
{
"Timestamp": "2026-10-06T17:09:32.551Z",
"Value": true,
"Good": true
}
Write a round reading (the operator records bearing temperature as 86.4 on the BearingTemp attribute):
POST https://pi.example-customer.com/piwebapi/streams/F1AbEAI8QAAAAAAAAAAAAAAAAAAAAAAATTRTMP01/value
Content-Type: application/json
{
"Timestamp": "2026-10-06T18:22:00Z",
"Value": 86.4,
"Good": true
}
A string attribute is written the same way, with Value as a JSON string. A boolean round task is written with Value as true or false.
Confirm for each attribute
| Acknowledgement attribute | Each round measurement attribute | |
|---|---|---|
| Name and AF path | For example Acknowledged on \\PIAF01\PlantA\Area1\Pump-01 | For example BearingTemp on the same element |
| Attribute WebId | The attribute's stream WebId | The attribute's stream WebId |
| Data type | Boolean | Number, string or boolean, matching the attribute |
| Value written | true | The reading the operator recorded |
| Where it sits | On the element or on the event frame | On the element or on the event frame |
The write account needs write permission on the acknowledgement attribute and on every measurement attribute a round can update.
