Skip to content

Engineering studio · remote · fixed price

One core system, built into the fields that run buildings, devices and businesses

Plantroom Labs connects systems that were never meant to work together and builds the useful thing on top: a station that behaves, a device fleet a platform can read, an agent that can see a building, a web app a business can deploy. Each project gets a team picked for the fields it touches, led by one person who writes the specification and answers every email. Every job is a fixed price against a written specification agreed before work starts.

The core

Every field runs through the same five steps

A LoRaWAN sensor, a Niagara station and an invoicing spreadsheet look nothing alike. The job on each is the same, and so is the way it is checked.

  1. 1

    Read

    Get the data off the system as it really is: the protocol, the decoder, the export, the jar. Measured, not taken from the manual.

  2. 2

    Name

    Map it to one data model with your names and tags, so the next system and the next engineer can find it.

  3. 3

    Act

    Write back only where it is meant to: priorities, schedules, commands. Every write is scoped and reversible.

  4. 4

    Show

    Put it in front of the person who needs it: a graphic, a dashboard, an alarm, an agent answer.

  5. 5

    Hand over

    Source, notes and access in your name. Support afterwards if you want it, and nothing that only we can keep alive.

Sensor to interface, drawn in two weightsSeven stages, left to right: sensor, firmware, radio, network server, payload decode, platform, interface. All seven are ours. The last three are filled, as the stages this site can show in public; the first four are outlined, as work that travels under a client's NDA.Sensortemperature,occupancy, a contactFirmwaremeasure, sleep,transmitRadioLoRaWAN, BLE, a fieldbusNetwork serverjoin, dedupe,downlinkPayload decodebytes to a typedvaluePlatformAPI, jobs, history,realtimeInterfacedashboard, ops app, astationShown on this site — demos, repositories, measured countsOurs too — device programmes under NDA, walked through on request

Sensor → Firmware → Radio → Network server → Payload decode → Platform → Interface
Bold is what you can open on this site today. The rest is ours too, and travels under NDA.

One job, seven stages, one practice. We have built at every one of them — the sensor and its firmware on our own connected-product programme, the decode, the platform and the interface in public here — which is why the boundaries between them are the part we are usually hired for.

Fields

Seven fields, one way of working

Most real jobs cross two or three of these. That is the reason they sit under one roof. Every field, with the work and notes behind it →

Building automation

Building automation and Niagara

Stations, modules, schedules, alarms and the Niagara 5 move. JACE-8000 is the usual target.

Connected devices

Connected devices and LoRaWAN

Sensor fleets, payload decoders and the firmware behind them, into whatever platform has to read them.

Systems integration

Protocols and systems integration

BACnet, Modbus, MQTT, oBIX and REST between systems that were never meant to talk.

AI agents

AI agents on live systems

Letting a language model read a control system, and deciding what it may never write.

Interfaces

Operator interfaces and dashboards

Graphics and dashboards operators look at all day, built against the live data model.

Web and DevOps

Web apps, sites and DevOps

The web app nobody can deploy, the spreadsheet a business runs on, and the site that sells it.

Hardware

Hardware, enclosures and 3D printing

Boards, firmware, SOLIDWORKS enclosures and printed parts, for the projects that need something physical.

Project teams

Each project gets its own team

A job is staffed for what it touches, not from a bench. The specification names which of these roles the job needs and who fills each one, so you know who built what before you pay for any of it.

Project lead

Owns the specification, the fixed price and every reply from the first email to handover. On every job, named in the quote. Today that is Usama Iqbal.

Integration and software

Protocols, data models, back ends, agents and the web apps around them.

Interfaces

Operator graphics, widgets and dashboards built against the live data model.

Hardware and firmware

Electronics, PCB layout and firmware for device work, named in the specification when a job needs it.

Mechanical design

SOLIDWORKS enclosures, brackets and 3D-printed parts for projects with something physical in them.

Services

Eleven deliverables, scoped one at a time

The fields are where the work sits; these are what you can buy. Each one is scoped in writing and priced per deliverable, and six of them need no BMS in the building at all.

How each one is scoped and priced →

Selected work

Five case studies, and what was actually built

Systems involved, what made them hard to connect, what was built and what can be shown in public. No client is named on any of them.

All the work, and the evidence behind it →

Try before you ask

Live demos, free tools and notes, none behind a form

The demo below is the real widget code running in your browser against a simulated station. Fourteen programs: three for an unfamiliar network, nine for what Niagara will do with your file, one for the spreadsheet a business runs on. All read-only, MIT-licensed and one file each. And the notes. There are 54, on narrow questions about protocols, stations, devices and the web, written from the system rather than from memory.

Plant dashboard — AHU-01

Supply and return air temperature, fan power, zone CO₂, a fan-speed dial, a demand chart, a writable zone set point, plant commands and the alarm queue. Twelve tiles, each bound to its own station ORD — and the values are moving because a simulated station is pushing them. Move the set point and the plant responds.

Simulated station · live Open full screen

Building automation · Niagara 5

The migration nobody has inventoried yet

Niagara 5 moves off Java 8, makes a valid module signature mandatory and does not run on JACE-8000 hardware. Every third-party module has to be recompiled and re-signed, and the bespoke ones are only found by looking. The module scan is free: send a modules/ listing, the jars or a backup and a per-module table comes back by email. It is static analysis against a Java 25 JDK, not a test on a Niagara 5 build.

Send a module list How the scan works →

How we work

What is agreed before anything starts

Spec before price

Scope, target versions and hardware agreed in writing before a number exists. One fixed price, no hourly billing.

Your system, your names

Built against your data model, point naming and tagging, so nothing needs rework on handover.

Patch compatibility

Every quote names the releases the work is tested against and how long a point-release breakage is fixed at no charge.

Source on request

Bespoke work can ship with source, so you are not dependent on us to keep it alive. What you own.

Notes

The answers we got tired of re-deriving

No pitch in them. If a note means you do not need to hire anyone, that is a good outcome. All notes →

Next step

Tell us the version, the hardware, and what it has to do.

You will get a written scope and a fixed price against it. If the honest answer is that you do not need us, you will get that instead.