Unifying JSON Telemetry Formats into a Visual Dashboard
π§ Overview
In this tutorial, Iβll walk you through how I built and deployed a telemetry unifier dashboard entirely in the browser using React + TypeScript + Chart.js, hosted on Tencent Cloud EdgeOne Pages.
Youβll learn:
- How to handle multiple telemetry data formats using TypeScript
- Unify and visualize telemetry in charts and tables (client-side)
- Deploy the frontend to EdgeOne Pages (no backend required)
π―Problem Statement
In real-world industrial IoT environments, telemetry data often arrives in multiple inconsistent JSON formats β especially across different devices or vendors.
We focused on a peculiar case with two turbine generators at NTPC-Korba:
Turbine TG-01 emits flat JSON with UNIX timestamps (milliseconds)
Turbine TG-02 sends nested JSON with ISO-8601 timestamps
This difference makes it difficult for site data engineers to:
Visualize telemetry trends reliably
Perform comparative analysis
Monitor for preventive or breakdown maintenance
Sample JSONs:
`// TG01
{
"deviceID": "tg01-ntpc-korba",
"deviceType": "TurbineGenerator",
"location": "india/chhattisgarh/ntpc-korba/power-block-1",
"timestamp": 1724490540000,
"startTime": 1724486400000,
"endTime": 1724490540000,
"operationStatus": "shutdown",
"temp": 49,
"vibration": 5.2
}
`---
// TG02
{
"device": {
"id": "tg02-ntpc-korba",
"type": "TurbineGenerator"
},
"startTime": "2024-08-24T08:00:00Z",
"endTime": "2024-08-24T09:23:00Z",
"timestamp": "2024-08-24T09:23:00Z",
"country": "india",
"state": "chhattisgarh",
"plant": "ntpc-korba",
"block": "power-block-2",
"data": {
"status": "overheating",
"temperature": 49,
"vibration": 7.6
}
}
My goal was to:
- Upload multiple JSON files with different schemas
- Convert them into a unified telemetry structure
- Visualize the unified data with filters, charts, and export options.
π§ Tech Stack
Layer | Tool / Library |
---|---|
Frontend | React, TypeScript, Chart.js |
Backend | None (Fully Frontend-Based) |
Database | Browser Memory (in-memory) |
Hosting | Tencent EdgeOne Pages |
π Unifying JSON Telemetry Data in the Browser with TypeScript**
There is no Flask or server-side backend involved.
The app uses TypeScript functions to:
- Detect which telemetry format is uploaded
- Normalize both formats into a unified schema
- Store and display data in tables and visual charts.
Key function: unifyTelemetryData()
export function unifyTelemetryData(rawData) {
if (isFile1Format(rawData)) {
// Handle TG01
} else {
// Handle TG02
}
}
Data is loaded using FileReader and parsed in the browser:
reader.readAsText(file);
π Building the Dashboard UI
I used React + Chart.js to create a clean dashboard with:
- β Upload JSON files
- π Line chart (Temperature over time)
- π Bar chart (Status vs Temp)
- π Filter: device ID, temperature range, status
- π₯ Export as CSV Everything runs in the browser β no page reload, no backend API calls
π Hosting on EdgeOne Pages (Frontend)
π¨ Step-by-Step:
Build React App
npm run build
Create edgeone.yaml
This file configures EdgeOne Pages to deploy the build directory.
name: telemetry-dashboard
buildCommand: npm run build
outputDirectory: buildConnect GitHub Repo to EdgeOne Pages
- Go to EdgeOne Pages Console
- Click Create Site
- Choose GitHub and select your repo
- Point to main branch and /build folder.
- Deploy
EdgeOne will automatically run the build and serve it over CDN.
π₯ Upload Flow (Recap)
- π User uploads two JSON files
- π§ Data unified inside browser using TypeScript
- π Charts update with unified data
- π€ User can filter & download as CSV
π Final Thoughts
The Kepler Plan challenge inspired me to build something both technically interesting and visually clean.
Tencent EdgeOne Pages proved to be the ideal platform for:
- π¦ Lightweight app hosting
- π Fast global delivery
- β No backend ops overhead
π Resources
My Github Repo: (https://github.com/Soum1989/telemetry-unifier-kepler)
EdgeOne Pages Docs: (https://cloud.tencent.com/document/product/1709)
π§ Learn more about Tencent Kepler Plan: (https://trtc.io/blog/details/tencent-kepler-plan)
π₯ Watch on YouTube:
(https://youtu.be/hUB1RP0Du2g)
π¬ Want to Try It?
Visit the deployed app here:
(https://telemetry-unifier-kepler.edgeone.app/)
`
`
Top comments (0)