motionDetectionCapabilities(target: MotionDetectionTarget): Resource<MotionDetectionCapabilities>
The motion detection capabilities resource of one channel.
The path is the settings path from motionDetection plus
/capabilities.
A camera's own input
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
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", );
target: MotionDetectionTarget
Which channel, and whether through an NVR's input proxy.
The resource: its path, and a codec that reads what the channel allows.