Bridge IoT to Industrial Systems

Connect ChirpStack LoRaWAN devices to OPC UA SCADA systems with production-ready reliability

✨ v2.5.0 - Web UX & Usability (Epic G) 🦀 Written in Rust 📡 OPC UA 1.04
2.5.0
Version
15
Epics Delivered
1500+
Tests Passing
MIT/Apache
Open License

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

🌱 Smart Agriculture

Monitor soil conditions, optimize irrigation, prevent crop loss

Learn more →

🏭 Industrial IoT

Real-time equipment monitoring, predictive maintenance

Learn more →

🌍 Environmental Monitoring

Air quality networks, public health alerts, compliance

Learn more →

🏢 Building Automation

HVAC optimization, energy savings, occupancy-based control

Learn more →

Ready to bridge your systems?

Start with our comprehensive documentation and community support