iobroker.iec103
v0.1.6
Published
ioBroker adapter for IEC 60870-5-103 over serial or TCP RS485 converters
Readme
ioBroker IEC 60870-5-103 Adapter
English Documentation
What the adapter does
This adapter reads and sends IEC 60870-5-103 FT1.2 telegrams. It can be used with a direct serial interface or through a TCP RS485-to-Ethernet converter such as a Waveshare RS485-to-ETH adapter.
The adapter can run in three modes:
- Sniffer: listen only, parse frames and create objects dynamically.
- Master: controlling station, can send class requests, reset link, general interrogation and raw frames.
- Slave: controlled station, can expose configured points and answer general interrogation.
Transport Options
| Transport | Use case |
| --- | --- |
| TCP client | Adapter connects to an RS485-to-Ethernet converter. |
| TCP server | Adapter waits for an external TCP client. |
| Serial | Adapter uses a local serial device such as /dev/ttyUSB0. |
Dynamic Object Creation
Received ASDUs are stored below:
iec103.0.monitor.link_<linkAddress>.<typeName>.fun_<FUN>.inf_<INF>Each detected object contains:
valuetypecotcotNamerawAsduHexlastUpdatesub.*values if subvalues are enabled
Unknown or vendor-specific payloads are still stored as raw hex and generic byte/word/float interpretations.
Addressing: Link, CA, FUN, INF
| Field | Meaning | | --- | --- | | Link address | Address on the IEC103 link layer / RS485 line. | | CA | Common Address, usually the station or device address inside the ASDU. | | FUN | Function type, often used to group protection functions. | | INF | Information number, the concrete point inside a function. |
For simple test setups with one protection device, CA = 1 is often correct.
Slave Points
In the Slave points tab you can configure values that the adapter should provide as an IEC103 slave.
Each row can define:
- active/inactive
- name
- IEC103 type
- FUN
- INF
- CA
- value type
- default value
- optional ioBroker source state
- include in General Interrogation
- send on change
For every configured point the adapter creates:
iec103.0.slave.points.<id>.value
iec103.0.slave.points.<id>.lastSent
iec103.0.slave.points.<id>.lastAsduHexIf a source state is configured, the adapter reads this state and sends its value. If no source state is configured, you can write directly to slave.points.<id>.value.
Example: Binary Alarm Point
| Setting | Value |
| --- | --- |
| Type | 1 - Time tagged message |
| FUN | 160 |
| INF | 1 |
| CA | 1 |
| Value type | boolean |
| Source state | 0_userdata.0.trip_alarm |
| GI | enabled |
| Send on change | enabled |
The adapter sends the point during General Interrogation and also when 0_userdata.0.trip_alarm changes.
Example: Measured Value
| Setting | Value |
| --- | --- |
| Type | 3 - Measurands I |
| FUN | 161 |
| INF | 10 |
| CA | 1 |
| Value type | number |
| Source state | modbus.0.current_l1 |
| GI | enabled |
| Send on change | optional |
Control States
The adapter provides these control states:
iec103.0.control.sendGeneralInterrogation
iec103.0.control.sendResetLink
iec103.0.control.requestClass1
iec103.0.control.requestClass2
iec103.0.control.rawFrameHex
iec103.0.control.sendRawFrame
iec103.0.control.rawAsduHex
iec103.0.control.sendRawAsdu
iec103.0.control.sendAllSlavePointsNotes
IEC 60870-5-103 is often implemented with device-specific private payloads. This adapter is intentionally generic and can be extended with relay-specific decoding when real telegram examples are available.
A German version of this documentation is available in docs/README_DE.md.
Changelog
0.1.6
- Decode normalized 13-bit ASDU 3/9 measurands, expose raw/status sub-values and add optional nominal-value and maximum-MVAL scaling.
0.1.5
- Correct npm package metadata so ioBroker recognizes the installed adapter version.
0.1.4
- Fixed jsonConfig metadata for repository checks and moved the German documentation to
docs/README_DE.md.
0.1.3
- Prepared the adapter for ioBroker repository checks, npm publishing and GitHub release automation.
0.1.2
- Added bilingual README with diagrams and examples for sniffer, master and slave point configuration.
0.1.1
- Added configurable slave point table with source states, GI response and send-on-change support.
0.1.0
- Initial IEC 60870-5-103 adapter with serial/TCP transport, sniffer/master/slave modes and dynamic object creation.
Older entries are stored in CHANGELOG_OLD.md.
License
MIT License
Copyright (c) 2026 TheBam1990
