OPC-UA Gateway
Subscribe to OPC-UA nodes, transform values, and publish them to MQTT — or expose Loopze's own data model as an OPC-UA server. Native OPC-UA in Go, one binary, no Java, no plugin tax.
What this gateway does
Modern PLCs from Siemens, Beckhoff, B&R, Rockwell, Wago and others expose process data through OPC-UA. Cloud platforms, historians, Unified Namespaces and analytics stacks consume MQTT. Loopze sits between them: it subscribes to OPC-UA nodes, optionally transforms the payloads, and publishes structured JSON to your MQTT broker. Bidirectional flows (MQTT command → OPC-UA write) work the same way.
- OPC-UA client: subscribe, read, write, browse the address space
- OPC-UA server: expose Loopze's internal model so SCADA can consume it
- Security: anonymous · username/password · X.509 certificates
- Policies: None, Basic128Rsa15, Basic256, Basic256Sha256, Aes128Sha256RsaOaep, Aes256Sha256RsaPss
- Bridges to MQTT 3.1.1 / 5.0, Modbus, NATS and HTTP in the same runtime
- Transforms in expr-lang, JavaScript or Go
Typical flow
┌────────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ OPC-UA Subscribe │ │ Transform │ │ MQTT Publish │
│ opc.tcp://plc:48… │───▶│ add metadata │───▶│ line-A/{tag} │
│ ns=4;s=Temp,Speed │ │ expr-lang │ │ QoS 1 │
│ Basic256Sha256 │ │ │ │ │
└────────────────────┘ └──────────────────┘ └─────────────────┘
Example: bridge a Siemens S7-1500 to MQTT
-
OPC-UA Subscribe node
- Endpoint: opc.tcp://192.168.10.20:4840
- Security policy: Basic256Sha256, message security: Sign & Encrypt
- Auth: username + password (or X.509)
- Subscribed nodes: ns=3;s="Tank1_Temp", ns=3;s="Tank1_Level", ns=3;s="Pump_State"
- Sampling interval: 500 ms, publishing interval: 1000 ms
-
Transform (expr-lang)
{ ts: now(), plc: "S7-1500-LineA", tag: msg.nodeId, value: msg.value, quality: msg.statusCode, } -
MQTT Publish node
- Broker: mqtts://broker.example.com:8883
- Topic: line-A/${msg.tag} (dynamic)
- QoS 1
Deploy. Every value change on the PLC fires an MQTT message in well under 100 ms.
Why Loopze for OPC-UA
Native OPC-UA in Go, not a JVM
Most established OPC-UA tooling is Java-based — fine in a data centre, painful on a 1 GB edge gateway. Loopze implements the OPC-UA stack in Go, shipping as a single statically-linked binary. No JVM tuning, no GC pauses, no Java installation.
Real security, not "policy None"
All standard OPC-UA security policies are supported, including Aes256Sha256RsaPss. Authentication via username/password or X.509 client certificates. Loopze refuses to silently downgrade to None — security mismatches surface as errors instead of mysterious "it works in the lab" behaviour.
Subscribe, write, browse — all from one runtime
Loopze speaks the full OPC-UA client surface needed for industrial work: subscriptions, monitored items, read/write services, browse for discovery. Combined with native Modbus, MQTT and NATS in the same binary, the "gateway zoo" most factories accumulate collapses into one process.
Reverse direction: be an OPC-UA server
Some SCADA systems only consume OPC-UA. Loopze can expose its own context — the values flowing through your flows — as an OPC-UA server, so SCADA reaches everything (MQTT, Modbus, computed values) through a single OPC-UA endpoint.
Try it in 60 seconds
curl -L loopze.dev/install | sh
loopze --port 1880
Then open http://localhost:1880, drop an OPC-UA Subscribe node, point it at your PLC, wire it to MQTT Publish.
Frequently Asked Questions
What is an OPC-UA gateway?
Software (or hardware) that connects OPC-UA controllers and SCADA systems to other protocols — typically MQTT, REST or Kafka. It maps the OPC-UA address space onto modern messaging.
Does Loopze act as an OPC-UA client, server or both?
Both. Client to talk to PLCs, server to expose Loopze's internal model to SCADA.
Which OPC-UA security policies are supported?
None, Basic128Rsa15, Basic256, Basic256Sha256, Aes128Sha256RsaOaep, Aes256Sha256RsaPss. Auth via anonymous, username/password or X.509.
Does Loopze need Java like some other OPC-UA tools?
No. Native Go implementation. One binary. No JVM.
Can I bridge OPC-UA to MQTT and Modbus at the same time?
Yes — a single Loopze runtime hosts as many protocol nodes and flows as your hardware can run. All in parallel goroutines.