Trinergy · Project Reference

Machine Data Platform

The data your machine already produces, checked, kept, and put on a screen you can open from anywhere — without anything ever reaching back to the machine.

ScopeServer-side ingest → storage → remote dashboard
DeploymentOn-premise, one machine, one site
ControlRead-only. No write path to equipment.
RevisionA — 14 August 2026

WHY

The data exists. It just cannot be reached.

Everything below solves one problem: the numbers your machine already produces are stuck where nobody can use them.

Trapped on the HMI

The readings live on a screen that only exists beside the machine. Walk away and you know nothing.

History is a CSV

Months of production sit in files on a PC nobody backs up and nobody can query.

You have to be there

Checking whether the line is running means physically going to the plant.

THE SHAPE OF IT

Three steps

There are only three things happening. We receive the data already landing on your server, turn it into a dashboard, and let your people look at it from wherever they are. Everything after this section opens up one of those three.

Where the boundary sits. How the data reaches that server in the first place — the PLC drivers, the tag addresses, the control network — is not in this scope. It already works. We start from the point where the data exists, and we never touch your control system. That single decision is what makes this project fast and low-risk.

1Receiveread from your servercheck it and label itstore it with history2Dashboardlive values arrive instantlyhistory drawn as chartslimits watched for you3Userbrowser or phoneanywhere, securelylook but never touch
The whole system in three steps. Each one is opened up below.

STEP 1

Receive

Reading what is already there, checking it makes sense, giving each number a real identity, and keeping it with its history.

1.1 — WHERE IT COMES FROM

A folder of filesnew files appearA database tablerows get addedAn endpointwe poll itTHE INPUT CONTRACTLocation & accessFormat & encodingTimestamp + timezoneField → measurementUpdate behaviourIngeststage 01
Three source shapes, and the five things we need pinned down before building.

Your data will be sitting in one of three shapes and we handle all three: files appearing in a folder, rows added to a table, or an endpoint we can ask.

This is the one genuine blocker. We need the location and a read-only account, the exact format including the decimal separator and text encoding, which field carries the time and in which timezone, which field is which measurement, and how often new data appears. Get the decimal separator wrong and every value is silently a hundred times off. One document and one named owner unblocks everything else.

1.2 — WHAT WE DO TO EVERY VALUE

On yourserver alreadyReadnew data onlynever twiceCheckis it sensible?in range? on time?Labelname, unit, machinefrom your listStorekept with historynever overwrittenEVERY VALUE TAKES THE SAME FOUR STEPSAnything we cannot read is set aside, not thrown awaywith the reason attached, and someone is told the same day
The same four steps happen to every single value that arrives.

Read only what is new, never the same thing twice, and never a file still being written. Check that the value is physically possible and the timestamp is plausible — a thermocouple reading −270 °C is a broken sensor, not a cold bearing. Label it from the list you give us, so a raw number becomes bearing oil temperature in °C on a named machine. Store it once, with its history, never overwritten.

Nothing is dropped silently. If we cannot read something, we set it aside with the reason attached and tell someone the same day. A gap in a chart with no explanation is useless six months later when you are trying to work out why a machine failed.

1.3 — FAST SIGNALS

ONE SECOND WINDOW10,000 samplesFEATURESRMS2.14 gpeak6.40 gcrest2.99bands5 valuesone record per secondPER DAY, ONE CHANNELRAW 3.5 GB100%FEATURES 5 MB0.15%
One second of a 10 kHz channel, and what we keep from it.

Temperature and pressure change slowly, so we keep every value. Vibration arrives ten thousand times a second, which is a different problem. We compute what a vibration engineer actually reads — overall level, worst spike, and how the energy spreads across frequencies — once per second, and store that.

The arithmetic. Keeping the raw signal for one channel is about 3.5 GB every day. The summary is roughly 5 MB — near 0.15% of it. The raw waveform is not kept continuously, but whenever something crosses a limit we automatically save the actual waveform around that moment, a few seconds either side, so the detail is there when it matters.

1.4 — HOW FAR BACK YOU CAN LOOK

HOW FAR BACK YOU CAN LOOK, AND IN HOW MUCH DETAILEvery single value7 daysSecond by second13 monthsMinute by minute5 yearsthe further back you look, the coarser it gets — but the peaks are always kept
How far back each level of detail reaches.

Every single value for the last 7 days, second-by-second for 13 months, minute-by-minute for 5 years. All three are settings, not fixed in the software.

We keep the peaks, not just the average. If a temperature spiked to 200 °C for two seconds, an average over a minute makes it vanish. Storing the highest and lowest value in each period means that spike is still visible in five-year-old data. Most cheap historians keep only averages, which is exactly why their long-range data cannot be used for diagnosis.

STEP 2

Dashboard

Two kinds of data reach the screen two different ways, and the user never has to think about which is which.

Latest valuekept in memoryHistorykept on diskpushedasked forLive tilesupdate every secondChartsdrawn on requestThe dashboardone screen,both kinds of datalive numbers come to you · history is fetched only when you ask
Live values are pushed. History is fetched only when asked for.

The latest value of everything is held in memory and pushed to the screen as it changes — that is what makes live tiles update about once a second with nobody refreshing anything. History lives on disk and is only read when someone opens a chart or changes a date range. That split is why a hundred people watching live tiles puts almost no load on storage.

2.2 — WHAT IT LOOKS LIKE

Line 1 · Press 3liveRunning74.2degC1,204parts2.1g RMSSTATUS AT A GLANCETREND6 hours agonowALARMSVibration high09:41Oil temp warn08:12Door open07:55the same screen on a laptop, a tablet, or a phone
The shape of the screen — which tiles and which signals are built around your machine.

Status at a glance across the top, the trend in the middle, alarms down the right. Click an alarm and it takes you to the trend at that moment so you can see what led up to it. The same screen works on a laptop, a tablet on the floor, or a phone — there is no separate app to install.

This is a layout, not a finished design. Which tiles, which signals, and what order gets built with your engineers around the machine you actually have.

2.3 — WHY IT STAYS FAST

Chart asksrange + pixelsPick tiercoarsest thatcovers the rangeRaw≤ 7 days1 s rollup≤ 13 months1 min rollup> 13 months1,500pointsany range
The oldest point in the request decides which level of detail answers it.

Five years of data at full detail is hundreds of millions of points — no browser can draw that. So the chart tells the server both the time range and how wide it is in pixels, and the server picks the right level of detail automatically. Either way about 1,500 points come back, because that is roughly all a chart can usefully draw. A five-year view opens as fast as a one-hour view, and the user never chooses a detail level.

STEP 3

User

Same system, one source of truth, three completely different questions.

The dashboardone place, one truthManagerat home, on a phone"is the line running?"Engineerat a desk, on a laptop"why did it trip at 3am?"Maintenanceon the floor, on a tablet"which bearing is it?"each person sees only the machines and signals they are allowed to see
Three roles, three questions, one dashboard.

The manager, at home on a phone, wants to know whether the line is running — ten seconds, then the phone goes down. The engineer is investigating why it tripped at three in the morning and needs trends, alarm history, and the ability to compare signals. Maintenance is standing next to the machine with a tablet asking which bearing. Each person sees only the machines and signals you allow, so a contractor can be given one machine and nothing else.

3.2 — WHAT THEY CAN DO

1See it nowlive values, updating2Look backany range, instantly3Comparetwo signals together4Open an alarmsee what happened5Exportcsv for a reportWhat they cannot dochange a setting on the machinestart or stop anythingthe system only reads
Five things they can do, and one thing they cannot.

See it live, look back over any period, put two signals on one chart, open an alarm and jump to what the data was doing, and export a range as CSV. Comparing two signals is often the whole investigation — did the temperature rise before or after the vibration?

Nobody can change anything. No setting on the machine, no starting or stopping. The system only reads. This is not an oversight — it means the dashboard can never cause a machine to do something unexpected, which keeps it entirely outside your safety systems. No risk assessment, no change to your control programs, no liability. If remote control is wanted later it is a separate project with its own safety review, and it should not be mixed into this one.

3.3 — WHEN SOMETHING GOES WRONG

1A limit is crossedand stays crossed2An alarm is raisedrecorded with the data3A message goes outemail · SMS · LINE4Someone opens itsees the trend behind it5They acknowledgewho and when is keptWHEN SOMETHING GOES WRONGA value must stay bad before it alarmsotherwise a reading sitting on its limit messages you all day
From a crossed limit to an acknowledged alarm.

A value crosses a limit and stays across it. An alarm is raised and recorded next to the data, so later you see the alarm and the signal that caused it on one timeline. A message goes out by email, SMS or LINE, and escalates if nobody responds. Whoever acknowledges it is recorded permanently.

A value has to stay bad before it alarms. Without that, a reading sitting right on its limit crosses back and forth hundreds of times an hour. Everyone mutes it within a week, and then a real alarm gets ignored too. These thresholds get tuned with your engineers during commissioning — they cannot be guessed from outside.

3.4 — HOW IT REACHES THEM SAFELY

INSIDE THE PLANTHistorian + APIread-onlythe server dials OUTno port is openedFIREWALLoutbound TLSnothing ever dials inRelayno data at restthe user dials OUT tooBrowseranywhere
Every arrow crossing the firewall points outward.

Your data stays on your server, but people need to see it from outside, and your firewall correctly blocks anything coming in. So your server dials out, the browser dials out, and they meet in the middle. Nothing ever dials in — no port opened, no firewall rule, no VPN client on anyone's phone.

GETTING TO IT

Two ways to reach it online

The dashboard software is identical either way. Only how people reach it changes — which means choosing now costs almost nothing later.

OPTION 1 — VIA CLOUDFLARE

YOUR PLANTDashboard serverthe app + your datalocal networkCloudflare connectordials out · opens no portFIREWALLnothing ever dials inoutbound TLSCloudflareyour own domain nameTLS certificateblocks attackscarries traffic, stores noneHTTPSLog inusername + passwordTheir dashboardonly what this useris allowed to seemany people at once, each with their own account and their own permissions
A connector dials out to Cloudflare; users get a real web address and a login.

A small connector runs beside the dashboard server and dials out to Cloudflare, opening no port and accepting no incoming connection. Cloudflare gives you a proper address — monitor.yourcompany.com — with a real certificate, so it is plain https in any browser. Your people open it, log in, and see only what they are allowed to see.

Be precise with your IT team about this. Traffic passes through Cloudflare, and Cloudflare decrypts it at its edge in order to route it. It does not store your process data, but it does handle it in transit — do not claim they cannot see it. If a policy forbids any third party in the path, the same architecture runs with a relay we host ourselves instead.

OPTION 2 — REMOTE DESKTOP

YOUR PLANTDashboard serverthe app + your datalocal networkMonitor PCshows the dashboard full screenno control software on itAnyDesk / TeamViewer / RDPFIREWALLnothing ever dials indials outThe tool's relayrun by the vendorLog inthe tool's own accountThe same screenone shared viewyou are looking at that PC's screen — usually one person at a time
A dedicated PC shows the dashboard; people remote into that screen.

A dedicated PC in the plant displays the dashboard full screen and does nothing else. A remote access tool on it dials out, and your people connect and see exactly that screen.

Monitor-only matters here. That PC has no engineering software and no PLC tools — nothing that could touch the machine. Even if someone got into it, there is nothing there to do damage with. It is a screen, not a control station.

The honest limits: normally one person at a time, and a second person joining fights for the same mouse. There are no individual accounts, so you cannot say who looked at what or give one person access to one machine only. On a phone it means pinching around a desktop screen. Commercial use needs a paid licence per seat.

CHOOSING BETWEEN THEM

Option 1 · CloudflareOption 2 · Remote desktopPeople at oncemanyusually oneAccountsone login each, per-machine rightsone shared tool passwordOn a phoneyes, built for itawkward — it is a desktop screenTo set updomain + certificate + accountsinstall one toolOngoing costlow — free tier is usually enoughlicence per seatTraffic goes viaCloudflare (stored nowhere)the vendor's relayRight whenseveral people, everyday useone or two people, occasional look
The three rows that usually settle it: how many people, whether you need to know who looked, and whether anyone will use a phone.

We recommend Option 1. It is barely more work to set up, costs less to run than per-seat licences, and is the only one giving real accounts and per-person permissions. It also still works when you add a second machine or a second site.

Option 2 is the right call for a pilot, or a single supervisor who just wants to glance at it, or when an IT policy would take months to approve a public web address. It gets you running immediately, and moving to Option 1 later changes nothing about the dashboard itself.

ALL TOGETHER

The full picture

1 RECEIVE2 DASHBOARD3 USERYour serverfiles · database · endpointRead + checkquality and timingLabelname, unit, machineStore7 d · 13 mo · 5 yLatest valuepushed to live tilesHistoryfetched at the right detailLimits watchedalarms raised and sentManagerphone, at homeEngineerlaptop, at a deskMaintenancetablet, on the floorread-only, end to end — nothing on this page can change your machine
Read-only, end to end. Nothing anyone does here can change your machine.

SCOPE

What we build, and what we don't

In

  • Reading the raw data already on your server
  • Checking, labelling and normalizing every value
  • Storage with configurable retention at three levels
  • Feature reduction and triggered waveform capture
  • Live and historical dashboard
  • Alarm rules, notifications and escalation
  • Users, roles and per-machine access
  • Secure outbound remote access

Out

  • Any write-back or remote control of equipment
  • PLC drivers and tag discovery — this is upstream
  • OEE calculation
  • Predictive maintenance and machine learning
  • MES or ERP integration
  • Guarantees about upstream data quality

Deferred items are natural second-phase additions, precisely because phase one will already own clean history.

TO START

What we need from you

Each item feeds a specific part of the system. The first one is the only genuine blocker — everything else can happen in parallel.

STAGE 00The input contractSTAGE 03Signal list + unitsSTAGE 05Which channels are fastSTAGE 06BTrigger rulesSTAGE 08Retention you wantSTAGE 09Alarm rules + recipients
Six inputs. Give us the first and a named contact, and we can come back with a firm scope and a price.

APPENDIX

The pipeline in detail

Step 1 above is a summary. For anyone who wants the engineering detail, this is the same work broken into its eleven actual stages.

INPUT · RAW DATA ON THE SERVEROUTPUT · A CHART, ANYWHEREINGESTSTAGES 01 – 0401Acquire02Parse03Map to signals04NormalizePROCESSSTAGES 05 – 0605Route by rate06ASlow tag path06BHigh-rate pathSTORESTAGES 07 – 0807Write, exactly once08Roll up, expireSERVESTAGES 09 – 1109Alarms10Query11Deliver
Eleven stages in four phases. The only branch in the whole pipeline is at stage 06.

STAGE 01 — ACQUIRE

Sourcenew dataDetectwatch / pollStable?size unchangedClaimbatch idStreamnot load allto 02not stable → wait a cycleWatermarklast position proven durableread fromadvanced ONLY afterstage 07 confirms
Detect, read once, and only advance the watermark after a write is confirmed.

STAGE 02 — PARSE

Raw bytesfrom 01Decode headercolumns, rateSplit recordsone per stampConvert typesas declaredRecordsto 03Quarantinewith reason + original bytesmalformednever silently dropped
Bytes become typed records. Anything malformed is quarantined with its reason.

STAGE 03 — MAP

field: "TT101"raw: 742FROM STAGE 02THE SIGNAL MAPTT101 → SIG_0042nameBearing oil tempunitdegCscale0.1limits0 .. 120classslow tagSIG_0042 · 742+ unit, scale, limits, classTO STAGE 04no match → quarantine + alert, never invented
A field name and a number become a signal with a unit, a range and a class.

STAGE 04 — NORMALIZE

INraw 74209:15:03 +07x scale+ offsetto UTCkeep offsetclocksanityrangecheckqualityflagOUT74.2degC02:15:03ZGOODA bad value is flagged and kept — never deleted.a gap with no reason is un-diagnosable six months later
Scale, timezone, clock sanity, range, quality flag — then one consistent shape.

STAGE 05 — ROUTE

Normalizedfrom 04class?set at 03PATH A · SLOW TAGSrate1 – 10 s per valuestoredevery value200 tags17.3 M readings / dayPATH B · HIGH RATErate1 kHz and abovestoredfeatures + triggers10 kHz3.5 GB / day / channel
One decision, made once, from the class attached at stage 03.

STAGE 06A — SLOW PATH

One readingno reductionValue cachelive tiles read thisAlarm evaluatorchecked on arrivalWrite queuebatched to stage 07the same value goes three places at once
The same reading goes to the live cache, the alarm evaluator, and the write queue.

STAGE 06B — TRIGGER

RMS OVER TIMEtrigger levelTRIGGER2 s before3 s after50,000 samples written · 200 KBring buffer overwrittenraw samples gonering buffer overwrittenraw samples gone
The buffer is frozen in both directions, so the seconds before the event survive.

STAGE 07 — WRITE

CORRECTreadwriteconfirmadvancea crash anywhere here just replays the batchWRONGreadadvancewritecrash herethe batch is marked donebut was never stored
Read, write, confirm, then advance. The reverse order loses data on a crash and reports nothing.

STAGE 08 — ROLL UP

Rawevery value7 daysdownsample1 s rollupmin / avg / max13 monthsdownsample1 min rollupmin / avg / max5 yearspartition droppedWHY MIN AND MAX, NOT JUST AVERAGE1-min average — spike invisible1-min max — spike survivesan average hides the excursion that caused the failure
An average hides the excursion that caused the failure. The maximum does not.

LIFECYCLE

t = 0writtenlive in ~2 s+ 1 min1-secondrollup made+ 1 hour1-minuterollup made+ 7 daysraw dropped+ 13 mo1-seconddropped+ 5 yrgoneraw1 s1 minno longer queryable
What survives, and at what resolution, as one value ages.

FAILURE HANDLING

01Acquire02Parse03Map04Normalize07Write08Roll upsource downretry + alertno data lostmalformed rowquarantinedwith the reasonfield renamedalert same daybad valueflagged,still storedsent twicededupedat writelate databucketrecomputedevery failure is detected, named, and recoverable — none are silent
Every failure is detected, named and recoverable. None are silent.