function motionDetectionCapabilities
motionDetectionCapabilities(target: MotionDetectionTarget): Resource<MotionDetectionCapabilities>

The motion detection capabilities resource of one channel.

The path is the settings path from motionDetection plus /capabilities.

Examples

A camera's own input

import { assertEquals } from "@std/assert";
import { motionDetectionCapabilities } from "./motion-detection-capabilities.ts";

assertEquals(
  motionDetectionCapabilities({ channel: 1 }).path,
  "/ISAPI/System/Video/inputs/channels/1/motionDetection/capabilities",
);

A camera that draws regions and rasterizes them into an 18 x 22 grid

import { assertEquals } from "@std/assert";
import { resolvesNext, spy } from "@std/testing/mock";
import { request } from "../request.ts";
import { motionDetectionCapabilities } from "./motion-detection-capabilities.ts";

const fetch = spy(resolvesNext([
  new Response(
    '<MotionDetection><enabled opt="true,false">true</enabled>' +
      '<regionType opt="grid,region">grid</regionType>' +
      "<Grid><rowGranularity>18</rowGranularity><columnGranularity>22</columnGranularity></Grid>" +
      '<MotionDetectionLayout><sensitivityLevel min="0" max="100" step="20">60</sensitivityLevel>' +
      '<targetType opt="human,vehicle">human,vehicle</targetType></MotionDetectionLayout>' +
      '<regionEdgesNum min="4" max="10"/></MotionDetection>',
  ),
]));

const capabilities = await request(
  { baseUrl: "http://192.0.2.21", username: "admin", password: "hunter2", fetch },
  motionDetectionCapabilities({ channel: 1 }),
);

assertEquals(capabilities, {
  regionTypes: ["grid", "region"],
  rows: 18,
  columns: 22,
  sensitivityLevel: { min: 0, max: 100, step: 20 },
  targetTypes: ["human", "vehicle"],
  regionEdges: { min: 4, max: 10 },
});
assertEquals(
  fetch.calls[0].args[0],
  "http://192.0.2.21/ISAPI/System/Video/inputs/channels/1/motionDetection/capabilities",
);

Parameters

Which channel, and whether through an NVR's input proxy.

Return Type

The resource: its path, and a codec that reads what the channel allows.