Device Management

Core Platform
device_health_readDevice Management

Compares a facility's latest internet speed test with what its devices need. network returns the download and upload speed in Mbps, and for screens, cameras (recording plus live streaming) and connected speaker systems seen in the last 24 hours: the device count, the bandwidth each needs and whether the connection is enough. Use it to diagnose slow or dropping devices, or before adding devices. Pass facilityIds to check several facilities.

Actions:

  • network: Network bandwidth check.

Parameters

NameTypeDescription
action*"network"What to do; each action is described in the tool description.
facilityIdstringFacility ID. Optional when the connected facility is the one you mean.
facilityIdsarraySeveral facility IDs, to run the same request at each. Use instead of facilityId.
device_inventory_readDevice Management

Every device registered to a facility: display screens, cloud cameras, network cameras, AI edge processors, duress buttons, door controllers, AI agents and IoT sensors. Use it to troubleshoot, audit equipment or find a device's ID.

Each device has its type, model, IDs (deviceUuid; deviceID for screens; deviceSerialNumber for duress buttons), location, network details (IP, Wi-Fi or ethernet, SSID, channel, nearby networks; metadata.networkStats has the PoE switch port), health (CPU temperature, memory, uptime) and metadata.updated, the last heartbeat in Unix ms. Offline means no heartbeat for 5 minutes; a device offline over 7 days with an online twin (same equipment, name or location) was most likely replaced. networkCamera rows are streams pulled by the edge processor in edgeProcessorUUID; their deviceUuid (starting ep_) can't receive commands. Stream URL credentials show as : unless includeCredentials is set. Recommend wired ethernet over Wi-Fi.

Related: cctv_cameras_read and cctv_cameras_write (cameras), cctv_edge_processors_write (edge processors), device_inventory_write (rename, configure, move), device_send_command (control), device_health_read (bandwidth).

Actions:

  • list: List devices. Devices at the facility, filtered by type or name. With facilityIds, each facility returns its first page.

Parameters

NameTypeDescription
action*"list"What to do; each action is described in the tool description.
facilityIdstringFacility ID. Optional when the connected facility is the one you mean.
facilityIdsarraySeveral facility IDs, to run the same request at each. Use instead of facilityId.
deviceTypestringOnly this type, as in deviceType: screen, camera, networkCamera, duress and so on
querystringName, room, deviceID, deviceUuid or serial number contains this
includeCredentialsbooleanReturn stream URLs with their username and password. Off by default (credentials show as ***:***). Only set this when the user explicitly needs the credentials; it needs CCTV access at the facility.
limitintegerItems per page (default 25, at most 100)
cursorstringnextCursor from the previous page
device_inventory_writeDevice Management

Changes a device registered to a facility. rename_screen and configure_screen change a display screen (identify it by deviceID from device_inventory_read); for a screen's groups, tags or display mode use the display tools instead. move moves a screen, cloud camera, duress button, door controller, AI agent or AI edge processor to another facility in the same organisation.

Actions:

  • rename_screen: Rename a screen. Applies straight away, also for offline or end-of-life screens. Needs deviceID, displayName.
  • configure_screen: Change a screen's hardware settings. Only the settings you pass change. They are pushed to the device and may restart its display. Offline and end-of-life screens (status 409) can only be renamed. Needs deviceID. Asks for confirmation.
  • move: Move a device to another facility. facilityId is where the device is now; you need access to the target too. Moving an edge processor moves its network cameras; to move single network cameras use cctv_edge_processors_write transfer_cameras. Needs targetFacilityId, deviceType. Asks for confirmation.

Parameters

NameTypeDescription
action*"rename_screen" | "configure_screen" | "move"What to do; each action is described in the tool description.
deviceIDstringScreen deviceID (6-character code)
displayNamestringNew screen name (rename_screen, configure_screen)
facilityIdstringFacility ID. Optional when the connected facility is the one you mean.
orientation"normal" | "left" | "right" | "inverted"Screen rotation (configure_screen)
resolution"auto" | "1920x1080" | "1280x720" | "720x400"Output resolution; auto uses what the display reports (configure_screen)
scheduledReboot"disabled" | "daily" | "weekly" | "monthly"When the screen reboots itself (configure_screen)
displayBrightnessintegerBacklight brightness, 0-100 (configure_screen)
airplayEnabledbooleanScreen accepts AirPlay (configure_screen)
airplayNamestringCustom AirPlay receiver name; empty for the automatic name (configure_screen)
airplayPinstring4-digit AirPlay PIN; empty to remove (configure_screen)
duressEnabledbooleanBluetooth duress button scanner (configure_screen)
sonosEnabledbooleanSonos speaker control (configure_screen)
wifiSupportbooleanCaptive Wi-Fi setup portal (configure_screen)
cameraRestreamingEnabledbooleanRestream local camera feeds from the screen (configure_screen)
targetFacilityIdstringFacility to move the device to (move)
deviceType"screen" | "camera" | "duress" | "door-controller" | "ph-ai-agent" | "ai-edge-processor"Kind of device; it decides which identifier to pass (move)
deviceUuidstringCamera, door controller, AI agent or edge processor deviceUuid (move)
deviceSerialNumberstringDuress button serial number (move)
confirmbooleanSet only after the user confirmed the preview returned by the first call
device_send_commandDevice Management

Sends a live command to one device, or to every device at a facility: reboot, display on or off, restart the browser, show a message, load a page, install updates or power cycle a PoE port. Online devices act within seconds; offline devices never get it. Every command asks for confirmation first.

Target one device with uuid (its deviceUuid from device_inventory_read), or every device with broadcast: true. Pass facilityIds to run at several facilities. Screens take every command; cameras take rebootDevice and unlockUpdates. Network cameras (deviceUuid starting ep_) can't receive commands; target their edge processor (edgeProcessorUUID) or power cycle their PoE port.

To bring back an offline PoE camera, read its metadata.networkStats (switchID, sw_port) in device_inventory_read, then send powerCyclePort to any online device at the facility with arguments {switchID, switchPort}. That device asks the facility's network controller to cut and restore the port's power.

Parameters

NameTypeDescription
facilityIdstringFacility ID. Optional when the connected facility is the one you mean.
facilityIdsarraySeveral facility IDs, to run the same request at each. Use instead of facilityId.
command*"displayOff" | "displayOn" | "unlockUpdates" | "rebootDevice" | "restartBrowser" | "gpuDebugOn" | "gpuDebugOff" | "restartBleScanner" | "osd" | "loadUrl" | "powerCyclePort"Command to send. Broadcast restartBleScanner when duress buttons aren't detected; adding, moving or removing a button already does this, and screens reload the list every ~10 minutes.
broadcastbooleanSend to every device at the facility instead of one uuid
uuidstringThe deviceUuid from device_inventory_read; omit when broadcasting
argumentsobjectstringosd: the message text, shown over the current content. loadUrl: an http(s) URL, shown until the next program load or reboot. powerCyclePort: {switchID, switchPort}. Omit for other commands.
confirmbooleanSet only after the user confirmed the preview returned by the first call