Skip to content
Industrial ObservabilityTalk to us

IO Telemetry Gateway

Your UPS knows it’s failing.
Your monitoring doesn’t.

A supported appliance that reads the power and cooling plant over Modbus and delivers clean, named, correctly scaled readings to the monitoring platform you already run.

Modbus TCP and RTU in. Prometheus and OTLP out. DIN rail, 24V DC, typ. 8W.

The IO Telemetry Gateway on DIN railA compact DIN-rail mounted appliance with a 24V DC supply terminal, two Ethernet ports, an RS485 serial terminal for Modbus RTU, and status indicators.DIN RAIL · 35 MMio · LON118 devices upPWR ACTETH0 ETH124V DC · typ. 8WRS485 · Modbus RTUModbus TCP

The whole product, in one comparison

You should never have to know that register 40117 is a 16-bit integer with a ×0.1 multiplier.

Somebody has to know. It should not be you, and it should not be a spreadsheet on a shared drive.

Before

What integrating a meter looks like today.

Register 40117
  16-bit integer
  x0.1 multiplier
  big-endian

Is that kW or kVA?
Which phase?
Is 65535 a reading, or a fault code?
Does 40117 mean holding register 117,
  or wire offset 40117?

Repeat for every point, on every device, on every site. Then keep it correct through a firmware update.

After

What integrating a meter looks like with the gateway.

devices:
  - id: pdu_a1
    endpoint: gw_pwr_a
    address: "2"
    profile: schneider_pdu
    tags: {site: LON1, room: dh1, row: A}

The maintained device definition does the ugly bit. You name the device, say where it is, and tag it the way your site is actually organised.

And this is what arrives in your platform

io_pdu_active_power_kilowatts{site="LON1",room="dh1",row="A",device="pdu_a1"}        34.1
io_pdu_current_amperes{site="LON1",room="dh1",row="A",device="pdu_a1",phase="l1"}   48.2
io_pdu_current_imbalance_percent{site="LON1",room="dh1",row="A",device="pdu_a1"}     4.8
io_ups_battery_charge_percent{site="LON1",room="dh1",row="A",device="ups_a1"}       97.5
io_ups_battery_runtime_minutes{site="LON1",room="dh1",row="A",device="ups_a1"}      11.5
io_ups_operating_mode{site="LON1",room="dh1",row="A",device="ups_a1",mode="normal"}  1

Named, scaled, carrying its units, and labelled with your site vocabulary. Something you can put on a dashboard or alert on without a translation step in the query.

How it works

Three steps, and none of them are yours to maintain.

  1. 01

    Connect

    Modbus TCP and RTU to the equipment you already own. Devices on an RS485 bus are reached through the gateway that already fronts them; a UPS with its own Ethernet port is read directly. Nothing is replaced and nothing is rewired.

  2. 02

    Translate

    Maintained device definitions hold the registers, data types, word order, scaling, units and naming. That work is done once, by us, and kept up to date — it is not a spreadsheet your team maintains after the person who wrote it leaves.

  3. 03

    Deliver

    A Prometheus endpoint today, with OpenTelemetry export for vendor-neutral delivery. Series are named and labelled to Prometheus conventions, so they behave like everything else in your platform.

Where it sits

It feeds your platform. It does not become one.

The gateway is a translation device between the plant and the monitoring you already run. There is no new dashboard to adopt, no agent on your servers, and no second user-access model to administer.

How telemetry reaches your monitoring platformPlant equipment — UPS, PDU, power meter, cooling and environmental sensors — is polled over Modbus TCP and RTU by the IO Telemetry Gateway, which exposes named, scaled metrics over a Prometheus endpoint or OTLP export to your existing Grafana or observability platform.UPSPDUPower meterCoolingSensorsPLANT EQUIPMENTModbus TCP / RTUpollIO Telemetry Gatewaymaintained device definitionsregisters · types · scalingunits · naming · labelsPrometheus / OTLPscrape or pushYour platformGrafana, Prometheus orthe tool you already rununchangedALREADY YOURS
The gateway sits between the plant and the platform. Nothing downstream has to change, and no new place to look is created.

Device packs

The register maps are the product.

Anything can read a register. Knowing which register, what type it is, how it scales, what to call it and what it means when it reads 65535 — that is the part that takes time, and the part that goes stale.

  • UPS

    APC UPS

    APC by Schneider Electric

    • Modbus TCP
    • Modbus RTU
  • UPS

    Vertiv UPS

    Vertiv · Liebert

    • Modbus TCP
    • Modbus RTU
  • UPS

    Socomec UPS

    Socomec

    • Modbus TCP
    • Modbus RTU
  • Power distribution

    Schneider PDU

    Schneider Electric

    • Modbus TCP
    • Modbus RTU
  • Metering

    Carlo Gavazzi power meters

    Carlo Gavazzi

    • Modbus RTU
    • Modbus RTU over TCP
  • Cooling

    Cooling units

    CRAH and CRAC units · Chillers · Coolant distribution units

    • Modbus TCP
    • Modbus RTU
  • Environmental

    Environmental sensors

    Modbus temperature and humidity transmitters · Differential pressure sensors · Leak detection controllers

    • Modbus RTU
    • Modbus TCP

Device definitions are maintained and updated as part of the subscription. When a manufacturer changes a register map in a firmware revision, that is our problem to track, not a fault you discover from a graph that has been flat for three weeks.

New and bespoke equipment can be mapped on request. A pack is a file the appliance loads at runtime, so a new mapping is something you receive and drop in — no firmware update to the appliance, and no waiting for a release.

See what each pack reads →

Scope

What it deliberately does not do.

This is not DCIM. It reads plant and hands the readings to your monitoring platform. That is the whole job, and keeping it that small is why it is supportable.

  • No asset database

    The gateway does not want to be the record of what you own.

  • No rack planning

    No elevations, no U-space, no floor plans.

  • No cable management

    Not a port, not a patch, not a run.

  • No work orders

    No tickets, no maintenance scheduling, no permits.

  • No capacity planning

    It supplies the readings a capacity model needs. It is not the model.

  • No new dashboard

    No portal to sign in to and no second set of user accounts to administer.

Resilience

Two units per site. One live, one on the shelf.

High availability that a facilities team can actually operate at three in the morning, without a runbook that starts “check cluster quorum”.

The configuration is portable, held outside the appliance as well as on it. The spare is preconfigured and powered down. There is no clustering, no failover layer and no shared state to go wrong.

  1. 1

    Move the power, the network and the Modbus connection to the spare.

  2. 2

    Start it.

  3. 3

    Confirm collection — the unit’s own terminal interface shows what is answering.

  4. 4

    Return the failed unit to us.

  5. 5

    We send a replacement, preconfigured for your site, back to the shelf.

Specification

Built to sit in a plant room and be forgotten about.

Collector
Written in Go and shipped as a single static binary. No runtime, no interpreter and no dependency tree underneath it. Built for low-resource edge deployment.
Configuration
Device and register mappings load at runtime. A new device pack is a file, not a firmware release. The config validates before it touches any equipment.
Commissioning
A local terminal interface on the unit for commissioning and fault-finding, plus a register decoder for settling the type and word order of an unknown point against the equipment’s own display.
Hardware
Runs on Revolution Pi Connect 5. DIN-rail mount, 24V DC, typ. 8W, CE marked. Fanless, with no moving parts.
Support
A subscription covers device definition updates, collector updates and support. When a manufacturer changes a register map in a firmware revision, tracking it is our job. A failed unit is replaced preconfigured for your site.

Full technical specification →

Who is behind it

Monitoring engineers who got tired of the plant being invisible.

Industrial Observability is built by former Grafana Professional Services engineers and co-authors of Observability with Grafana (Packt). We have spent our working lives putting other people’s infrastructure onto dashboards, and the physical layer was always the part that got left out.

We are deliberately vendor-neutral. We work with several monitoring platforms and can help you choose, procure or implement one if that is useful. The gateway speaks Prometheus and OTLP because those are the interfaces your platform already has, so it works with whichever you run.

Questions

The things engineers ask first.

Does it work with the Grafana we already have?

Yes. The gateway exposes a Prometheus endpoint, so anything that scrapes Prometheus can read it — your existing Prometheus, Grafana Alloy, Grafana Agent, VictoriaMetrics, or a commercial platform with a Prometheus receiver. An OpenTelemetry export is the vendor-neutral route where OTLP suits you better.

There is no plugin to install, no data source to buy and no dashboard you are obliged to use. Metric and label naming follows Prometheus conventions, so the series behave like everything else already in your platform.

What if our equipment is not in the device pack list?

Tell us what it is. Mapping new equipment is normal work, not an exception, and new and bespoke devices can be mapped on request.

A device pack is a file the appliance loads at runtime, so a new mapping is something you receive and drop in. If the equipment is genuinely one of a kind, you can write the mapping yourself: the format is documented and the appliance includes a register decoder that shows a raw reading interpreted every plausible way, so a type and word order are settled against the equipment’s own display rather than guessed.

Does it need internet access?

No. The gateway polls equipment on your network and serves metrics on your network. It runs in an isolated OT segment with no route to the internet, which is where most of this equipment already sits.

Device definition updates arrive as files. You can take them over your own management path, or by hand. Nothing in the appliance calls home, and there is no vendor portal to sign in to.

How is it secured and updated?

The collector is a single static binary with no runtime and no interpreter underneath it. It runs as an unprivileged service under systemd with the standard sandboxing options applied, and needs no inbound connection except the metrics endpoint you choose to expose — which can be bound to localhost and scraped by a local agent if you would rather it were not on the network at all.

Modbus is a protocol with no authentication of its own. The gateway reads; writing is not part of what it is for. Where a configuration is owned by Ansible or another configuration manager, the appliance can be started in a mode that refuses to save changes made on the box, so a local edit fails loudly rather than being silently reverted on the next deploy.

Updates to the collector and to device definitions are supplied as part of the subscription and applied on your schedule.

What happens if the unit fails?

You fit the cold spare. Sites are specified with two identical units: one live, one preconfigured on the shelf.

The configuration is portable, held outside the appliance as well as on it. Recovery is moving power, network and the Modbus connection to the spare, starting it, confirming collection, and returning the failed unit. We send a replacement, preconfigured for your site, so you are back to two units without doing the commissioning again. There is no cluster to rebuild, no quorum, and no HA layer for your team to learn and administer.

While a unit is down you lose collection, not history. Everything already gathered is in your monitoring platform, where it always was.

Is this DCIM?

No, and it is not trying to be. There is no asset database, no rack elevation, no cable management, no work orders and no capacity planning.

The gateway does one job: it reads the plant and hands the readings to your monitoring platform in a form that platform already understands. If you run DCIM, this sits alongside it. If you do not, this is not a reason to start.

How long does commissioning take?

It depends on how reachable the equipment is, which is usually the real variable. The gateway itself is DIN-rail mounted, takes 24V DC and needs a network path to the equipment.

Before it connects to anything, it will validate a configuration and print the resolved addressing of every point — the table to hold against a datasheet. It will then read every device once and exit with a status code, which is enough to drive a commissioning script. A local terminal interface on the unit shows what is answering and what is not, which is where fault-finding actually happens.

What does it cost?

Talk to us. Cost depends on the number of sites, how many devices are behind each unit, and whether any equipment needs mapping — so a figure quoted before that conversation would be a guess.

The commercial model is an appliance with a subscription that covers device definition updates, collector updates and support. Tell us about your site and we will give you a real number.

Tell us what is in your plant room.

Send the equipment list and the sites. We will tell you what is already mapped, what needs mapping, and what it costs.

Talk to us about your site