Bridge IoT to Industrial Systems
Connect ChirpStack LoRaWAN devices to OPC UA SCADA systems with production-ready reliability
Why opcgw?
Bidirectional Data Bridge
Polls ChirpStack and ingests real-time uplink events, exposing metrics as OPC UA variables — and turns OPC UA writes into LoRaWAN downlinks for two-way control
Production Ready
Built in Rust with comprehensive error handling, configuration validation, and graceful shutdown
Web-Based Configuration
Configure everything from the browser — first-run setup wizard, ChirpStack inventory pickers, and a live config editor backed by SQLite
Container Native
Official Docker image, Docker Compose setup, and Kubernetes-ready with health checks
Device Control & Class-Aware Abstraction
Send commands from SCADA — an OPC UA write becomes a LoRaWAN downlink with Pending → Sent → Confirmed lifecycle. A model-agnostic device-class registry (e.g. the Tonhe valve driver) keeps it vendor-independent
Observable
Structured tracing logs with a closed-enum event= taxonomy (SIEM-friendly), plus an at-a-glance health dashboard and /api/health + /api/status endpoints
Quick Start
git clone https://github.com/guycorbaz/opcgw.git cd opcgw cp config/config.example.toml config/config.toml # No token editing needed — config.toml is just a bootstrap seed cargo run --release -- -c config/config.toml # Open http://localhost:8080/setup and complete the first-run wizard # in your browser (ChirpStack server, tenant, API token, OPC UA password)
Or use Docker:
docker compose up
Use Cases
Ready to bridge your systems?
Start with our comprehensive documentation and community support