IEC 104 Read
x/iec104Read component: v0.37.0+ IEC 60870-5-104 master station, sends a General Interrogation (GI) to batch-read substation telemetry (single/double point, measured values, integrated totals). Results are written back to msg.Data as a unified iot_points.Data list, routing to Success/Failure.
Requires: rulego-components-iot (opens new window)
# Configuration
| Field | Type | Description | Default |
|---|---|---|---|
| server | string | Substation address host:port, IEC 104 default port 2404 | 127.0.0.1:2404 |
| commonAddr | int | ASDU common address (station address) | 1 |
| timeout | int | Interrogation wait timeout (seconds) | 5 |
| points | array | Default point table (addr=IOA). Points in msg.Data take precedence (on-demand read) | see below |
# Point Table Fields
| Field | Description | Example |
|---|---|---|
| name | Point name | Breaker1 |
| addr | Information Object Address (IOA) | 100, 16385 |
| type | Type ID (optional, informational) | M_SP_NA_1, M_ME_NC_1 |
All fields support ${msg.xx} / ${metadata.xx} templates.
# Acquisition Model
Sends a General Interrogation (GI); after the substation returns all data, values are picked by IOA. Supports 9 ASDU types: single/double point telemetry, scaled/short-float measured values, integrated totals. Connection-level failures auto-reconnect and retry.
# Input/Output
- Input (optional):
msg.Datawith point list JSON takes precedence (dynamic acquisition) - Output:
[{"name","value","timestamp","error"}](timestamp in nanoseconds; error only on per-point failure)
[
{"name": "Breaker1", "value": true, "timestamp": 1789999999000000000},
{"name": "VoltageA", "value": 220.5, "timestamp": 1789999999000000000}
]
2
3
4
# Example
Scheduled acquisition (schedule endpoint in front):
{
"id": "iec104_read",
"type": "x/iec104Read",
"configuration": {
"server": "192.168.1.10:2404",
"commonAddr": 1,
"timeout": 5,
"points": [
{"name": "Breaker1", "addr": "1", "type": "M_SP_NA_1"},
{"name": "VoltageA", "addr": "16385", "type": "M_ME_NC_1"}
]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
On-demand read (msg.Data with point list, takes precedence):
[{"name": "Frequency", "addr": "16400", "type": "M_ME_NC_1"}]
# Related
- Write: x/iec104Write
- Universal acquisition entry: x/iotRead (driver=iec104)
- To time-series storage: x/tsdbWrite (measurement configured)