Skip to content

@camera.ui/sdk / sensor / ObjectDetectorSensor

Abstract Class: ObjectDetectorSensor<TStorage> ​

Defined in: sensor/object.ts:161

Object detector that receives video frames from the backend pipeline. Extend this class and implement detectObjects and modelSpec. The backend scales frames to match modelSpec.input dimensions before each call. Up to three detectObjects calls can run at once, so keep no per-call state on the sensor, or set _rpcConcurrency = {} in the subclass to receive one call at a time.

Extends ​

Type Parameters ​

TStorage ​

TStorage extends object = Record<string, any>

Constructors ​

Constructor ​

new ObjectDetectorSensor<TStorage>(name?, options?): ObjectDetectorSensor<TStorage>

Defined in: sensor/object.ts:72

Parameters ​

name? ​

string = 'Object Sensor'

options? ​

SensorOptions

Returns ​

ObjectDetectorSensor<TStorage>

Inherited from ​

ObjectSensor.constructor

Properties ​

_requiresFrames ​

_requiresFrames: boolean = true

Defined in: sensor/object.ts:162

Overrides ​

ObjectSensor._requiresFrames


_rpcConcurrency ​

_rpcConcurrency: Record<string, number>

Defined in: sensor/object.ts:165

Calls per method the backend may run at once, keyed by method name.


category ​

readonly category: Sensor = SensorCategory.Sensor

Defined in: sensor/object.ts:68

Inherited from ​

ObjectSensor.category


name ​

readonly name: string

Defined in: sensor/base.ts:238

Inherited from ​

Sensor.name


onAssignmentChanged ​

readonly onAssignmentChanged: Observable<readonly string[]>

Defined in: sensor/base.ts:266

Inherited from ​

Sensor.onAssignmentChanged


onCapabilitiesChanged ​

readonly onCapabilitiesChanged: Observable<string[]>

Defined in: sensor/base.ts:258

Inherited from ​

ObjectSensor.onCapabilitiesChanged


onConnectedChanged ​

readonly onConnectedChanged: Observable<boolean>

Defined in: sensor/base.ts:268

Inherited from ​

Sensor.onConnectedChanged


onPropertyChanged ​

readonly onPropertyChanged: Observable<PropertyChangeOf<ObjectSensorProperties>>

Defined in: sensor/base.ts:256

Inherited from ​

ObjectSensor.onPropertyChanged


type ​

readonly type: Object = SensorType.Object

Defined in: sensor/object.ts:67

Inherited from ​

ObjectSensor.type

Accessors ​

address ​

Get Signature ​

get address(): string | undefined

Defined in: sensor/base.ts:300

Returns ​

string | undefined

Inherited from ​

VibrationSensor.address


assignedCameraIds ​

Get Signature ​

get assignedCameraIds(): readonly string[]

Defined in: sensor/base.ts:316

Returns ​

readonly string[]

Inherited from ​

Sensor.assignedCameraIds


assignmentLocked ​

Get Signature ​

get assignmentLocked(): boolean

Defined in: sensor/base.ts:320

Returns ​

boolean

Inherited from ​

Sensor.assignmentLocked


capabilities ​

Get Signature ​

get capabilities(): TCapability[]

Defined in: sensor/base.ts:339

Returns ​

TCapability[]

Set Signature ​

set capabilities(value): void

Defined in: sensor/base.ts:344

Set capabilities, deduplicated, and notify backend plus local listeners.

Parameters ​
value ​

TCapability[]

Returns ​

void

Inherited from ​

ObjectSensor.capabilities


connected ​

Get Signature ​

get connected(): boolean

Defined in: sensor/base.ts:312

Returns ​

boolean

Inherited from ​

Sensor.connected


detected ​

Get Signature ​

get detected(): boolean

Defined in: sensor/object.ts:82

Returns ​

boolean

Inherited from ​

ObjectSensor.detected


detections ​

Get Signature ​

get detections(): TrackedDetection[]

Defined in: sensor/object.ts:86

Returns ​

TrackedDetection[]

Inherited from ​

ObjectSensor.detections


displayName ​

Get Signature ​

get displayName(): string

Defined in: sensor/base.ts:304

Returns ​

string

Inherited from ​

Sensor.displayName


id ​

Get Signature ​

get id(): string

Defined in: sensor/base.ts:284

Returns ​

string

Inherited from ​

Sensor.id


isAssigned ​

Get Signature ​

get isAssigned(): boolean

Defined in: sensor/base.ts:308

Returns ​

boolean

Inherited from ​

VibrationSensor.isAssigned


labels ​

Get Signature ​

get labels(): ("motion" | "audio" | "person" | "vehicle" | "animal")[]

Defined in: sensor/object.ts:90

Returns ​

("motion" | "audio" | "person" | "vehicle" | "animal")[]

Inherited from ​

ObjectSensor.labels


modelSpec ​

Get Signature ​

get abstract modelSpec(): ObjectModelSpec

Defined in: sensor/object.ts:167

Returns ​

ObjectModelSpec


nativeId ​

Get Signature ​

get nativeId(): string | undefined

Defined in: sensor/base.ts:288

Returns ​

string | undefined

Inherited from ​

Sensor.nativeId


origin ​

Get Signature ​

get origin(): string | undefined

Defined in: sensor/base.ts:292

Returns ​

string | undefined

Inherited from ​

VibrationSensor.origin


pluginId ​

Get Signature ​

get pluginId(): string | undefined

Defined in: sensor/base.ts:324

Returns ​

string | undefined

Inherited from ​

Sensor.pluginId


props ​

Get Signature ​

get protected props(): Readonly<TProperties>

Defined in: sensor/base.ts:558

Returns ​

Readonly<TProperties>

Inherited from ​

ObjectSensor.props


sourceState ​

Get Signature ​

get sourceState(): SensorSourceState | undefined

Defined in: sensor/base.ts:296

Returns ​

SensorSourceState | undefined

Inherited from ​

VibrationSensor.sourceState


storage ​

Get Signature ​

get storage(): DeviceStorage<TStorage>

Defined in: sensor/base.ts:328

Returns ​

DeviceStorage<TStorage>

Inherited from ​

ObjectSensor.storage


storageSchema ​

Get Signature ​

get storageSchema(): JsonSchema[]

Defined in: sensor/base.ts:335

Returns ​

JsonSchema[]

Inherited from ​

VibrationSensor.storageSchema

Methods ​

clearDetections() ​

clearDetections(): void

Defined in: sensor/object.ts:137

Explicitly clear detection state (detected = false, detections = [], labels = []).

Returns ​

void

Example ​

ts
sensor.clearDetections();

Inherited from ​

ObjectSensor.clearDetections


detectObjects() ​

abstract detectObjects(frame): Promise<ObjectResult>

Defined in: sensor/object.ts:170

Analyze a single video frame for objects. Called by the backend at the configured interval.

Parameters ​

frame ​

VideoFrameData

Returns ​

Promise<ObjectResult>


getValue() ​

Call Signature ​

getValue<K>(property): ObjectSensorProperties[K] | undefined

Defined in: sensor/base.ts:368

Get the current value of a sensor property. Calling the generic overload with a property enum value gives a properly typed result.

Type Parameters ​
K ​

K extends keyof ObjectSensorProperties

Parameters ​
property ​

K

Returns ​

ObjectSensorProperties[K] | undefined

Inherited from ​

ObjectSensor.getValue

Call Signature ​

getValue(property): unknown

Defined in: sensor/base.ts:369

Get the current value of a sensor property. Calling the generic overload with a property enum value gives a properly typed result.

Parameters ​
property ​

string

Returns ​

unknown

Inherited from ​

ObjectSensor.getValue


getValues() ​

getValues(): Readonly<TProperties>

Defined in: sensor/base.ts:385

Get a read-only snapshot of all property values.

Returns ​

Readonly<TProperties>

Shallow copy of every property currently held by the sensor.

Example ​

ts
const snapshot = sensor.getValues();
console.log(snapshot);

Inherited from ​

ObjectSensor.getValues


hasCapability() ​

hasCapability(capability): boolean

Defined in: sensor/base.ts:411

Check whether the sensor advertises a capability.

Parameters ​

capability ​

string

Capability flag to look for.

Returns ​

boolean

True if the sensor currently advertises it.

Example ​

ts
const dimmable = sensor.hasCapability('brightness');

Inherited from ​

ObjectSensor.hasCapability


onStart() ​

protected onStart(): void | Promise<void>

Defined in: sensor/base.ts:647

Lifecycle hook, called once the sensor is registered and live (storage and RPC are wired up). Override it to start work whose lifetime matches the sensor's: polling loops, event subscriptions, timers.

Errors thrown here are swallowed, not logged. Handle failures inside the override. Paired 1:1 with onStop, which runs on removal, plugin shutdown or cleanup.

Returns ​

void | Promise<void>

Example ​

ts
protected override onStart(): void {
  this._timer = setInterval(() => this.poll(), 5_000);
}

Inherited from ​

ObjectSensor.onStart


onStop() ​

protected onStop(): void | Promise<void>

Defined in: sensor/base.ts:660

Counterpart of onStart: tear down whatever it started, such as timers, subscriptions and external resources.

Returns ​

void | Promise<void>

Example ​

ts
protected override onStop(): void {
  if (this._timer) clearInterval(this._timer);
}

Inherited from ​

ObjectSensor.onStop


reportDetections() ​

reportDetections(detected, detections?): void

Defined in: sensor/object.ts:119

Report detected objects. Auto-derives detected and labels from the list.

  • reportDetections(true): something detected without specific data. The SDK synthesizes a single full-frame 'motion' detection as a generic fallback.
  • reportDetections(true, [...]): explicit detections (typical case).
  • reportDetections(false): clear.

Parameters ​

detected ​

boolean

Whether any object is currently detected.

detections? ​

TrackedDetection[]

Optional explicit object detections (with optional tracking metadata).

Returns ​

void

Example ​

ts
import type { TrackedDetection } from '@camera.ui/sdk';
sensor.reportDetections(true, [
  {
    label: 'person',
    confidence: 0.92,
    box: { x: 0.1, y: 0.2, width: 0.3, height: 0.4 },
  } satisfies TrackedDetection,
]);
sensor.reportDetections(false);

Inherited from ​

ObjectSensor.reportDetections


setAddress() ​

setAddress(address): void

Defined in: sensor/base.ts:444

Report the sensor's current address at the source, e.g. after a Home Assistant entity was renamed. The identity (nativeId) stays.

Parameters ​

address ​

string

Current address at the source

Returns ​

void

Example ​

typescript
sensor.setAddress(entry.entity_id);

Inherited from ​

ObjectSensor.setAddress


setDisplayName() ​

setDisplayName(value): void

Defined in: sensor/base.ts:360

Set the display name (the only mutable identifier on a sensor).

Parameters ​

value ​

string

Human-readable label shown in the UI.

Returns ​

void

Example ​

ts
sensor.setDisplayName('Front Door Motion');

Inherited from ​

ObjectSensor.setDisplayName


setSourceState() ​

setSourceState(state): void

Defined in: sensor/base.ts:427

Report what the source behind this sensor looks like right now. The host shows the state with its reason on the sensors page and never deletes on it. Only meaningful for adopted sensors.

Parameters ​

state ​

SensorSourceState

Current source state

Returns ​

void

Example ​

typescript
sensor.setSourceState(registryHasEntity ? 'connected' : 'removed');

Inherited from ​

ObjectSensor.setSourceState


updateModelSpec() ​

updateModelSpec(): void

Defined in: sensor/base.ts:577

Re-announces the model spec, e.g. once the models finished loading.

The spec a detector reports at registration is what it knows at that moment: models that load in the background are missing from it. Call this after loading, the server replaces its copy.

Returns ​

void

Example ​

typescript
async onStart(): Promise<void> {
  await this.loadModel();
  this.updateModelSpec();
}

Inherited from ​

ObjectSensor.updateModelSpec