hap-nodejs 1.0.0-beta.2 → 1.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/bonjour-hap.d.ts +4 -3
- package/@types/simple-plist.d.ts +2 -1
- package/README.md +2 -1
- package/dist/BridgedCore.js +7 -5
- package/dist/BridgedCore.js.map +1 -1
- package/dist/Core.js +14 -8
- package/dist/Core.js.map +1 -1
- package/dist/accessories/AirConditioner_accessory.d.ts +2 -0
- package/dist/accessories/AirConditioner_accessory.d.ts.map +1 -0
- package/dist/accessories/AirConditioner_accessory.js +128 -0
- package/dist/accessories/AirConditioner_accessory.js.map +1 -0
- package/dist/accessories/AppleTVRemote_accessory.d.ts +2 -0
- package/dist/accessories/AppleTVRemote_accessory.d.ts.map +1 -0
- package/dist/accessories/AppleTVRemote_accessory.js +159 -0
- package/dist/accessories/AppleTVRemote_accessory.js.map +1 -0
- package/dist/accessories/Camera_accessory.d.ts +2 -0
- package/dist/accessories/Camera_accessory.d.ts.map +1 -0
- package/dist/accessories/Camera_accessory.js +630 -0
- package/dist/accessories/Camera_accessory.js.map +1 -0
- package/dist/accessories/Fan_accessory.d.ts +2 -0
- package/dist/accessories/Fan_accessory.d.ts.map +1 -0
- package/dist/accessories/Fan_accessory.js +80 -0
- package/dist/accessories/Fan_accessory.js.map +1 -0
- package/dist/accessories/GarageDoorOpener_accessory.d.ts +2 -0
- package/dist/accessories/GarageDoorOpener_accessory.d.ts.map +1 -0
- package/dist/accessories/GarageDoorOpener_accessory.js +78 -0
- package/dist/accessories/GarageDoorOpener_accessory.js.map +1 -0
- package/dist/accessories/Light-AdaptiveLighting_accessory.d.ts +2 -0
- package/dist/accessories/Light-AdaptiveLighting_accessory.d.ts.map +1 -0
- package/dist/accessories/Light-AdaptiveLighting_accessory.js +96 -0
- package/dist/accessories/Light-AdaptiveLighting_accessory.js.map +1 -0
- package/dist/accessories/Light_accessory.d.ts +2 -0
- package/dist/accessories/Light_accessory.d.ts.map +1 -0
- package/dist/accessories/Light_accessory.js +148 -0
- package/dist/accessories/Light_accessory.js.map +1 -0
- package/dist/accessories/Lock_accessory.d.ts +2 -0
- package/dist/accessories/Lock_accessory.d.ts.map +1 -0
- package/dist/accessories/Lock_accessory.js +76 -0
- package/dist/accessories/Lock_accessory.js.map +1 -0
- package/dist/accessories/MotionSensor_accessory.d.ts +2 -0
- package/dist/accessories/MotionSensor_accessory.d.ts.map +1 -0
- package/dist/accessories/MotionSensor_accessory.js +45 -0
- package/dist/accessories/MotionSensor_accessory.js.map +1 -0
- package/dist/accessories/Outlet_accessory.d.ts +2 -0
- package/dist/accessories/Outlet_accessory.d.ts.map +1 -0
- package/dist/accessories/Outlet_accessory.js +79 -0
- package/dist/accessories/Outlet_accessory.js.map +1 -0
- package/dist/accessories/SmartSpeaker_accessory.d.ts +2 -0
- package/dist/accessories/SmartSpeaker_accessory.d.ts.map +1 -0
- package/dist/accessories/SmartSpeaker_accessory.js +44 -0
- package/dist/accessories/SmartSpeaker_accessory.js.map +1 -0
- package/dist/accessories/Sprinkler_accessory.d.ts +2 -0
- package/dist/accessories/Sprinkler_accessory.d.ts.map +1 -0
- package/dist/accessories/Sprinkler_accessory.js +128 -0
- package/dist/accessories/Sprinkler_accessory.js.map +1 -0
- package/dist/accessories/TV_accessory.d.ts +2 -0
- package/dist/accessories/TV_accessory.d.ts.map +1 -0
- package/dist/accessories/TV_accessory.js +101 -0
- package/dist/accessories/TV_accessory.js.map +1 -0
- package/dist/accessories/TemperatureSensor_accessory.d.ts +2 -0
- package/dist/accessories/TemperatureSensor_accessory.d.ts.map +1 -0
- package/dist/accessories/TemperatureSensor_accessory.js +44 -0
- package/dist/accessories/TemperatureSensor_accessory.js.map +1 -0
- package/dist/accessories/Wi-FiRouter_accessory.d.ts +3 -0
- package/dist/accessories/Wi-FiRouter_accessory.d.ts.map +1 -0
- package/dist/accessories/Wi-FiRouter_accessory.js +17 -0
- package/dist/accessories/Wi-FiRouter_accessory.js.map +1 -0
- package/dist/accessories/Wi-FiSatellite_accessory.d.ts +3 -0
- package/dist/accessories/Wi-FiSatellite_accessory.d.ts.map +1 -0
- package/dist/accessories/Wi-FiSatellite_accessory.js +19 -0
- package/dist/accessories/Wi-FiSatellite_accessory.js.map +1 -0
- package/dist/accessories/gstreamer-audioProducer.d.ts +25 -0
- package/dist/accessories/gstreamer-audioProducer.d.ts.map +1 -0
- package/dist/accessories/gstreamer-audioProducer.js +155 -0
- package/dist/accessories/gstreamer-audioProducer.js.map +1 -0
- package/dist/accessories/types.d.ts +78 -0
- package/dist/accessories/types.d.ts.map +1 -0
- package/dist/accessories/types.js +88 -0
- package/dist/accessories/types.js.map +1 -0
- package/dist/index.d.ts +54 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -11
- package/dist/index.js.map +1 -1
- package/dist/internal-types.d.ts +65 -124
- package/dist/internal-types.d.ts.map +1 -1
- package/dist/internal-types.js +66 -5
- package/dist/internal-types.js.map +1 -1
- package/dist/lib/Accessory.d.ts +147 -60
- package/dist/lib/Accessory.d.ts.map +1 -1
- package/dist/lib/Accessory.js +566 -475
- package/dist/lib/Accessory.js.map +1 -1
- package/dist/lib/AccessoryLoader.d.ts +20 -8
- package/dist/lib/AccessoryLoader.d.ts.map +1 -1
- package/dist/lib/AccessoryLoader.js +115 -93
- package/dist/lib/AccessoryLoader.js.map +1 -1
- package/dist/lib/Advertiser.d.ts +99 -5
- package/dist/lib/Advertiser.d.ts.map +1 -1
- package/dist/lib/Advertiser.js +564 -22
- package/dist/lib/Advertiser.js.map +1 -1
- package/dist/lib/Bridge.d.ts +3 -1
- package/dist/lib/Bridge.d.ts.map +1 -1
- package/dist/lib/Bridge.js +2 -0
- package/dist/lib/Bridge.js.map +1 -1
- package/dist/lib/Characteristic.d.ts +918 -59
- package/dist/lib/Characteristic.d.ts.map +1 -1
- package/dist/lib/Characteristic.js +308 -257
- package/dist/lib/Characteristic.js.map +1 -1
- package/dist/lib/HAPServer.d.ts +114 -43
- package/dist/lib/HAPServer.d.ts.map +1 -1
- package/dist/lib/HAPServer.js +269 -405
- package/dist/lib/HAPServer.js.map +1 -1
- package/dist/lib/Service.d.ts +339 -15
- package/dist/lib/Service.d.ts.map +1 -1
- package/dist/lib/Service.js +59 -50
- package/dist/lib/Service.js.map +1 -1
- package/dist/lib/camera/Camera.d.ts +15 -6
- package/dist/lib/camera/Camera.d.ts.map +1 -1
- package/dist/lib/camera/Camera.js +6 -3
- package/dist/lib/camera/Camera.js.map +1 -1
- package/dist/lib/camera/RTPProxy.d.ts +24 -19
- package/dist/lib/camera/RTPProxy.d.ts.map +1 -1
- package/dist/lib/camera/RTPProxy.js +230 -207
- package/dist/lib/camera/RTPProxy.js.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.d.ts +202 -43
- package/dist/lib/camera/RTPStreamManagement.d.ts.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.js +303 -189
- package/dist/lib/camera/RTPStreamManagement.js.map +1 -1
- package/dist/lib/camera/RecordingManagement.d.ts +326 -0
- package/dist/lib/camera/RecordingManagement.d.ts.map +1 -0
- package/dist/lib/camera/RecordingManagement.js +833 -0
- package/dist/lib/camera/RecordingManagement.js.map +1 -0
- package/dist/lib/camera/index.d.ts +4 -3
- package/dist/lib/camera/index.d.ts.map +1 -1
- package/dist/lib/camera/index.js +1 -0
- package/dist/lib/camera/index.js.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.d.ts +37 -11
- package/dist/lib/controller/AdaptiveLightingController.d.ts.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.js +101 -86
- package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
- package/dist/lib/controller/CameraController.d.ts +290 -12
- package/dist/lib/controller/CameraController.d.ts.map +1 -1
- package/dist/lib/controller/CameraController.js +403 -47
- package/dist/lib/controller/CameraController.js.map +1 -1
- package/dist/lib/controller/Controller.d.ts +31 -10
- package/dist/lib/controller/Controller.d.ts.map +1 -1
- package/dist/lib/controller/Controller.js +7 -0
- package/dist/lib/controller/Controller.js.map +1 -1
- package/dist/lib/controller/DoorbellController.d.ts +47 -1
- package/dist/lib/controller/DoorbellController.d.ts.map +1 -1
- package/dist/lib/controller/DoorbellController.js +65 -11
- package/dist/lib/controller/DoorbellController.js.map +1 -1
- package/dist/lib/controller/RemoteController.d.ts +111 -42
- package/dist/lib/controller/RemoteController.d.ts.map +1 -1
- package/dist/lib/controller/RemoteController.js +228 -203
- package/dist/lib/controller/RemoteController.js.map +1 -1
- package/dist/lib/controller/index.d.ts +4 -4
- package/dist/lib/datastream/DataStreamManagement.d.ts +25 -19
- package/dist/lib/datastream/DataStreamManagement.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamManagement.js +42 -35
- package/dist/lib/datastream/DataStreamManagement.js.map +1 -1
- package/dist/lib/datastream/DataStreamParser.d.ts +63 -24
- package/dist/lib/datastream/DataStreamParser.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamParser.js +132 -86
- package/dist/lib/datastream/DataStreamParser.js.map +1 -1
- package/dist/lib/datastream/DataStreamServer.d.ts +154 -50
- package/dist/lib/datastream/DataStreamServer.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamServer.js +242 -147
- package/dist/lib/datastream/DataStreamServer.js.map +1 -1
- package/dist/lib/datastream/index.d.ts +3 -3
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts +181 -0
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/CharacteristicDefinitions.js +968 -499
- package/dist/lib/definitions/CharacteristicDefinitions.js.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.d.ts +58 -0
- package/dist/lib/definitions/ServiceDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.js +173 -6
- package/dist/lib/definitions/ServiceDefinitions.js.map +1 -1
- package/dist/lib/definitions/generate-definitions.d.ts +1 -0
- package/dist/lib/definitions/generate-definitions.d.ts.map +1 -1
- package/dist/lib/definitions/generate-definitions.js +29 -21
- package/dist/lib/definitions/generate-definitions.js.map +1 -1
- package/dist/lib/definitions/generator-configuration.d.ts.map +1 -1
- package/dist/lib/definitions/generator-configuration.js +62 -29
- package/dist/lib/definitions/generator-configuration.js.map +1 -1
- package/dist/lib/model/AccessoryInfo.d.ts +16 -13
- package/dist/lib/model/AccessoryInfo.d.ts.map +1 -1
- package/dist/lib/model/AccessoryInfo.js +88 -83
- package/dist/lib/model/AccessoryInfo.js.map +1 -1
- package/dist/lib/model/ControllerStorage.d.ts +3 -0
- package/dist/lib/model/ControllerStorage.d.ts.map +1 -1
- package/dist/lib/model/ControllerStorage.js +7 -4
- package/dist/lib/model/ControllerStorage.js.map +1 -1
- package/dist/lib/model/HAPStorage.d.ts +3 -0
- package/dist/lib/model/HAPStorage.d.ts.map +1 -1
- package/dist/lib/model/HAPStorage.js +4 -0
- package/dist/lib/model/HAPStorage.js.map +1 -1
- package/dist/lib/model/IdentifierCache.d.ts +12 -11
- package/dist/lib/model/IdentifierCache.d.ts.map +1 -1
- package/dist/lib/model/IdentifierCache.js +68 -65
- package/dist/lib/model/IdentifierCache.js.map +1 -1
- package/dist/lib/tv/AccessControlManagement.d.ts +12 -1
- package/dist/lib/tv/AccessControlManagement.d.ts.map +1 -1
- package/dist/lib/tv/AccessControlManagement.js +13 -5
- package/dist/lib/tv/AccessControlManagement.js.map +1 -1
- package/dist/lib/util/clone.d.ts +2 -1
- package/dist/lib/util/clone.d.ts.map +1 -1
- package/dist/lib/util/clone.js +2 -0
- package/dist/lib/util/clone.js.map +1 -1
- package/dist/lib/util/color-utils.d.ts +4 -1
- package/dist/lib/util/color-utils.d.ts.map +1 -1
- package/dist/lib/util/color-utils.js +5 -2
- package/dist/lib/util/color-utils.js.map +1 -1
- package/dist/lib/util/eventedhttp.d.ts +62 -22
- package/dist/lib/util/eventedhttp.d.ts.map +1 -1
- package/dist/lib/util/eventedhttp.js +236 -180
- package/dist/lib/util/eventedhttp.js.map +1 -1
- package/dist/lib/util/hapCrypto.d.ts +35 -7
- package/dist/lib/util/hapCrypto.d.ts.map +1 -1
- package/dist/lib/util/hapCrypto.js +86 -78
- package/dist/lib/util/hapCrypto.js.map +1 -1
- package/dist/lib/util/hapStatusError.d.ts +2 -0
- package/dist/lib/util/hapStatusError.d.ts.map +1 -1
- package/dist/lib/util/hapStatusError.js +5 -3
- package/dist/lib/util/hapStatusError.js.map +1 -1
- package/dist/lib/util/net-utils.d.ts +7 -0
- package/dist/lib/util/net-utils.d.ts.map +1 -1
- package/dist/lib/util/net-utils.js +11 -4
- package/dist/lib/util/net-utils.js.map +1 -1
- package/dist/lib/util/once.d.ts +6 -1
- package/dist/lib/util/once.d.ts.map +1 -1
- package/dist/lib/util/once.js +9 -3
- package/dist/lib/util/once.js.map +1 -1
- package/dist/lib/util/promise-utils.d.ts +15 -0
- package/dist/lib/util/promise-utils.d.ts.map +1 -0
- package/dist/lib/util/promise-utils.js +36 -0
- package/dist/lib/util/promise-utils.js.map +1 -0
- package/dist/lib/util/request-util.d.ts +16 -0
- package/dist/lib/util/request-util.d.ts.map +1 -1
- package/dist/lib/util/request-util.js +43 -27
- package/dist/lib/util/request-util.js.map +1 -1
- package/dist/lib/util/time.d.ts +7 -1
- package/dist/lib/util/time.d.ts.map +1 -1
- package/dist/lib/util/time.js +13 -7
- package/dist/lib/util/time.js.map +1 -1
- package/dist/lib/util/tlv.d.ts +95 -5
- package/dist/lib/util/tlv.d.ts.map +1 -1
- package/dist/lib/util/tlv.js +96 -24
- package/dist/lib/util/tlv.js.map +1 -1
- package/dist/lib/util/uuid.d.ts +2 -3
- package/dist/lib/util/uuid.d.ts.map +1 -1
- package/dist/lib/util/uuid.js +25 -19
- package/dist/lib/util/uuid.js.map +1 -1
- package/dist/types.d.ts +271 -18
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/package.json +28 -27
- package/dist/lib/util/setupcode.d.ts +0 -5
- package/dist/lib/util/setupcode.d.ts.map +0 -1
- package/dist/lib/util/setupcode.js +0 -49
- package/dist/lib/util/setupcode.js.map +0 -1
- package/dist/lib/util/setupid.d.ts +0 -5
- package/dist/lib/util/setupid.d.ts.map +0 -1
- package/dist/lib/util/setupid.js +0 -52
- package/dist/lib/util/setupid.js.map +0 -1
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
import { EventEmitter } from "events";
|
|
3
4
|
import { SessionIdentifier } from "../../types";
|
|
4
|
-
import { CameraStreamingOptions, PrepareStreamRequest, PrepareStreamResponse, RTPStreamManagement, SnapshotRequest, StreamingRequest } from "../camera";
|
|
5
|
-
import
|
|
5
|
+
import { CameraRecordingConfiguration, CameraRecordingOptions, CameraStreamingOptions, EventTriggerOption, PrepareStreamRequest, PrepareStreamResponse, RecordingManagement, RecordingManagementState, RecordingPacket, RTPStreamManagement, RTPStreamManagementState, SnapshotRequest, StreamingRequest } from "../camera";
|
|
6
|
+
import { HDSProtocolSpecificErrorReason } from "../datastream";
|
|
7
|
+
import { CameraOperatingMode, CameraRecordingManagement, DataStreamTransportManagement, Doorbell, Microphone, MotionSensor, OccupancySensor, Speaker } from "../definitions";
|
|
6
8
|
import { HAPStatus } from "../HAPServer";
|
|
7
|
-
import {
|
|
9
|
+
import { Service } from "../Service";
|
|
10
|
+
import { ControllerIdentifier, ControllerServiceMap, SerializableController, StateChangeDelegate } from "./Controller";
|
|
11
|
+
/**
|
|
12
|
+
* @group Camera
|
|
13
|
+
*/
|
|
8
14
|
export interface CameraControllerOptions {
|
|
9
15
|
/**
|
|
10
16
|
* Amount of parallel camera streams the accessory is capable of running.
|
|
11
|
-
* As of the official HAP specification non
|
|
17
|
+
* As of the official HAP specification non SecureVideo cameras have a minimum required amount of 2 (but 1 is also fine).
|
|
12
18
|
* Secure Video cameras just expose 1 stream.
|
|
13
19
|
*
|
|
14
20
|
* Default value: 1
|
|
@@ -22,10 +28,89 @@ export interface CameraControllerOptions {
|
|
|
22
28
|
* Options regarding video/audio streaming
|
|
23
29
|
*/
|
|
24
30
|
streamingOptions: CameraStreamingOptions;
|
|
31
|
+
/**
|
|
32
|
+
* When supplying this option, it will enable support for HomeKit Secure Video.
|
|
33
|
+
* This will create the {@link Service.CameraRecordingManagement}, {@link Service.CameraOperatingMode}
|
|
34
|
+
* and {@link Service.DataStreamTransportManagement} services.
|
|
35
|
+
*
|
|
36
|
+
* NOTE: The controller only initializes the required characteristics for the {@link Service.CameraOperatingMode}.
|
|
37
|
+
* You may add optional characteristics, if required, by accessing the service directly `CameraController.recordingManagement.operatingModeService`.
|
|
38
|
+
*/
|
|
39
|
+
recording?: {
|
|
40
|
+
/**
|
|
41
|
+
* Options regarding Recordings (Secure Video)
|
|
42
|
+
*/
|
|
43
|
+
options: CameraRecordingOptions;
|
|
44
|
+
/**
|
|
45
|
+
* Delegate which handles the audio/video recording data streaming on motion.
|
|
46
|
+
*/
|
|
47
|
+
delegate: CameraRecordingDelegate;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* This config section configures optional sensors for the camera.
|
|
51
|
+
* It e.g. may be used to set up a {@link EventTriggerOption.MOTION} trigger when configuring Secure Video.
|
|
52
|
+
*
|
|
53
|
+
* You may either specify and provide the desired {@link Service}s or specify their creation and maintenance using a `boolean` flag.
|
|
54
|
+
* In this case the controller will create and maintain the service for you.
|
|
55
|
+
* Otherwise, when you supply an already created instance of the {@link Service}, you are responsible yourself to manage the service
|
|
56
|
+
* (e.g. creating, restoring, adding to the accessory, ...).
|
|
57
|
+
*
|
|
58
|
+
* The services can be accessed through the documented property after the call to {@link Accessory.configureController} has returned.
|
|
59
|
+
*/
|
|
60
|
+
sensors?: {
|
|
61
|
+
/**
|
|
62
|
+
* Define if a {@link Service.MotionSensor} should be created/associated with the controller.
|
|
63
|
+
*
|
|
64
|
+
* You may access the created service via the {@link CameraController.motionService} property to configure listeners.
|
|
65
|
+
*
|
|
66
|
+
* ## HomeKit Secure Video:
|
|
67
|
+
*
|
|
68
|
+
* If supplied, this sensor will be used as a {@link EventTriggerOption.MOTION} trigger.
|
|
69
|
+
* The characteristic {@link Characteristic.StatusActive} will be added, which is used to enable or disable the sensor.
|
|
70
|
+
*/
|
|
71
|
+
motion?: Service | boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Define if a {@link Service.OccupancySensor} should be created/associated with the controller.
|
|
74
|
+
*
|
|
75
|
+
* You may access the created service via the {@link CameraController.occupancyService} property to configure listeners.
|
|
76
|
+
*
|
|
77
|
+
* ## HomeKit Secure Video:
|
|
78
|
+
*
|
|
79
|
+
* The characteristic {@link Characteristic.StatusActive} will be added, which is used to enable or disable the sensor.
|
|
80
|
+
*/
|
|
81
|
+
occupancy?: Service | boolean;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @group Camera
|
|
86
|
+
*/
|
|
87
|
+
export type SnapshotRequestCallback = (error?: Error | HAPStatus, buffer?: Buffer) => void;
|
|
88
|
+
/**
|
|
89
|
+
* @group Camera
|
|
90
|
+
*/
|
|
91
|
+
export type PrepareStreamCallback = (error?: Error, response?: PrepareStreamResponse) => void;
|
|
92
|
+
/**
|
|
93
|
+
* @group Camera
|
|
94
|
+
*/
|
|
95
|
+
export type StreamRequestCallback = (error?: Error) => void;
|
|
96
|
+
/**
|
|
97
|
+
* @group Camera
|
|
98
|
+
*/
|
|
99
|
+
export declare const enum ResourceRequestReason {
|
|
100
|
+
/**
|
|
101
|
+
* The reason describes periodic resource requests.
|
|
102
|
+
* In the example of camera image snapshots those are the typical preview images every 10 seconds.
|
|
103
|
+
*/
|
|
104
|
+
PERIODIC = 0,
|
|
105
|
+
/**
|
|
106
|
+
* The resource request is the result of some event.
|
|
107
|
+
* In the example of camera image snapshots, requests are made due to e.g. a motion event or similar.
|
|
108
|
+
*/
|
|
109
|
+
EVENT = 1
|
|
25
110
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
111
|
+
/**
|
|
112
|
+
* @group Camera
|
|
113
|
+
*/
|
|
29
114
|
export interface CameraStreamingDelegate {
|
|
30
115
|
/**
|
|
31
116
|
* This method is called when a HomeKit controller requests a snapshot image for the given camera.
|
|
@@ -42,13 +127,163 @@ export interface CameraStreamingDelegate {
|
|
|
42
127
|
handleStreamRequest(request: StreamingRequest, callback: StreamRequestCallback): void;
|
|
43
128
|
}
|
|
44
129
|
/**
|
|
45
|
-
*
|
|
130
|
+
* A `CameraRecordingDelegate` is responsible for handling recordings of a HomeKit Secure Video camera.
|
|
131
|
+
*
|
|
132
|
+
* It is responsible for maintaining the prebuffer (see {@link CameraRecordingOptions.prebufferLength},
|
|
133
|
+
* once recording was activated (see {@link updateRecordingActive}).
|
|
134
|
+
*
|
|
135
|
+
* Before recording is considered enabled two things must happen:
|
|
136
|
+
* - Recording must be enabled by the user. Signaled through {@link updateRecordingActive}.
|
|
137
|
+
* - Recording configurations must be selected by a HomeKit controller through {@link updateRecordingConfiguration}.
|
|
138
|
+
*
|
|
139
|
+
* A typical recording event scenario happens as follows:
|
|
140
|
+
* - The camera is in idle mode, maintaining the prebuffer (the duration of the prebuffer depends on the selected {@link CameraRecordingConfiguration}).
|
|
141
|
+
* - A recording event is triggered (e.g. motion or doorbell button press) and the camera signals it through
|
|
142
|
+
* the respective characteristics (e.g. {@link Characteristic.MotionDetected} or {@link Characteristic.ProgrammableSwitchEvent}).
|
|
143
|
+
* Further, the camera saves the content of the prebuffer and starts recording the video.
|
|
144
|
+
* The camera should continue to store the recording until it runs out of space.
|
|
145
|
+
* In any case the camera should preserve recordings which are nearest to the triggered event.
|
|
146
|
+
* A stored recording might be completely deleted if a stream request wasn't initiated for eight seconds.
|
|
147
|
+
* - A HomeKit Controller will open a new recording session to download the next recording.
|
|
148
|
+
* This results in a call to {@link handleRecordingStreamRequest}.
|
|
149
|
+
* - Once the recording event is finished the camera will reset the state accordingly
|
|
150
|
+
* (e.g. in the {@link Service.MotionSensor} or {@link Service.Doorbell} service).
|
|
151
|
+
* It will continue to send the remaining fragments of the currently ongoing recording stream request.
|
|
152
|
+
* - The camera will either reach the end of the recording (and signal this via {@link RecordingPacket.isLast}. Also see {@link acknowledgeStream})
|
|
153
|
+
* or it will continue to stream til the HomeKit Controller closes
|
|
154
|
+
* the stream {@link closeRecordingStream} with reason {@link HDSProtocolSpecificErrorReason.NORMAL}.
|
|
155
|
+
* - The camera goes back into idle mode.
|
|
156
|
+
*
|
|
157
|
+
* @group Camera
|
|
158
|
+
*/
|
|
159
|
+
export interface CameraRecordingDelegate {
|
|
160
|
+
/**
|
|
161
|
+
* A call to this method notifies the `CameraRecordingDelegate` about a change to the
|
|
162
|
+
* `CameraRecordingManagement.Active` characteristic. This characteristic controls
|
|
163
|
+
* if the camera should react to recording events.
|
|
164
|
+
*
|
|
165
|
+
* If recording is disabled the camera can stop maintaining its prebuffer.
|
|
166
|
+
* If recording is enabled the camera should start recording into its prebuffer.
|
|
167
|
+
*
|
|
168
|
+
* A `CameraRecordingDelegate` should assume active to be `false` on startup.
|
|
169
|
+
* HAP-NodeJS will persist the state of the `Active` characteristic across reboots
|
|
170
|
+
* and will call {@link updateRecordingActive} accordingly on startup, if recording was previously enabled.
|
|
171
|
+
*
|
|
172
|
+
* NOTE: HAP-NodeJS cannot guarantee that a {@link CameraRecordingConfiguration} is present
|
|
173
|
+
* when recording is activated (e.g. the selected configuration might be erased due to changes
|
|
174
|
+
* in the supplied {@link CameraRecordingOptions}, but the camera is still `active`; or we can't otherwise
|
|
175
|
+
* influence the order which a HomeKit Controller might call those characteristics).
|
|
176
|
+
* However, HAP-NodeJS guarantees that if there is a valid {@link CameraRecordingConfiguration},
|
|
177
|
+
* {@link updateRecordingConfiguration} is called before {@link updateRecordingActive} (when enabling)
|
|
178
|
+
* to avoid any unnecessary and potentially expensive reconfigurations.
|
|
179
|
+
*
|
|
180
|
+
* @param active - Specifies if recording is active or not.
|
|
181
|
+
*/
|
|
182
|
+
updateRecordingActive(active: boolean): void;
|
|
183
|
+
/**
|
|
184
|
+
* A call to this method signals that the selected (by the HomeKit Controller)
|
|
185
|
+
* recording configuration of the camera has changed.
|
|
186
|
+
*
|
|
187
|
+
* On startup the delegate should assume `configuration = undefined`.
|
|
188
|
+
* HAP-NodeJS will persist the state of both across reboots and will call
|
|
189
|
+
* {@link updateRecordingConfiguration} on startup if there is a **selected configuration** present.
|
|
190
|
+
*
|
|
191
|
+
* NOTE: An update to the recording configuration might happen while there is still a running
|
|
192
|
+
* recording stream. The camera MUST continue to use the previous configuration for the
|
|
193
|
+
* currently running stream and only apply the updated configuration to the next stream.
|
|
194
|
+
*
|
|
195
|
+
* @param configuration - The {@link CameraRecordingConfiguration}. Reconfigure your recording pipeline accordingly.
|
|
196
|
+
* The parameter might be `undefined` when the selected configuration became invalid. This typically ony happens
|
|
197
|
+
* e.g. due to a factory reset (when all pairings are removed). Disable the recording pipeline in such a case
|
|
198
|
+
* even if recording is still enabled for the camera.
|
|
199
|
+
*/
|
|
200
|
+
updateRecordingConfiguration(configuration: CameraRecordingConfiguration | undefined): void;
|
|
201
|
+
/**
|
|
202
|
+
* This method is called to stream the next recording event.
|
|
203
|
+
* It is guaranteed that there is only ever one ongoing recording stream request at a time.
|
|
204
|
+
*
|
|
205
|
+
* When this method is called return the currently ongoing (or next in case of a potentially queued)
|
|
206
|
+
* recording via a `AsyncGenerator`. Every `yield` of the generator represents a complete recording `packet`.
|
|
207
|
+
* The first packet MUST always be the {@link PacketDataType.MEDIA_INITIALIZATION} packet.
|
|
208
|
+
* Any following packet will transport the actual mp4 fragments in {@link PacketDataType.MEDIA_FRAGMENT} packets,
|
|
209
|
+
* starting with the content of the prebuffer. Every {@link PacketDataType.MEDIA_FRAGMENT} starts with a key frame
|
|
210
|
+
* and must not be longer than the specified duration set via the `CameraRecordingConfiguration.mediaContainerConfiguration.fragmentLength`
|
|
211
|
+
* **selected** by the HomeKit Controller in {@link updateRecordingConfiguration}.
|
|
212
|
+
*
|
|
213
|
+
* NOTE: You MUST respect the value of {@link Characteristic.RecordingAudioActive} characteristic of the {@link Service.CameraOperatingMode}
|
|
214
|
+
* service. When the characteristic is set to false you MUST NOT include audio in the mp4 fragments. You can access the characteristic via
|
|
215
|
+
* the `CameraController.recordingManagement.operatingModeService` property.
|
|
216
|
+
*
|
|
217
|
+
* You might throw an error in this method if encountering a non-recoverable state.
|
|
218
|
+
* You may throw a {@link HDSProtocolError} to manually define the {@link HDSProtocolSpecificErrorReason} for the `DATA_SEND` `CLOSE` event.
|
|
219
|
+
*
|
|
220
|
+
* There are three ways an ongoing recording stream can be closed:
|
|
221
|
+
* - Closed by the Accessory: There are no further fragments to transmit. The delegate MUST signal this by setting {@link RecordingPacket.isLast}
|
|
222
|
+
* to `true`. Once the HomeKit Controller receives this last fragment it will call {@link acknowledgeStream} to notify the accessory about
|
|
223
|
+
* the successful transmission.
|
|
224
|
+
* - Closed by the HomeKit Controller (expectedly): After the event trigger has been reset, the accessory continues to stream fragments.
|
|
225
|
+
* At some point the HomeKit Controller will decide to shut down the stream by calling {@link closeRecordingStream} with a reason
|
|
226
|
+
* of {@link HDSProtocolSpecificErrorReason.NORMAL}.
|
|
227
|
+
* - Closed by the HomeKit Controller (unexpectedly): A HomeKit Controller might at any point decide to close a recording stream
|
|
228
|
+
* if it encounters erroneous state. This is signaled by a call to {@link closeRecordingStream} with the respective reason.
|
|
229
|
+
*
|
|
230
|
+
* Once a close of stream is signaled, the `AsyncGenerator` function must return gracefully.
|
|
231
|
+
*
|
|
232
|
+
* For more information about `AsyncGenerator`s you might have a look at:
|
|
233
|
+
* * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of
|
|
234
|
+
*
|
|
235
|
+
* NOTE: HAP-NodeJS guarantees that this method is only called with a valid selected {@link CameraRecordingConfiguration}.
|
|
236
|
+
*
|
|
237
|
+
* NOTE: Don't rely on the streamId for unique identification. Two {@link DataStreamConnection}s might share the same identifier space.
|
|
238
|
+
*
|
|
239
|
+
* @param streamId - The streamId of the currently ongoing stream.
|
|
240
|
+
*/
|
|
241
|
+
handleRecordingStreamRequest(streamId: number): AsyncGenerator<RecordingPacket>;
|
|
242
|
+
/**
|
|
243
|
+
* This method is called once the HomeKit Controller acknowledges the `endOfStream`.
|
|
244
|
+
* A `endOfStream` is sent by the accessory by setting {@link RecordingPacket.isLast} to `true` in the last packet yielded
|
|
245
|
+
* by the {@link handleRecordingStreamRequest} `AsyncGenerator`.
|
|
246
|
+
*
|
|
247
|
+
* @param streamId - The streamId of the acknowledged stream.
|
|
248
|
+
*/
|
|
249
|
+
acknowledgeStream?(streamId: number): void;
|
|
250
|
+
/**
|
|
251
|
+
* This method is called to notify the delegate that a recording stream started via {@link handleRecordingStreamRequest} was closed.
|
|
252
|
+
*
|
|
253
|
+
* The method is also called if an ongoing recording stream is closed gracefully (using {@link HDSProtocolSpecificErrorReason.NORMAL}).
|
|
254
|
+
* In either case, the delegate should stop supplying further fragments to the recording stream.
|
|
255
|
+
* The `AsyncGenerator` function must return without yielding any further {@link RecordingPacket}s.
|
|
256
|
+
* HAP-NodeJS won't send out any fragments from this point onwards.
|
|
257
|
+
*
|
|
258
|
+
* @param streamId - The streamId for which the close event was sent.
|
|
259
|
+
* @param reason - The reason with which the stream was closed.
|
|
260
|
+
* NOTE: This method is also called in case of a closed connection. This is encoded by setting the `reason` to undefined.
|
|
261
|
+
*/
|
|
262
|
+
closeRecordingStream(streamId: number, reason: HDSProtocolSpecificErrorReason | undefined): void;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* @group Camera
|
|
46
266
|
*/
|
|
47
267
|
export interface CameraControllerServiceMap extends ControllerServiceMap {
|
|
48
268
|
microphone?: Microphone;
|
|
49
269
|
speaker?: Speaker;
|
|
270
|
+
cameraEventRecordingManagement?: CameraRecordingManagement;
|
|
271
|
+
cameraOperatingMode?: CameraOperatingMode;
|
|
272
|
+
dataStreamTransportManagement?: DataStreamTransportManagement;
|
|
273
|
+
motionService?: MotionSensor;
|
|
274
|
+
occupancyService?: OccupancySensor;
|
|
50
275
|
doorbell?: Doorbell;
|
|
51
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* @group Camera
|
|
279
|
+
*/
|
|
280
|
+
export interface CameraControllerState {
|
|
281
|
+
streamManagements: RTPStreamManagementState[];
|
|
282
|
+
recordingManagement?: RecordingManagementState;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* @group Camera
|
|
286
|
+
*/
|
|
52
287
|
export declare const enum CameraControllerEvents {
|
|
53
288
|
/**
|
|
54
289
|
* Emitted when the mute state or the volume changed. The Apple Home App typically does not set those values
|
|
@@ -62,6 +297,9 @@ export declare const enum CameraControllerEvents {
|
|
|
62
297
|
*/
|
|
63
298
|
SPEAKER_PROPERTIES_CHANGED = "speaker-change"
|
|
64
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* @group Camera
|
|
302
|
+
*/
|
|
65
303
|
export declare interface CameraController {
|
|
66
304
|
on(event: "microphone-change", listener: (muted: boolean, volume: number) => void): this;
|
|
67
305
|
on(event: "speaker-change", listener: (muted: boolean, volume: number) => void): this;
|
|
@@ -70,23 +308,45 @@ export declare interface CameraController {
|
|
|
70
308
|
}
|
|
71
309
|
/**
|
|
72
310
|
* Everything needed to expose a HomeKit Camera.
|
|
311
|
+
*
|
|
312
|
+
* @group Camera
|
|
73
313
|
*/
|
|
74
|
-
export declare class CameraController extends EventEmitter implements
|
|
314
|
+
export declare class CameraController extends EventEmitter implements SerializableController<CameraControllerServiceMap, CameraControllerState> {
|
|
75
315
|
private static readonly STREAM_MANAGEMENT;
|
|
316
|
+
private stateChangeDelegate?;
|
|
76
317
|
private readonly streamCount;
|
|
77
318
|
private readonly delegate;
|
|
78
319
|
private readonly streamingOptions;
|
|
320
|
+
/**
|
|
321
|
+
* **Temporary** storage for {@link CameraRecordingOptions} and {@link CameraRecordingDelegate}.
|
|
322
|
+
* This property is reset to `undefined` after the CameraController was fully initialized.
|
|
323
|
+
* You can still access those values via the {@link CameraController.recordingManagement}.
|
|
324
|
+
*/
|
|
325
|
+
private recording?;
|
|
326
|
+
/**
|
|
327
|
+
* Temporary storage for the sensor option.
|
|
328
|
+
*/
|
|
329
|
+
private sensorOptions?;
|
|
79
330
|
private readonly legacyMode;
|
|
80
331
|
/**
|
|
81
332
|
* @private
|
|
82
333
|
*/
|
|
83
334
|
streamManagements: RTPStreamManagement[];
|
|
335
|
+
/**
|
|
336
|
+
* The {@link RecordingManagement} which is responsible for handling HomeKit Secure Video.
|
|
337
|
+
* This property is only present if recording was configured.
|
|
338
|
+
*/
|
|
339
|
+
recordingManagement?: RecordingManagement;
|
|
84
340
|
private microphoneService?;
|
|
85
341
|
private speakerService?;
|
|
86
342
|
private microphoneMuted;
|
|
87
343
|
private microphoneVolume;
|
|
88
344
|
private speakerMuted;
|
|
89
345
|
private speakerVolume;
|
|
346
|
+
motionService?: MotionSensor;
|
|
347
|
+
private motionServiceExternallySupplied;
|
|
348
|
+
occupancyService?: OccupancySensor;
|
|
349
|
+
private occupancyServiceExternallySupplied;
|
|
90
350
|
constructor(options: CameraControllerOptions, legacyMode?: boolean);
|
|
91
351
|
/**
|
|
92
352
|
* @private
|
|
@@ -94,9 +354,9 @@ export declare class CameraController extends EventEmitter implements Controller
|
|
|
94
354
|
controllerId(): ControllerIdentifier;
|
|
95
355
|
/**
|
|
96
356
|
* Call this method if you want to forcefully suspend an ongoing streaming session.
|
|
97
|
-
* This would be adequate if the
|
|
357
|
+
* This would be adequate if the rtp server or media encoding encountered an unexpected error.
|
|
98
358
|
*
|
|
99
|
-
* @param sessionId
|
|
359
|
+
* @param sessionId - id of the current ongoing streaming session
|
|
100
360
|
*/
|
|
101
361
|
forceStopStreamingSession(sessionId: SessionIdentifier): void;
|
|
102
362
|
static generateSynchronisationSource(): number;
|
|
@@ -114,11 +374,17 @@ export declare class CameraController extends EventEmitter implements Controller
|
|
|
114
374
|
* @private
|
|
115
375
|
*/
|
|
116
376
|
initWithServices(serviceMap: CameraControllerServiceMap): void | CameraControllerServiceMap;
|
|
377
|
+
protected _initWithServices(serviceMap: CameraControllerServiceMap): {
|
|
378
|
+
serviceMap: CameraControllerServiceMap;
|
|
379
|
+
updated: boolean;
|
|
380
|
+
};
|
|
117
381
|
protected migrateFromDoorbell(serviceMap: ControllerServiceMap): boolean;
|
|
382
|
+
protected retrieveEventTriggerOptions(): Set<EventTriggerOption>;
|
|
118
383
|
/**
|
|
119
384
|
* @private
|
|
120
385
|
*/
|
|
121
386
|
configureServices(): void;
|
|
387
|
+
private rtpStreamManagementDisabledThroughOperatingMode;
|
|
122
388
|
/**
|
|
123
389
|
* @private
|
|
124
390
|
*/
|
|
@@ -130,7 +396,19 @@ export declare class CameraController extends EventEmitter implements Controller
|
|
|
130
396
|
/**
|
|
131
397
|
* @private
|
|
132
398
|
*/
|
|
133
|
-
|
|
399
|
+
serialize(): CameraControllerState | undefined;
|
|
400
|
+
/**
|
|
401
|
+
* @private
|
|
402
|
+
*/
|
|
403
|
+
deserialize(serialized: CameraControllerState): void;
|
|
404
|
+
/**
|
|
405
|
+
* @private
|
|
406
|
+
*/
|
|
407
|
+
setupStateChangeDelegate(delegate?: StateChangeDelegate): void;
|
|
408
|
+
/**
|
|
409
|
+
* @private
|
|
410
|
+
*/
|
|
411
|
+
handleSnapshotRequest(height: number, width: number, accessoryName?: string, reason?: ResourceRequestReason): Promise<Buffer>;
|
|
134
412
|
/**
|
|
135
413
|
* @private
|
|
136
414
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../../src/lib/controller/CameraController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../../src/lib/controller/CameraController.ts"],"names":[],"mappings":"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"}
|