npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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

IEC103 topology

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

Dynamic object tree

Received ASDUs are stored below:

iec103.0.monitor.link_<linkAddress>.<typeName>.fun_<FUN>.inf_<INF>

Each detected object contains:

  • value
  • type
  • cot
  • cotName
  • rawAsduHex
  • lastUpdate
  • sub.* 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

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>.lastAsduHex

If 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.sendAllSlavePoints

Notes

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