Why WebMACS?¶
The Problem¶
Traditional lab monitoring setups rely on:
- Proprietary SCADA software — expensive licenses, vendor lock-in, Windows-only
- LabVIEW — powerful but complex, requires specialized skills, expensive per-seat licensing
- Spreadsheets + manual logging — error-prone, no real-time visibility, no alerts
- Custom scripts — no UI, no experiment management, breaks when the author leaves
None of these give you a browser-based, real-time dashboard with alerts and CSV export that runs on a €200 Raspberry Pi.
What Makes WebMACS Different¶
| Capability | WebMACS | Proprietary SCADA | LabVIEW | Manual Logging |
|---|---|---|---|---|
| Cost | Free (open-source, MIT) | €5,000–50,000+ | €3,000+ per seat | Free |
| Real-time dashboard | Browser-based | Desktop app | Desktop | |
| Custom dashboards | Drag & drop widget builder | Proprietary | Custom code | |
| Plugin system | Upload .whl, instant |
Vendor-only | Custom code | |
| Threshold alerts | Slack, Teams, webhooks | Proprietary | Custom code | |
| CSV export | One-click, streaming | Manual | ||
| Runs on Raspberry Pi | N/A | |||
| No cloud required | Fully offline | Varies | ||
| Open REST + WebSocket API | Varies | |||
| Setup time | ~5 minutes | Days / weeks | Hours / days | N/A |
| Vendor lock-in | None | High | Medium | None |
| Multi-user access | Admin + operator roles | Varies |
Deep Dive: Custom Dashboards — No Code, Full Control¶
With proprietary SCADA, changing a dashboard layout means calling the vendor or writing custom scripts. With LabVIEW, it means editing a VI and recompiling.
With WebMACS, any operator can:
- Click "New Dashboard" and name it (e.g., "Reactor Zone A")
- Add widgets with a type picker and size presets (Small → Full Width)
- Choose from 4 widget types:
- Line Chart — real-time trend for any sensor
- Gauge — at-a-glance value with colour-coded range
- Stat Card — big number with label and unit
- Actuator Toggle — ON/OFF control for valves, relays, motors
- Link each widget to a live sensor event — data refreshes automatically
- Create as many dashboards as needed — one per zone, process, or team
- Share a dashboard with all users by marking it as global
No recompilation. No vendor call. No license upgrade.
Deep Dive: Plugin System — Your Hardware, Your Rules¶
With traditional SCADA systems, adding a new sensor type means waiting for the vendor to ship a driver update — or reverse-engineering a proprietary protocol. With LabVIEW, it means writing a new VI, rebuilding, and redeploying.
With WebMACS, you write a Python class, build a wheel, and upload it through the browser. Done.
How It Works¶
flowchart LR
Dev["Write plugin.py<br/>(Python)"] --> Build["python -m build<br/>→ .whl file"]
Build --> Upload["Upload via UI<br/>or REST API"]
Upload --> Discover["Auto-discovered<br/>on restart"]
Discover --> Data["Channels → Events<br/>→ Dashboards"]
What Makes It Unique¶
- No recompilation — plugins are regular Python packages loaded at runtime
- Built-in demo mode — every plugin can simulate realistic sensor data out of the box, no hardware needed for development
- Conformance testing — inherit from
PluginConformanceSuiteand get 13 tests for free (lifecycle, channels, health, etc.) - Channel mapping — link any plugin channel to a WebMACS event with one click; data flows into dashboards, rules, webhooks, and CSV exports automatically
- Sync and async — use
DevicePluginfor async protocols (MQTT, OPC-UA) orSyncDevicePluginfor blocking libraries (serial, Modbus) — the SDK handles threading for you - Safety by design — define
safe_valueper output channel; on disconnect or error, actuators are driven to safe state automatically - Example included — a complete Weather Station example plugin ships in
examples/custom-plugin/with build instructions
Example: Add a Custom Sensor in 4 Steps¶
| Step | What You Do | Time |
|---|---|---|
| 1 | Copy the example plugin and edit get_channels() |
5 min |
| 2 | Implement _do_connect() and _do_read() for your protocol |
15 min |
| 3 | Run python -m build to create a .whl file |
10 sec |
| 4 | Upload via Plugins → Upload and create an instance | 1 min |
Total: ~20 minutes from idea to live data on your dashboard.
Compare that to weeks of vendor coordination or days of LabVIEW rewiring.
Bundled Plugins¶
WebMACS ships with three plugins — no installation required:
| Plugin | Channels | Purpose |
|---|---|---|
| Simulated Device | 9 (temperatures, pressures, flow, valve, heater) | Testing & demos without hardware |
| System Monitor | 4 (CPU, memory, disk, temperature) | Host health monitoring |
| Revolution Pi | Dynamic (via piCtory) | Direct RevPi I/O access |
The Bottom Line
Other systems force you to choose from the vendor's catalogue.
WebMACS lets you connect anything that speaks a protocol — Modbus,
MQTT, HTTP, serial, OPC-UA — with a Python class and a .whl upload.
Plugin Development Guide → Plugin User Guide →
Deep Dive: Open Integration — The Swiss Army Knife¶
Most monitoring systems are walled gardens. WebMACS is designed as a composable building block that connects to anything.
Three Integration Layers¶
graph TB
subgraph WebMACS
REST["REST API<br/>30+ endpoints"]
WS["WebSocket<br/>Live streaming"]
WH["Webhooks<br/>Event-driven push"]
end
REST -->|"GET/POST/PUT/DELETE"| Client["Custom Apps<br/>Scripts · Mobile"]
WS -->|"Sub-second"| CustomUI["Custom Dashboards<br/>Grafana · HMI panels"]
WH -->|"HMAC-signed POST"| Slack["Slack / Teams"]
WH -->|"Automation"| NR["Node-RED"]
WH -->|"Smart Home"| HA["Home Assistant"]
WH -->|"Data Pipeline"| Cloud["AWS / Azure / S3"]
| Layer | Best For | Example |
|---|---|---|
| REST API | CRUD, scripted pipelines, mobile apps | GET /experiments/{id}/export/csv → feed a reporting tool |
| WebSocket | Live dashboards, low-latency custom UIs | Stream values to Grafana or a wall-mounted HMI panel |
| Webhooks | Alerts, cross-system automation | sensor.threshold_exceeded → Slack alert + Node-RED safety shutdown |
The Bottom Line
WebMACS doesn't replace your other tools — it powers them. Use the REST API to build, WebSocket to stream, and webhooks to react. Your lab's monitoring system becomes the data backbone of your entire workflow.
Ideal Use Cases¶
University Research Labs¶
Monitor fluidised-bed reactors, autoclaves, fermenters — with full experiment tracking and CSV export for thesis data.
Pilot Plants¶
Track temperature, pressure, and flow across multiple zones. Set threshold alerts to catch anomalies early.
Quality Assurance¶
Log every sensor reading with timestamps for compliance audits. Export complete data trails on demand.
Teaching Labs¶
Students interact via browser — no software installation needed. Each team gets their own dashboard view.
What You Get Out of the Box¶
- Live dashboard — sensor cards, actuator toggles, trend charts with configurable time ranges
- Custom dashboards — build your own widget layouts with line charts (incl. unit-labelled axes), gauges, stat cards, and actuator controls
- Plugin system — upload custom device drivers as Python wheels; connect any sensor or protocol in minutes
- Experiment tracking — named runs with automatic data linking and one-click CSV export
- Alerting — threshold rules with Slack/Teams/webhook notifications and cooldown periods
- Data export — streaming CSV downloads for Excel, Python, or MATLAB analysis
- User management — admin and operator roles with JWT authentication
- OTA updates — deploy new versions over USB, browser upload, or network
- Full API — extend or integrate with anything via REST and WebSocket
- Webhook integrations — HMAC-signed event delivery with retry logic
Open Source & Extensible¶
WebMACS is licensed under MIT. You can:
- Build custom dashboards with widgets tailored to your process
- Write and upload new device plugins for any sensor, actuator, or protocol
- Integrate with Slack, Node-RED, Home Assistant, or any HTTP endpoint
- Deploy on a Raspberry Pi and self-host with zero ongoing costs
Getting Started
Ready to try it? Follow the Quick Start Guide to have WebMACS running in under 5 minutes.