{json:scada}
A portable and scalable SCADA/IIoT-I4.0 platform centered on the MongoDB database server.
Mission Statement
To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.0 platform built by leveraging mainstream open-source IT tools.
Screenshots

Running Via Docker
sudo docker run -p 80:80 -p 9000:9000 -p 4840:4840 -p 2404:2404 -p 20000:20000 -d --name=json_scada ricardolo/json-scada:latest
Open http://127.0.0.1 on a browser (user="admin" and password="jsonscada"). See details here: Docker Image. Other installation options and instructions are available in the Installation Guide.
Major features
- Standard IT tools applied to SCADA/IoT (MongoDB, PostgreSQL/TimescaleDB, Node.js, C#, Golang, Grafana, etc.).
- MongoDB as the real-time core database, persistence layer, config store, SOE historian.
- Event-based realtime async data processing with MongoDB Change Streams.
- Portability and modular interoperability over Linux, Windows, Mac OSX, x86/64, ARM.
- Windows installer available in the releases section.
- Unlimited tags, servers, and users.
- Horizontal scalability, from a single computer to big clusters (MongoDB-sharding), Docker containers, VMs, Kubernetes, cloud, or hybrid deployments.
- Modular distributed architecture. Lightweight redundant data acquisition nodes can connect securely over TLS to the database server. E.g. a Raspberry PI can be a data acquisition node.
- Extensibility of the core data model (MongoDB: NoSQL/schema-less).
- HTML5 Web interface. UTF-8/I18N. Mobile access. Web-based configuration management.
- Role-based access control (RBAC).
- Various high-quality protocol drivers.
- Integration with MQTT brokers (compatibility with Sparkplug B).
- Live point configuration updates.
- Inkscape-based SVG synoptic display editor.
- PostgreSQL/TimescaleDB historian integrated with Grafana for easy creation of dashboards.
- Easy development of custom applications with modern stacks like MEAN/MERN, etc. Extensive use of JSON from bottom up.
- Leverage a huge ecosystem of MongoDB/PostgreSQL tools, community, services, etc.
- Easy AI-helped custom app development using templates/API for tools like WindSurf/Cline/Cursor/Copilot/etc.
Use cases
- Protocol Gateway.
- Secure Protocol Gateway with 1-way air gapped replication (via data diode or tap device).
- Power/Oil/Gas/Manufacturing/etc Local Station HMI.
- SCADA for Control Centers.
- SCADA/IIoT Historian.
- Intranet/Internet HTTPS Gateway - Visualization Server.
- Multilevel Systems Integration (SCADA/IIoT/ERP/MES/PLC).
- Global-Level/Cloud SCADA Systems Integration.
- Edge processing.
- Data concentrator for Big Data / ML processing.
- Digital Transformation, Industry 4.0 enabler.
Real-world usage
- 5+ years of usage in 2 big control centers scanning data from 80+ substations, 90k tags.
- 5+ years of usage as HMI for local operation of circa 40 substations up to 230kV level.
Architecture
Documentation
-
Protocols Roadmap
-
[x] IEC 60870-5-104 Server TCP/TLS
-
[x] IEC 60870-5-104 Client TCP/TLS
-
[x] IEC 60870-5-101 Server Serial/TCP
-
[x] IEC 60870-5-101 Client Serial/TCP
-
[ ] IEC 60870-5-103 Client
-
[x] IEC 61850 MMS Client TCP/TLS
-
[ ] IEC 61850 MMS Server
-
[ ] IEC 61850 GOOSE/SV Client
-
[x] DNP3 Client TCP/UDP/TLS/Serial - Windows x64 only!
-
[x] DNP3 Server TCP/UDP/TLS/Serial
-
[x] Modbus Client via PLC4X-GO
-
[ ] ICCP Client TCP/TLS
-
[ ] ICCP Server TCP/TLS
-
[x] Telegraf Client (many data sources available such as MQTT, MODBUS, SNMP, ...)
-
[x] MQTT/Sparkplug-B Pub/Sub TCP/TLS
-
[x] OPC UA PubSub over MQTT with JSON payloads client
-
[x] OPC UA Client TCP/Secure
-
[x] OPC UA Server TCP/Secure
-
[ ] OPC UA Historical Data Server
-
[x] OPC DA Client (Windows)
-
[ ] OPC AE Client (Windows)
-
[x] OPC DA Server (Windows)
-
[x] CIP Ethernet/IP (libplctag, experimental)
-
[ ] Siemens S7
-
[ ] BACNET
-
[x] I104M (legacy adapter for some OSHMI drivers)
-
[x] ONVIF Camera control and streaming
Features Roadmap
- [x] Web-based Viewers
- [x] Web-based Configuration Manager
- [x] Excel-based Configuration
- [x] JWT Authentication
- [x] User auth/Role-based Access Control (RBAC)
- [x] LDAP/AD Authorization
- [x] Inkscape-based SVG Synoptic Display Editor
- [x] Web-based SVG Synoptic Display Editor
- [x] Skill file for AI-assisted SVG creation with SCADA markup
- [x] MCP Server to help with AI query, development and testing
- [x] Template nodejs app with Typescript submodule to access JSON-SCADA data structures, manage connections and redundancy
- [x] Compiled Cyclic Calculations Engine
- [ ] Low-latency/Asynchronous Calculations Engine
- [x] Customizable Change-Stream Processor (for user implemented scripts)
- [x] Basic Alarms Processor
- [ ] Advanced Alarms Processor
- [x] PostgreSQL/TimescaleDB Historian
- [x] Grafana Integration
- [x] Metabase Integration (via PostgreSQL/MongoDB connectors)
- [x] One-way realtime replication (over eth diode/tap device) w/ point db sync and historical backfill
- [x] Windows Installer
- [x] Docker Image
- [x] Docker Compose Demo (docker-compose.yaml scripts)
- [x] Install Script for RedHat/Rocky/Alma 9/10 Linux x86-64 and arm64
- [x] Install Script for Ubuntu 24.04/26.04 Linux x86-64 and arm64
- [x] Online Demo
- [x] Supervisor (Linux process manager) examples
- [ ] InfluxDB Integration
- [x] Telegraf Integration
- [x] PowerBI Integration (via PostgreSQL connector)
- [ ] PowerBI Direct Integration
- [ ] Kafka/Redpanda/Benthos Integration
- [ ] Eclipse 4diac
- [ ] Supabase Integration
- [ ] NodeRed Integration
- [ ] n8n Integration
- [ ] Alerta Integration (https://alerta.io/)
- [x] PLC4X-GO Integration (https://plc4x.apache.org/)
- [x] Example templates/API for fast AI-helped custom app developments
Enterprise Services (available on request)
- [x] Customizations
- [x] Linux Image / VM
- [x] Managed Cloud Service
- [x] Supported LTS versions
Online Demo (substations simulation)
This demo provides a public IEC 60870-5-104 server port on IP address 150.230.171.172:2404 (common address = 1) for testing.
The demo data is published as regular MQTT topics to the public broker mqtt://test.mosquitto.org:1883 (about 8600 topics in JsonScadaDemoVPS/# and ACME_Utility/#).
Data is also published as Sparkplug-B to mqtt://test.mosquitto.org:1883 (about 4300 device metrics in spBv1.0/Sparkplug B Devices/+/JSON-SCADA Server/#). Data/birth messages are compressed by Eclipse Tahu Javascript libs.