Edge Exclusive Nodes
The following nodes are available in the PlantPulse Edge category of the palette.
node-red-contrib-plantpulse-edge is located within the image node/conf/plantpulse-edge-nodes/, and the entrypoint creates an absolute path symlink during every boot node_modules/node-red-contrib-plantpulse-edge.
Provided nodes: pp-tag-value-read / pp-tag-value-write / pp-tag-values-read / pp-tag-list / pp-opc-get / pp-opc-start / pp-opc-stop (Total 7). Automatically updated during image upgrade.
1. Read Tag Value (pp-tag-read)
Retrieves the value of a single tag from the gateway. Internally calls GET /api/v1/tag/{tagId}/value.
| Field | Description |
|---|---|
| Name | (Optional) Node name |
| Tag ID | Tag to read (e.g., TAG_TEST_00042). If left blank, dynamically specified via msg.tag_id |
| Fresh | If checked, reads directly from PLC (bypasses cache). Same as ?fresh=true. Keep off during normal operation to reduce PLC load |
| Host / Port | Gateway address (Default 127.0.0.1:80 — leave as is if on the same machine) |
| API Key | Value sent as X-API-Key when REST API authentication (edge.rest.api.auth) is enabled (edge.rest.api.key). Can be overwritten by msg.api_key |
Inputs (Optional):
msg.tag_id— Dynamically overwrite the Tag ID in node settings (allows one node to be reused for multiple tags)msg.fresh— Boolean, dynamically specify cache bypass
Output:
msg.payload = {
tag_id: "TAG_TEST_00042",
value: "1234",
value_time: "2026-05-08 03:01:19.001",
value_read_status: "OK",
...
}
msg.statusCode = 200
msg.tag_id = "TAG_TEST_00042" // 실제 사용된 ID
The most flexible method is to leave the Tag ID in the node settings blank and fill msg.tag_id = "TAG_..." using the change node. This allows the same Read node to be reused across multiple tags.
2. Write Tag Value (pp-tag-write)
Writes a value to a single tag in the gateway. Internally uses POST /api/v1/tag/{tagId}/value.
| Field | Description |
|---|---|
| Name | (Optional) |
| Tag ID | Tag to write. Can be dynamically specified via msg.tag_id |
| Value | Fixed value (Optional). Priority order: msg.value → msg.payload → Node Value |
| Host / Port | Gateway address |
| API Key | Same as Read node — edge.rest.api.key value |
Output:
msg.payload = {
result: "SUCCESS", // 또는 "ERROR"
opc_id: "OPC_LS_TEST",
plc_address: "D1000",
value: "9999", // 사용자가 보낸 값
actual_read: "9999", // 드라이버가 write 후 즉시 read 한 결과
msg: ""
}
msg.statusCode = 200
Supported Protocols: HTTP / OPC-UA / Modbus TCP / MELSEC / S7 / LS XGT(XGI/XBC/XBM) / AB EtherNet/IP. For EtherNet/IP, write requests for certain data types may be rejected depending on PLC firmware/patches; verify in a simulator before applying to actual equipment.
Writing values to an actual PLC can cause equipment to move. Thoroughly verify using test tags or a simulator OPC before applying to actual equipment tags. Only use write permissions for tags agreed upon with the operations team.
3. Next Steps
- MQTT Node Details — Integration with external SCADA / Cloud IoT
- IIoT Example Collection — Practical patterns combining read/write operations