Menu
Industrial IoT

Configurable edge PLC platform for remote water infrastructure monitoring

An edge platform where a PLC's entire behaviour — which inputs are read, how raw signals become engineering values, what raises an alarm and which outputs it drives — is authored as configuration through a touch-panel interface and interpreted at runtime by a Python service on the device itself, with results republished to existing SCADA/HMI systems over a standard industrial protocol.

Client — an industrial automation vendor serving water utilities
Concept visuals — not actual screenshots
01 — Challenge

Remote sites were monitored by driving to them, and where they were automated, the control logic lived inside a vendor toolchain — changing a calibration constant or an alarm threshold meant a specialist, a proprietary IDE and a redeploy, so installations tended to freeze at whatever state they were commissioned in. Raw sensor readings are meaningless without site-specific scaling, some control decisions depend on trend data rather than a single reading, and whatever was built had to publish into the control room the utility already ran rather than replace it.

02 — Approach

Modelled the device's complete behaviour as one structured configuration document — hardware model, active I/O and sample rates, per-channel transforms, derived variables, alert rules, action sequences and protocol register mappings — with the touch-panel interface acting as a structured editor for that document and the Python runtime as its interpreter. Nothing is compiled; changing what a site does is a form submission. Common transforms (linear scaling, inverse, exponential curves, rolling averages, normalisation) generate from parameters with strict validation, and an engineer can execute a transform against the live device and inspect the result before committing it.

Each input is sampled at its own interval, but a separate aggregation cycle publishes one coherent snapshot of every variable to the interface, a device-local time-series historian and the protocol registers simultaneously, so trend-based calculations work even with no reliable uplink. Alert state is latched until a condition clears so an action sequence fires once per crossing rather than chattering a contactor, and computed engineering values — not raw ADC counts — are exposed over a standard industrial protocol so an existing SCADA/HMI client integrates through configuration alone. A full simulation path lets the interface be developed, demonstrated and commissioned without hardware on the desk, and a companion offline-first mobile app covers the manual readings field staff still take.

03 — Impact

Site logic can be changed by the people who operate it, through a guided interface, without a specialist or a redeployment, and calibration is verified against the live device before it's committed. Remote sites are observed continuously rather than only when someone is standing in front of them, trend-based control keeps working with no uplink, alarms fire once per crossing with an explicitly ordered action sequence, and the existing control room consumes the data unchanged. A site installs as one package with the runtime, service and operator application provisioned together.

Stack
PythonReactReact NativePython 3asyncioModbus TCPInfluxDBReactTypeScriptRedux ToolkitElectronReact Native
More work
Connected fuel management and tank telemetry platform for fleet operators→

Something holding you back?

New build, rebuild, or adding AI to what you already have — I'll take a look and give you an honest perspective.

Get in touch ↗