RESPA Monitoring System
New Customer / Device Setup Guide
NB Industries | Version 1.0 | March 2026
Overview
This document provides step-by-step instructions for setting up a new customer portal or adding a new device to an existing customer on the RESPA Monitoring System. The system uses Sorba Edge platform with Grafana dashboards for multi-tenant fleet monitoring.
Prerequisites:
SSH access to Sorba server (192.168.1.206)
Grafana admin credentials (sorba_admin / sbrQp10.)
Senquip device provisioned and publishing via MQTT
Equipment number and device type agreed with customer
Section A: New Customer Setup
Follow these steps when onboarding an entirely new customer (e.g., BMA, Whitehaven).
Step 1: Create Grafana Organisation
Each customer gets their own Grafana organisation for complete dashboard isolation.
curl -k -X POST https://192.168.1.206/dashboard/api/orgs \
-H "Content-Type: application/json" \
-u sorba_admin:'sbrQp10.' \
-d '{"name": "CUSTOMER_NAME"}'
Note the orgId returned (e.g., orgId: 5). You will need this for subsequent steps.
Step 2: Add InfluxDB Datasource to New Org
Switch to the new org and add the InfluxDB datasource:
# Switch to new org (replace ORG_ID)
curl -k -X POST https://192.168.1.206/dashboard/api/user/using/ORG_ID \
-u sorba_admin:'sbrQp10.'
# Add InfluxDB datasource
curl -k -X POST https://192.168.1.206/dashboard/api/datasources \
-H "Content-Type: application/json" \
-u sorba_admin:'sbrQp10.' \
-d '{"name":"InfluxDB","type":"influxdb","url":"http://localhost:8086",
"database":"sorba_sde","user":"admin",
"secureJsonData":{"password":"sbrQp10."},
"access":"proxy","isDefault":true}'
Step 3: Create Admin and Viewer Users
Create an admin user (for NBI management) and a viewer user (for customer access):
# Admin user
curl -k -X POST https://192.168.1.206/dashboard/api/admin/users \
-H "Content-Type: application/json" \
-u sorba_admin:'sbrQp10.' \
-d '{"name":"CUSTOMER Admin","email":"admin@customer.com",
"login":"customer_admin","password":"PASSWORD","OrgId":ORG_ID}'
# Viewer user (for customer access)
curl -k -X POST https://192.168.1.206/dashboard/api/admin/users \
-H "Content-Type: application/json" \
-u sorba_admin:'sbrQp10.' \
-d '{"name":"CUSTOMER Viewer","email":"viewer@customer.com",
"login":"customer_viewer","password":"PASSWORD","OrgId":ORG_ID}'
Step 4: Create Fleet Overview Dashboard
Ask Claude to generate a Fleet Overview dashboard for the new customer. Provide:
Customer name
List of devices with Equipment Numbers and Senquip Device IDs
Device types (truck, dragline, excavator, etc.)
Claude will generate the JSON and provide the curl commands to push it.
Step 5: Set Home Dashboard
Set the Fleet Overview as the home dashboard for the org:
curl -k -X PUT https://192.168.1.206/dashboard/api/org/preferences \
-H "Content-Type: application/json" \
-u sorba_admin:'sbrQp10.' \
-d '{"homeDashboardUID":"FLEET_DASHBOARD_UID"}'
Step 6: Switch Back to Main Org
curl -k -X POST https://192.168.1.206/dashboard/api/user/using/1 \
-u sorba_admin:'sbrQp10.'
Section B: Adding a New Device
Follow these steps when adding a new Senquip device to an existing customer.
Step 1: Configure Senquip Device
In the Senquip portal, configure the device MQTT settings:
| Setting | Value |
| Broker Address | 43.245.171.129 |
| Port | 8883 (TLS) |
| Client ID | DEVICE_ID (e.g., RR2EW78BF) |
| Username | sorba_sde |
| Topic | sorba/DEVICE_ID/data |
| TLS Certificate | NBI CA certificate |
IMPORTANT: Do NOT change the Senquip Device ID after setup. It forms the basis of the entire data pipeline.
Step 2: Verify MQTT Data Flow
SSH to the Sorba server and verify data is arriving:
mosquitto_sub -h localhost -t "sorba/DEVICE_ID/data" -v
You should see JSON payloads arriving every 10 seconds.
Step 3: Verify Sorba Auto-Discovery
Sorba should auto-create the asset in the workspace tree:
Instances > Respa > Assets > DEVICE_ID > data
If it does not appear, restart data-auto-sync:
sudo supervisorctl restart data-auto-sync
Step 4: Configure Tag Aliases
In the Sorba Workspace, navigate to the device data tags and set aliases. The tag mapping table below shows the standard RESPA configuration:
| Tag | Alias | Description | Type |
| cp1 | cp1 | Differential Pressure (Pa) | Real |
| cp2 | cp2 | CO2 Concentration (ppm) | Real |
| cp3 | cp3 | Dust Concentration (ug/m3) | Real |
| cp8 | cp8 | Inlet Valve Status (Base64) | String |
| cp9 | cp9 | Outlet Valve Status (Base64) | String |
| cp10 | cp10 | Pressure Alarm (Base64) | String |
| cp11 | cp11 | CO2 Alarm (Base64) | String |
| cp12 | cp12 | Dust Alarm (Base64) | String |
| cp13 | cp13 | PFX Status (Base64) | String |
| cp14 | cp14 | CO2 Alarm Threshold (ppm) | Real |
Step 5: Create Alarm Code Tags
Create six new tags for the decoded alarm codes. In Sorba Workspace, add these tags under the device data group:
| Tag Name | Type | Default | Data Logging |
| cp8_code | Real | 0 | Enabled, Raw Time, 10 sec |
| cp9_code | Real | 0 | Enabled, Raw Time, 10 sec |
| cp10_code | Real | 0 | Enabled, Raw Time, 10 sec |
| cp11_code | Real | 0 | Enabled, Raw Time, 10 sec |
| cp12_code | Real | 0 | Enabled, Raw Time, 10 sec |
| cp13_code | Real | 0 | Enabled, Raw Time, 10 sec |
Step 6: Configure Alarm Decoder Script
In Sorba Script Engine, create or update the RESPA_Alarm_Decoder script to include the new device. The script reads Base64-encoded alarm strings from cp8-cp13 and writes decoded numeric codes to the _code tags.
Note the Redis tag IDs for the new device - these are needed in the script. Get them from:
redis-cli LRANGE rt_data:key_list 0 -1 | while read key; do
val=$(redis-cli GET "rt_data:$key")
echo "$key: $val"
done | grep "DEVICE_ID"
Step 7: Set Up Alarm Sync Loop
Until Sorba data-auto-sync reliably writes _code tags, use the alarm sync workaround. Update /home/bradley/alarm_sync.sh to include the new device Redis tag IDs.
Alarm code mappings:
| Tag | Values | Meaning |
| cp8_code | 1 = Connected, 0 = Disconnected | Inlet Valve |
| cp9_code | 1 = Connected, 0 = Disconnected | Outlet Valve |
| cp10_code | 0 = Normal, 1 = Low, 2 = High | Pressure Alarm |
| cp11_code | 0 = Normal, 1 = High CO2 | CO2 Alarm |
| cp12_code | 0 = Normal, 1 = High Dust | Dust Alarm |
| cp13_code | 1 = Opened, 0 = Closed | PFX Status |
Step 8: Create Device Detail Dashboard
Ask Claude to create a RESPA device detail dashboard. Provide:
Equipment Number (e.g., DRE01)
Senquip Device ID (e.g., RR2EW78BF)
Device Type (e.g., Dragline, Truck)
Customer org ID
Claude will generate the dashboard JSON based on the proven v7 template and push it to the correct org.
Step 9: Update Fleet Overview
The Fleet Overview table query needs a new row for each device. Claude will add a UNION query to the existing fleet dashboard and update the value mapping for the new device ID and Equipment Number.
Step 10: Test and Verify
Log in as the customer viewer user in an incognito browser
Verify Fleet Overview shows the new device with live data
Click device name to verify drill-down to detail dashboard
Verify alarm status panels are showing correct states
Verify GPS map shows device location
Check trend data is recording over time
Reference: Current System Configuration
Existing Grafana Organisations
| Org ID | Name | Admin Login | Viewer | Status |
| 1 | Main (Sorba) | sorba_admin | - | System |
| 2 | NBI | — | nbi_viewer | Active |
| 3 | BMA | — | bma_viewer | Placeholder |
| 4 | Spare | — | spare_viewer | Placeholder |
Existing Devices
| Eq # | Device ID | Customer | Type | Org ID |
| DRE01 | RR2EW78BF | NBI | Dragline | 2 |
Server Access
| Resource | Details |
| Sorba Server (LAN) | 192.168.1.206 |
| Sorba Server (Public) | 43.245.171.129:8080 |
| Grafana Login | https://192.168.1.206/dashboard/login |
| Grafana Public | https://43.245.171.129:8080/dashboard/login |
| InfluxDB | localhost:8086 (admin / sbrQp10.) |
| Redis | localhost:6379 (no auth) |
| Mosquitto MQTT | Port 1883 (plain) / 8883 (TLS) |
| Sorba Serial | 1762318931158 |
ISO 23875 Alarm Thresholds
| Measurement | Green | Yellow | Red |
| CO2 (ppm) | 0 - 800 | 800 - 1000 | 1000+ |
| Dust (ug/m3) | 0 - 25 | 25 - 50 | 50+ |
| Pressure (Pa) | > 20 Pa | < 20 Pa | Negative |