Skip to content

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:

Python
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:

DevicesOperation
CamerasgetMinimalCameraStateList
Doorbell cameras/api/doorbellcamera/getMinimalStateList
Audio gatewaysgetMinimalAudioGatewayStateList
Door controllers and door sensorsgetMinimalDoorStateList
Environmental sensorsgetMinimalClimateStateList
Occupancy sensorsgetMinimalOccupancySensorStateList
ButtonsgetMinimalButtonStateList
Relay recorders and third-party camerasgetMinimalNVRStateList, 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.

json
{
  "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 GREEN on 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:

json
{
  "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.