Stylized illustration of an industrial gas heat pump in a dim mechanical room with glowing data dashboards rising from it

Stop Buying Sensors. Read the Ones You Already Paid For.

My two gas heat pumps were measuring a hundred things and showing me four. Here is how I pulled the rest onto my own dashboards, and why it now warns me before the heat goes out.

Almost everything you buy works this way. The gauge on the front shows you four numbers. The machine behind it is measuring a hundred. That is not a trick, it is just how things get built: the maker picks a tidy little display and moves on, because four numbers are what most people want. You paid for all hundred anyway. You usually only ever see four.

I have two Robur GAHP-AR gas absorption heat pumps, one under the shop and one under the house. They are strange, wonderful machines: they burn natural gas to drive an ammonia absorption cycle and pull heat out of cold outdoor air, which is why a good one delivers more heat energy than the gas it burns. The R in GAHP-AR is for reversible: the same unit runs the cycle backward to air condition, driven by gas instead of a big electric compressor, which cuts my electric bill by roughly two thirds in cooling season. Robur discontinued the line in 2025, which makes mine exactly the kind of thing worth keeping alive and understanding deeply. Each one is run by a Robur DDC controller: a sealed box with a thumbnail-sized monochrome screen that shows me, on a good day, the water temperature and whether it is heating.

Behind that screen the DDC is tracking inlet and outlet temperatures, generator and condenser and evaporator temperatures, solution pump speed, flame state, defrost cycles, every alarm code, and a hundred other things. I paid for all of it. I wanted to see all of it. So I did, and the gear I already owned is now smarter to me than it ever was to its own front panel.

Robur GAHP-AR gas absorption heat pump outdoor unit on its concrete pad
One of the two GAHP-AR units outdoors: the gray cabinet this whole project is about.

The capability was already there

Here is the nice surprise about "smart" anything. The instinct, when you want data off a machine, is to buy a new gadget that bolts on and measures from the outside. A clamp here, a probe there, another cloud subscription. But the machine already has the sensors. It has to; it cannot run the cycle without them. The data exists. The only question is whether the manufacturer left you a door.

Robur did. The DDC speaks Modbus, the boring old industrial protocol that has been running factories for forty years, over an RS-485 serial bus. The full register map is a 69-page document Robur provides on request. This is the important nuance: I was not breaking in. The interface is documented and supported. It is simply not meant for a homeowner with a weekend and a soldering iron; it is meant for a building-automation contractor wiring a commercial plant. The capability ships in the box. Not many owners open that door.

The register map is tied to one specific firmware version. Mine read 4.018. You confirm it by reading two registers, 30004 and 30005, which come back as 4 and 18. So you keep the controller off auto-update, because a firmware bump would shuffle the map and silently turn every reading into garbage. For my purposes, the version of this machine I want is the one frozen where it is.

Robur DDC screen showing firmware release 4.018
The firmware gate. 4.018, confirmed on the DDC's own screen and by reading registers 30004 and 30005. This number can never be allowed to change.

Reading is the easy half. I want to write.

Right now this only reads. The poller asks questions and never gives orders, which is plenty for watching, but it is not where I want to end up. I want to change a setpoint from the dashboard, not just admire it. Honestly I was surprised that writing was not simply there out of the box, because the controller speaks Modbus in both directions; the door swings both ways. Pushing values back in runs through the DDC's own remote-management mode, and that is the next thing I am building. For now it reads. Control is the part I am actually after.

Simulate before you wire

Here is the discipline that made install day boring, and boring is what you want from an install day. I built the entire software stack and tested it against a fake heat pump weeks before I touched a real wire.

I transcribed all 1169 registers from the protocol document into a machine-readable map, wrote a small simulator that pretends to be a DDC speaking Modbus (including a scenario that fakes the exact failure I most wanted to catch), and pointed the real data pipeline at the fake. By the time I drove out to the mechanical room, the poller, the database, the dashboards, and fifteen alert rules had all been validated end to end against a machine that did not exist yet. The only unknowns left were physical.

Robur DDC T10 controller board out of its enclosure showing the RS-485 port
The DDC controller, out of its box. Forty years of industrial protocol on a board the size of a paperback. The RS-485 port is the small orange connector near the bottom.

The wiring, and two things that went wrong

The link from each heat pump to my network is deliberately simple and deliberately wireless between buildings. An Elfin EW11, a thumb-sized WiFi-to-RS-485 bridge, sits on a short serial stub at each DDC and presents the Modbus connection over WiFi as plain TCP. No copper runs between the shop and the house, ever; that way lies ground loops and lightning. Two buildings, two gateways, two independent buses. Both controllers are happily Modbus address 1, because each is alone on its own wire.

The RS-485 port on the DDC is a four-pole connector called J2. A length of Cat6 carries the signal: one conductor to A, one to B, one to common, and the drain to the shield pin.

The J2 four-pole RS-485 port on the Robur DDC controller board
J2, the four-pole RS-485 port. The whole project hangs off four little pins.

Two things went wrong. First, the mating plug for J2 was missing. It ships with the unit, but a careless installer had misplaced mine, so the port was there and the plug to connect to it was not. Work stopped until a replacement arrived, about thirty dollars and a few days.

The pluggable terminal block that mates with the DDC J2 RS-485 port
The missing piece: the plug that mates with the J2 port. It comes with the unit, but a careless installer had lost mine, so I waited on a thirty-dollar replacement.

Second, while the controller was out for wiring, its onboard fuse popped. There is a special flavor of stomach-drop when a discontinued controller goes dark in your hands. It turned out to be exactly what it looked like, a tired little glass fuse, reseated and back to life. But for one long minute I was certain I had killed an irreplaceable board.

A blown T2A glass fuse from the Robur DDC controller
The glass fuse that briefly stopped my heart. T2A, 250V, and the difference between a five-minute fix and a very bad week.

Then the moment it was all for. With the plug wired and the gateway joined to WiFi, I ran a single test query and asked the controller its firmware version through the entire chain: controller to RS-485 to the WiFi bridge to my laptop. It answered 4 and 18. The map matched. Everything I had built against a simulation was about to meet the real machine, and the gate was clear on the first try.

Elfin EW11 WiFi to RS-485 bridge wired to Cat6 for Modbus
The WiFi-to-RS-485 bridge, wired to Cat6. A, B, and common: the whole industrial conversation, carried home over house WiFi.
Robur GAHP-AR DDC controller with an Elfin EW11 WiFi to RS-485 gateway running live
The finished link: the DDC running, with the Elfin-EW11 gateway quietly reading it over WiFi. Four numbers on the screen, everything else on its way to the dashboard.

What you actually get

A poller queries each gateway and feeds a time-series database; Grafana draws it and, if anything looks wrong, an alert manager shouts into Slack. The same boring, bulletproof stack that watches my servers now watches my heat.

The plant overview is the at-a-glance view: both machines, their mode, whether any alarm is active, the water temperatures, the outside air. The most satisfying thing on it is the row of green that says, in plain language, that every one of more than a hundred possible fault codes is currently clear. Healthy, both buildings, in one glance.

Grafana dashboard plant overview of two Robur GAHP-AR heat pumps with decoded alarms all clear
The plant overview. Two heat pumps, every alarm code decoded, all green. The four numbers the front panel showed me are in here somewhere, surrounded by everything it never did.

The unit detail is where the machine's character shows. A GAHP-AR is an on-off device; it does not modulate, it cycles. Watch the house machine's temperatures and you see it plainly: a sawtooth of hard climbs and drops as it fires, satisfies, and rests, with the solution pump pulsing on and off in lockstep. You cannot see that on a screen that updates once and shows you a single number. You can see it, and reason about it, when the machine has been talking for days.

Grafana dashboard showing Robur GAHP-AR machine temperatures cycling on and off
The unit detail. That sawtooth is the heat pump's heartbeat: an on-off machine cycling. The front panel never showed me this. The data always knew.
Grafana unit state timeline showing the GAHP-AR burner firing on and off over two days
The firing itself. Each orange mark is the burner lighting, the green band above it is the unit running. This is the cycling the front panel never showed me, and keeping an eye on it is how I know the units are healthy.

The payoff: it warns me before the heat goes out

All of this would be a nice toy if it only drew pretty graphs. The reason it earns its place is one alert, and it is tangled up with another thing I own: the natural gas well on the property.

The farm runs on its own gas. It is good gas, but a low-deliverability well. Draw on it too hard and the pressure sags below a single psi and begins fouling the small orifices in the regulators. When supply pressure dips at the wrong moment, the heat pump tries to light, fails, retries, and after enough failed tries it throws a hard flame-lockout fault and shuts down cold. In January, in a house, that is not an abstraction.

But the controller counts those failed ignition retries, and it exposes the count. So there is a window: a soft warning that precedes the hard lockout by a few minutes. The alert I care about most watches that count and pings me the instant a machine starts struggling to light, before it gives up. The gear I already owned, reporting a number it was already keeping, now buys me the minutes to act before the heat goes out. That alone earns the whole project.

What it cost, and what it was really about

The hardware to do all of this came to somewhere around a hundred and thirty dollars: two little WiFi bridges, a few connectors, a length of Cat6. I powered the bridges from old phone wall-warts and a couple of six-inch micro-USB cords I had no other use for. No new sensors, because the sensors were already there. No cloud subscription, because it all runs on hardware I already had. The expensive ingredient was attention, not money.

And that is the point I keep coming back to. It is easy to solve every problem by buying the next device, the one with an app, the one that promises to finally make the thing you already own smart. But the thing you already own is often smarter than the interface it shows you. It was measuring all of this the entire time. Somebody just had to open the door, read what was already being said, and wire up a listener.

Two heat pumps that used to show me four numbers now tell me everything, watch themselves, and warn me before they fail. I did not buy a smarter machine. I started listening to the one I had.

Fringe Tech

Comments

// Comments are reviewed before appearing. No spam. No noise.