@camstack/addon-provider-homematic 1.2.52 → 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 +115 -6
- package/dist/addon.mjs +115 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -19266,6 +19266,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19266
19266
|
deviceId: number(),
|
|
19267
19267
|
events: array(KeyEventSchema).readonly()
|
|
19268
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
|
+
});
|
|
19269
19297
|
object({
|
|
19270
19298
|
trackId: string(),
|
|
19271
19299
|
className: string(),
|
|
@@ -19576,12 +19604,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19576
19604
|
since: number(),
|
|
19577
19605
|
until: number(),
|
|
19578
19606
|
bucketMs: number().int().positive()
|
|
19579
|
-
}), array(object({
|
|
19580
|
-
|
|
19581
|
-
|
|
19582
|
-
|
|
19583
|
-
|
|
19584
|
-
})).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({
|
|
19585
19613
|
deviceId: number(),
|
|
19586
19614
|
cutoffMs: number()
|
|
19587
19615
|
}), object({
|
|
@@ -28606,6 +28634,39 @@ var RecordingDaysSchema = object({
|
|
|
28606
28634
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28607
28635
|
days: array(number())
|
|
28608
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
|
+
});
|
|
28609
28670
|
var RecordingManifestSchema = object({
|
|
28610
28671
|
deviceId: number(),
|
|
28611
28672
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28840,6 +28901,13 @@ method(object({
|
|
|
28840
28901
|
}), RecordingAvailabilitySchema, {
|
|
28841
28902
|
kind: "query",
|
|
28842
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"
|
|
28843
28911
|
}), method(object({
|
|
28844
28912
|
deviceId: number(),
|
|
28845
28913
|
fromMs: number(),
|
|
@@ -28848,6 +28916,14 @@ method(object({
|
|
|
28848
28916
|
}), RecordingDaysSchema, {
|
|
28849
28917
|
kind: "query",
|
|
28850
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"
|
|
28851
28927
|
}), method(object({
|
|
28852
28928
|
deviceId: number(),
|
|
28853
28929
|
fromMs: number(),
|
|
@@ -35744,6 +35820,12 @@ Object.freeze({
|
|
|
35744
35820
|
addonId: null,
|
|
35745
35821
|
access: "view"
|
|
35746
35822
|
},
|
|
35823
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35824
|
+
capName: "pipeline-analytics",
|
|
35825
|
+
capScope: "device",
|
|
35826
|
+
addonId: null,
|
|
35827
|
+
access: "view"
|
|
35828
|
+
},
|
|
35747
35829
|
"pipelineAnalytics.getEventMedia": {
|
|
35748
35830
|
capName: "pipeline-analytics",
|
|
35749
35831
|
capScope: "device",
|
|
@@ -36866,12 +36948,24 @@ Object.freeze({
|
|
|
36866
36948
|
addonId: null,
|
|
36867
36949
|
access: "view"
|
|
36868
36950
|
},
|
|
36951
|
+
"recording.getAvailabilityBatch": {
|
|
36952
|
+
capName: "recording",
|
|
36953
|
+
capScope: "system",
|
|
36954
|
+
addonId: null,
|
|
36955
|
+
access: "view"
|
|
36956
|
+
},
|
|
36869
36957
|
"recording.getDaysWithRecordings": {
|
|
36870
36958
|
capName: "recording",
|
|
36871
36959
|
capScope: "system",
|
|
36872
36960
|
addonId: null,
|
|
36873
36961
|
access: "view"
|
|
36874
36962
|
},
|
|
36963
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36964
|
+
capName: "recording",
|
|
36965
|
+
capScope: "system",
|
|
36966
|
+
addonId: null,
|
|
36967
|
+
access: "view"
|
|
36968
|
+
},
|
|
36875
36969
|
"recording.getDeviceConfig": {
|
|
36876
36970
|
capName: "recording",
|
|
36877
36971
|
capScope: "system",
|
|
@@ -39476,6 +39570,11 @@ Object.freeze({
|
|
|
39476
39570
|
form: "single",
|
|
39477
39571
|
optional: false
|
|
39478
39572
|
}],
|
|
39573
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39574
|
+
name: "deviceIds",
|
|
39575
|
+
form: "array",
|
|
39576
|
+
optional: false
|
|
39577
|
+
}],
|
|
39479
39578
|
"pipelineAnalytics.getEventMedia": [{
|
|
39480
39579
|
name: "deviceId",
|
|
39481
39580
|
form: "single",
|
|
@@ -39891,11 +39990,21 @@ Object.freeze({
|
|
|
39891
39990
|
form: "single",
|
|
39892
39991
|
optional: false
|
|
39893
39992
|
}],
|
|
39993
|
+
"recording.getAvailabilityBatch": [{
|
|
39994
|
+
name: "deviceIds",
|
|
39995
|
+
form: "array",
|
|
39996
|
+
optional: false
|
|
39997
|
+
}],
|
|
39894
39998
|
"recording.getDaysWithRecordings": [{
|
|
39895
39999
|
name: "deviceId",
|
|
39896
40000
|
form: "single",
|
|
39897
40001
|
optional: false
|
|
39898
40002
|
}],
|
|
40003
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40004
|
+
name: "deviceIds",
|
|
40005
|
+
form: "array",
|
|
40006
|
+
optional: false
|
|
40007
|
+
}],
|
|
39899
40008
|
"recording.getDeviceConfig": [{
|
|
39900
40009
|
name: "deviceId",
|
|
39901
40010
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19267,6 +19267,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19267
19267
|
deviceId: number(),
|
|
19268
19268
|
events: array(KeyEventSchema).readonly()
|
|
19269
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
|
+
});
|
|
19270
19298
|
object({
|
|
19271
19299
|
trackId: string(),
|
|
19272
19300
|
className: string(),
|
|
@@ -19577,12 +19605,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19577
19605
|
since: number(),
|
|
19578
19606
|
until: number(),
|
|
19579
19607
|
bucketMs: number().int().positive()
|
|
19580
|
-
}), array(object({
|
|
19581
|
-
|
|
19582
|
-
|
|
19583
|
-
|
|
19584
|
-
|
|
19585
|
-
})).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({
|
|
19586
19614
|
deviceId: number(),
|
|
19587
19615
|
cutoffMs: number()
|
|
19588
19616
|
}), object({
|
|
@@ -28607,6 +28635,39 @@ var RecordingDaysSchema = object({
|
|
|
28607
28635
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28608
28636
|
days: array(number())
|
|
28609
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
|
+
});
|
|
28610
28671
|
var RecordingManifestSchema = object({
|
|
28611
28672
|
deviceId: number(),
|
|
28612
28673
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28841,6 +28902,13 @@ method(object({
|
|
|
28841
28902
|
}), RecordingAvailabilitySchema, {
|
|
28842
28903
|
kind: "query",
|
|
28843
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"
|
|
28844
28912
|
}), method(object({
|
|
28845
28913
|
deviceId: number(),
|
|
28846
28914
|
fromMs: number(),
|
|
@@ -28849,6 +28917,14 @@ method(object({
|
|
|
28849
28917
|
}), RecordingDaysSchema, {
|
|
28850
28918
|
kind: "query",
|
|
28851
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"
|
|
28852
28928
|
}), method(object({
|
|
28853
28929
|
deviceId: number(),
|
|
28854
28930
|
fromMs: number(),
|
|
@@ -35745,6 +35821,12 @@ Object.freeze({
|
|
|
35745
35821
|
addonId: null,
|
|
35746
35822
|
access: "view"
|
|
35747
35823
|
},
|
|
35824
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35825
|
+
capName: "pipeline-analytics",
|
|
35826
|
+
capScope: "device",
|
|
35827
|
+
addonId: null,
|
|
35828
|
+
access: "view"
|
|
35829
|
+
},
|
|
35748
35830
|
"pipelineAnalytics.getEventMedia": {
|
|
35749
35831
|
capName: "pipeline-analytics",
|
|
35750
35832
|
capScope: "device",
|
|
@@ -36867,12 +36949,24 @@ Object.freeze({
|
|
|
36867
36949
|
addonId: null,
|
|
36868
36950
|
access: "view"
|
|
36869
36951
|
},
|
|
36952
|
+
"recording.getAvailabilityBatch": {
|
|
36953
|
+
capName: "recording",
|
|
36954
|
+
capScope: "system",
|
|
36955
|
+
addonId: null,
|
|
36956
|
+
access: "view"
|
|
36957
|
+
},
|
|
36870
36958
|
"recording.getDaysWithRecordings": {
|
|
36871
36959
|
capName: "recording",
|
|
36872
36960
|
capScope: "system",
|
|
36873
36961
|
addonId: null,
|
|
36874
36962
|
access: "view"
|
|
36875
36963
|
},
|
|
36964
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36965
|
+
capName: "recording",
|
|
36966
|
+
capScope: "system",
|
|
36967
|
+
addonId: null,
|
|
36968
|
+
access: "view"
|
|
36969
|
+
},
|
|
36876
36970
|
"recording.getDeviceConfig": {
|
|
36877
36971
|
capName: "recording",
|
|
36878
36972
|
capScope: "system",
|
|
@@ -39477,6 +39571,11 @@ Object.freeze({
|
|
|
39477
39571
|
form: "single",
|
|
39478
39572
|
optional: false
|
|
39479
39573
|
}],
|
|
39574
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39575
|
+
name: "deviceIds",
|
|
39576
|
+
form: "array",
|
|
39577
|
+
optional: false
|
|
39578
|
+
}],
|
|
39480
39579
|
"pipelineAnalytics.getEventMedia": [{
|
|
39481
39580
|
name: "deviceId",
|
|
39482
39581
|
form: "single",
|
|
@@ -39892,11 +39991,21 @@ Object.freeze({
|
|
|
39892
39991
|
form: "single",
|
|
39893
39992
|
optional: false
|
|
39894
39993
|
}],
|
|
39994
|
+
"recording.getAvailabilityBatch": [{
|
|
39995
|
+
name: "deviceIds",
|
|
39996
|
+
form: "array",
|
|
39997
|
+
optional: false
|
|
39998
|
+
}],
|
|
39895
39999
|
"recording.getDaysWithRecordings": [{
|
|
39896
40000
|
name: "deviceId",
|
|
39897
40001
|
form: "single",
|
|
39898
40002
|
optional: false
|
|
39899
40003
|
}],
|
|
40004
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40005
|
+
name: "deviceIds",
|
|
40006
|
+
form: "array",
|
|
40007
|
+
optional: false
|
|
40008
|
+
}],
|
|
39900
40009
|
"recording.getDeviceConfig": [{
|
|
39901
40010
|
name: "deviceId",
|
|
39902
40011
|
form: "single",
|
package/package.json
CHANGED