@camstack/addon-provider-homematic 1.2.51 → 1.2.53
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/dist/addon.js +117 -6
- package/dist/addon.mjs +117 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -15950,6 +15950,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15950
15950
|
"device-offline",
|
|
15951
15951
|
"device-disabled",
|
|
15952
15952
|
"device-enabled",
|
|
15953
|
+
"device-battery-low",
|
|
15954
|
+
"device-battery-normal",
|
|
15953
15955
|
"stream-online",
|
|
15954
15956
|
"stream-offline",
|
|
15955
15957
|
"node-online",
|
|
@@ -19264,6 +19266,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19264
19266
|
deviceId: number(),
|
|
19265
19267
|
events: array(KeyEventSchema).readonly()
|
|
19266
19268
|
});
|
|
19269
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19270
|
+
var EventDensityBucketSchema = object({
|
|
19271
|
+
bucketStart: number(),
|
|
19272
|
+
motion: number().int(),
|
|
19273
|
+
object: number().int(),
|
|
19274
|
+
audio: number().int()
|
|
19275
|
+
});
|
|
19276
|
+
/**
|
|
19277
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19278
|
+
*
|
|
19279
|
+
* TWO facts, and the timeline draws them differently:
|
|
19280
|
+
*
|
|
19281
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19282
|
+
* claim: read, and nothing happened in the window.
|
|
19283
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19284
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19285
|
+
* not quiet.
|
|
19286
|
+
*
|
|
19287
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19288
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19289
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19290
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19291
|
+
*/
|
|
19292
|
+
var EventDensityForDeviceSchema = object({
|
|
19293
|
+
deviceId: number(),
|
|
19294
|
+
read: _enum(["read", "unreadable"]),
|
|
19295
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19296
|
+
});
|
|
19267
19297
|
object({
|
|
19268
19298
|
trackId: string(),
|
|
19269
19299
|
className: string(),
|
|
@@ -19574,12 +19604,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19574
19604
|
since: number(),
|
|
19575
19605
|
until: number(),
|
|
19576
19606
|
bucketMs: number().int().positive()
|
|
19577
|
-
}), array(object({
|
|
19578
|
-
|
|
19579
|
-
|
|
19580
|
-
|
|
19581
|
-
|
|
19582
|
-
})).readonly()), method(object({
|
|
19607
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19608
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19609
|
+
since: number(),
|
|
19610
|
+
until: number(),
|
|
19611
|
+
bucketMs: number().int().positive()
|
|
19612
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19583
19613
|
deviceId: number(),
|
|
19584
19614
|
cutoffMs: number()
|
|
19585
19615
|
}), object({
|
|
@@ -28604,6 +28634,39 @@ var RecordingDaysSchema = object({
|
|
|
28604
28634
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28605
28635
|
days: array(number())
|
|
28606
28636
|
});
|
|
28637
|
+
/**
|
|
28638
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28639
|
+
*
|
|
28640
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28641
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28642
|
+
* method never had to say:
|
|
28643
|
+
*
|
|
28644
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28645
|
+
* no footage in the window", which is a real claim.
|
|
28646
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28647
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28648
|
+
* that emptiness means NOTHING.
|
|
28649
|
+
*
|
|
28650
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28651
|
+
* footage when the truth is that nobody looked.
|
|
28652
|
+
*/
|
|
28653
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28654
|
+
deviceId: number(),
|
|
28655
|
+
read: _enum(["read", "unreadable"]),
|
|
28656
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28657
|
+
});
|
|
28658
|
+
/**
|
|
28659
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28660
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28661
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28662
|
+
* the date-picker's day dots must not spell them the same.
|
|
28663
|
+
*/
|
|
28664
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28665
|
+
deviceId: number(),
|
|
28666
|
+
read: _enum(["read", "unreadable"]),
|
|
28667
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28668
|
+
days: array(number()).readonly()
|
|
28669
|
+
});
|
|
28607
28670
|
var RecordingManifestSchema = object({
|
|
28608
28671
|
deviceId: number(),
|
|
28609
28672
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28838,6 +28901,13 @@ method(object({
|
|
|
28838
28901
|
}), RecordingAvailabilitySchema, {
|
|
28839
28902
|
kind: "query",
|
|
28840
28903
|
auth: "protected"
|
|
28904
|
+
}), method(object({
|
|
28905
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28906
|
+
fromMs: number(),
|
|
28907
|
+
toMs: number()
|
|
28908
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28909
|
+
kind: "query",
|
|
28910
|
+
auth: "protected"
|
|
28841
28911
|
}), method(object({
|
|
28842
28912
|
deviceId: number(),
|
|
28843
28913
|
fromMs: number(),
|
|
@@ -28846,6 +28916,14 @@ method(object({
|
|
|
28846
28916
|
}), RecordingDaysSchema, {
|
|
28847
28917
|
kind: "query",
|
|
28848
28918
|
auth: "protected"
|
|
28919
|
+
}), method(object({
|
|
28920
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28921
|
+
fromMs: number(),
|
|
28922
|
+
toMs: number(),
|
|
28923
|
+
tzOffsetMinutes: number()
|
|
28924
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28925
|
+
kind: "query",
|
|
28926
|
+
auth: "protected"
|
|
28849
28927
|
}), method(object({
|
|
28850
28928
|
deviceId: number(),
|
|
28851
28929
|
fromMs: number(),
|
|
@@ -35742,6 +35820,12 @@ Object.freeze({
|
|
|
35742
35820
|
addonId: null,
|
|
35743
35821
|
access: "view"
|
|
35744
35822
|
},
|
|
35823
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35824
|
+
capName: "pipeline-analytics",
|
|
35825
|
+
capScope: "device",
|
|
35826
|
+
addonId: null,
|
|
35827
|
+
access: "view"
|
|
35828
|
+
},
|
|
35745
35829
|
"pipelineAnalytics.getEventMedia": {
|
|
35746
35830
|
capName: "pipeline-analytics",
|
|
35747
35831
|
capScope: "device",
|
|
@@ -36864,12 +36948,24 @@ Object.freeze({
|
|
|
36864
36948
|
addonId: null,
|
|
36865
36949
|
access: "view"
|
|
36866
36950
|
},
|
|
36951
|
+
"recording.getAvailabilityBatch": {
|
|
36952
|
+
capName: "recording",
|
|
36953
|
+
capScope: "system",
|
|
36954
|
+
addonId: null,
|
|
36955
|
+
access: "view"
|
|
36956
|
+
},
|
|
36867
36957
|
"recording.getDaysWithRecordings": {
|
|
36868
36958
|
capName: "recording",
|
|
36869
36959
|
capScope: "system",
|
|
36870
36960
|
addonId: null,
|
|
36871
36961
|
access: "view"
|
|
36872
36962
|
},
|
|
36963
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36964
|
+
capName: "recording",
|
|
36965
|
+
capScope: "system",
|
|
36966
|
+
addonId: null,
|
|
36967
|
+
access: "view"
|
|
36968
|
+
},
|
|
36873
36969
|
"recording.getDeviceConfig": {
|
|
36874
36970
|
capName: "recording",
|
|
36875
36971
|
capScope: "system",
|
|
@@ -39474,6 +39570,11 @@ Object.freeze({
|
|
|
39474
39570
|
form: "single",
|
|
39475
39571
|
optional: false
|
|
39476
39572
|
}],
|
|
39573
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39574
|
+
name: "deviceIds",
|
|
39575
|
+
form: "array",
|
|
39576
|
+
optional: false
|
|
39577
|
+
}],
|
|
39477
39578
|
"pipelineAnalytics.getEventMedia": [{
|
|
39478
39579
|
name: "deviceId",
|
|
39479
39580
|
form: "single",
|
|
@@ -39889,11 +39990,21 @@ Object.freeze({
|
|
|
39889
39990
|
form: "single",
|
|
39890
39991
|
optional: false
|
|
39891
39992
|
}],
|
|
39993
|
+
"recording.getAvailabilityBatch": [{
|
|
39994
|
+
name: "deviceIds",
|
|
39995
|
+
form: "array",
|
|
39996
|
+
optional: false
|
|
39997
|
+
}],
|
|
39892
39998
|
"recording.getDaysWithRecordings": [{
|
|
39893
39999
|
name: "deviceId",
|
|
39894
40000
|
form: "single",
|
|
39895
40001
|
optional: false
|
|
39896
40002
|
}],
|
|
40003
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40004
|
+
name: "deviceIds",
|
|
40005
|
+
form: "array",
|
|
40006
|
+
optional: false
|
|
40007
|
+
}],
|
|
39897
40008
|
"recording.getDeviceConfig": [{
|
|
39898
40009
|
name: "deviceId",
|
|
39899
40010
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -15951,6 +15951,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15951
15951
|
"device-offline",
|
|
15952
15952
|
"device-disabled",
|
|
15953
15953
|
"device-enabled",
|
|
15954
|
+
"device-battery-low",
|
|
15955
|
+
"device-battery-normal",
|
|
15954
15956
|
"stream-online",
|
|
15955
15957
|
"stream-offline",
|
|
15956
15958
|
"node-online",
|
|
@@ -19265,6 +19267,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19265
19267
|
deviceId: number(),
|
|
19266
19268
|
events: array(KeyEventSchema).readonly()
|
|
19267
19269
|
});
|
|
19270
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19271
|
+
var EventDensityBucketSchema = object({
|
|
19272
|
+
bucketStart: number(),
|
|
19273
|
+
motion: number().int(),
|
|
19274
|
+
object: number().int(),
|
|
19275
|
+
audio: number().int()
|
|
19276
|
+
});
|
|
19277
|
+
/**
|
|
19278
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19279
|
+
*
|
|
19280
|
+
* TWO facts, and the timeline draws them differently:
|
|
19281
|
+
*
|
|
19282
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19283
|
+
* claim: read, and nothing happened in the window.
|
|
19284
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19285
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19286
|
+
* not quiet.
|
|
19287
|
+
*
|
|
19288
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19289
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19290
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19291
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19292
|
+
*/
|
|
19293
|
+
var EventDensityForDeviceSchema = object({
|
|
19294
|
+
deviceId: number(),
|
|
19295
|
+
read: _enum(["read", "unreadable"]),
|
|
19296
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19297
|
+
});
|
|
19268
19298
|
object({
|
|
19269
19299
|
trackId: string(),
|
|
19270
19300
|
className: string(),
|
|
@@ -19575,12 +19605,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19575
19605
|
since: number(),
|
|
19576
19606
|
until: number(),
|
|
19577
19607
|
bucketMs: number().int().positive()
|
|
19578
|
-
}), array(object({
|
|
19579
|
-
|
|
19580
|
-
|
|
19581
|
-
|
|
19582
|
-
|
|
19583
|
-
})).readonly()), method(object({
|
|
19608
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19609
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19610
|
+
since: number(),
|
|
19611
|
+
until: number(),
|
|
19612
|
+
bucketMs: number().int().positive()
|
|
19613
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19584
19614
|
deviceId: number(),
|
|
19585
19615
|
cutoffMs: number()
|
|
19586
19616
|
}), object({
|
|
@@ -28605,6 +28635,39 @@ var RecordingDaysSchema = object({
|
|
|
28605
28635
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28606
28636
|
days: array(number())
|
|
28607
28637
|
});
|
|
28638
|
+
/**
|
|
28639
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28640
|
+
*
|
|
28641
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28642
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28643
|
+
* method never had to say:
|
|
28644
|
+
*
|
|
28645
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28646
|
+
* no footage in the window", which is a real claim.
|
|
28647
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28648
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28649
|
+
* that emptiness means NOTHING.
|
|
28650
|
+
*
|
|
28651
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28652
|
+
* footage when the truth is that nobody looked.
|
|
28653
|
+
*/
|
|
28654
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28655
|
+
deviceId: number(),
|
|
28656
|
+
read: _enum(["read", "unreadable"]),
|
|
28657
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28658
|
+
});
|
|
28659
|
+
/**
|
|
28660
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28661
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28662
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28663
|
+
* the date-picker's day dots must not spell them the same.
|
|
28664
|
+
*/
|
|
28665
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28666
|
+
deviceId: number(),
|
|
28667
|
+
read: _enum(["read", "unreadable"]),
|
|
28668
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28669
|
+
days: array(number()).readonly()
|
|
28670
|
+
});
|
|
28608
28671
|
var RecordingManifestSchema = object({
|
|
28609
28672
|
deviceId: number(),
|
|
28610
28673
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28839,6 +28902,13 @@ method(object({
|
|
|
28839
28902
|
}), RecordingAvailabilitySchema, {
|
|
28840
28903
|
kind: "query",
|
|
28841
28904
|
auth: "protected"
|
|
28905
|
+
}), method(object({
|
|
28906
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28907
|
+
fromMs: number(),
|
|
28908
|
+
toMs: number()
|
|
28909
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28910
|
+
kind: "query",
|
|
28911
|
+
auth: "protected"
|
|
28842
28912
|
}), method(object({
|
|
28843
28913
|
deviceId: number(),
|
|
28844
28914
|
fromMs: number(),
|
|
@@ -28847,6 +28917,14 @@ method(object({
|
|
|
28847
28917
|
}), RecordingDaysSchema, {
|
|
28848
28918
|
kind: "query",
|
|
28849
28919
|
auth: "protected"
|
|
28920
|
+
}), method(object({
|
|
28921
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28922
|
+
fromMs: number(),
|
|
28923
|
+
toMs: number(),
|
|
28924
|
+
tzOffsetMinutes: number()
|
|
28925
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28926
|
+
kind: "query",
|
|
28927
|
+
auth: "protected"
|
|
28850
28928
|
}), method(object({
|
|
28851
28929
|
deviceId: number(),
|
|
28852
28930
|
fromMs: number(),
|
|
@@ -35743,6 +35821,12 @@ Object.freeze({
|
|
|
35743
35821
|
addonId: null,
|
|
35744
35822
|
access: "view"
|
|
35745
35823
|
},
|
|
35824
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35825
|
+
capName: "pipeline-analytics",
|
|
35826
|
+
capScope: "device",
|
|
35827
|
+
addonId: null,
|
|
35828
|
+
access: "view"
|
|
35829
|
+
},
|
|
35746
35830
|
"pipelineAnalytics.getEventMedia": {
|
|
35747
35831
|
capName: "pipeline-analytics",
|
|
35748
35832
|
capScope: "device",
|
|
@@ -36865,12 +36949,24 @@ Object.freeze({
|
|
|
36865
36949
|
addonId: null,
|
|
36866
36950
|
access: "view"
|
|
36867
36951
|
},
|
|
36952
|
+
"recording.getAvailabilityBatch": {
|
|
36953
|
+
capName: "recording",
|
|
36954
|
+
capScope: "system",
|
|
36955
|
+
addonId: null,
|
|
36956
|
+
access: "view"
|
|
36957
|
+
},
|
|
36868
36958
|
"recording.getDaysWithRecordings": {
|
|
36869
36959
|
capName: "recording",
|
|
36870
36960
|
capScope: "system",
|
|
36871
36961
|
addonId: null,
|
|
36872
36962
|
access: "view"
|
|
36873
36963
|
},
|
|
36964
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36965
|
+
capName: "recording",
|
|
36966
|
+
capScope: "system",
|
|
36967
|
+
addonId: null,
|
|
36968
|
+
access: "view"
|
|
36969
|
+
},
|
|
36874
36970
|
"recording.getDeviceConfig": {
|
|
36875
36971
|
capName: "recording",
|
|
36876
36972
|
capScope: "system",
|
|
@@ -39475,6 +39571,11 @@ Object.freeze({
|
|
|
39475
39571
|
form: "single",
|
|
39476
39572
|
optional: false
|
|
39477
39573
|
}],
|
|
39574
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39575
|
+
name: "deviceIds",
|
|
39576
|
+
form: "array",
|
|
39577
|
+
optional: false
|
|
39578
|
+
}],
|
|
39478
39579
|
"pipelineAnalytics.getEventMedia": [{
|
|
39479
39580
|
name: "deviceId",
|
|
39480
39581
|
form: "single",
|
|
@@ -39890,11 +39991,21 @@ Object.freeze({
|
|
|
39890
39991
|
form: "single",
|
|
39891
39992
|
optional: false
|
|
39892
39993
|
}],
|
|
39994
|
+
"recording.getAvailabilityBatch": [{
|
|
39995
|
+
name: "deviceIds",
|
|
39996
|
+
form: "array",
|
|
39997
|
+
optional: false
|
|
39998
|
+
}],
|
|
39893
39999
|
"recording.getDaysWithRecordings": [{
|
|
39894
40000
|
name: "deviceId",
|
|
39895
40001
|
form: "single",
|
|
39896
40002
|
optional: false
|
|
39897
40003
|
}],
|
|
40004
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40005
|
+
name: "deviceIds",
|
|
40006
|
+
form: "array",
|
|
40007
|
+
optional: false
|
|
40008
|
+
}],
|
|
39898
40009
|
"recording.getDeviceConfig": [{
|
|
39899
40010
|
name: "deviceId",
|
|
39900
40011
|
form: "single",
|
package/package.json
CHANGED