MQTT API for integration with ThingsBoard IoT Platform (https://thingsboard.io/).
This API documents the SmartVOX Gateway application running on a Teltonika RUT976 router.
The gateway connects a SmartVOX LoRa mesh network to ThingsBoard and enables both:
Technically, this API is based on ThingsBoard MQTT Device/Gateway conventions:
In a typical deployment:
The app can:
Product range: SmartVOX product range
| Family | Visual | Main role in SmartVOX Gateway | References | Specific notes |
|---|---|---|---|---|
| SV SV230 / SV012 |
![]() |
Voice sounders (with/without beacon) used to broadcast synchronized alarms and voice instructions. |
Radio Voice Sounder with Beacon Radio Voice Sounder |
Outdoor/industrial deployment. |
| SVI | ![]() |
Indoor voice siren with flash for evacuation/lockdown instructions in public facilities. | Wireless Voice Siren with Flash | Indoor-focused form factor. |
| SR SR1 / SR4 |
![]() |
Portable operator remotes to trigger predefined alert scenarios. |
1-Button Radio Remote Control 4-Button Radio Remote Control |
Portable operator-trigger device family. |
| SC SC / SCW |
![]() |
Manual call points (standard/waterproof) for immediate local emergency triggering. |
Radio Manual Call Point Waterproof Radio Manual Call Point |
Standard and waterproof variants. |
| SB SB6 |
![]() |
Fixed multi-button control box for supervised scenario triggering. | 6-Button Radio Remote Control Box | Typically installed in control rooms/security posts. |
| SLG | ![]() |
LoRa-to-USB modem bridging SmartVOX mesh traffic with the gateway app; also relays mesh traffic. | No public page yet | Front LEDs: Power (device powered), Run (blinking when active), Link (off: ThingsBoard disabled, blinking: connecting, steady: connected), Fault (SLG or RUT976 fault). |
| RUT976 | ![]() |
Industrial router running SmartVOX Gateway app and providing secure IP uplink to ThingsBoard. |
RUT976 Wiki RUT976 Product Page |
Can use Ethernet, Wi-Fi, or 5G uplink to reach ThingsBoard. |
The SmartVOX Gateway API is organized into 3 functional groups:
v1/devices/me/attributesv1/devices/me/telemetryappVersion, radioModem metadata),connectionState, modem operational status).Glossary: attributes = static or slow-changing metadata; telemetry = runtime state sampled over time; faults = abnormal conditions; status = live operational indicators.
v1/gateway/connectv1/gateway/disconnectv1/gateway/attributesv1/gateway/telemetryCommon attributes (v1/gateway/attributes)
ts: attribute timestamp (milliseconds).type: device type (SV230, SV012, SVI, SR, SC, SB, SLG).name: device name (up to 15 chars, no spaces).groups: group membership (group IDs 0..15).Common telemetry (v1/gateway/telemetry)
connectionState: online, offline, or pending.keepAlive:
intervalSec: expected keepalive period.elapsedSinceLastRxSec: elapsed time since last radio frame.timeUntilNextRxSec: expected remaining time until next keepalive.network (radio quality/path metrics):
hopCount: number of radio hops.nearbySrc / nearbyLqi: nearest relay/source and its LQI.worstSrc / worstLqi: weakest observed path and its LQI.faults: device-type specific fault flags.status: device-type specific live status fields.Important behavior
connectionState is offline or pending, network, faults and status are explicitly null.Device-specific properties by type
| Device type | Specific attributes | Specific faults | Specific status |
|---|---|---|---|
| SR (remote controls) | keypadVersion: detected keypad type/capability (not-connected, 1-button, 4-buttons, unknown). |
batteryFault: low or invalid battery state.keypadFault: keypad not detected or malfunctioning.(+ common systemFault) |
batteryLevel: current battery level indicator reported by the remote (raw scale 0..255). |
| SV230 / SV012 / SVI (voice sounders) | psuBackupDisabled: indicates whether backup battery takeover is disabled by configuration. |
psuMainsFault: mains power missing/faulty.psuBackupFault: backup battery/power backup path fault.(+ common systemFault) |
No dedicated status field (device health is mainly represented through faults and connection state). |
| SC (manual call points) | No extra attribute beyond common fields | battery1Fault/battery2Fault: battery channel fault detected.tamperActive: enclosure tamper/open event currently active.(+ common systemFault) |
buttonActive: call point trigger currently active.battery1Level/battery2Level: level indicators for both batteries (raw scale 0..255). |
| SB (6-button control boxes) | No extra attribute beyond common fields | battery1Fault/battery2Fault: battery channel fault detected.(+ common systemFault) |
keylockActive: front-panel key lock enabled/active.battery1Level/battery2Level: level indicators for both batteries (raw scale 0..255). |
| SLG (radio modem) | psuMonitoringEnabled: power module supervision is enabled and reported upstream. |
hostCommLost: SLG <-> host (RUT976 app) communication lost.psuCommLost: SLG <-> PSU communication lost.psuMainsFault: mains power fault.psuBatteryFault: PSU battery fault.psuInternalFault: internal PSU fault.uplinkFault: upstream connectivity fault.(+ common systemFault) |
uplinkConnected: SLG uplink path to the gateway/backend is currently established. |
v1/devices/me/rpc/request/$request_idv1/devices/me/rpc/response/+refreshDevices).v1/devices/me/rpc/request/$request_idThingsBoard device access token is used as MQTT username (password is empty unless custom broker policy requires otherwise).
Gateway static/identity attributes sent to ThingsBoard (app version, modem identity and configuration).
Publishes gateway identity/configuration attributes. Typical usage: at startup, after configuration changes, and whenever SLG modem identity/config changes.
Available only on servers:
Accepts the following message:
Gateway identity/configuration payload. Includes SmartVOX Gateway app version and SLG modem metadata (when available).
Payload published by the SmartVOX Gateway to ThingsBoard under v1/devices/me/attributes.
{
"ts": 1730000000123,
"appVersion": "v1.3.0",
"radioModem": {
"id": "1AB5",
"type": "SLG",
"name": "GW_OFFICE",
"groups": [
0,
2
],
"channel": 0,
"panId": "8888",
"encryptionKey": "",
"fwVersion": "v1.3.0"
}
}
{
"ts": 1730000000123,
"appVersion": "v1.3.0",
"radioModem": null
}
Gateway runtime telemetry sent to ThingsBoard (online/offline state and modem operational state).
Publishes gateway health/operational telemetry. Typical usage: periodic heartbeat and state transitions (online/offline, modem operational status).
Available only on servers:
Accepts the following message:
Gateway runtime telemetry payload. Exposes connectivity state and radio modem operational status for monitoring dashboards/alarms.
{
"ts": 1730000000999,
"connectionState": "online",
"radioModem": {
"isOperational": true
}
}
{
"ts": 1730000000999,
"connectionState": "offline",
"radioModem": {
"isOperational": false
}
}
Notification that a SmartVOX radio device is now visible/connected through the gateway.
Announces that a SmartVOX radio device is connected/seen on the mesh network through this gateway. Helps ThingsBoard keep device presence up to date.
Available only on servers:
Accepts the following message:
Notification that a SmartVOX device became reachable on the radio network.
{
"device": "04AF",
"type": "SV230"
}
Notification that a SmartVOX radio device is disconnected or no longer reachable.
Announces that a SmartVOX radio device is disconnected or no longer reachable. Helps ThingsBoard reflect radio network availability changes.
Available only on servers:
Accepts the following message:
Notification that a SmartVOX device became unreachable on the radio network.
{
"device": "04AF"
}
Batched SmartVOX device attributes for all known devices on the LoRa mesh network.
Publishes batched attributes for SmartVOX devices (type, groups, device-specific capabilities). Payload is keyed by radio device ID.
Available only on servers:
Accepts the following message:
Batched SmartVOX network device attributes keyed by radio device ID. Each entry describes static/slow-changing metadata used to classify and configure UI behavior.
SR device requires `keypadVersion`.
{
"10B2": {
"ts": 1730000000210,
"type": "SR",
"name": "SR-10B2",
"groups": [],
"keypadVersion": "4-buttons"
}
}
SV230/SV012/SVI devices require `psuBackupDisabled`.
{
"04AF": {
"ts": 1730000000200,
"type": "SV230",
"name": "Siren-04AF",
"groups": [
0,
1
],
"psuBackupDisabled": false
}
}
SLG devices require `psuMonitoringEnabled`.
{
"1AB5": {
"ts": 1730000000300,
"type": "SLG",
"name": "GWLINK-1AB5",
"groups": [
2
],
"psuMonitoringEnabled": true
}
}
{
"04AF": {
"ts": 1730000000200,
"type": "SV230",
"name": "Siren-04AF",
"groups": [
0,
1
],
"psuBackupDisabled": false
},
"10B2": {
"ts": 1730000000210,
"type": "SR",
"name": "SR-10B2",
"groups": [],
"keypadVersion": "4-buttons"
}
}
Batched SmartVOX device telemetry (connectivity, faults, status indicators).
Publishes batched telemetry for SmartVOX devices (connection state, keepalive, network quality, faults, status). Payload is keyed by radio device ID.
Available only on servers:
Accepts the following message:
Batched SmartVOX network device telemetry keyed by radio device ID. Each entry provides operational state (connectivity, keepalive, faults, status values).
{
"04AF": [
{
"ts": 1730000000450,
"values": {
"connectionState": "online",
"keepAlive": {
"intervalSec": 30,
"elapsedSinceLastRxSec": 5,
"timeUntilNextRxSec": 25
},
"network": {
"hopCount": 1,
"nearbySrc": "00A1",
"nearbyLqi": 210,
"worstSrc": "00B2",
"worstLqi": 180
},
"faults": {
"systemFault": false,
"batteryFault": false,
"keypadFault": false
},
"status": {
"batteryLevel": 97
}
}
}
]
}
{
"1AB5": [
{
"ts": 1730000000460,
"values": {
"connectionState": "online",
"keepAlive": {
"intervalSec": 30,
"elapsedSinceLastRxSec": 4,
"timeUntilNextRxSec": 26
},
"network": {
"hopCount": 1,
"nearbySrc": "00A1",
"nearbyLqi": 205,
"worstSrc": "00C3",
"worstLqi": 170
},
"faults": {
"systemFault": false,
"hostCommLost": false,
"psuCommLost": false,
"psuMainsFault": false,
"psuBatteryFault": false,
"psuInternalFault": false,
"uplinkFault": false
},
"status": {
"uplinkConnected": true
}
}
}
]
}
RPC request topic used for both server-side RPC (ThingsBoard -> gateway) and client-side RPC (gateway -> ThingsBoard).
Receives RPC requests from ThingsBoard to execute gateway/network actions. Main use cases:
Available only on servers:
Accepts the following message:
Server-side RPC request consumed by the gateway. Used by ThingsBoard to trigger alerts and request state refresh on the SmartVOX network.
RPC request consumed by the gateway when ThingsBoard initiates server-side RPC.
{
"method": "refreshDevices",
"params": {}
}
{
"method": "trigAlertOnce",
"params": {
"source": {
"kind": "device",
"id": "1A2B"
},
"scope": {
"type": "group",
"groupId": 0
},
"priority": "high",
"signaling": "combined",
"audible": {
"sounds": [
{
"bank": "standard",
"fileId": 0,
"attenuationInDB": 0,
"repeats": 1
}
],
"sequenceRepeats": 1
}
}
}
RPC response topic for gateway responses to server-side RPC requests.
Returns execution result for a server-side RPC request. Response includes result code and an optional message for troubleshooting.
Available only on servers:
Accepts the following message:
Server-side RPC execution response.
result indicates whether the action succeeded, and msg provides contextual details on errors.
RPC response published by the gateway to answer ThingsBoard server-side RPC requests.
{
"result": "success",
"msg": ""
}
{
"result": "invalidParams",
"msg": "missing key: scope"
}
RPC request topic used for both server-side RPC (ThingsBoard -> gateway) and client-side RPC (gateway -> ThingsBoard).
Publishes client-side RPC requests from the gateway to ThingsBoard when an alert event originates from the radio network. This is used for alert method propagation and traceability in ThingsBoard.
Available only on servers:
Accepts the following message:
Client-side RPC request published by the gateway to ThingsBoard (alert methods only). Used when a radio-originated alert must be propagated and traced in the platform.
RPC request emitted by the gateway to ThingsBoard (client-side RPC). Only alert-related methods are allowed.
{
"method": "trigAlertOnce",
"params": {
"source": {
"kind": "device",
"id": "1A2B"
},
"scope": {
"type": "group",
"groupId": 0
},
"priority": "high",
"signaling": "combined",
"audible": {
"sounds": [
{
"bank": "standard",
"fileId": 0,
"attenuationInDB": 0,
"repeats": 1
}
],
"sequenceRepeats": 1
}
}
}
{
"method": "stopAlertAll",
"params": {
"source": {
"kind": "device",
"id": "1A2B"
},
"scope": {
"type": "global"
},
"signaling": "combined"
}
}
Gateway identity/configuration payload. Includes SmartVOX Gateway app version and SLG modem metadata (when available).
Payload published by the SmartVOX Gateway to ThingsBoard under v1/devices/me/attributes.
Gateway runtime telemetry payload. Exposes connectivity state and radio modem operational status for monitoring dashboards/alarms.
Notification that a SmartVOX device became reachable on the radio network.
Notification that a SmartVOX device became unreachable on the radio network.
Batched SmartVOX network device attributes keyed by radio device ID. Each entry describes static/slow-changing metadata used to classify and configure UI behavior.
Batched SmartVOX network device telemetry keyed by radio device ID. Each entry provides operational state (connectivity, keepalive, faults, status values).
Server-side RPC request consumed by the gateway. Used by ThingsBoard to trigger alerts and request state refresh on the SmartVOX network.
RPC request consumed by the gateway when ThingsBoard initiates server-side RPC.
Client-side RPC request published by the gateway to ThingsBoard (alert methods only). Used when a radio-originated alert must be propagated and traced in the platform.
RPC request emitted by the gateway to ThingsBoard (client-side RPC). Only alert-related methods are allowed.
Server-side RPC execution response.
result indicates whether the action succeeded, and msg provides contextual details on errors.
RPC response published by the gateway to answer ThingsBoard server-side RPC requests.