100% open source — Ignition plugins & an OPC-UA server

Open-source software for industrial automation

CogniData Engineering builds tools that plug into Ignition and a fast, dependable OPC-UA server. Explore the live, interactive demos below — no install required.

GET /streamSSE
TagValueQuality
plant/line1/temp72.4°CGood
plant/line1/pressure4.12barGood
plant/line1/flow318L/minGood
plant/line2/rpm1490rpmGood
plant/tank/level63.5%Good

↑ Live values streaming from the OPC-UA server core — updating in real time.

Ignition Module · Gateway

Configure a GraphQL endpoint once, in the gateway

  • Define each endpoint once in the gateway config — credentials are stored encrypted, never in project code.
  • Pick the auth scheme per connection: NONE, BEARER, BASIC, or custom HEADER.
  • A background heartbeat probes every enabled endpoint with { __typename } each 30s — 🟢 online or 🔴 offline.
View source on GitHub

Config → Cognidata → GraphQL Connections

NameStatus
countrieshttps://countries.trevorblades.comOnline
warehouse-apihttps://api.internal.example.com/graphqlOnline
legacy-erphttps://erp.example.net/gqlOffline
countries
Endpoint URLhttps://countries.trevorblades.com
Auth TypeNONE
Timeout (ms)10000
Verify TLS Certificatestrue
Custom Headers (JSON){}
Connection StatusOnline · checked 12s ago

A background heartbeat probes each enabled endpoint with { __typename } every 30 seconds. Secrets are stored encrypted — never in project code.

Ignition Module · Designer

Call it from the Designer Script Console

  • Run system.cognidata.graphql.query(...) straight from the Script Console — or any tag event, timer, or Perspective script.
  • Designer calls are forwarded to the gateway over module RPC, so connection records and secrets stay server-side.
  • Queries and mutations return a plain Python dict; listConnections() and testConnection() round out the API.
View source on GitHub
Script Console
Multiline Buffer
1
2
3
4
5
6
7
8
status = system.cognidata.graphql.testConnection("countries")
print(status)
result = system.cognidata.graphql.query(
"countries",
'{ country(code: "CA") { name capital currency } }',
)
country = result["data"]["country"]
print(country)
Interactive Interpreter
Jython 2.7.2 (uncontrolled:000000000000, Jul 10 2023, 08:50:23)
[OpenJDK 64-Bit Server VM (Azul Systems, Inc.)] on java11.0.18
>>>

Ignition Module · Perspective

Mermaid diagrams, native in Perspective

  • Drop the component into a view and bind a Mermaid definition — it renders to crisp, scalable SVG.
  • Zoom, pan, and a per-format download menu are built in.
  • A two-way-bound zoomLevel prop keeps the view in sync with the rest of your screen.
View source on GitHub
edit the text — it re-renders live
definitionprops.definition
rendered svg100%

OPC-UA Server · Rust · MIT

A SCADA core that must never fail

  • A small, heavily-tested supervisor and tag store hold live values with honest OPC-UA quality.
  • Drivers run outside the core — a crash or outage is routine: tags degrade and recover, nothing falls over.
  • Tags stream over a bounded pub/sub feed, exposed northbound over HTTP and Server-Sent Events.
opc.tcp://plant-plc:4840Connected
TagValueQuality
plant/line1/temp72.4°CGood
plant/line1/pressure4.12barGood
plant/line1/flow318L/minGood
plant/line2/rpm1490rpmGood
plant/tank/level63.5%Good
Values stream over the pub/sub change feed. Each tag carries its own quality.

Free, open source, and yours to build on

Every line is MIT-licensed and on GitHub — the Ignition module and the OPC-UA server alike. Read the code, file an issue, or ship a PR.