Solution Guides
Monitor Device Health
Know when Rhombus cameras and sensors go offline or degrade: poll device state lists, receive Diagnostic webhooks, open tickets in your service desk, and report uptime over a period.
On this page
This guide watches a Rhombus deployment from your monitoring or service desk tools: which devices are online, which need attention, and how much of a period each camera was up. It uses three building blocks: state lists you poll, Diagnostic webhooks Rhombus pushes, and uptime windows for reporting.
You need an API key with a read-only role covering the locations you monitor.
Poll device state
Each device family has a state list that returns every device the key can see, with a connection and a health status. For cameras, call getMinimalCameraStateList:
import os
import requests
URL = "https://api2.rhombussystems.com/api/camera/getMinimalCameraStateList"
HEADERS = {"x-auth-scheme": "api-token", "x-auth-apikey": os.environ["RHOMBUS_API_KEY"]}
cameras = requests.post(URL, headers=HEADERS, json={}).json()["cameraStates"]
for camera in cameras:
if camera["connectionStatus"] != "GREEN" or camera.get("healthStatus") not in (None, "GREEN"):
print(camera["name"], camera["uuid"], camera["connectionStatus"], camera.get("healthStatus"))connectionStatus and healthStatus are GREEN, YELLOW, ORANGE or RED, best to worst. Each camera also reports firmwareVersion, locationUuid and its network details, which help route a ticket to the right site.
The other families have the same kind of list:
| Devices | Operation |
|---|---|
| Cameras | getMinimalCameraStateList |
| Doorbell cameras | /api/ |
| Audio gateways | getMinimalAudioGatewayStateList |
| Door controllers and door sensors | getMinimalDoorStateList |
| Environmental sensors | getMinimalClimateStateList |
| Occupancy sensors | getMinimalOccupancySensorStateList |
| Buttons | getMinimalButtonStateList |
| Relay recorders and third-party cameras | getMinimalNVRStateList, getMinimalThirdPartyCameraStateList |
Polling every five minutes costs a handful of requests per run, far below your rate limit. Raise an alert when a device stays non-green for two runs in a row, rather than on a single reading.
Receive Diagnostic webhooks
To hear about problems as they happen, add an organization webhook with Trigger Type Diagnostic (Settings → Integrations & Developer Resources → Webhooks). Rhombus then posts each diagnostic notification to your URL, for example CAMERA_DISCONNECTED when a camera goes offline and CAMERA_CONNECTED when it's back. Sensors and door controllers use names such as DOOR_OFFLINE and DOOR_ONLINE.
{
"version": "2",
"diagnosticTrigger": "CAMERA_DISCONNECTED",
"diagnosticUuid": "BBBBBBBBBBBBBBBBBBBBBB",
"summary": "One-line summary of the event",
"deviceUuid": "AAAAAAAAAAAAAAAAAAAAAA",
"deviceType": "CAMERA",
"location": "CCCCCCCCCCCCCCCCCCCCCC",
"timestampMs": 1767230000000
}Verify the x-rhombus-signature-sha256 header (Verify a request) and acknowledge quickly (Delivery). Diagnostic webhooks are delivered once and not retried, so keep the polling above as the backstop.
Open tickets in your service desk
Rhombus has built-in ServiceNow and PagerDuty integrations, set up in the console or with the Incident Management Integrations operations in the API Reference. Use one when it fits your process. For another tool, map the webhook or the polling results to tickets yourself:
- One open ticket per device, keyed by
deviceUuid, so a flapping device updates its ticket instead of opening new ones. - Close automatically when the device is back to
GREENon the next poll. - Include the location and the device name from the state list, so the ticket reaches the right site.
Report uptime
For SLA and availability reports, getUptimeWindowsForOrg returns, for each camera, the periods it was online between startTimeMs and endTimeMs:
{
"uptimeByDevice": [
{
"deviceUuid": "AAAAAAAAAAAAAAAAAAAAAA",
"uptimeWindows": [
{ "startSeconds": 1767225600, "durationSeconds": 86100 }
]
}
]
}A camera's availability over the period is the sum of its durationSeconds divided by the period's length. Note that the windows are in seconds, while the request takes milliseconds.