@camstack/addon-provider-homeassistant 1.2.622 → 1.2.624
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 +4 -4
- package/dist/addon.mjs +4 -4
- package/dist/{dist-C6zA8__P.mjs → dist-BJRmTD1G.mjs} +2575 -128
- package/dist/{dist-33tQA0eu.js → dist-_Yi49Ixo.js} +2575 -128
- package/dist/ha-export/ha-export.addon.js +3 -3
- package/dist/ha-export/ha-export.addon.mjs +3 -3
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-DHXxB8t9.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -294,7 +294,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
294
294
|
* TRANSITION into that state (never per dispatch), and the node is dropped
|
|
295
295
|
* from the placement candidate set for as long as it holds.
|
|
296
296
|
*
|
|
297
|
-
* This exists because the state was previously invisible:
|
|
297
|
+
* This exists because the state was previously invisible: agent-a
|
|
298
298
|
* absorbed 283k inference errors in a day while still being handed cameras,
|
|
299
299
|
* and nothing in the system said so.
|
|
300
300
|
*
|
|
@@ -5566,7 +5566,7 @@ var ZodIssueCode = {
|
|
|
5566
5566
|
var ZodFirstPartyTypeKind;
|
|
5567
5567
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5568
5568
|
//#endregion
|
|
5569
|
-
//#region ../types/dist/sleep-
|
|
5569
|
+
//#region ../types/dist/sleep-BErAxhul.mjs
|
|
5570
5570
|
/**
|
|
5571
5571
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5572
5572
|
* window to float samples (D455).
|
|
@@ -8836,6 +8836,1980 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
8836
8836
|
kind: "mutation",
|
|
8837
8837
|
auth: "admin"
|
|
8838
8838
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
8839
|
+
Object.freeze({ "doorbell": "lastPressedAt" });
|
|
8840
|
+
/** Every capability name, so addon code can check a name without the schema graph. */
|
|
8841
|
+
var CAP_NAMES = Object.freeze([
|
|
8842
|
+
"accessories",
|
|
8843
|
+
"addon-pages",
|
|
8844
|
+
"addon-pages-source",
|
|
8845
|
+
"addon-routes",
|
|
8846
|
+
"addon-settings",
|
|
8847
|
+
"addon-widgets",
|
|
8848
|
+
"addon-widgets-source",
|
|
8849
|
+
"addons",
|
|
8850
|
+
"admin-ui",
|
|
8851
|
+
"air-quality-sensor",
|
|
8852
|
+
"alarm-panel",
|
|
8853
|
+
"alerts",
|
|
8854
|
+
"ambient-light-sensor",
|
|
8855
|
+
"audio-analysis",
|
|
8856
|
+
"audio-analyzer",
|
|
8857
|
+
"audio-codec",
|
|
8858
|
+
"audio-metrics",
|
|
8859
|
+
"auth-provider",
|
|
8860
|
+
"automation-control",
|
|
8861
|
+
"backup",
|
|
8862
|
+
"battery",
|
|
8863
|
+
"binary",
|
|
8864
|
+
"brightness",
|
|
8865
|
+
"broker",
|
|
8866
|
+
"button",
|
|
8867
|
+
"calendar-source",
|
|
8868
|
+
"calendars",
|
|
8869
|
+
"camera-credentials",
|
|
8870
|
+
"camera-grid-layout",
|
|
8871
|
+
"camera-pipeline-config",
|
|
8872
|
+
"camera-streams",
|
|
8873
|
+
"carbon-monoxide",
|
|
8874
|
+
"climate-control",
|
|
8875
|
+
"color",
|
|
8876
|
+
"composer",
|
|
8877
|
+
"connection-test",
|
|
8878
|
+
"connectivity",
|
|
8879
|
+
"consumables",
|
|
8880
|
+
"contact",
|
|
8881
|
+
"control",
|
|
8882
|
+
"core-blocks",
|
|
8883
|
+
"cover",
|
|
8884
|
+
"custom-model-registry",
|
|
8885
|
+
"data-store-provider",
|
|
8886
|
+
"database-snapshot",
|
|
8887
|
+
"day-night",
|
|
8888
|
+
"decoder",
|
|
8889
|
+
"detection-pipeline",
|
|
8890
|
+
"device-admin-link",
|
|
8891
|
+
"device-adoption",
|
|
8892
|
+
"device-credentials",
|
|
8893
|
+
"device-discovery",
|
|
8894
|
+
"device-export",
|
|
8895
|
+
"device-extension",
|
|
8896
|
+
"device-history",
|
|
8897
|
+
"device-manager",
|
|
8898
|
+
"device-ops",
|
|
8899
|
+
"device-provider",
|
|
8900
|
+
"device-removal-hook",
|
|
8901
|
+
"device-state",
|
|
8902
|
+
"device-status",
|
|
8903
|
+
"dishwasher",
|
|
8904
|
+
"display-palette",
|
|
8905
|
+
"doorbell",
|
|
8906
|
+
"embedding-encoder",
|
|
8907
|
+
"enum-sensor",
|
|
8908
|
+
"event-emitter",
|
|
8909
|
+
"face-gallery",
|
|
8910
|
+
"failure-contribution",
|
|
8911
|
+
"fan-control",
|
|
8912
|
+
"feature-probe",
|
|
8913
|
+
"filesystem-browse",
|
|
8914
|
+
"flood",
|
|
8915
|
+
"gas",
|
|
8916
|
+
"heating-valve",
|
|
8917
|
+
"humidifier",
|
|
8918
|
+
"humidity-sensor",
|
|
8919
|
+
"image",
|
|
8920
|
+
"image-settings",
|
|
8921
|
+
"integrations",
|
|
8922
|
+
"intercom",
|
|
8923
|
+
"keychain",
|
|
8924
|
+
"keychain-admin",
|
|
8925
|
+
"lawn-mower-control",
|
|
8926
|
+
"llm",
|
|
8927
|
+
"llm-runtime",
|
|
8928
|
+
"load-contribution",
|
|
8929
|
+
"local-network",
|
|
8930
|
+
"lock-control",
|
|
8931
|
+
"log-channels",
|
|
8932
|
+
"log-destination",
|
|
8933
|
+
"login-method",
|
|
8934
|
+
"media-player",
|
|
8935
|
+
"mesh-network",
|
|
8936
|
+
"metrics-provider",
|
|
8937
|
+
"model-convert",
|
|
8938
|
+
"model-distributor",
|
|
8939
|
+
"motion",
|
|
8940
|
+
"motion-detection",
|
|
8941
|
+
"motion-trigger",
|
|
8942
|
+
"motion-zones",
|
|
8943
|
+
"mqtt-broker",
|
|
8944
|
+
"native-object-detection",
|
|
8945
|
+
"navigation",
|
|
8946
|
+
"network-access",
|
|
8947
|
+
"network-link",
|
|
8948
|
+
"network-quality",
|
|
8949
|
+
"node-certificates",
|
|
8950
|
+
"nodes",
|
|
8951
|
+
"notification-output",
|
|
8952
|
+
"notification-rules",
|
|
8953
|
+
"notifier",
|
|
8954
|
+
"numeric-sensor",
|
|
8955
|
+
"oauth-integration",
|
|
8956
|
+
"oidc-connections",
|
|
8957
|
+
"osd",
|
|
8958
|
+
"osd-manager",
|
|
8959
|
+
"pet-feeder",
|
|
8960
|
+
"pipeline-analytics",
|
|
8961
|
+
"pipeline-executor",
|
|
8962
|
+
"pipeline-orchestrator",
|
|
8963
|
+
"pipeline-runner",
|
|
8964
|
+
"plate-gallery",
|
|
8965
|
+
"platform-probe",
|
|
8966
|
+
"power-meter",
|
|
8967
|
+
"presence",
|
|
8968
|
+
"pressure-sensor",
|
|
8969
|
+
"privacy-mask",
|
|
8970
|
+
"ptz",
|
|
8971
|
+
"ptz-autotrack",
|
|
8972
|
+
"reboot",
|
|
8973
|
+
"record-entries",
|
|
8974
|
+
"recording",
|
|
8975
|
+
"recording-archive",
|
|
8976
|
+
"recording-export",
|
|
8977
|
+
"recording-onboard",
|
|
8978
|
+
"recording-signal",
|
|
8979
|
+
"records",
|
|
8980
|
+
"running-state",
|
|
8981
|
+
"scene-monitor",
|
|
8982
|
+
"script-runner",
|
|
8983
|
+
"server-management",
|
|
8984
|
+
"settings-store",
|
|
8985
|
+
"smoke",
|
|
8986
|
+
"smtp-provider",
|
|
8987
|
+
"snapshot",
|
|
8988
|
+
"sso-bridge",
|
|
8989
|
+
"storage",
|
|
8990
|
+
"storage-admin",
|
|
8991
|
+
"storage-evictable",
|
|
8992
|
+
"storage-migration",
|
|
8993
|
+
"storage-occupancy",
|
|
8994
|
+
"storage-provider",
|
|
8995
|
+
"stream-broker",
|
|
8996
|
+
"stream-catalog",
|
|
8997
|
+
"stream-params",
|
|
8998
|
+
"stream-signals",
|
|
8999
|
+
"switch",
|
|
9000
|
+
"system",
|
|
9001
|
+
"tamper",
|
|
9002
|
+
"temperature-sensor",
|
|
9003
|
+
"terminal-session",
|
|
9004
|
+
"toast",
|
|
9005
|
+
"training",
|
|
9006
|
+
"training-provider",
|
|
9007
|
+
"turn-provider",
|
|
9008
|
+
"update",
|
|
9009
|
+
"user-management",
|
|
9010
|
+
"user-passkeys",
|
|
9011
|
+
"vacuum-control",
|
|
9012
|
+
"valve",
|
|
9013
|
+
"vector-store",
|
|
9014
|
+
"vibration",
|
|
9015
|
+
"videoclips",
|
|
9016
|
+
"viewer-ui",
|
|
9017
|
+
"water-heater",
|
|
9018
|
+
"weather",
|
|
9019
|
+
"webrtc-session",
|
|
9020
|
+
"zone-analytics",
|
|
9021
|
+
"zone-rules",
|
|
9022
|
+
"zones"
|
|
9023
|
+
]);
|
|
9024
|
+
Object.freeze({
|
|
9025
|
+
"air-quality-sensor": [
|
|
9026
|
+
{
|
|
9027
|
+
"path": "co2Ppm",
|
|
9028
|
+
"valueType": "number"
|
|
9029
|
+
},
|
|
9030
|
+
{
|
|
9031
|
+
"path": "vocPpb",
|
|
9032
|
+
"valueType": "number"
|
|
9033
|
+
},
|
|
9034
|
+
{
|
|
9035
|
+
"path": "pm25",
|
|
9036
|
+
"valueType": "number"
|
|
9037
|
+
},
|
|
9038
|
+
{
|
|
9039
|
+
"path": "pm10",
|
|
9040
|
+
"valueType": "number"
|
|
9041
|
+
},
|
|
9042
|
+
{
|
|
9043
|
+
"path": "aqi",
|
|
9044
|
+
"valueType": "number"
|
|
9045
|
+
},
|
|
9046
|
+
{
|
|
9047
|
+
"path": "unit",
|
|
9048
|
+
"valueType": "string"
|
|
9049
|
+
},
|
|
9050
|
+
{
|
|
9051
|
+
"path": "precision",
|
|
9052
|
+
"valueType": "number"
|
|
9053
|
+
}
|
|
9054
|
+
],
|
|
9055
|
+
"alarm-panel": [
|
|
9056
|
+
{
|
|
9057
|
+
"path": "state",
|
|
9058
|
+
"valueType": "enum",
|
|
9059
|
+
"enumValues": [
|
|
9060
|
+
"disarmed",
|
|
9061
|
+
"armed_home",
|
|
9062
|
+
"armed_away",
|
|
9063
|
+
"armed_night",
|
|
9064
|
+
"armed_vacation",
|
|
9065
|
+
"armed_custom_bypass",
|
|
9066
|
+
"arming",
|
|
9067
|
+
"disarming",
|
|
9068
|
+
"pending",
|
|
9069
|
+
"triggered"
|
|
9070
|
+
]
|
|
9071
|
+
},
|
|
9072
|
+
{
|
|
9073
|
+
"path": "targetMode",
|
|
9074
|
+
"valueType": "enum",
|
|
9075
|
+
"enumValues": [
|
|
9076
|
+
"home",
|
|
9077
|
+
"away",
|
|
9078
|
+
"night",
|
|
9079
|
+
"vacation",
|
|
9080
|
+
"custom_bypass"
|
|
9081
|
+
]
|
|
9082
|
+
},
|
|
9083
|
+
{
|
|
9084
|
+
"path": "requiresCode",
|
|
9085
|
+
"valueType": "boolean"
|
|
9086
|
+
}
|
|
9087
|
+
],
|
|
9088
|
+
"ambient-light-sensor": [
|
|
9089
|
+
{
|
|
9090
|
+
"path": "lux",
|
|
9091
|
+
"valueType": "number"
|
|
9092
|
+
},
|
|
9093
|
+
{
|
|
9094
|
+
"path": "unit",
|
|
9095
|
+
"valueType": "string"
|
|
9096
|
+
},
|
|
9097
|
+
{
|
|
9098
|
+
"path": "precision",
|
|
9099
|
+
"valueType": "number"
|
|
9100
|
+
}
|
|
9101
|
+
],
|
|
9102
|
+
"audio-metrics": [
|
|
9103
|
+
{
|
|
9104
|
+
"path": "ts",
|
|
9105
|
+
"valueType": "number"
|
|
9106
|
+
},
|
|
9107
|
+
{
|
|
9108
|
+
"path": "windowSec",
|
|
9109
|
+
"valueType": "number"
|
|
9110
|
+
},
|
|
9111
|
+
{
|
|
9112
|
+
"path": "level.rms",
|
|
9113
|
+
"valueType": "number"
|
|
9114
|
+
},
|
|
9115
|
+
{
|
|
9116
|
+
"path": "level.dbfs",
|
|
9117
|
+
"valueType": "number"
|
|
9118
|
+
},
|
|
9119
|
+
{
|
|
9120
|
+
"path": "peakDbfs",
|
|
9121
|
+
"valueType": "number"
|
|
9122
|
+
},
|
|
9123
|
+
{
|
|
9124
|
+
"path": "avgDbfs",
|
|
9125
|
+
"valueType": "number"
|
|
9126
|
+
},
|
|
9127
|
+
{
|
|
9128
|
+
"path": "current.className",
|
|
9129
|
+
"valueType": "string"
|
|
9130
|
+
},
|
|
9131
|
+
{
|
|
9132
|
+
"path": "current.score",
|
|
9133
|
+
"valueType": "number"
|
|
9134
|
+
},
|
|
9135
|
+
{
|
|
9136
|
+
"path": "current.timestamp",
|
|
9137
|
+
"valueType": "number"
|
|
9138
|
+
}
|
|
9139
|
+
],
|
|
9140
|
+
"automation-control": [
|
|
9141
|
+
{
|
|
9142
|
+
"path": "enabled",
|
|
9143
|
+
"valueType": "boolean"
|
|
9144
|
+
},
|
|
9145
|
+
{
|
|
9146
|
+
"path": "isRunning",
|
|
9147
|
+
"valueType": "boolean"
|
|
9148
|
+
},
|
|
9149
|
+
{
|
|
9150
|
+
"path": "lastTriggeredAt",
|
|
9151
|
+
"valueType": "number"
|
|
9152
|
+
},
|
|
9153
|
+
{
|
|
9154
|
+
"path": "lastError",
|
|
9155
|
+
"valueType": "string"
|
|
9156
|
+
}
|
|
9157
|
+
],
|
|
9158
|
+
"battery": [
|
|
9159
|
+
{
|
|
9160
|
+
"path": "percentage",
|
|
9161
|
+
"valueType": "number"
|
|
9162
|
+
},
|
|
9163
|
+
{
|
|
9164
|
+
"path": "charging",
|
|
9165
|
+
"valueType": "enum",
|
|
9166
|
+
"enumValues": [
|
|
9167
|
+
"dc",
|
|
9168
|
+
"solar",
|
|
9169
|
+
"none",
|
|
9170
|
+
"unknown"
|
|
9171
|
+
]
|
|
9172
|
+
},
|
|
9173
|
+
{
|
|
9174
|
+
"path": "sleeping",
|
|
9175
|
+
"valueType": "boolean"
|
|
9176
|
+
},
|
|
9177
|
+
{
|
|
9178
|
+
"path": "lastUpdated",
|
|
9179
|
+
"valueType": "number"
|
|
9180
|
+
},
|
|
9181
|
+
{
|
|
9182
|
+
"path": "lastContactAt",
|
|
9183
|
+
"valueType": "number"
|
|
9184
|
+
},
|
|
9185
|
+
{
|
|
9186
|
+
"path": "lastFullRefreshAt",
|
|
9187
|
+
"valueType": "number"
|
|
9188
|
+
},
|
|
9189
|
+
{
|
|
9190
|
+
"path": "binary",
|
|
9191
|
+
"valueType": "boolean"
|
|
9192
|
+
}
|
|
9193
|
+
],
|
|
9194
|
+
"binary": [{
|
|
9195
|
+
"path": "on",
|
|
9196
|
+
"valueType": "boolean"
|
|
9197
|
+
}],
|
|
9198
|
+
"brightness": [{
|
|
9199
|
+
"path": "percentage",
|
|
9200
|
+
"valueType": "number"
|
|
9201
|
+
}],
|
|
9202
|
+
"broker": [{
|
|
9203
|
+
"path": "brokerCount",
|
|
9204
|
+
"valueType": "number"
|
|
9205
|
+
}, {
|
|
9206
|
+
"path": "connectedCount",
|
|
9207
|
+
"valueType": "number"
|
|
9208
|
+
}],
|
|
9209
|
+
"camera-credentials": [
|
|
9210
|
+
{
|
|
9211
|
+
"path": "host",
|
|
9212
|
+
"valueType": "string"
|
|
9213
|
+
},
|
|
9214
|
+
{
|
|
9215
|
+
"path": "port",
|
|
9216
|
+
"valueType": "number"
|
|
9217
|
+
},
|
|
9218
|
+
{
|
|
9219
|
+
"path": "onvifPort",
|
|
9220
|
+
"valueType": "number"
|
|
9221
|
+
},
|
|
9222
|
+
{
|
|
9223
|
+
"path": "rtspPort",
|
|
9224
|
+
"valueType": "number"
|
|
9225
|
+
},
|
|
9226
|
+
{
|
|
9227
|
+
"path": "https",
|
|
9228
|
+
"valueType": "boolean"
|
|
9229
|
+
},
|
|
9230
|
+
{
|
|
9231
|
+
"path": "hasUsername",
|
|
9232
|
+
"valueType": "boolean"
|
|
9233
|
+
},
|
|
9234
|
+
{
|
|
9235
|
+
"path": "hasPassword",
|
|
9236
|
+
"valueType": "boolean"
|
|
9237
|
+
},
|
|
9238
|
+
{
|
|
9239
|
+
"path": "onvifProfile",
|
|
9240
|
+
"valueType": "string"
|
|
9241
|
+
}
|
|
9242
|
+
],
|
|
9243
|
+
"camera-streams": [
|
|
9244
|
+
{
|
|
9245
|
+
"path": "online",
|
|
9246
|
+
"valueType": "boolean"
|
|
9247
|
+
},
|
|
9248
|
+
{
|
|
9249
|
+
"path": "slotStatuses.high",
|
|
9250
|
+
"valueType": "enum",
|
|
9251
|
+
"enumValues": [
|
|
9252
|
+
"unassigned",
|
|
9253
|
+
"idle",
|
|
9254
|
+
"connecting",
|
|
9255
|
+
"streaming",
|
|
9256
|
+
"error"
|
|
9257
|
+
]
|
|
9258
|
+
},
|
|
9259
|
+
{
|
|
9260
|
+
"path": "slotStatuses.mid",
|
|
9261
|
+
"valueType": "enum",
|
|
9262
|
+
"enumValues": [
|
|
9263
|
+
"unassigned",
|
|
9264
|
+
"idle",
|
|
9265
|
+
"connecting",
|
|
9266
|
+
"streaming",
|
|
9267
|
+
"error"
|
|
9268
|
+
]
|
|
9269
|
+
},
|
|
9270
|
+
{
|
|
9271
|
+
"path": "slotStatuses.low",
|
|
9272
|
+
"valueType": "enum",
|
|
9273
|
+
"enumValues": [
|
|
9274
|
+
"unassigned",
|
|
9275
|
+
"idle",
|
|
9276
|
+
"connecting",
|
|
9277
|
+
"streaming",
|
|
9278
|
+
"error"
|
|
9279
|
+
]
|
|
9280
|
+
},
|
|
9281
|
+
{
|
|
9282
|
+
"path": "slotErrors.high",
|
|
9283
|
+
"valueType": "string"
|
|
9284
|
+
},
|
|
9285
|
+
{
|
|
9286
|
+
"path": "slotErrors.mid",
|
|
9287
|
+
"valueType": "string"
|
|
9288
|
+
},
|
|
9289
|
+
{
|
|
9290
|
+
"path": "slotErrors.low",
|
|
9291
|
+
"valueType": "string"
|
|
9292
|
+
}
|
|
9293
|
+
],
|
|
9294
|
+
"carbon-monoxide": [{
|
|
9295
|
+
"path": "detected",
|
|
9296
|
+
"valueType": "boolean"
|
|
9297
|
+
}],
|
|
9298
|
+
"climate-control": [
|
|
9299
|
+
{
|
|
9300
|
+
"path": "mode",
|
|
9301
|
+
"valueType": "enum",
|
|
9302
|
+
"enumValues": [
|
|
9303
|
+
"off",
|
|
9304
|
+
"heat",
|
|
9305
|
+
"cool",
|
|
9306
|
+
"auto",
|
|
9307
|
+
"heat_cool",
|
|
9308
|
+
"fan_only",
|
|
9309
|
+
"dry"
|
|
9310
|
+
]
|
|
9311
|
+
},
|
|
9312
|
+
{
|
|
9313
|
+
"path": "fanMode",
|
|
9314
|
+
"valueType": "string"
|
|
9315
|
+
},
|
|
9316
|
+
{
|
|
9317
|
+
"path": "preset",
|
|
9318
|
+
"valueType": "string"
|
|
9319
|
+
},
|
|
9320
|
+
{
|
|
9321
|
+
"path": "target",
|
|
9322
|
+
"valueType": "number"
|
|
9323
|
+
},
|
|
9324
|
+
{
|
|
9325
|
+
"path": "targetHigh",
|
|
9326
|
+
"valueType": "number"
|
|
9327
|
+
},
|
|
9328
|
+
{
|
|
9329
|
+
"path": "targetLow",
|
|
9330
|
+
"valueType": "number"
|
|
9331
|
+
},
|
|
9332
|
+
{
|
|
9333
|
+
"path": "targetHumidity",
|
|
9334
|
+
"valueType": "number"
|
|
9335
|
+
},
|
|
9336
|
+
{
|
|
9337
|
+
"path": "currentTemp",
|
|
9338
|
+
"valueType": "number"
|
|
9339
|
+
},
|
|
9340
|
+
{
|
|
9341
|
+
"path": "currentHumidity",
|
|
9342
|
+
"valueType": "number"
|
|
9343
|
+
},
|
|
9344
|
+
{
|
|
9345
|
+
"path": "swingVertical",
|
|
9346
|
+
"valueType": "boolean"
|
|
9347
|
+
},
|
|
9348
|
+
{
|
|
9349
|
+
"path": "swingHorizontal",
|
|
9350
|
+
"valueType": "boolean"
|
|
9351
|
+
},
|
|
9352
|
+
{
|
|
9353
|
+
"path": "minTemp",
|
|
9354
|
+
"valueType": "number"
|
|
9355
|
+
},
|
|
9356
|
+
{
|
|
9357
|
+
"path": "maxTemp",
|
|
9358
|
+
"valueType": "number"
|
|
9359
|
+
},
|
|
9360
|
+
{
|
|
9361
|
+
"path": "tempStep",
|
|
9362
|
+
"valueType": "number"
|
|
9363
|
+
}
|
|
9364
|
+
],
|
|
9365
|
+
"color": [
|
|
9366
|
+
{
|
|
9367
|
+
"path": "mode",
|
|
9368
|
+
"valueType": "enum",
|
|
9369
|
+
"enumValues": [
|
|
9370
|
+
"rgb",
|
|
9371
|
+
"hsv",
|
|
9372
|
+
"mired"
|
|
9373
|
+
]
|
|
9374
|
+
},
|
|
9375
|
+
{
|
|
9376
|
+
"path": "rgb.r",
|
|
9377
|
+
"valueType": "number"
|
|
9378
|
+
},
|
|
9379
|
+
{
|
|
9380
|
+
"path": "rgb.g",
|
|
9381
|
+
"valueType": "number"
|
|
9382
|
+
},
|
|
9383
|
+
{
|
|
9384
|
+
"path": "rgb.b",
|
|
9385
|
+
"valueType": "number"
|
|
9386
|
+
},
|
|
9387
|
+
{
|
|
9388
|
+
"path": "hsv.h",
|
|
9389
|
+
"valueType": "number"
|
|
9390
|
+
},
|
|
9391
|
+
{
|
|
9392
|
+
"path": "hsv.s",
|
|
9393
|
+
"valueType": "number"
|
|
9394
|
+
},
|
|
9395
|
+
{
|
|
9396
|
+
"path": "hsv.v",
|
|
9397
|
+
"valueType": "number"
|
|
9398
|
+
},
|
|
9399
|
+
{
|
|
9400
|
+
"path": "mireds",
|
|
9401
|
+
"valueType": "number"
|
|
9402
|
+
}
|
|
9403
|
+
],
|
|
9404
|
+
"connectivity": [{
|
|
9405
|
+
"path": "connected",
|
|
9406
|
+
"valueType": "boolean"
|
|
9407
|
+
}],
|
|
9408
|
+
"contact": [{
|
|
9409
|
+
"path": "entryOpen",
|
|
9410
|
+
"valueType": "boolean"
|
|
9411
|
+
}],
|
|
9412
|
+
"control": [
|
|
9413
|
+
{
|
|
9414
|
+
"path": "kind",
|
|
9415
|
+
"valueType": "enum",
|
|
9416
|
+
"enumValues": [
|
|
9417
|
+
"numeric",
|
|
9418
|
+
"select",
|
|
9419
|
+
"text",
|
|
9420
|
+
"datetime"
|
|
9421
|
+
]
|
|
9422
|
+
},
|
|
9423
|
+
{
|
|
9424
|
+
"path": "unit",
|
|
9425
|
+
"valueType": "string"
|
|
9426
|
+
},
|
|
9427
|
+
{
|
|
9428
|
+
"path": "min",
|
|
9429
|
+
"valueType": "number"
|
|
9430
|
+
},
|
|
9431
|
+
{
|
|
9432
|
+
"path": "max",
|
|
9433
|
+
"valueType": "number"
|
|
9434
|
+
},
|
|
9435
|
+
{
|
|
9436
|
+
"path": "step",
|
|
9437
|
+
"valueType": "number"
|
|
9438
|
+
},
|
|
9439
|
+
{
|
|
9440
|
+
"path": "precision",
|
|
9441
|
+
"valueType": "number"
|
|
9442
|
+
},
|
|
9443
|
+
{
|
|
9444
|
+
"path": "format",
|
|
9445
|
+
"valueType": "enum",
|
|
9446
|
+
"enumValues": [
|
|
9447
|
+
"date",
|
|
9448
|
+
"time",
|
|
9449
|
+
"datetime"
|
|
9450
|
+
]
|
|
9451
|
+
}
|
|
9452
|
+
],
|
|
9453
|
+
"cover": [
|
|
9454
|
+
{
|
|
9455
|
+
"path": "state",
|
|
9456
|
+
"valueType": "enum",
|
|
9457
|
+
"enumValues": [
|
|
9458
|
+
"open",
|
|
9459
|
+
"opening",
|
|
9460
|
+
"closing",
|
|
9461
|
+
"closed",
|
|
9462
|
+
"stopped"
|
|
9463
|
+
]
|
|
9464
|
+
},
|
|
9465
|
+
{
|
|
9466
|
+
"path": "position",
|
|
9467
|
+
"valueType": "number"
|
|
9468
|
+
},
|
|
9469
|
+
{
|
|
9470
|
+
"path": "tiltPosition",
|
|
9471
|
+
"valueType": "number"
|
|
9472
|
+
}
|
|
9473
|
+
],
|
|
9474
|
+
"day-night": [
|
|
9475
|
+
{
|
|
9476
|
+
"path": "mode",
|
|
9477
|
+
"valueType": "enum",
|
|
9478
|
+
"enumValues": [
|
|
9479
|
+
"auto",
|
|
9480
|
+
"day",
|
|
9481
|
+
"night",
|
|
9482
|
+
"schedule"
|
|
9483
|
+
]
|
|
9484
|
+
},
|
|
9485
|
+
{
|
|
9486
|
+
"path": "sensitivity",
|
|
9487
|
+
"valueType": "number"
|
|
9488
|
+
},
|
|
9489
|
+
{
|
|
9490
|
+
"path": "switchDelaySec",
|
|
9491
|
+
"valueType": "number"
|
|
9492
|
+
}
|
|
9493
|
+
],
|
|
9494
|
+
"device-adoption": [
|
|
9495
|
+
{
|
|
9496
|
+
"path": "lastDiscoveryAt",
|
|
9497
|
+
"valueType": "number"
|
|
9498
|
+
},
|
|
9499
|
+
{
|
|
9500
|
+
"path": "candidateCount",
|
|
9501
|
+
"valueType": "number"
|
|
9502
|
+
},
|
|
9503
|
+
{
|
|
9504
|
+
"path": "adoptedCount",
|
|
9505
|
+
"valueType": "number"
|
|
9506
|
+
},
|
|
9507
|
+
{
|
|
9508
|
+
"path": "lastError",
|
|
9509
|
+
"valueType": "string"
|
|
9510
|
+
}
|
|
9511
|
+
],
|
|
9512
|
+
"device-discovery": [{
|
|
9513
|
+
"path": "lastDiscoveryAt",
|
|
9514
|
+
"valueType": "number"
|
|
9515
|
+
}, {
|
|
9516
|
+
"path": "lastError",
|
|
9517
|
+
"valueType": "string"
|
|
9518
|
+
}],
|
|
9519
|
+
"device-export": [
|
|
9520
|
+
{
|
|
9521
|
+
"path": "linkState",
|
|
9522
|
+
"valueType": "enum",
|
|
9523
|
+
"enumValues": [
|
|
9524
|
+
"unlinked",
|
|
9525
|
+
"linked",
|
|
9526
|
+
"error"
|
|
9527
|
+
]
|
|
9528
|
+
},
|
|
9529
|
+
{
|
|
9530
|
+
"path": "exposedDeviceCount",
|
|
9531
|
+
"valueType": "number"
|
|
9532
|
+
},
|
|
9533
|
+
{
|
|
9534
|
+
"path": "error",
|
|
9535
|
+
"valueType": "string"
|
|
9536
|
+
},
|
|
9537
|
+
{
|
|
9538
|
+
"path": "setup.qr",
|
|
9539
|
+
"valueType": "string"
|
|
9540
|
+
},
|
|
9541
|
+
{
|
|
9542
|
+
"path": "setup.note",
|
|
9543
|
+
"valueType": "string"
|
|
9544
|
+
}
|
|
9545
|
+
],
|
|
9546
|
+
"device-status": [{
|
|
9547
|
+
"path": "online",
|
|
9548
|
+
"valueType": "boolean"
|
|
9549
|
+
}],
|
|
9550
|
+
"dishwasher": [
|
|
9551
|
+
{
|
|
9552
|
+
"path": "availability",
|
|
9553
|
+
"valueType": "enum",
|
|
9554
|
+
"enumValues": [
|
|
9555
|
+
"available",
|
|
9556
|
+
"offline",
|
|
9557
|
+
"description-missing"
|
|
9558
|
+
]
|
|
9559
|
+
},
|
|
9560
|
+
{
|
|
9561
|
+
"path": "state",
|
|
9562
|
+
"valueType": "enum",
|
|
9563
|
+
"enumValues": [
|
|
9564
|
+
"idle",
|
|
9565
|
+
"running",
|
|
9566
|
+
"paused",
|
|
9567
|
+
"finished",
|
|
9568
|
+
"error",
|
|
9569
|
+
"unavailable"
|
|
9570
|
+
]
|
|
9571
|
+
},
|
|
9572
|
+
{
|
|
9573
|
+
"path": "operationState",
|
|
9574
|
+
"valueType": "enum",
|
|
9575
|
+
"enumValues": [
|
|
9576
|
+
"Inactive",
|
|
9577
|
+
"Ready",
|
|
9578
|
+
"DelayedStart",
|
|
9579
|
+
"Run",
|
|
9580
|
+
"Pause",
|
|
9581
|
+
"ActionRequired",
|
|
9582
|
+
"Finished",
|
|
9583
|
+
"Error",
|
|
9584
|
+
"Aborting"
|
|
9585
|
+
]
|
|
9586
|
+
},
|
|
9587
|
+
{
|
|
9588
|
+
"path": "program",
|
|
9589
|
+
"valueType": "string"
|
|
9590
|
+
},
|
|
9591
|
+
{
|
|
9592
|
+
"path": "selectedProgram",
|
|
9593
|
+
"valueType": "string"
|
|
9594
|
+
},
|
|
9595
|
+
{
|
|
9596
|
+
"path": "remainingSeconds",
|
|
9597
|
+
"valueType": "number"
|
|
9598
|
+
},
|
|
9599
|
+
{
|
|
9600
|
+
"path": "delayedStartSeconds",
|
|
9601
|
+
"valueType": "number"
|
|
9602
|
+
},
|
|
9603
|
+
{
|
|
9604
|
+
"path": "progressPercent",
|
|
9605
|
+
"valueType": "number"
|
|
9606
|
+
},
|
|
9607
|
+
{
|
|
9608
|
+
"path": "doorOpen",
|
|
9609
|
+
"valueType": "boolean"
|
|
9610
|
+
},
|
|
9611
|
+
{
|
|
9612
|
+
"path": "doorLocked",
|
|
9613
|
+
"valueType": "boolean"
|
|
9614
|
+
},
|
|
9615
|
+
{
|
|
9616
|
+
"path": "remoteStartAllowed",
|
|
9617
|
+
"valueType": "boolean"
|
|
9618
|
+
},
|
|
9619
|
+
{
|
|
9620
|
+
"path": "remoteControlActive",
|
|
9621
|
+
"valueType": "boolean"
|
|
9622
|
+
},
|
|
9623
|
+
{
|
|
9624
|
+
"path": "localControlActive",
|
|
9625
|
+
"valueType": "boolean"
|
|
9626
|
+
},
|
|
9627
|
+
{
|
|
9628
|
+
"path": "powerOn",
|
|
9629
|
+
"valueType": "boolean"
|
|
9630
|
+
},
|
|
9631
|
+
{
|
|
9632
|
+
"path": "powerState",
|
|
9633
|
+
"valueType": "string"
|
|
9634
|
+
},
|
|
9635
|
+
{
|
|
9636
|
+
"path": "filterCleaningDue",
|
|
9637
|
+
"valueType": "boolean"
|
|
9638
|
+
},
|
|
9639
|
+
{
|
|
9640
|
+
"path": "machineCareDue",
|
|
9641
|
+
"valueType": "boolean"
|
|
9642
|
+
},
|
|
9643
|
+
{
|
|
9644
|
+
"path": "machineCareRemainingRuns",
|
|
9645
|
+
"valueType": "number"
|
|
9646
|
+
},
|
|
9647
|
+
{
|
|
9648
|
+
"path": "halfLoad",
|
|
9649
|
+
"valueType": "boolean"
|
|
9650
|
+
},
|
|
9651
|
+
{
|
|
9652
|
+
"path": "hygienePlus",
|
|
9653
|
+
"valueType": "boolean"
|
|
9654
|
+
},
|
|
9655
|
+
{
|
|
9656
|
+
"path": "extraDry",
|
|
9657
|
+
"valueType": "boolean"
|
|
9658
|
+
},
|
|
9659
|
+
{
|
|
9660
|
+
"path": "intensiveZone",
|
|
9661
|
+
"valueType": "boolean"
|
|
9662
|
+
},
|
|
9663
|
+
{
|
|
9664
|
+
"path": "varioSpeedPlus",
|
|
9665
|
+
"valueType": "boolean"
|
|
9666
|
+
},
|
|
9667
|
+
{
|
|
9668
|
+
"path": "childLock",
|
|
9669
|
+
"valueType": "boolean"
|
|
9670
|
+
},
|
|
9671
|
+
{
|
|
9672
|
+
"path": "errorCode",
|
|
9673
|
+
"valueType": "number"
|
|
9674
|
+
},
|
|
9675
|
+
{
|
|
9676
|
+
"path": "errorLabel",
|
|
9677
|
+
"valueType": "string"
|
|
9678
|
+
}
|
|
9679
|
+
],
|
|
9680
|
+
"doorbell": [{
|
|
9681
|
+
"path": "lastPressedAt",
|
|
9682
|
+
"valueType": "number"
|
|
9683
|
+
}, {
|
|
9684
|
+
"path": "pressCountSinceStart",
|
|
9685
|
+
"valueType": "number"
|
|
9686
|
+
}],
|
|
9687
|
+
"enum-sensor": [{
|
|
9688
|
+
"path": "value",
|
|
9689
|
+
"valueType": "string"
|
|
9690
|
+
}, {
|
|
9691
|
+
"path": "format",
|
|
9692
|
+
"valueType": "enum",
|
|
9693
|
+
"enumValues": [
|
|
9694
|
+
"date",
|
|
9695
|
+
"time",
|
|
9696
|
+
"datetime"
|
|
9697
|
+
]
|
|
9698
|
+
}],
|
|
9699
|
+
"event-emitter": [
|
|
9700
|
+
{
|
|
9701
|
+
"path": "lastEvent.deviceId",
|
|
9702
|
+
"valueType": "number"
|
|
9703
|
+
},
|
|
9704
|
+
{
|
|
9705
|
+
"path": "lastEvent.eventType",
|
|
9706
|
+
"valueType": "string"
|
|
9707
|
+
},
|
|
9708
|
+
{
|
|
9709
|
+
"path": "lastEvent.timestamp",
|
|
9710
|
+
"valueType": "number"
|
|
9711
|
+
},
|
|
9712
|
+
{
|
|
9713
|
+
"path": "lastEvent.seq",
|
|
9714
|
+
"valueType": "number"
|
|
9715
|
+
},
|
|
9716
|
+
{
|
|
9717
|
+
"path": "eventCountSinceStart",
|
|
9718
|
+
"valueType": "number"
|
|
9719
|
+
}
|
|
9720
|
+
],
|
|
9721
|
+
"fan-control": [
|
|
9722
|
+
{
|
|
9723
|
+
"path": "percentage",
|
|
9724
|
+
"valueType": "number"
|
|
9725
|
+
},
|
|
9726
|
+
{
|
|
9727
|
+
"path": "percentageStep",
|
|
9728
|
+
"valueType": "number"
|
|
9729
|
+
},
|
|
9730
|
+
{
|
|
9731
|
+
"path": "preset",
|
|
9732
|
+
"valueType": "string"
|
|
9733
|
+
},
|
|
9734
|
+
{
|
|
9735
|
+
"path": "direction",
|
|
9736
|
+
"valueType": "enum",
|
|
9737
|
+
"enumValues": ["forward", "reverse"]
|
|
9738
|
+
},
|
|
9739
|
+
{
|
|
9740
|
+
"path": "oscillating",
|
|
9741
|
+
"valueType": "boolean"
|
|
9742
|
+
}
|
|
9743
|
+
],
|
|
9744
|
+
"feature-probe": [
|
|
9745
|
+
{
|
|
9746
|
+
"path": "deviceType",
|
|
9747
|
+
"valueType": "string"
|
|
9748
|
+
},
|
|
9749
|
+
{
|
|
9750
|
+
"path": "model",
|
|
9751
|
+
"valueType": "string"
|
|
9752
|
+
},
|
|
9753
|
+
{
|
|
9754
|
+
"path": "channelCount",
|
|
9755
|
+
"valueType": "number"
|
|
9756
|
+
},
|
|
9757
|
+
{
|
|
9758
|
+
"path": "lastProbedAt",
|
|
9759
|
+
"valueType": "number"
|
|
9760
|
+
}
|
|
9761
|
+
],
|
|
9762
|
+
"flood": [{
|
|
9763
|
+
"path": "flooded",
|
|
9764
|
+
"valueType": "boolean"
|
|
9765
|
+
}],
|
|
9766
|
+
"gas": [{
|
|
9767
|
+
"path": "detected",
|
|
9768
|
+
"valueType": "boolean"
|
|
9769
|
+
}],
|
|
9770
|
+
"heating-valve": [{
|
|
9771
|
+
"path": "position",
|
|
9772
|
+
"valueType": "number"
|
|
9773
|
+
}],
|
|
9774
|
+
"humidifier": [
|
|
9775
|
+
{
|
|
9776
|
+
"path": "on",
|
|
9777
|
+
"valueType": "boolean"
|
|
9778
|
+
},
|
|
9779
|
+
{
|
|
9780
|
+
"path": "currentHumidity",
|
|
9781
|
+
"valueType": "number"
|
|
9782
|
+
},
|
|
9783
|
+
{
|
|
9784
|
+
"path": "targetHumidity",
|
|
9785
|
+
"valueType": "number"
|
|
9786
|
+
},
|
|
9787
|
+
{
|
|
9788
|
+
"path": "mode",
|
|
9789
|
+
"valueType": "string"
|
|
9790
|
+
},
|
|
9791
|
+
{
|
|
9792
|
+
"path": "action",
|
|
9793
|
+
"valueType": "string"
|
|
9794
|
+
},
|
|
9795
|
+
{
|
|
9796
|
+
"path": "minHumidity",
|
|
9797
|
+
"valueType": "number"
|
|
9798
|
+
},
|
|
9799
|
+
{
|
|
9800
|
+
"path": "maxHumidity",
|
|
9801
|
+
"valueType": "number"
|
|
9802
|
+
}
|
|
9803
|
+
],
|
|
9804
|
+
"humidity-sensor": [
|
|
9805
|
+
{
|
|
9806
|
+
"path": "percent",
|
|
9807
|
+
"valueType": "number"
|
|
9808
|
+
},
|
|
9809
|
+
{
|
|
9810
|
+
"path": "unit",
|
|
9811
|
+
"valueType": "string"
|
|
9812
|
+
},
|
|
9813
|
+
{
|
|
9814
|
+
"path": "precision",
|
|
9815
|
+
"valueType": "number"
|
|
9816
|
+
}
|
|
9817
|
+
],
|
|
9818
|
+
"image": [{
|
|
9819
|
+
"path": "url",
|
|
9820
|
+
"valueType": "string"
|
|
9821
|
+
}, {
|
|
9822
|
+
"path": "lastUpdated",
|
|
9823
|
+
"valueType": "number"
|
|
9824
|
+
}],
|
|
9825
|
+
"image-settings": [
|
|
9826
|
+
{
|
|
9827
|
+
"path": "brightness",
|
|
9828
|
+
"valueType": "number"
|
|
9829
|
+
},
|
|
9830
|
+
{
|
|
9831
|
+
"path": "contrast",
|
|
9832
|
+
"valueType": "number"
|
|
9833
|
+
},
|
|
9834
|
+
{
|
|
9835
|
+
"path": "saturation",
|
|
9836
|
+
"valueType": "number"
|
|
9837
|
+
},
|
|
9838
|
+
{
|
|
9839
|
+
"path": "sharpness",
|
|
9840
|
+
"valueType": "number"
|
|
9841
|
+
},
|
|
9842
|
+
{
|
|
9843
|
+
"path": "mirror",
|
|
9844
|
+
"valueType": "boolean"
|
|
9845
|
+
},
|
|
9846
|
+
{
|
|
9847
|
+
"path": "flip",
|
|
9848
|
+
"valueType": "boolean"
|
|
9849
|
+
},
|
|
9850
|
+
{
|
|
9851
|
+
"path": "rotate",
|
|
9852
|
+
"valueType": "enum",
|
|
9853
|
+
"enumValues": [
|
|
9854
|
+
"0",
|
|
9855
|
+
"90",
|
|
9856
|
+
"180",
|
|
9857
|
+
"270"
|
|
9858
|
+
]
|
|
9859
|
+
},
|
|
9860
|
+
{
|
|
9861
|
+
"path": "whiteBalance",
|
|
9862
|
+
"valueType": "enum",
|
|
9863
|
+
"enumValues": ["auto", "manual"]
|
|
9864
|
+
},
|
|
9865
|
+
{
|
|
9866
|
+
"path": "warmth",
|
|
9867
|
+
"valueType": "number"
|
|
9868
|
+
},
|
|
9869
|
+
{
|
|
9870
|
+
"path": "exposureMode",
|
|
9871
|
+
"valueType": "enum",
|
|
9872
|
+
"enumValues": ["auto", "manual"]
|
|
9873
|
+
},
|
|
9874
|
+
{
|
|
9875
|
+
"path": "backlightMode",
|
|
9876
|
+
"valueType": "enum",
|
|
9877
|
+
"enumValues": [
|
|
9878
|
+
"off",
|
|
9879
|
+
"blc",
|
|
9880
|
+
"wdr",
|
|
9881
|
+
"hlc"
|
|
9882
|
+
]
|
|
9883
|
+
}
|
|
9884
|
+
],
|
|
9885
|
+
"intercom": [
|
|
9886
|
+
{
|
|
9887
|
+
"path": "talking",
|
|
9888
|
+
"valueType": "boolean"
|
|
9889
|
+
},
|
|
9890
|
+
{
|
|
9891
|
+
"path": "lastSessionAt",
|
|
9892
|
+
"valueType": "number"
|
|
9893
|
+
},
|
|
9894
|
+
{
|
|
9895
|
+
"path": "ability.sampleRate",
|
|
9896
|
+
"valueType": "number"
|
|
9897
|
+
},
|
|
9898
|
+
{
|
|
9899
|
+
"path": "ability.duplex",
|
|
9900
|
+
"valueType": "enum",
|
|
9901
|
+
"enumValues": ["half", "full"]
|
|
9902
|
+
},
|
|
9903
|
+
{
|
|
9904
|
+
"path": "ability.maxBacklogMs",
|
|
9905
|
+
"valueType": "number"
|
|
9906
|
+
}
|
|
9907
|
+
],
|
|
9908
|
+
"lawn-mower-control": [
|
|
9909
|
+
{
|
|
9910
|
+
"path": "activity",
|
|
9911
|
+
"valueType": "enum",
|
|
9912
|
+
"enumValues": [
|
|
9913
|
+
"idle",
|
|
9914
|
+
"mowing",
|
|
9915
|
+
"paused",
|
|
9916
|
+
"docked",
|
|
9917
|
+
"error"
|
|
9918
|
+
]
|
|
9919
|
+
},
|
|
9920
|
+
{
|
|
9921
|
+
"path": "batteryLevel",
|
|
9922
|
+
"valueType": "number"
|
|
9923
|
+
},
|
|
9924
|
+
{
|
|
9925
|
+
"path": "progressPercent",
|
|
9926
|
+
"valueType": "number"
|
|
9927
|
+
},
|
|
9928
|
+
{
|
|
9929
|
+
"path": "currentCode",
|
|
9930
|
+
"valueType": "number"
|
|
9931
|
+
},
|
|
9932
|
+
{
|
|
9933
|
+
"path": "currentCodeLabel",
|
|
9934
|
+
"valueType": "string"
|
|
9935
|
+
},
|
|
9936
|
+
{
|
|
9937
|
+
"path": "severity",
|
|
9938
|
+
"valueType": "enum",
|
|
9939
|
+
"enumValues": [
|
|
9940
|
+
"info",
|
|
9941
|
+
"warning",
|
|
9942
|
+
"error"
|
|
9943
|
+
]
|
|
9944
|
+
}
|
|
9945
|
+
],
|
|
9946
|
+
"lock-control": [{
|
|
9947
|
+
"path": "state",
|
|
9948
|
+
"valueType": "enum",
|
|
9949
|
+
"enumValues": [
|
|
9950
|
+
"locked",
|
|
9951
|
+
"unlocked",
|
|
9952
|
+
"locking",
|
|
9953
|
+
"unlocking",
|
|
9954
|
+
"jammed"
|
|
9955
|
+
]
|
|
9956
|
+
}],
|
|
9957
|
+
"media-player": [
|
|
9958
|
+
{
|
|
9959
|
+
"path": "state",
|
|
9960
|
+
"valueType": "enum",
|
|
9961
|
+
"enumValues": [
|
|
9962
|
+
"off",
|
|
9963
|
+
"on",
|
|
9964
|
+
"idle",
|
|
9965
|
+
"playing",
|
|
9966
|
+
"paused",
|
|
9967
|
+
"buffering",
|
|
9968
|
+
"standby"
|
|
9969
|
+
]
|
|
9970
|
+
},
|
|
9971
|
+
{
|
|
9972
|
+
"path": "volumeLevel",
|
|
9973
|
+
"valueType": "number"
|
|
9974
|
+
},
|
|
9975
|
+
{
|
|
9976
|
+
"path": "isMuted",
|
|
9977
|
+
"valueType": "boolean"
|
|
9978
|
+
},
|
|
9979
|
+
{
|
|
9980
|
+
"path": "source",
|
|
9981
|
+
"valueType": "string"
|
|
9982
|
+
},
|
|
9983
|
+
{
|
|
9984
|
+
"path": "currentMedia.type",
|
|
9985
|
+
"valueType": "string"
|
|
9986
|
+
},
|
|
9987
|
+
{
|
|
9988
|
+
"path": "currentMedia.title",
|
|
9989
|
+
"valueType": "string"
|
|
9990
|
+
},
|
|
9991
|
+
{
|
|
9992
|
+
"path": "currentMedia.artist",
|
|
9993
|
+
"valueType": "string"
|
|
9994
|
+
},
|
|
9995
|
+
{
|
|
9996
|
+
"path": "currentMedia.album",
|
|
9997
|
+
"valueType": "string"
|
|
9998
|
+
},
|
|
9999
|
+
{
|
|
10000
|
+
"path": "currentMedia.imageUrl",
|
|
10001
|
+
"valueType": "string"
|
|
10002
|
+
},
|
|
10003
|
+
{
|
|
10004
|
+
"path": "positionMs",
|
|
10005
|
+
"valueType": "number"
|
|
10006
|
+
},
|
|
10007
|
+
{
|
|
10008
|
+
"path": "durationMs",
|
|
10009
|
+
"valueType": "number"
|
|
10010
|
+
},
|
|
10011
|
+
{
|
|
10012
|
+
"path": "shuffle",
|
|
10013
|
+
"valueType": "boolean"
|
|
10014
|
+
},
|
|
10015
|
+
{
|
|
10016
|
+
"path": "repeat",
|
|
10017
|
+
"valueType": "enum",
|
|
10018
|
+
"enumValues": [
|
|
10019
|
+
"off",
|
|
10020
|
+
"all",
|
|
10021
|
+
"one"
|
|
10022
|
+
]
|
|
10023
|
+
}
|
|
10024
|
+
],
|
|
10025
|
+
"motion": [
|
|
10026
|
+
{
|
|
10027
|
+
"path": "detected",
|
|
10028
|
+
"valueType": "boolean"
|
|
10029
|
+
},
|
|
10030
|
+
{
|
|
10031
|
+
"path": "lastDetectedAt",
|
|
10032
|
+
"valueType": "number"
|
|
10033
|
+
},
|
|
10034
|
+
{
|
|
10035
|
+
"path": "autoClearAfterMs",
|
|
10036
|
+
"valueType": "number"
|
|
10037
|
+
}
|
|
10038
|
+
],
|
|
10039
|
+
"motion-trigger": [{
|
|
10040
|
+
"path": "enabled",
|
|
10041
|
+
"valueType": "boolean"
|
|
10042
|
+
}],
|
|
10043
|
+
"motion-zones": [{
|
|
10044
|
+
"path": "enabled",
|
|
10045
|
+
"valueType": "boolean"
|
|
10046
|
+
}, {
|
|
10047
|
+
"path": "sensitivity",
|
|
10048
|
+
"valueType": "number"
|
|
10049
|
+
}],
|
|
10050
|
+
"mqtt-broker": [{
|
|
10051
|
+
"path": "brokerCount",
|
|
10052
|
+
"valueType": "number"
|
|
10053
|
+
}, {
|
|
10054
|
+
"path": "embeddedRunning",
|
|
10055
|
+
"valueType": "boolean"
|
|
10056
|
+
}],
|
|
10057
|
+
"native-object-detection": [{
|
|
10058
|
+
"path": "enabled",
|
|
10059
|
+
"valueType": "boolean"
|
|
10060
|
+
}],
|
|
10061
|
+
"navigation": [
|
|
10062
|
+
{
|
|
10063
|
+
"path": "mode",
|
|
10064
|
+
"valueType": "enum",
|
|
10065
|
+
"enumValues": [
|
|
10066
|
+
"idle",
|
|
10067
|
+
"cleaning",
|
|
10068
|
+
"spot",
|
|
10069
|
+
"following",
|
|
10070
|
+
"goto",
|
|
10071
|
+
"returning",
|
|
10072
|
+
"paused",
|
|
10073
|
+
"unknown"
|
|
10074
|
+
]
|
|
10075
|
+
},
|
|
10076
|
+
{
|
|
10077
|
+
"path": "following",
|
|
10078
|
+
"valueType": "boolean"
|
|
10079
|
+
},
|
|
10080
|
+
{
|
|
10081
|
+
"path": "flash",
|
|
10082
|
+
"valueType": "boolean"
|
|
10083
|
+
},
|
|
10084
|
+
{
|
|
10085
|
+
"path": "lightMode",
|
|
10086
|
+
"valueType": "enum",
|
|
10087
|
+
"enumValues": ["auto", "manual"]
|
|
10088
|
+
},
|
|
10089
|
+
{
|
|
10090
|
+
"path": "lightLevel",
|
|
10091
|
+
"valueType": "number"
|
|
10092
|
+
}
|
|
10093
|
+
],
|
|
10094
|
+
"network-link": [
|
|
10095
|
+
{
|
|
10096
|
+
"path": "type",
|
|
10097
|
+
"valueType": "enum",
|
|
10098
|
+
"enumValues": [
|
|
10099
|
+
"wifi",
|
|
10100
|
+
"ethernet",
|
|
10101
|
+
"cellular",
|
|
10102
|
+
"unknown"
|
|
10103
|
+
]
|
|
10104
|
+
},
|
|
10105
|
+
{
|
|
10106
|
+
"path": "signalPercent",
|
|
10107
|
+
"valueType": "number"
|
|
10108
|
+
},
|
|
10109
|
+
{
|
|
10110
|
+
"path": "rssiDbm",
|
|
10111
|
+
"valueType": "number"
|
|
10112
|
+
},
|
|
10113
|
+
{
|
|
10114
|
+
"path": "ssid",
|
|
10115
|
+
"valueType": "string"
|
|
10116
|
+
},
|
|
10117
|
+
{
|
|
10118
|
+
"path": "lastUpdated",
|
|
10119
|
+
"valueType": "number"
|
|
10120
|
+
}
|
|
10121
|
+
],
|
|
10122
|
+
"notifier": [
|
|
10123
|
+
{
|
|
10124
|
+
"path": "lastSentAt",
|
|
10125
|
+
"valueType": "number"
|
|
10126
|
+
},
|
|
10127
|
+
{
|
|
10128
|
+
"path": "lastError",
|
|
10129
|
+
"valueType": "string"
|
|
10130
|
+
},
|
|
10131
|
+
{
|
|
10132
|
+
"path": "queueDepth",
|
|
10133
|
+
"valueType": "number"
|
|
10134
|
+
},
|
|
10135
|
+
{
|
|
10136
|
+
"path": "supports.image",
|
|
10137
|
+
"valueType": "boolean"
|
|
10138
|
+
},
|
|
10139
|
+
{
|
|
10140
|
+
"path": "supports.priority",
|
|
10141
|
+
"valueType": "boolean"
|
|
10142
|
+
},
|
|
10143
|
+
{
|
|
10144
|
+
"path": "supports.data",
|
|
10145
|
+
"valueType": "boolean"
|
|
10146
|
+
},
|
|
10147
|
+
{
|
|
10148
|
+
"path": "supports.actions",
|
|
10149
|
+
"valueType": "boolean"
|
|
10150
|
+
},
|
|
10151
|
+
{
|
|
10152
|
+
"path": "supports.recipients",
|
|
10153
|
+
"valueType": "boolean"
|
|
10154
|
+
}
|
|
10155
|
+
],
|
|
10156
|
+
"numeric-sensor": [
|
|
10157
|
+
{
|
|
10158
|
+
"path": "value",
|
|
10159
|
+
"valueType": "number"
|
|
10160
|
+
},
|
|
10161
|
+
{
|
|
10162
|
+
"path": "unit",
|
|
10163
|
+
"valueType": "string"
|
|
10164
|
+
},
|
|
10165
|
+
{
|
|
10166
|
+
"path": "precision",
|
|
10167
|
+
"valueType": "number"
|
|
10168
|
+
}
|
|
10169
|
+
],
|
|
10170
|
+
"pet-feeder": [
|
|
10171
|
+
{
|
|
10172
|
+
"path": "foodLevel",
|
|
10173
|
+
"valueType": "number"
|
|
10174
|
+
},
|
|
10175
|
+
{
|
|
10176
|
+
"path": "food1",
|
|
10177
|
+
"valueType": "number"
|
|
10178
|
+
},
|
|
10179
|
+
{
|
|
10180
|
+
"path": "food2",
|
|
10181
|
+
"valueType": "number"
|
|
10182
|
+
},
|
|
10183
|
+
{
|
|
10184
|
+
"path": "lowFood",
|
|
10185
|
+
"valueType": "boolean"
|
|
10186
|
+
},
|
|
10187
|
+
{
|
|
10188
|
+
"path": "batteryPower",
|
|
10189
|
+
"valueType": "number"
|
|
10190
|
+
},
|
|
10191
|
+
{
|
|
10192
|
+
"path": "desiccantLeftDays",
|
|
10193
|
+
"valueType": "number"
|
|
10194
|
+
},
|
|
10195
|
+
{
|
|
10196
|
+
"path": "feeding",
|
|
10197
|
+
"valueType": "boolean"
|
|
10198
|
+
},
|
|
10199
|
+
{
|
|
10200
|
+
"path": "status",
|
|
10201
|
+
"valueType": "enum",
|
|
10202
|
+
"enumValues": [
|
|
10203
|
+
"normal",
|
|
10204
|
+
"offline",
|
|
10205
|
+
"on_batteries"
|
|
10206
|
+
]
|
|
10207
|
+
},
|
|
10208
|
+
{
|
|
10209
|
+
"path": "error",
|
|
10210
|
+
"valueType": "string"
|
|
10211
|
+
},
|
|
10212
|
+
{
|
|
10213
|
+
"path": "errorCode",
|
|
10214
|
+
"valueType": "number"
|
|
10215
|
+
},
|
|
10216
|
+
{
|
|
10217
|
+
"path": "isDualHopper",
|
|
10218
|
+
"valueType": "boolean"
|
|
10219
|
+
},
|
|
10220
|
+
{
|
|
10221
|
+
"path": "childLock",
|
|
10222
|
+
"valueType": "boolean"
|
|
10223
|
+
},
|
|
10224
|
+
{
|
|
10225
|
+
"path": "indicatorLight",
|
|
10226
|
+
"valueType": "boolean"
|
|
10227
|
+
},
|
|
10228
|
+
{
|
|
10229
|
+
"path": "feedSound",
|
|
10230
|
+
"valueType": "boolean"
|
|
10231
|
+
},
|
|
10232
|
+
{
|
|
10233
|
+
"path": "volume",
|
|
10234
|
+
"valueType": "number"
|
|
10235
|
+
}
|
|
10236
|
+
],
|
|
10237
|
+
"power-meter": [
|
|
10238
|
+
{
|
|
10239
|
+
"path": "watts",
|
|
10240
|
+
"valueType": "number"
|
|
10241
|
+
},
|
|
10242
|
+
{
|
|
10243
|
+
"path": "kwhTotal",
|
|
10244
|
+
"valueType": "number"
|
|
10245
|
+
},
|
|
10246
|
+
{
|
|
10247
|
+
"path": "volts",
|
|
10248
|
+
"valueType": "number"
|
|
10249
|
+
},
|
|
10250
|
+
{
|
|
10251
|
+
"path": "amps",
|
|
10252
|
+
"valueType": "number"
|
|
10253
|
+
},
|
|
10254
|
+
{
|
|
10255
|
+
"path": "va",
|
|
10256
|
+
"valueType": "number"
|
|
10257
|
+
},
|
|
10258
|
+
{
|
|
10259
|
+
"path": "powerFactor",
|
|
10260
|
+
"valueType": "number"
|
|
10261
|
+
},
|
|
10262
|
+
{
|
|
10263
|
+
"path": "unit",
|
|
10264
|
+
"valueType": "string"
|
|
10265
|
+
},
|
|
10266
|
+
{
|
|
10267
|
+
"path": "precision",
|
|
10268
|
+
"valueType": "number"
|
|
10269
|
+
}
|
|
10270
|
+
],
|
|
10271
|
+
"presence": [
|
|
10272
|
+
{
|
|
10273
|
+
"path": "state",
|
|
10274
|
+
"valueType": "string"
|
|
10275
|
+
},
|
|
10276
|
+
{
|
|
10277
|
+
"path": "location",
|
|
10278
|
+
"valueType": "string"
|
|
10279
|
+
},
|
|
10280
|
+
{
|
|
10281
|
+
"path": "gps.latitude",
|
|
10282
|
+
"valueType": "number"
|
|
10283
|
+
},
|
|
10284
|
+
{
|
|
10285
|
+
"path": "gps.longitude",
|
|
10286
|
+
"valueType": "number"
|
|
10287
|
+
},
|
|
10288
|
+
{
|
|
10289
|
+
"path": "gps.accuracyMeters",
|
|
10290
|
+
"valueType": "number"
|
|
10291
|
+
},
|
|
10292
|
+
{
|
|
10293
|
+
"path": "batteryPercent",
|
|
10294
|
+
"valueType": "number"
|
|
10295
|
+
}
|
|
10296
|
+
],
|
|
10297
|
+
"pressure-sensor": [
|
|
10298
|
+
{
|
|
10299
|
+
"path": "hpa",
|
|
10300
|
+
"valueType": "number"
|
|
10301
|
+
},
|
|
10302
|
+
{
|
|
10303
|
+
"path": "unit",
|
|
10304
|
+
"valueType": "string"
|
|
10305
|
+
},
|
|
10306
|
+
{
|
|
10307
|
+
"path": "precision",
|
|
10308
|
+
"valueType": "number"
|
|
10309
|
+
}
|
|
10310
|
+
],
|
|
10311
|
+
"privacy-mask": [{
|
|
10312
|
+
"path": "enabled",
|
|
10313
|
+
"valueType": "boolean"
|
|
10314
|
+
}, {
|
|
10315
|
+
"path": "audioEnabled",
|
|
10316
|
+
"valueType": "boolean"
|
|
10317
|
+
}],
|
|
10318
|
+
"ptz": [
|
|
10319
|
+
{
|
|
10320
|
+
"path": "pan",
|
|
10321
|
+
"valueType": "number"
|
|
10322
|
+
},
|
|
10323
|
+
{
|
|
10324
|
+
"path": "tilt",
|
|
10325
|
+
"valueType": "number"
|
|
10326
|
+
},
|
|
10327
|
+
{
|
|
10328
|
+
"path": "zoom",
|
|
10329
|
+
"valueType": "number"
|
|
10330
|
+
},
|
|
10331
|
+
{
|
|
10332
|
+
"path": "autofocus",
|
|
10333
|
+
"valueType": "boolean"
|
|
10334
|
+
}
|
|
10335
|
+
],
|
|
10336
|
+
"ptz-autotrack": [
|
|
10337
|
+
{
|
|
10338
|
+
"path": "enabled",
|
|
10339
|
+
"valueType": "boolean"
|
|
10340
|
+
},
|
|
10341
|
+
{
|
|
10342
|
+
"path": "currentSettings.targetType",
|
|
10343
|
+
"valueType": "string"
|
|
10344
|
+
},
|
|
10345
|
+
{
|
|
10346
|
+
"path": "currentSettings.stopDelaySeconds",
|
|
10347
|
+
"valueType": "number"
|
|
10348
|
+
},
|
|
10349
|
+
{
|
|
10350
|
+
"path": "currentSettings.disappearDelaySeconds",
|
|
10351
|
+
"valueType": "number"
|
|
10352
|
+
}
|
|
10353
|
+
],
|
|
10354
|
+
"recording-archive": [
|
|
10355
|
+
{
|
|
10356
|
+
"path": "deviceId",
|
|
10357
|
+
"valueType": "number"
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"path": "enabled",
|
|
10361
|
+
"valueType": "boolean"
|
|
10362
|
+
},
|
|
10363
|
+
{
|
|
10364
|
+
"path": "activeMode",
|
|
10365
|
+
"valueType": "enum",
|
|
10366
|
+
"enumValues": [
|
|
10367
|
+
"off",
|
|
10368
|
+
"events",
|
|
10369
|
+
"continuous",
|
|
10370
|
+
"on-device-decision"
|
|
10371
|
+
]
|
|
10372
|
+
},
|
|
10373
|
+
{
|
|
10374
|
+
"path": "nodeId",
|
|
10375
|
+
"valueType": "string"
|
|
10376
|
+
},
|
|
10377
|
+
{
|
|
10378
|
+
"path": "storageBytes",
|
|
10379
|
+
"valueType": "number"
|
|
10380
|
+
}
|
|
10381
|
+
],
|
|
10382
|
+
"recording-onboard": [
|
|
10383
|
+
{
|
|
10384
|
+
"path": "primaryTrackId",
|
|
10385
|
+
"valueType": "string"
|
|
10386
|
+
},
|
|
10387
|
+
{
|
|
10388
|
+
"path": "enabled",
|
|
10389
|
+
"valueType": "boolean"
|
|
10390
|
+
},
|
|
10391
|
+
{
|
|
10392
|
+
"path": "overwriteWhenFull",
|
|
10393
|
+
"valueType": "boolean"
|
|
10394
|
+
},
|
|
10395
|
+
{
|
|
10396
|
+
"path": "preRecordSec",
|
|
10397
|
+
"valueType": "number"
|
|
10398
|
+
},
|
|
10399
|
+
{
|
|
10400
|
+
"path": "postRecordSec",
|
|
10401
|
+
"valueType": "number"
|
|
10402
|
+
},
|
|
10403
|
+
{
|
|
10404
|
+
"path": "segmentMinutes",
|
|
10405
|
+
"valueType": "number"
|
|
10406
|
+
},
|
|
10407
|
+
{
|
|
10408
|
+
"path": "unreadableWindows",
|
|
10409
|
+
"valueType": "number"
|
|
10410
|
+
},
|
|
10411
|
+
{
|
|
10412
|
+
"path": "recordingToNowhere",
|
|
10413
|
+
"valueType": "boolean"
|
|
10414
|
+
}
|
|
10415
|
+
],
|
|
10416
|
+
"recording-signal": [{
|
|
10417
|
+
"path": "active",
|
|
10418
|
+
"valueType": "boolean"
|
|
10419
|
+
}, {
|
|
10420
|
+
"path": "reason",
|
|
10421
|
+
"valueType": "string"
|
|
10422
|
+
}],
|
|
10423
|
+
"running-state": [
|
|
10424
|
+
{
|
|
10425
|
+
"path": "running",
|
|
10426
|
+
"valueType": "boolean"
|
|
10427
|
+
},
|
|
10428
|
+
{
|
|
10429
|
+
"path": "since",
|
|
10430
|
+
"valueType": "number"
|
|
10431
|
+
},
|
|
10432
|
+
{
|
|
10433
|
+
"path": "source",
|
|
10434
|
+
"valueType": "enum",
|
|
10435
|
+
"enumValues": ["native", "assigned"]
|
|
10436
|
+
},
|
|
10437
|
+
{
|
|
10438
|
+
"path": "phase",
|
|
10439
|
+
"valueType": "string"
|
|
10440
|
+
}
|
|
10441
|
+
],
|
|
10442
|
+
"script-runner": [
|
|
10443
|
+
{
|
|
10444
|
+
"path": "isRunning",
|
|
10445
|
+
"valueType": "boolean"
|
|
10446
|
+
},
|
|
10447
|
+
{
|
|
10448
|
+
"path": "lastRunAt",
|
|
10449
|
+
"valueType": "number"
|
|
10450
|
+
},
|
|
10451
|
+
{
|
|
10452
|
+
"path": "lastRunSuccess",
|
|
10453
|
+
"valueType": "boolean"
|
|
10454
|
+
},
|
|
10455
|
+
{
|
|
10456
|
+
"path": "lastError",
|
|
10457
|
+
"valueType": "string"
|
|
10458
|
+
}
|
|
10459
|
+
],
|
|
10460
|
+
"smoke": [{
|
|
10461
|
+
"path": "detected",
|
|
10462
|
+
"valueType": "boolean"
|
|
10463
|
+
}],
|
|
10464
|
+
"snapshot": [
|
|
10465
|
+
{
|
|
10466
|
+
"path": "lastCapturedAt",
|
|
10467
|
+
"valueType": "number"
|
|
10468
|
+
},
|
|
10469
|
+
{
|
|
10470
|
+
"path": "cacheAgeMs",
|
|
10471
|
+
"valueType": "number"
|
|
10472
|
+
},
|
|
10473
|
+
{
|
|
10474
|
+
"path": "lastBytes",
|
|
10475
|
+
"valueType": "number"
|
|
10476
|
+
},
|
|
10477
|
+
{
|
|
10478
|
+
"path": "lastStreamId",
|
|
10479
|
+
"valueType": "string"
|
|
10480
|
+
}
|
|
10481
|
+
],
|
|
10482
|
+
"stream-params": [
|
|
10483
|
+
{
|
|
10484
|
+
"path": "main.width",
|
|
10485
|
+
"valueType": "number"
|
|
10486
|
+
},
|
|
10487
|
+
{
|
|
10488
|
+
"path": "main.height",
|
|
10489
|
+
"valueType": "number"
|
|
10490
|
+
},
|
|
10491
|
+
{
|
|
10492
|
+
"path": "main.codec",
|
|
10493
|
+
"valueType": "enum",
|
|
10494
|
+
"enumValues": ["h264", "h265"]
|
|
10495
|
+
},
|
|
10496
|
+
{
|
|
10497
|
+
"path": "main.framerate",
|
|
10498
|
+
"valueType": "number"
|
|
10499
|
+
},
|
|
10500
|
+
{
|
|
10501
|
+
"path": "main.bitrate",
|
|
10502
|
+
"valueType": "number"
|
|
10503
|
+
},
|
|
10504
|
+
{
|
|
10505
|
+
"path": "main.bitrateMode",
|
|
10506
|
+
"valueType": "enum",
|
|
10507
|
+
"enumValues": ["vbr", "cbr"]
|
|
10508
|
+
},
|
|
10509
|
+
{
|
|
10510
|
+
"path": "main.encoderProfile",
|
|
10511
|
+
"valueType": "enum",
|
|
10512
|
+
"enumValues": [
|
|
10513
|
+
"high",
|
|
10514
|
+
"main",
|
|
10515
|
+
"baseline"
|
|
10516
|
+
]
|
|
10517
|
+
},
|
|
10518
|
+
{
|
|
10519
|
+
"path": "main.gop",
|
|
10520
|
+
"valueType": "number"
|
|
10521
|
+
},
|
|
10522
|
+
{
|
|
10523
|
+
"path": "main.audio",
|
|
10524
|
+
"valueType": "boolean"
|
|
10525
|
+
},
|
|
10526
|
+
{
|
|
10527
|
+
"path": "sub.width",
|
|
10528
|
+
"valueType": "number"
|
|
10529
|
+
},
|
|
10530
|
+
{
|
|
10531
|
+
"path": "sub.height",
|
|
10532
|
+
"valueType": "number"
|
|
10533
|
+
},
|
|
10534
|
+
{
|
|
10535
|
+
"path": "sub.codec",
|
|
10536
|
+
"valueType": "enum",
|
|
10537
|
+
"enumValues": ["h264", "h265"]
|
|
10538
|
+
},
|
|
10539
|
+
{
|
|
10540
|
+
"path": "sub.framerate",
|
|
10541
|
+
"valueType": "number"
|
|
10542
|
+
},
|
|
10543
|
+
{
|
|
10544
|
+
"path": "sub.bitrate",
|
|
10545
|
+
"valueType": "number"
|
|
10546
|
+
},
|
|
10547
|
+
{
|
|
10548
|
+
"path": "sub.bitrateMode",
|
|
10549
|
+
"valueType": "enum",
|
|
10550
|
+
"enumValues": ["vbr", "cbr"]
|
|
10551
|
+
},
|
|
10552
|
+
{
|
|
10553
|
+
"path": "sub.encoderProfile",
|
|
10554
|
+
"valueType": "enum",
|
|
10555
|
+
"enumValues": [
|
|
10556
|
+
"high",
|
|
10557
|
+
"main",
|
|
10558
|
+
"baseline"
|
|
10559
|
+
]
|
|
10560
|
+
},
|
|
10561
|
+
{
|
|
10562
|
+
"path": "sub.gop",
|
|
10563
|
+
"valueType": "number"
|
|
10564
|
+
},
|
|
10565
|
+
{
|
|
10566
|
+
"path": "sub.audio",
|
|
10567
|
+
"valueType": "boolean"
|
|
10568
|
+
},
|
|
10569
|
+
{
|
|
10570
|
+
"path": "ext.width",
|
|
10571
|
+
"valueType": "number"
|
|
10572
|
+
},
|
|
10573
|
+
{
|
|
10574
|
+
"path": "ext.height",
|
|
10575
|
+
"valueType": "number"
|
|
10576
|
+
},
|
|
10577
|
+
{
|
|
10578
|
+
"path": "ext.codec",
|
|
10579
|
+
"valueType": "enum",
|
|
10580
|
+
"enumValues": ["h264", "h265"]
|
|
10581
|
+
},
|
|
10582
|
+
{
|
|
10583
|
+
"path": "ext.framerate",
|
|
10584
|
+
"valueType": "number"
|
|
10585
|
+
},
|
|
10586
|
+
{
|
|
10587
|
+
"path": "ext.bitrate",
|
|
10588
|
+
"valueType": "number"
|
|
10589
|
+
},
|
|
10590
|
+
{
|
|
10591
|
+
"path": "ext.bitrateMode",
|
|
10592
|
+
"valueType": "enum",
|
|
10593
|
+
"enumValues": ["vbr", "cbr"]
|
|
10594
|
+
},
|
|
10595
|
+
{
|
|
10596
|
+
"path": "ext.encoderProfile",
|
|
10597
|
+
"valueType": "enum",
|
|
10598
|
+
"enumValues": [
|
|
10599
|
+
"high",
|
|
10600
|
+
"main",
|
|
10601
|
+
"baseline"
|
|
10602
|
+
]
|
|
10603
|
+
},
|
|
10604
|
+
{
|
|
10605
|
+
"path": "ext.gop",
|
|
10606
|
+
"valueType": "number"
|
|
10607
|
+
},
|
|
10608
|
+
{
|
|
10609
|
+
"path": "ext.audio",
|
|
10610
|
+
"valueType": "boolean"
|
|
10611
|
+
}
|
|
10612
|
+
],
|
|
10613
|
+
"switch": [{
|
|
10614
|
+
"path": "on",
|
|
10615
|
+
"valueType": "boolean"
|
|
10616
|
+
}],
|
|
10617
|
+
"tamper": [{
|
|
10618
|
+
"path": "tampered",
|
|
10619
|
+
"valueType": "boolean"
|
|
10620
|
+
}],
|
|
10621
|
+
"temperature-sensor": [
|
|
10622
|
+
{
|
|
10623
|
+
"path": "celsius",
|
|
10624
|
+
"valueType": "number"
|
|
10625
|
+
},
|
|
10626
|
+
{
|
|
10627
|
+
"path": "unit",
|
|
10628
|
+
"valueType": "string"
|
|
10629
|
+
},
|
|
10630
|
+
{
|
|
10631
|
+
"path": "precision",
|
|
10632
|
+
"valueType": "number"
|
|
10633
|
+
}
|
|
10634
|
+
],
|
|
10635
|
+
"update": [
|
|
10636
|
+
{
|
|
10637
|
+
"path": "currentVersion",
|
|
10638
|
+
"valueType": "string"
|
|
10639
|
+
},
|
|
10640
|
+
{
|
|
10641
|
+
"path": "availableVersion",
|
|
10642
|
+
"valueType": "string"
|
|
10643
|
+
},
|
|
10644
|
+
{
|
|
10645
|
+
"path": "updatable",
|
|
10646
|
+
"valueType": "boolean"
|
|
10647
|
+
},
|
|
10648
|
+
{
|
|
10649
|
+
"path": "state",
|
|
10650
|
+
"valueType": "string"
|
|
10651
|
+
},
|
|
10652
|
+
{
|
|
10653
|
+
"path": "inProgress",
|
|
10654
|
+
"valueType": "boolean"
|
|
10655
|
+
}
|
|
10656
|
+
],
|
|
10657
|
+
"vacuum-control": [
|
|
10658
|
+
{
|
|
10659
|
+
"path": "state",
|
|
10660
|
+
"valueType": "enum",
|
|
10661
|
+
"enumValues": [
|
|
10662
|
+
"idle",
|
|
10663
|
+
"cleaning",
|
|
10664
|
+
"paused",
|
|
10665
|
+
"returning",
|
|
10666
|
+
"docked",
|
|
10667
|
+
"drying",
|
|
10668
|
+
"error"
|
|
10669
|
+
]
|
|
10670
|
+
},
|
|
10671
|
+
{
|
|
10672
|
+
"path": "batteryLevel",
|
|
10673
|
+
"valueType": "number"
|
|
10674
|
+
},
|
|
10675
|
+
{
|
|
10676
|
+
"path": "fanSpeed",
|
|
10677
|
+
"valueType": "string"
|
|
10678
|
+
},
|
|
10679
|
+
{
|
|
10680
|
+
"path": "progressPercent",
|
|
10681
|
+
"valueType": "number"
|
|
10682
|
+
},
|
|
10683
|
+
{
|
|
10684
|
+
"path": "errorCode",
|
|
10685
|
+
"valueType": "number"
|
|
10686
|
+
},
|
|
10687
|
+
{
|
|
10688
|
+
"path": "errorLabel",
|
|
10689
|
+
"valueType": "string"
|
|
10690
|
+
}
|
|
10691
|
+
],
|
|
10692
|
+
"valve": [{
|
|
10693
|
+
"path": "state",
|
|
10694
|
+
"valueType": "enum",
|
|
10695
|
+
"enumValues": [
|
|
10696
|
+
"open",
|
|
10697
|
+
"opening",
|
|
10698
|
+
"closing",
|
|
10699
|
+
"closed",
|
|
10700
|
+
"stopped"
|
|
10701
|
+
]
|
|
10702
|
+
}, {
|
|
10703
|
+
"path": "position",
|
|
10704
|
+
"valueType": "number"
|
|
10705
|
+
}],
|
|
10706
|
+
"vibration": [{
|
|
10707
|
+
"path": "detected",
|
|
10708
|
+
"valueType": "boolean"
|
|
10709
|
+
}],
|
|
10710
|
+
"water-heater": [
|
|
10711
|
+
{
|
|
10712
|
+
"path": "currentTemp",
|
|
10713
|
+
"valueType": "number"
|
|
10714
|
+
},
|
|
10715
|
+
{
|
|
10716
|
+
"path": "targetTemp",
|
|
10717
|
+
"valueType": "number"
|
|
10718
|
+
},
|
|
10719
|
+
{
|
|
10720
|
+
"path": "operationMode",
|
|
10721
|
+
"valueType": "string"
|
|
10722
|
+
},
|
|
10723
|
+
{
|
|
10724
|
+
"path": "away",
|
|
10725
|
+
"valueType": "boolean"
|
|
10726
|
+
},
|
|
10727
|
+
{
|
|
10728
|
+
"path": "minTemp",
|
|
10729
|
+
"valueType": "number"
|
|
10730
|
+
},
|
|
10731
|
+
{
|
|
10732
|
+
"path": "maxTemp",
|
|
10733
|
+
"valueType": "number"
|
|
10734
|
+
}
|
|
10735
|
+
],
|
|
10736
|
+
"weather": [
|
|
10737
|
+
{
|
|
10738
|
+
"path": "condition",
|
|
10739
|
+
"valueType": "string"
|
|
10740
|
+
},
|
|
10741
|
+
{
|
|
10742
|
+
"path": "temperature",
|
|
10743
|
+
"valueType": "number"
|
|
10744
|
+
},
|
|
10745
|
+
{
|
|
10746
|
+
"path": "temperatureUnit",
|
|
10747
|
+
"valueType": "string"
|
|
10748
|
+
},
|
|
10749
|
+
{
|
|
10750
|
+
"path": "humidity",
|
|
10751
|
+
"valueType": "number"
|
|
10752
|
+
},
|
|
10753
|
+
{
|
|
10754
|
+
"path": "pressure",
|
|
10755
|
+
"valueType": "number"
|
|
10756
|
+
},
|
|
10757
|
+
{
|
|
10758
|
+
"path": "pressureUnit",
|
|
10759
|
+
"valueType": "string"
|
|
10760
|
+
},
|
|
10761
|
+
{
|
|
10762
|
+
"path": "windSpeed",
|
|
10763
|
+
"valueType": "number"
|
|
10764
|
+
},
|
|
10765
|
+
{
|
|
10766
|
+
"path": "windSpeedUnit",
|
|
10767
|
+
"valueType": "string"
|
|
10768
|
+
},
|
|
10769
|
+
{
|
|
10770
|
+
"path": "windBearing",
|
|
10771
|
+
"valueType": "number"
|
|
10772
|
+
}
|
|
10773
|
+
],
|
|
10774
|
+
"zone-analytics": [
|
|
10775
|
+
{
|
|
10776
|
+
"path": "ts",
|
|
10777
|
+
"valueType": "number"
|
|
10778
|
+
},
|
|
10779
|
+
{
|
|
10780
|
+
"path": "frameWidth",
|
|
10781
|
+
"valueType": "number"
|
|
10782
|
+
},
|
|
10783
|
+
{
|
|
10784
|
+
"path": "frameHeight",
|
|
10785
|
+
"valueType": "number"
|
|
10786
|
+
},
|
|
10787
|
+
{
|
|
10788
|
+
"path": "frame.totalObjects",
|
|
10789
|
+
"valueType": "number"
|
|
10790
|
+
},
|
|
10791
|
+
{
|
|
10792
|
+
"path": "frame.standingObjects",
|
|
10793
|
+
"valueType": "number"
|
|
10794
|
+
},
|
|
10795
|
+
{
|
|
10796
|
+
"path": "frame.transientObjects",
|
|
10797
|
+
"valueType": "number"
|
|
10798
|
+
},
|
|
10799
|
+
{
|
|
10800
|
+
"path": "unzoned.totalObjects",
|
|
10801
|
+
"valueType": "number"
|
|
10802
|
+
},
|
|
10803
|
+
{
|
|
10804
|
+
"path": "unzoned.standingObjects",
|
|
10805
|
+
"valueType": "number"
|
|
10806
|
+
},
|
|
10807
|
+
{
|
|
10808
|
+
"path": "unzoned.transientObjects",
|
|
10809
|
+
"valueType": "number"
|
|
10810
|
+
}
|
|
10811
|
+
]
|
|
10812
|
+
});
|
|
8839
10813
|
object({
|
|
8840
10814
|
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
8841
10815
|
params: record(string(), union([string(), number()])).optional()
|
|
@@ -9194,7 +11168,7 @@ function errMsg(err) {
|
|
|
9194
11168
|
return String(err);
|
|
9195
11169
|
}
|
|
9196
11170
|
//#endregion
|
|
9197
|
-
//#region ../types/dist/composition-
|
|
11171
|
+
//#region ../types/dist/composition-kEl9mevu.mjs
|
|
9198
11172
|
/**
|
|
9199
11173
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
9200
11174
|
*
|
|
@@ -12553,7 +14527,7 @@ var LogChannelDescriptorSchema = object({
|
|
|
12553
14527
|
* `true` is a PROMISE with two halves, and both must hold: the gate is
|
|
12554
14528
|
* consulted with the numeric device id, AND every line the channel admits
|
|
12555
14529
|
* carries `tags: { deviceId }` with that same numeric id. The second half is
|
|
12556
|
-
* what makes `| json | deviceId="
|
|
14530
|
+
* what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
|
|
12557
14531
|
* keeps `deviceId` out of the stream labels for cardinality, so the tag in
|
|
12558
14532
|
* the body is the only way to filter.
|
|
12559
14533
|
*
|
|
@@ -12741,7 +14715,7 @@ var ModelVariantGroupSchema = object({
|
|
|
12741
14715
|
precision: _enum(["fp32", "int8"]).optional(),
|
|
12742
14716
|
/**
|
|
12743
14717
|
* Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
|
|
12744
|
-
* an alternate training of the same family (
|
|
14718
|
+
* an alternate training of the same family (plugin catalog `relu_test`); chip
|
|
12745
14719
|
* label is "Test".
|
|
12746
14720
|
*/
|
|
12747
14721
|
optimization: _enum(["standard", "test"]).optional(),
|
|
@@ -12993,8 +14967,8 @@ var ModelCatalogEntrySchema = object({
|
|
|
12993
14967
|
provider: ModelProviderIdSchema.optional(),
|
|
12994
14968
|
/**
|
|
12995
14969
|
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
12996
|
-
* applies (
|
|
12997
|
-
* labels already ARE the CamStack macros (
|
|
14970
|
+
* applies (plus catalog / COCO public catalog). Set on a custom model whose raw
|
|
14971
|
+
* labels already ARE the CamStack macros (plugin catalog identity map).
|
|
12998
14972
|
*/
|
|
12999
14973
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
13000
14974
|
/**
|
|
@@ -16031,7 +18005,7 @@ method(object({
|
|
|
16031
18005
|
* `1` is real time and is the ONLY value that allows the copy branch —
|
|
16032
18006
|
* anything else forces `libx264` over the window. That was priced
|
|
16033
18007
|
* before it was chosen: a per-event burst measured at 0.23 s and 254 KB
|
|
16034
|
-
* on a real
|
|
18008
|
+
* on a real 101 720p cut, against 922 KB for the copy it replaces. A
|
|
16035
18009
|
* re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
|
|
16036
18010
|
* once the decode is forced the width stops being free.
|
|
16037
18011
|
*/
|
|
@@ -16557,6 +18531,7 @@ var CompositionRunStatusSchema = _enum([
|
|
|
16557
18531
|
"starting",
|
|
16558
18532
|
"running",
|
|
16559
18533
|
"degraded",
|
|
18534
|
+
"incomplete",
|
|
16560
18535
|
"failed"
|
|
16561
18536
|
]);
|
|
16562
18537
|
var CompositionFieldStateKindSchema = _enum([
|
|
@@ -16606,6 +18581,13 @@ var ComposerUnreadableBlockSchema = object({
|
|
|
16606
18581
|
/** The parse error, in the operator's words. */
|
|
16607
18582
|
error: string()
|
|
16608
18583
|
});
|
|
18584
|
+
/** A confirmed release the hub did not accept. `deviceId` is the claim's device. */
|
|
18585
|
+
var UnreleasedClaimSchema = object({
|
|
18586
|
+
deviceId: number().int(),
|
|
18587
|
+
capName: string(),
|
|
18588
|
+
owner: string(),
|
|
18589
|
+
error: string()
|
|
18590
|
+
});
|
|
16609
18591
|
method(object({
|
|
16610
18592
|
/** The shared Blocks integration; null until `core-blocks` has reconciled it. */
|
|
16611
18593
|
integrationId: string().nullable(),
|
|
@@ -16615,7 +18597,13 @@ method(object({
|
|
|
16615
18597
|
/** Operator restarts: rebuild these runtimes and re-resolve their sources. Stores nothing (D62). */
|
|
16616
18598
|
restartBlockIds: array(string()),
|
|
16617
18599
|
/** Composition rows that exist but do not parse: held, never withdrawn, reported failed. */
|
|
16618
|
-
unreadableBlocks: array(ComposerUnreadableBlockSchema)
|
|
18600
|
+
unreadableBlocks: array(ComposerUnreadableBlockSchema),
|
|
18601
|
+
/**
|
|
18602
|
+
* Operator-confirmed deletions. Their claims are released on this apply,
|
|
18603
|
+
* before any replacement block claims. A block that merely vanished from the
|
|
18604
|
+
* snapshot is not listed here and still waits for two applies (D49).
|
|
18605
|
+
*/
|
|
18606
|
+
retiredBlockIds: array(string()).optional()
|
|
16619
18607
|
}), object({
|
|
16620
18608
|
blocks: array(object({
|
|
16621
18609
|
blockId: string(),
|
|
@@ -16627,7 +18615,13 @@ method(object({
|
|
|
16627
18615
|
* integration unknown, its own rows unread or read empty once). An empty
|
|
16628
18616
|
* apply the caller owes is paid off only by one the composer acted on (D49).
|
|
16629
18617
|
*/
|
|
16630
|
-
acted: boolean()
|
|
18618
|
+
acted: boolean(),
|
|
18619
|
+
/**
|
|
18620
|
+
* Confirmed releases this apply tried and the hub did not accept. Empty when
|
|
18621
|
+
* every one landed (or there was nothing to hand back). Absent on a result
|
|
18622
|
+
* that never got that far.
|
|
18623
|
+
*/
|
|
18624
|
+
unreleasedClaims: array(UnreleasedClaimSchema).optional()
|
|
16631
18625
|
}), {
|
|
16632
18626
|
kind: "mutation",
|
|
16633
18627
|
auth: "admin"
|
|
@@ -16751,6 +18745,7 @@ var CoreBlockStatusSchema = _enum([
|
|
|
16751
18745
|
"starting",
|
|
16752
18746
|
"running",
|
|
16753
18747
|
"degraded",
|
|
18748
|
+
"incomplete",
|
|
16754
18749
|
"failed"
|
|
16755
18750
|
]);
|
|
16756
18751
|
/** path → TypeScript source for a multi-file block. */
|
|
@@ -39019,7 +41014,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
|
|
|
39019
41014
|
* `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
|
|
39020
41015
|
* operator's casing. The registry matches labels trimmed + case-insensitively
|
|
39021
41016
|
* everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
|
|
39022
|
-
* case-only rename (`
|
|
41017
|
+
* case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
|
|
39023
41018
|
* map keyed on the displayed casing would orphan its entry on exactly that
|
|
39024
41019
|
* edit. Consumers join by keying their own label through `locationIconKey`.
|
|
39025
41020
|
*/
|
|
@@ -39044,7 +41039,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39044
41039
|
/**
|
|
39045
41040
|
* A SITE ZONE — a named part of the property that several locations belong to.
|
|
39046
41041
|
*
|
|
39047
|
-
* "
|
|
41042
|
+
* "Night zone" holds every bedroom; "Zona giorno" the living room and the
|
|
39048
41043
|
* kitchen. A camera belongs to exactly one location, and a location to at most
|
|
39049
41044
|
* one zone, so a camera's zone is derived and never stored on the device: the
|
|
39050
41045
|
* whole point of this entity is that grouping rooms touches no device row.
|
|
@@ -39073,7 +41068,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39073
41068
|
* the locations inside it.
|
|
39074
41069
|
*
|
|
39075
41070
|
* The LABEL is carried alongside the key because the key is lossy on purpose —
|
|
39076
|
-
* a surface must show "
|
|
41071
|
+
* a surface must show "Night zone", not "night zone". Locations are carried
|
|
39077
41072
|
* here, rather than left to a second call, because every consumer wants both
|
|
39078
41073
|
* at once and a viewer that asked twice could render a zone whose membership
|
|
39079
41074
|
* it has not fetched yet.
|
|
@@ -41267,8 +43262,8 @@ var LoadContributionSchema = object({
|
|
|
41267
43262
|
"unattributable"
|
|
41268
43263
|
]),
|
|
41269
43264
|
/**
|
|
41270
|
-
* What ONE entry is, in the contributor's own words — `
|
|
41271
|
-
* `
|
|
43265
|
+
* What ONE entry is, in the contributor's own words — `101/high`,
|
|
43266
|
+
* `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
|
|
41272
43267
|
* family and inventing a common one would lose the only information that
|
|
41273
43268
|
* makes two entries for the same camera distinguishable.
|
|
41274
43269
|
*/
|
|
@@ -42938,6 +44933,381 @@ var _macroLookup = /* @__PURE__ */ new Map();
|
|
|
42938
44933
|
for (const [k, v] of Object.entries(YAMNET_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
42939
44934
|
for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
42940
44935
|
/**
|
|
44936
|
+
* Palette entry ids (D939). Audio is the one gradient; `audio-*` leaves are
|
|
44937
|
+
* not entries. `heatmapScrub` is a mark, not an event kind.
|
|
44938
|
+
*/
|
|
44939
|
+
var PALETTE_ENTRY_IDS = [
|
|
44940
|
+
"motion",
|
|
44941
|
+
"audio",
|
|
44942
|
+
"recording",
|
|
44943
|
+
"live",
|
|
44944
|
+
"heatmapScrub",
|
|
44945
|
+
"person",
|
|
44946
|
+
"vehicle",
|
|
44947
|
+
"animal",
|
|
44948
|
+
"package",
|
|
44949
|
+
"sensor",
|
|
44950
|
+
"control",
|
|
44951
|
+
"face",
|
|
44952
|
+
"plate",
|
|
44953
|
+
"car",
|
|
44954
|
+
"truck",
|
|
44955
|
+
"bus",
|
|
44956
|
+
"motorcycle",
|
|
44957
|
+
"bicycle",
|
|
44958
|
+
"airplane",
|
|
44959
|
+
"boat",
|
|
44960
|
+
"train",
|
|
44961
|
+
"bird",
|
|
44962
|
+
"dog",
|
|
44963
|
+
"cat",
|
|
44964
|
+
"horse",
|
|
44965
|
+
"sheep",
|
|
44966
|
+
"cow",
|
|
44967
|
+
"elephant",
|
|
44968
|
+
"bear",
|
|
44969
|
+
"zebra",
|
|
44970
|
+
"giraffe",
|
|
44971
|
+
"package-delivered",
|
|
44972
|
+
"package-picked-up",
|
|
44973
|
+
"suitcase",
|
|
44974
|
+
"backpack",
|
|
44975
|
+
"handbag",
|
|
44976
|
+
"contact",
|
|
44977
|
+
"motion-sensor",
|
|
44978
|
+
"smoke",
|
|
44979
|
+
"flood",
|
|
44980
|
+
"gas",
|
|
44981
|
+
"carbon-monoxide",
|
|
44982
|
+
"vibration",
|
|
44983
|
+
"tamper",
|
|
44984
|
+
"presence",
|
|
44985
|
+
"enum-sensor",
|
|
44986
|
+
"device-event",
|
|
44987
|
+
"lock",
|
|
44988
|
+
"cover",
|
|
44989
|
+
"switch",
|
|
44990
|
+
"siren",
|
|
44991
|
+
"button",
|
|
44992
|
+
"doorbell"
|
|
44993
|
+
];
|
|
44994
|
+
var AUDIO_ENTRY_ID = "audio";
|
|
44995
|
+
/** Six rungs, quiet → loud. The opaque end is the entry's hex. */
|
|
44996
|
+
var AUDIO_GRADIENT_ALPHAS = [
|
|
44997
|
+
.3,
|
|
44998
|
+
.42,
|
|
44999
|
+
.55,
|
|
45000
|
+
.7,
|
|
45001
|
+
.85,
|
|
45002
|
+
1
|
|
45003
|
+
];
|
|
45004
|
+
var PALETTE_PRESET_IDS = [
|
|
45005
|
+
"camstack",
|
|
45006
|
+
"high-contrast",
|
|
45007
|
+
"okabe-ito"
|
|
45008
|
+
];
|
|
45009
|
+
/** Frozen palette tables (D939). The spec refuses a table that breaks the rule. */
|
|
45010
|
+
var CAMSTACK_HEX = {
|
|
45011
|
+
motion: "#d946ef",
|
|
45012
|
+
audio: "#059eb8",
|
|
45013
|
+
recording: "#ef4444",
|
|
45014
|
+
live: "#8d7a00",
|
|
45015
|
+
heatmapScrub: "#4b32ff",
|
|
45016
|
+
person: "#11a64c",
|
|
45017
|
+
vehicle: "#3b82f6",
|
|
45018
|
+
animal: "#ea6a09",
|
|
45019
|
+
package: "#924667",
|
|
45020
|
+
sensor: "#624bbc",
|
|
45021
|
+
control: "#944d24",
|
|
45022
|
+
face: "#ed4f8d",
|
|
45023
|
+
plate: "#4b7027",
|
|
45024
|
+
car: "#9684cf",
|
|
45025
|
+
truck: "#0f9b89",
|
|
45026
|
+
bus: "#a734a9",
|
|
45027
|
+
motorcycle: "#c1133a",
|
|
45028
|
+
bicycle: "#0e6a9b",
|
|
45029
|
+
airplane: "#7c9928",
|
|
45030
|
+
boat: "#b17933",
|
|
45031
|
+
train: "#ad6ca3",
|
|
45032
|
+
bird: "#0f7c55",
|
|
45033
|
+
dog: "#c82700",
|
|
45034
|
+
cat: "#7268f2",
|
|
45035
|
+
horse: "#cb795e",
|
|
45036
|
+
sheep: "#b8636b",
|
|
45037
|
+
cow: "#cb2969",
|
|
45038
|
+
elephant: "#1158d2",
|
|
45039
|
+
bear: "#8d5e00",
|
|
45040
|
+
zebra: "#0097d6",
|
|
45041
|
+
giraffe: "#8f61bb",
|
|
45042
|
+
"package-delivered": "#cd3f9b",
|
|
45043
|
+
"package-picked-up": "#388a08",
|
|
45044
|
+
suitcase: "#666800",
|
|
45045
|
+
backpack: "#ec5022",
|
|
45046
|
+
handbag: "#a76ef8",
|
|
45047
|
+
contact: "#ab5a49",
|
|
45048
|
+
"motion-sensor": "#b95d1a",
|
|
45049
|
+
smoke: "#dd3858",
|
|
45050
|
+
flood: "#b31e7d",
|
|
45051
|
+
gas: "#5b70b5",
|
|
45052
|
+
"carbon-monoxide": "#7b4e8e",
|
|
45053
|
+
vibration: "#e65bba",
|
|
45054
|
+
tamper: "#98464b",
|
|
45055
|
+
presence: "#3a9468",
|
|
45056
|
+
"enum-sensor": "#7885f8",
|
|
45057
|
+
"device-event": "#8c43c8",
|
|
45058
|
+
lock: "#649653",
|
|
45059
|
+
cover: "#c67597",
|
|
45060
|
+
switch: "#7a812a",
|
|
45061
|
+
siren: "#ac5d7f",
|
|
45062
|
+
button: "#b276cd",
|
|
45063
|
+
doorbell: "#0087ab"
|
|
45064
|
+
};
|
|
45065
|
+
var CAMSTACK_FALLBACK = [
|
|
45066
|
+
"#b34dc7",
|
|
45067
|
+
"#1d7d34",
|
|
45068
|
+
"#db6b6c",
|
|
45069
|
+
"#a43d29",
|
|
45070
|
+
"#0e6ee6",
|
|
45071
|
+
"#29a10b",
|
|
45072
|
+
"#a98731",
|
|
45073
|
+
"#0181c6"
|
|
45074
|
+
];
|
|
45075
|
+
var HIGH_CONTRAST_HEX = {
|
|
45076
|
+
motion: "#964360",
|
|
45077
|
+
audio: "#23a132",
|
|
45078
|
+
recording: "#2494ca",
|
|
45079
|
+
live: "#bd7e2b",
|
|
45080
|
+
heatmapScrub: "#ad6eea",
|
|
45081
|
+
person: "#62611e",
|
|
45082
|
+
vehicle: "#f4534c",
|
|
45083
|
+
animal: "#1556cd",
|
|
45084
|
+
package: "#9c4415",
|
|
45085
|
+
sensor: "#066c48",
|
|
45086
|
+
control: "#f2479f",
|
|
45087
|
+
face: "#139d8a",
|
|
45088
|
+
plate: "#909024",
|
|
45089
|
+
car: "#8e35ab",
|
|
45090
|
+
truck: "#bd0b2b",
|
|
45091
|
+
bus: "#7a88ca",
|
|
45092
|
+
motorcycle: "#e26725",
|
|
45093
|
+
bicycle: "#a6679b",
|
|
45094
|
+
airplane: "#7c5720",
|
|
45095
|
+
boat: "#467a1b",
|
|
45096
|
+
train: "#6f65a4",
|
|
45097
|
+
bird: "#cb717f",
|
|
45098
|
+
dog: "#c62490",
|
|
45099
|
+
cat: "#b36850",
|
|
45100
|
+
horse: "#1872ac",
|
|
45101
|
+
sheep: "#927939",
|
|
45102
|
+
cow: "#428a5c",
|
|
45103
|
+
elephant: "#d41160",
|
|
45104
|
+
bear: "#799453",
|
|
45105
|
+
zebra: "#a85455",
|
|
45106
|
+
giraffe: "#746be8",
|
|
45107
|
+
"package-delivered": "#824a80",
|
|
45108
|
+
"package-picked-up": "#614ac1",
|
|
45109
|
+
suitcase: "#2f77f3",
|
|
45110
|
+
backpack: "#fa476d",
|
|
45111
|
+
handbag: "#c14cbe",
|
|
45112
|
+
contact: "#c83921",
|
|
45113
|
+
"motion-sensor": "#a07ebd",
|
|
45114
|
+
smoke: "#a25b13",
|
|
45115
|
+
flood: "#526bab",
|
|
45116
|
+
gas: "#924938",
|
|
45117
|
+
"carbon-monoxide": "#bb7e53",
|
|
45118
|
+
vibration: "#b66182",
|
|
45119
|
+
tamper: "#3c6931",
|
|
45120
|
+
presence: "#6c851d",
|
|
45121
|
+
"enum-sensor": "#ad2d48",
|
|
45122
|
+
"device-event": "#5e9b04",
|
|
45123
|
+
lock: "#00a062",
|
|
45124
|
+
cover: "#ad8624",
|
|
45125
|
+
switch: "#d05259",
|
|
45126
|
+
siren: "#cd67b3",
|
|
45127
|
+
button: "#c9746a",
|
|
45128
|
+
doorbell: "#338eeb"
|
|
45129
|
+
};
|
|
45130
|
+
var HIGH_CONTRAST_FALLBACK = [
|
|
45131
|
+
"#817f3b",
|
|
45132
|
+
"#a0733e",
|
|
45133
|
+
"#8658b2",
|
|
45134
|
+
"#956301",
|
|
45135
|
+
"#bc652d",
|
|
45136
|
+
"#647331",
|
|
45137
|
+
"#a14c9e",
|
|
45138
|
+
"#d14e71"
|
|
45139
|
+
];
|
|
45140
|
+
var OKABE_ITO_HEX = {
|
|
45141
|
+
motion: "#b88128",
|
|
45142
|
+
audio: "#1096c8",
|
|
45143
|
+
recording: "#009e73",
|
|
45144
|
+
live: "#9c8c22",
|
|
45145
|
+
heatmapScrub: "#0072b2",
|
|
45146
|
+
person: "#d55e00",
|
|
45147
|
+
vehicle: "#c0739f",
|
|
45148
|
+
animal: "#226d18",
|
|
45149
|
+
package: "#91446c",
|
|
45150
|
+
sensor: "#217b56",
|
|
45151
|
+
control: "#648647",
|
|
45152
|
+
face: "#c22998",
|
|
45153
|
+
plate: "#fa4575",
|
|
45154
|
+
car: "#956301",
|
|
45155
|
+
truck: "#2f77f3",
|
|
45156
|
+
bus: "#7a4e86",
|
|
45157
|
+
motorcycle: "#f54597",
|
|
45158
|
+
bicycle: "#bb3e75",
|
|
45159
|
+
airplane: "#e054c0",
|
|
45160
|
+
boat: "#457942",
|
|
45161
|
+
train: "#867afa",
|
|
45162
|
+
bird: "#88914c",
|
|
45163
|
+
dog: "#1556cd",
|
|
45164
|
+
cat: "#71702c",
|
|
45165
|
+
horse: "#9b4fa4",
|
|
45166
|
+
sheep: "#c0559d",
|
|
45167
|
+
cow: "#d14f65",
|
|
45168
|
+
elephant: "#98470f",
|
|
45169
|
+
bear: "#595896",
|
|
45170
|
+
zebra: "#96790e",
|
|
45171
|
+
giraffe: "#cb717b",
|
|
45172
|
+
"package-delivered": "#139d8a",
|
|
45173
|
+
"package-picked-up": "#906ead",
|
|
45174
|
+
suitcase: "#d02939",
|
|
45175
|
+
backpack: "#d41160",
|
|
45176
|
+
handbag: "#f64f54",
|
|
45177
|
+
contact: "#7258d2",
|
|
45178
|
+
"motion-sensor": "#b66182",
|
|
45179
|
+
smoke: "#627abb",
|
|
45180
|
+
flood: "#b86ae4",
|
|
45181
|
+
gas: "#a95261",
|
|
45182
|
+
"carbon-monoxide": "#c65d3c",
|
|
45183
|
+
vibration: "#7a40b7",
|
|
45184
|
+
tamper: "#914b34",
|
|
45185
|
+
presence: "#9481c3",
|
|
45186
|
+
"enum-sensor": "#ac6d47",
|
|
45187
|
+
"device-event": "#7b6fce",
|
|
45188
|
+
lock: "#c67662",
|
|
45189
|
+
cover: "#a6564d",
|
|
45190
|
+
switch: "#ad2c4e",
|
|
45191
|
+
siren: "#348e08",
|
|
45192
|
+
button: "#d27303",
|
|
45193
|
+
doorbell: "#55770f"
|
|
45194
|
+
};
|
|
45195
|
+
var OKABE_ITO_FALLBACK = [
|
|
45196
|
+
"#9a3784",
|
|
45197
|
+
"#a7392c",
|
|
45198
|
+
"#409d50",
|
|
45199
|
+
"#6987e7",
|
|
45200
|
+
"#ee5b3d",
|
|
45201
|
+
"#c0430d",
|
|
45202
|
+
"#af79b3",
|
|
45203
|
+
"#4b6628"
|
|
45204
|
+
];
|
|
45205
|
+
/**
|
|
45206
|
+
* The display palette (D939). One table of colours, three presets, one
|
|
45207
|
+
* validator. Taxonomy colours and every consumer read this — there is no
|
|
45208
|
+
* second hex table.
|
|
45209
|
+
*/
|
|
45210
|
+
var paletteHexSchema = string().regex(/^#[0-9a-f]{6}$/);
|
|
45211
|
+
var paletteSwatchSchema = discriminatedUnion("form", [object({
|
|
45212
|
+
form: literal("solid"),
|
|
45213
|
+
hex: paletteHexSchema
|
|
45214
|
+
}), object({
|
|
45215
|
+
form: literal("gradient"),
|
|
45216
|
+
hex: paletteHexSchema,
|
|
45217
|
+
alphas: array(number().gt(0).lte(1)).length(AUDIO_GRADIENT_ALPHAS.length)
|
|
45218
|
+
})]);
|
|
45219
|
+
var paletteReadySchema = object({
|
|
45220
|
+
status: literal("ready"),
|
|
45221
|
+
presetId: _enum(PALETTE_PRESET_IDS),
|
|
45222
|
+
customized: boolean(),
|
|
45223
|
+
source: _enum(["stored", "unconfigured"]),
|
|
45224
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
45225
|
+
fallbacks: array(paletteHexSchema).length(8)
|
|
45226
|
+
});
|
|
45227
|
+
var paletteResultSchema = discriminatedUnion("status", [paletteReadySchema, object({
|
|
45228
|
+
status: literal("unknown"),
|
|
45229
|
+
reason: string()
|
|
45230
|
+
})]);
|
|
45231
|
+
var setPaletteInputSchema = union([object({ presetId: string() }), object({
|
|
45232
|
+
presetId: string(),
|
|
45233
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
45234
|
+
})]);
|
|
45235
|
+
object({
|
|
45236
|
+
presetId: string(),
|
|
45237
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
45238
|
+
});
|
|
45239
|
+
function solid(hex) {
|
|
45240
|
+
return {
|
|
45241
|
+
form: "solid",
|
|
45242
|
+
hex
|
|
45243
|
+
};
|
|
45244
|
+
}
|
|
45245
|
+
function audioGradient(hex) {
|
|
45246
|
+
return {
|
|
45247
|
+
form: "gradient",
|
|
45248
|
+
hex,
|
|
45249
|
+
alphas: [...AUDIO_GRADIENT_ALPHAS]
|
|
45250
|
+
};
|
|
45251
|
+
}
|
|
45252
|
+
function swatchesFrom(hexes) {
|
|
45253
|
+
const out = {};
|
|
45254
|
+
for (const id of PALETTE_ENTRY_IDS) {
|
|
45255
|
+
const hex = hexes[id];
|
|
45256
|
+
if (hex === void 0) throw new Error(`palette table missing ${id}`);
|
|
45257
|
+
out[id] = id === "audio" ? audioGradient(hex) : solid(hex);
|
|
45258
|
+
}
|
|
45259
|
+
return out;
|
|
45260
|
+
}
|
|
45261
|
+
function preset(id, name, hexes, fallbacks) {
|
|
45262
|
+
return {
|
|
45263
|
+
id,
|
|
45264
|
+
name,
|
|
45265
|
+
swatches: swatchesFrom(hexes),
|
|
45266
|
+
fallbacks
|
|
45267
|
+
};
|
|
45268
|
+
}
|
|
45269
|
+
var DISPLAY_PRESETS = [
|
|
45270
|
+
preset("camstack", "CamStack", CAMSTACK_HEX, CAMSTACK_FALLBACK),
|
|
45271
|
+
preset("high-contrast", "High contrast", HIGH_CONTRAST_HEX, HIGH_CONTRAST_FALLBACK),
|
|
45272
|
+
preset("okabe-ito", "Colour-blind safe", OKABE_ITO_HEX, OKABE_ITO_FALLBACK)
|
|
45273
|
+
];
|
|
45274
|
+
function presetById(id) {
|
|
45275
|
+
return DISPLAY_PRESETS.find((item) => item.id === id);
|
|
45276
|
+
}
|
|
45277
|
+
function bundledCamstack() {
|
|
45278
|
+
const presetRow = presetById("camstack");
|
|
45279
|
+
if (presetRow === void 0) throw new Error("CamStack preset missing");
|
|
45280
|
+
return readyOf(presetRow, "unconfigured", false);
|
|
45281
|
+
}
|
|
45282
|
+
function readyOf(row, source, customized) {
|
|
45283
|
+
return {
|
|
45284
|
+
status: "ready",
|
|
45285
|
+
presetId: row.id,
|
|
45286
|
+
customized,
|
|
45287
|
+
source,
|
|
45288
|
+
swatches: row.swatches,
|
|
45289
|
+
fallbacks: [...row.fallbacks]
|
|
45290
|
+
};
|
|
45291
|
+
}
|
|
45292
|
+
function hashFallback(kind, fallbacks) {
|
|
45293
|
+
let hash = 0;
|
|
45294
|
+
for (let i = 0; i < kind.length; i++) hash = hash * 31 + (kind.codePointAt(i) ?? 0) >>> 0;
|
|
45295
|
+
const hex = fallbacks[hash % fallbacks.length];
|
|
45296
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
45297
|
+
return hex;
|
|
45298
|
+
}
|
|
45299
|
+
/** Colour a kind paints with. Audio leaves share the audio gradient's hex. */
|
|
45300
|
+
function paintHex(swatches, fallbacks, kind) {
|
|
45301
|
+
const key = kind.trim().toLowerCase();
|
|
45302
|
+
if (key.startsWith("audio-")) {
|
|
45303
|
+
const audio = swatches[AUDIO_ENTRY_ID];
|
|
45304
|
+
return audio !== void 0 ? audio.hex : hashFallback(key, fallbacks);
|
|
45305
|
+
}
|
|
45306
|
+
const direct = swatches[key];
|
|
45307
|
+
if (direct !== void 0) return direct.hex;
|
|
45308
|
+
return hashFallback(key, fallbacks);
|
|
45309
|
+
}
|
|
45310
|
+
/**
|
|
42941
45311
|
* Unified event-kind taxonomy — THE single source of truth for
|
|
42942
45312
|
* `kind → { parentKind, category, level, color, iconId, labelKey, label,
|
|
42943
45313
|
* icon }`.
|
|
@@ -42951,109 +45321,88 @@ for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set
|
|
|
42951
45321
|
* - `addon-post-analysis/shared/frame/box-drawer.ts` (DEFAULT_COLOR)
|
|
42952
45322
|
* - the COCO / audio class maps (macro ↔ sub relationships)
|
|
42953
45323
|
*
|
|
42954
|
-
* The DATA (serializable —
|
|
42955
|
-
* `@camstack/types`.
|
|
42956
|
-
*
|
|
42957
|
-
*
|
|
42958
|
-
*
|
|
45324
|
+
* The DATA (serializable — parentKind / iconId / labelKey) lives here in
|
|
45325
|
+
* `@camstack/types`. Colour is NOT a second table: each entry's `color` is
|
|
45326
|
+
* the bundled CamStack display palette (D939). The effective cluster palette
|
|
45327
|
+
* is the `display-palette` capability. The UI-side mapping `iconId → lucide
|
|
45328
|
+
* component` and `labelKey → t()` lives in `@camstack/ui-library`.
|
|
42959
45329
|
*
|
|
42960
45330
|
* Two levels only (v1 YAGNI): macro → sub. `person` is a leaf macro.
|
|
42961
45331
|
*/
|
|
42962
|
-
var
|
|
42963
|
-
|
|
42964
|
-
|
|
42965
|
-
|
|
42966
|
-
|
|
42967
|
-
|
|
42968
|
-
|
|
42969
|
-
|
|
42970
|
-
|
|
42971
|
-
|
|
42972
|
-
};
|
|
42973
|
-
var DETECTION_SUB_COLORS = {
|
|
42974
|
-
car: "#f59e0b",
|
|
42975
|
-
truck: "#d97706",
|
|
42976
|
-
bus: "#b45309",
|
|
42977
|
-
motorcycle: "#eab308",
|
|
42978
|
-
bicycle: "#ca8a04",
|
|
42979
|
-
airplane: "#60a5fa",
|
|
42980
|
-
boat: "#2563eb",
|
|
42981
|
-
train: "#1d4ed8",
|
|
42982
|
-
bird: "#14b8a6",
|
|
42983
|
-
dog: "#84cc16",
|
|
42984
|
-
cat: "#f97316",
|
|
42985
|
-
horse: "#a16207",
|
|
42986
|
-
sheep: "#a3a3a3",
|
|
42987
|
-
cow: "#78716c",
|
|
42988
|
-
elephant: "#6b7280",
|
|
42989
|
-
bear: "#7c2d12",
|
|
42990
|
-
zebra: "#404040",
|
|
42991
|
-
giraffe: "#d4a373"
|
|
42992
|
-
};
|
|
45332
|
+
var BUNDLED_PALETTE = bundledCamstack();
|
|
45333
|
+
function kindColor(kind) {
|
|
45334
|
+
return paintHex(BUNDLED_PALETTE.swatches, BUNDLED_PALETTE.fallbacks, kind);
|
|
45335
|
+
}
|
|
45336
|
+
function firstFallback(fallbacks) {
|
|
45337
|
+
const hex = fallbacks[0];
|
|
45338
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
45339
|
+
return hex;
|
|
45340
|
+
}
|
|
45341
|
+
firstFallback(BUNDLED_PALETTE.fallbacks);
|
|
42993
45342
|
function titleCase(id) {
|
|
42994
45343
|
return id.split(/[-_ ]/).filter((p) => p.length > 0).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
|
|
42995
45344
|
}
|
|
42996
45345
|
var entries = /* @__PURE__ */ new Map();
|
|
42997
|
-
function macro(kind, category,
|
|
45346
|
+
function macro(kind, category, iconId, label) {
|
|
42998
45347
|
entries.set(kind, {
|
|
42999
45348
|
kind,
|
|
43000
45349
|
parentKind: null,
|
|
43001
45350
|
level: "macro",
|
|
43002
45351
|
category,
|
|
43003
|
-
color,
|
|
45352
|
+
color: kindColor(kind),
|
|
43004
45353
|
iconId,
|
|
43005
45354
|
labelKey: `eventKind.${kind}`,
|
|
43006
45355
|
label
|
|
43007
45356
|
});
|
|
43008
45357
|
}
|
|
43009
|
-
function sub(kind, parentKind, category,
|
|
45358
|
+
function sub(kind, parentKind, category, iconId, label) {
|
|
43010
45359
|
entries.set(kind, {
|
|
43011
45360
|
kind,
|
|
43012
45361
|
parentKind,
|
|
43013
45362
|
level: "sub",
|
|
43014
45363
|
category,
|
|
43015
|
-
color,
|
|
45364
|
+
color: kindColor(kind),
|
|
43016
45365
|
iconId,
|
|
43017
45366
|
labelKey: `eventKind.${kind}`,
|
|
43018
45367
|
label
|
|
43019
45368
|
});
|
|
43020
45369
|
}
|
|
43021
|
-
macro("motion", "motion",
|
|
43022
|
-
macro("audio", "audio",
|
|
43023
|
-
macro("person", "detection",
|
|
43024
|
-
macro("vehicle", "detection",
|
|
43025
|
-
macro("animal", "detection",
|
|
43026
|
-
macro("package", "package",
|
|
43027
|
-
macro("sensor", "sensor",
|
|
43028
|
-
macro("control", "control",
|
|
45370
|
+
macro("motion", "motion", "motion", "Motion");
|
|
45371
|
+
macro("audio", "audio", "audio", "Audio");
|
|
45372
|
+
macro("person", "detection", "person", "Person");
|
|
45373
|
+
macro("vehicle", "detection", "vehicle", "Vehicle");
|
|
45374
|
+
macro("animal", "detection", "animal", "Animal");
|
|
45375
|
+
macro("package", "package", "package", "Package");
|
|
45376
|
+
macro("sensor", "sensor", "sensor", "Sensor");
|
|
45377
|
+
macro("control", "control", "control", "Control");
|
|
43029
45378
|
for (const [cocoClass, macroClass] of Object.entries(COCO_TO_MACRO.mapping)) {
|
|
43030
45379
|
if (macroClass !== "vehicle" && macroClass !== "animal") continue;
|
|
43031
45380
|
if (entries.has(cocoClass)) continue;
|
|
43032
|
-
sub(cocoClass, macroClass, "detection",
|
|
45381
|
+
sub(cocoClass, macroClass, "detection", cocoClass, titleCase(cocoClass));
|
|
43033
45382
|
}
|
|
43034
|
-
sub("package-delivered", "package", "package",
|
|
43035
|
-
sub("package-picked-up", "package", "package",
|
|
43036
|
-
sub("contact", "sensor", "sensor", "
|
|
43037
|
-
sub("motion-sensor", "sensor", "sensor",
|
|
43038
|
-
sub("smoke", "sensor", "sensor", "
|
|
43039
|
-
sub("flood", "sensor", "sensor", "
|
|
43040
|
-
sub("gas", "sensor", "sensor", "
|
|
43041
|
-
sub("carbon-monoxide", "sensor", "sensor", "
|
|
43042
|
-
sub("vibration", "sensor", "sensor", "
|
|
43043
|
-
sub("tamper", "sensor", "sensor", "
|
|
43044
|
-
sub("presence", "sensor", "sensor", "
|
|
43045
|
-
sub("enum-sensor", "sensor", "sensor",
|
|
43046
|
-
sub("device-event", "sensor", "sensor", "
|
|
43047
|
-
sub("lock", "control", "control", "
|
|
43048
|
-
sub("cover", "control", "control", "
|
|
43049
|
-
sub("switch", "control", "control",
|
|
43050
|
-
sub("siren", "control", "control", "
|
|
43051
|
-
sub("button", "control", "control", "
|
|
43052
|
-
sub("doorbell", "control", "control", "
|
|
45383
|
+
sub("package-delivered", "package", "package", "package", "Package delivered");
|
|
45384
|
+
sub("package-picked-up", "package", "package", "package", "Package picked up");
|
|
45385
|
+
sub("contact", "sensor", "sensor", "door", "Contact");
|
|
45386
|
+
sub("motion-sensor", "sensor", "sensor", "pir", "Motion sensor");
|
|
45387
|
+
sub("smoke", "sensor", "sensor", "smoke", "Smoke");
|
|
45388
|
+
sub("flood", "sensor", "sensor", "water", "Water leak");
|
|
45389
|
+
sub("gas", "sensor", "sensor", "gas", "Gas");
|
|
45390
|
+
sub("carbon-monoxide", "sensor", "sensor", "smoke", "Carbon monoxide");
|
|
45391
|
+
sub("vibration", "sensor", "sensor", "vibration", "Vibration");
|
|
45392
|
+
sub("tamper", "sensor", "sensor", "tamper", "Tamper");
|
|
45393
|
+
sub("presence", "sensor", "sensor", "presence", "Presence");
|
|
45394
|
+
sub("enum-sensor", "sensor", "sensor", "generic", "Sensor state");
|
|
45395
|
+
sub("device-event", "sensor", "sensor", "button", "Device event");
|
|
45396
|
+
sub("lock", "control", "control", "lock", "Lock");
|
|
45397
|
+
sub("cover", "control", "control", "door", "Cover");
|
|
45398
|
+
sub("switch", "control", "control", "switch", "Switch");
|
|
45399
|
+
sub("siren", "control", "control", "siren", "Siren");
|
|
45400
|
+
sub("button", "control", "control", "button", "Button");
|
|
45401
|
+
sub("doorbell", "control", "control", "doorbell", "Doorbell");
|
|
43053
45402
|
for (const l of AUDIO_MACRO_LABELS) {
|
|
43054
45403
|
const kind = `audio-${l.id}`;
|
|
43055
45404
|
if (entries.has(kind)) continue;
|
|
43056
|
-
sub(kind, "audio", "audio",
|
|
45405
|
+
sub(kind, "audio", "audio", kind, l.name);
|
|
43057
45406
|
}
|
|
43058
45407
|
/** The complete taxonomy dictionary, keyed by kind. */
|
|
43059
45408
|
var EVENT_TAXONOMY = Object.freeze(Object.fromEntries(entries));
|
|
@@ -43940,7 +46289,7 @@ var NcConditionsSchema = object({
|
|
|
43940
46289
|
* with the list under it is worse than no switch (D62).
|
|
43941
46290
|
*
|
|
43942
46291
|
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
43943
|
-
* renameable, and a rule authored on "
|
|
46292
|
+
* renameable, and a rule authored on "Alice" went silently dark the moment
|
|
43944
46293
|
* the operator fixed the spelling. The id reaches the record on
|
|
43945
46294
|
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
43946
46295
|
* `{{label}}` renders.
|
|
@@ -44491,7 +46840,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
44491
46840
|
* A rule scoped to one camera and one zone silently became a rule that
|
|
44492
46841
|
* matches EVERY event on EVERY camera, and lost its `media` policy
|
|
44493
46842
|
* (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
|
|
44494
|
-
* live on 2026-08-12: a rule scoped to device
|
|
46843
|
+
* live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
|
|
44495
46844
|
* within a minute of a two-field patch.
|
|
44496
46845
|
*
|
|
44497
46846
|
* So every defaulted field is re-declared here WITHOUT its default. The
|
|
@@ -46320,7 +48669,7 @@ var LabelAttributionSchema = object({
|
|
|
46320
48669
|
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
46321
48670
|
*
|
|
46322
48671
|
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
46323
|
-
* notification rule authored on "
|
|
48672
|
+
* notification rule authored on "Alice" stopped matching the moment the
|
|
46324
48673
|
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
46325
48674
|
* the thing that does not move, so it is what a rule matches on
|
|
46326
48675
|
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
@@ -48859,7 +51208,7 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
48859
51208
|
/**
|
|
48860
51209
|
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
48861
51210
|
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
48862
|
-
* step (a
|
|
51211
|
+
* step (a plus catalog `license_plate` for `plate-detection`): the step is
|
|
48863
51212
|
* NOT inferred, these boxes are its output, and its children (the plate
|
|
48864
51213
|
* reader) run on them through their own crop policy. Boxes are in the
|
|
48865
51214
|
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
@@ -50536,7 +52885,7 @@ var RunnerCameraConfigSchema = object({
|
|
|
50536
52885
|
* detection session that asks for history. What shipped was a last-moment
|
|
50537
52886
|
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
50538
52887
|
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
50539
|
-
* worth. Device
|
|
52888
|
+
* worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
|
|
50540
52889
|
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
50541
52890
|
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
50542
52891
|
* was decoded, and was freed.
|
|
@@ -52566,7 +54915,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
|
|
|
52566
54915
|
* The signals a device can emit to WAKE its own stream.
|
|
52567
54916
|
*
|
|
52568
54917
|
* A camera whose stream is built on demand sleeps until something asks for it,
|
|
52569
|
-
* and "something" cannot be a consumer that is merely attached — a
|
|
54918
|
+
* and "something" cannot be a consumer that is merely attached — a external-catalog
|
|
52570
54919
|
* puller holds a session open for ever, and treating that as demand would keep
|
|
52571
54920
|
* a battery camera awake for ever, which is the whole thing the battery is for
|
|
52572
54921
|
* (D173). So the wake has to come from the CAMERA: an event it noticed by
|
|
@@ -53286,7 +55635,7 @@ var ClipSchema = object({
|
|
|
53286
55635
|
* {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
|
|
53287
55636
|
*
|
|
53288
55637
|
* Bounded because it is not a payload the surface pages through: one visit on
|
|
53289
|
-
* device
|
|
55638
|
+
* device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
|
|
53290
55639
|
* camera-day. Read {@link eventCount} for the true total.
|
|
53291
55640
|
*/
|
|
53292
55641
|
eventIds: array(string()).optional(),
|
|
@@ -53431,7 +55780,7 @@ var ClipPlaybackSchema = object({
|
|
|
53431
55780
|
* camera has no recordings", which is the defect this whole line of work is
|
|
53432
55781
|
* about: a battery camera nobody woke (`sleeping`), a camera that could not be
|
|
53433
55782
|
* reached at all (`unreachable`, also what a provider that THREW reports), a
|
|
53434
|
-
* camera whose SD card is not mounted (`no-storage`, measured on
|
|
55783
|
+
* camera whose SD card is not mounted (`no-storage`, measured on 106 —
|
|
53435
55784
|
* `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
|
|
53436
55785
|
* camera whose OWN index disagrees with its OWN calendar (`index-empty`,
|
|
53437
55786
|
* measured on 618: the calendar marks 3–20 September, days 6–20 list zero
|
|
@@ -53696,7 +56045,7 @@ DeviceType.Camera, method(object({
|
|
|
53696
56045
|
*
|
|
53697
56046
|
* It was optional, documented as "absent means the device's BOUND
|
|
53698
56047
|
* provider, which is CamStack on every camera". No code implemented
|
|
53699
|
-
* that. Measured on the live hub 2026-09-20 — device
|
|
56048
|
+
* that. Measured on the live hub 2026-09-20 — device 107, bound to
|
|
53700
56049
|
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
53701
56050
|
* answered SIX rows, three from each source, merged newest-first:
|
|
53702
56051
|
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
@@ -54911,7 +57260,10 @@ var airQualitySensorCapability = {
|
|
|
54911
57260
|
*/
|
|
54912
57261
|
var AmbientLightSensorStatusSchema = object({
|
|
54913
57262
|
/** Current illuminance in lux (lx). */
|
|
54914
|
-
lux: number().min(0)
|
|
57263
|
+
lux: number().min(0).meta({
|
|
57264
|
+
unit: "lx",
|
|
57265
|
+
label: "Illuminance"
|
|
57266
|
+
}),
|
|
54915
57267
|
/** Ms epoch when the slice was last updated. */
|
|
54916
57268
|
lastFetchedAt: number(),
|
|
54917
57269
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -54954,7 +57306,12 @@ var ambientLightSensorCapability = {
|
|
|
54954
57306
|
} } },
|
|
54955
57307
|
/** Clock fields: written, but excluded from the compare that decides
|
|
54956
57308
|
* whether persisting is worth a SQLite commit. */
|
|
54957
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
57309
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
57310
|
+
customize: {
|
|
57311
|
+
version: 1,
|
|
57312
|
+
advanced: "derive",
|
|
57313
|
+
targets: []
|
|
57314
|
+
}
|
|
54958
57315
|
};
|
|
54959
57316
|
/**
|
|
54960
57317
|
* Per-class audio metrics aggregated over a sliding window.
|
|
@@ -55181,7 +57538,10 @@ var BatteryStatusSchema = object({
|
|
|
55181
57538
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
55182
57539
|
* declines to band a non-finite reading, which is the correct shape.
|
|
55183
57540
|
*/
|
|
55184
|
-
percentage: number().min(0).max(100).nullable()
|
|
57541
|
+
percentage: number().min(0).max(100).nullable().meta({
|
|
57542
|
+
unit: "%",
|
|
57543
|
+
label: "Charge"
|
|
57544
|
+
}),
|
|
55185
57545
|
/**
|
|
55186
57546
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
55187
57547
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -55200,13 +57560,13 @@ var BatteryStatusSchema = object({
|
|
|
55200
57560
|
"solar",
|
|
55201
57561
|
"none",
|
|
55202
57562
|
"unknown"
|
|
55203
|
-
]),
|
|
57563
|
+
]).meta({ label: "Charging source" }),
|
|
55204
57564
|
/**
|
|
55205
57565
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
55206
57566
|
* providers MUST avoid polling during sleep — reading the battery
|
|
55207
57567
|
* wakes the camera up and drains charge.
|
|
55208
57568
|
*/
|
|
55209
|
-
sleeping: boolean(),
|
|
57569
|
+
sleeping: boolean().meta({ label: "Sleeping" }),
|
|
55210
57570
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
55211
57571
|
lastUpdated: number(),
|
|
55212
57572
|
/**
|
|
@@ -55246,7 +57606,7 @@ var BatteryStatusSchema = object({
|
|
|
55246
57606
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
55247
57607
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
55248
57608
|
*/
|
|
55249
|
-
binary: boolean().optional()
|
|
57609
|
+
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
55250
57610
|
});
|
|
55251
57611
|
var BATTERY_DEVICE_TYPES = [
|
|
55252
57612
|
DeviceType.Camera,
|
|
@@ -55260,6 +57620,7 @@ var BATTERY_DEVICE_TYPES = [
|
|
|
55260
57620
|
/** Generic Customize target for the percentage reading (D936). */
|
|
55261
57621
|
var batteryCustomize = {
|
|
55262
57622
|
version: 1,
|
|
57623
|
+
advanced: "derive",
|
|
55263
57624
|
targets: [{
|
|
55264
57625
|
id: "percentage",
|
|
55265
57626
|
cardinality: "scalar",
|
|
@@ -55410,7 +57771,7 @@ onStatusChanged: { data: object({
|
|
|
55410
57771
|
* with the right HomeKit / Alexa display category.
|
|
55411
57772
|
*/
|
|
55412
57773
|
var BinaryStatusSchema = object({
|
|
55413
|
-
on: boolean(),
|
|
57774
|
+
on: boolean().meta({ label: "On" }),
|
|
55414
57775
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
55415
57776
|
lastChangedAt: number()
|
|
55416
57777
|
});
|
|
@@ -55439,7 +57800,12 @@ var binaryCapability = {
|
|
|
55439
57800
|
history: { fields: { on: { kind: "boolean" } } },
|
|
55440
57801
|
/** Clock fields: written, but excluded from the compare that decides
|
|
55441
57802
|
* whether persisting is worth a SQLite commit. */
|
|
55442
|
-
volatileStateFields: ["lastChangedAt"]
|
|
57803
|
+
volatileStateFields: ["lastChangedAt"],
|
|
57804
|
+
customize: {
|
|
57805
|
+
version: 1,
|
|
57806
|
+
advanced: "derive",
|
|
57807
|
+
targets: []
|
|
57808
|
+
}
|
|
55443
57809
|
};
|
|
55444
57810
|
/**
|
|
55445
57811
|
* Dimmable-light brightness control. Co-exists with `switch` on the
|
|
@@ -55772,7 +58138,7 @@ var GridLayoutCellSchema = object({
|
|
|
55772
58138
|
*
|
|
55773
58139
|
* A grid's `high` composes its sources' `high` and its `low` their `low`, so a
|
|
55774
58140
|
* profile is on offer only when EVERY source can serve it. The refusal NAMES
|
|
55775
|
-
* the sources, because "this grid has no low" is not a finding — "
|
|
58141
|
+
* the sources, because "this grid has no low" is not a finding — "101 has no
|
|
55776
58142
|
* low" is, and it is the one an operator can act on.
|
|
55777
58143
|
*/
|
|
55778
58144
|
var GridProfileOfferSchema = object({
|
|
@@ -56948,6 +59314,30 @@ var dayNightCapability = {
|
|
|
56948
59314
|
volatileStateFields: ["lastFetchedAt"]
|
|
56949
59315
|
};
|
|
56950
59316
|
/**
|
|
59317
|
+
* display-palette — the cluster's one colour table (D939).
|
|
59318
|
+
*
|
|
59319
|
+
* Hub singleton. `getPalette` reports `unknown` when the settings store
|
|
59320
|
+
* cannot be read; it does not pretend the bundled preset was stored.
|
|
59321
|
+
* `setPalette` refuses a palette that fails the ΔE / contrast rule and names
|
|
59322
|
+
* the pairs.
|
|
59323
|
+
*/
|
|
59324
|
+
var presetSummarySchema = object({
|
|
59325
|
+
id: string(),
|
|
59326
|
+
name: string(),
|
|
59327
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
59328
|
+
fallbacks: array(string())
|
|
59329
|
+
});
|
|
59330
|
+
method(_void(), paletteResultSchema, {
|
|
59331
|
+
auth: "protected",
|
|
59332
|
+
role: "viewer"
|
|
59333
|
+
}), method(_void(), array(presetSummarySchema).readonly(), {
|
|
59334
|
+
auth: "protected",
|
|
59335
|
+
role: "viewer"
|
|
59336
|
+
}), method(setPaletteInputSchema, paletteReadySchema, {
|
|
59337
|
+
kind: "mutation",
|
|
59338
|
+
auth: "admin"
|
|
59339
|
+
});
|
|
59340
|
+
/**
|
|
56951
59341
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
56952
59342
|
* for every device, regardless of provider — the kernel needs a uniform
|
|
56953
59343
|
* cap-keyed slice for the basic device flags every consumer expects to
|
|
@@ -58280,7 +60670,10 @@ var humidifierCapability = {
|
|
|
58280
60670
|
*/
|
|
58281
60671
|
var HumiditySensorStatusSchema = object({
|
|
58282
60672
|
/** Current relative humidity, 0..100. */
|
|
58283
|
-
percent: number().min(0).max(100)
|
|
60673
|
+
percent: number().min(0).max(100).meta({
|
|
60674
|
+
unit: "%",
|
|
60675
|
+
label: "Humidity"
|
|
60676
|
+
}),
|
|
58284
60677
|
/** Ms epoch when the slice was last updated. */
|
|
58285
60678
|
lastFetchedAt: number(),
|
|
58286
60679
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -58322,7 +60715,12 @@ var humiditySensorCapability = {
|
|
|
58322
60715
|
} } },
|
|
58323
60716
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58324
60717
|
* whether persisting is worth a SQLite commit. */
|
|
58325
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
60718
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
60719
|
+
customize: {
|
|
60720
|
+
version: 1,
|
|
60721
|
+
advanced: "derive",
|
|
60722
|
+
targets: []
|
|
60723
|
+
}
|
|
58326
60724
|
};
|
|
58327
60725
|
/**
|
|
58328
60726
|
* Image display cap. Models a single still image exposed by an integration —
|
|
@@ -61955,9 +64353,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
61955
64353
|
*/
|
|
61956
64354
|
var PowerMeterStatusSchema = object({
|
|
61957
64355
|
/** Instantaneous power draw in watts. */
|
|
61958
|
-
watts: number().optional()
|
|
64356
|
+
watts: number().optional().meta({
|
|
64357
|
+
unit: "W",
|
|
64358
|
+
label: "Power"
|
|
64359
|
+
}),
|
|
61959
64360
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
61960
|
-
kwhTotal: number().optional()
|
|
64361
|
+
kwhTotal: number().optional().meta({
|
|
64362
|
+
unit: "kWh",
|
|
64363
|
+
label: "Energy"
|
|
64364
|
+
}),
|
|
61961
64365
|
/** Voltage in volts. */
|
|
61962
64366
|
volts: number().optional(),
|
|
61963
64367
|
/** Current in amperes. */
|
|
@@ -62042,7 +64446,12 @@ var powerMeterCapability = {
|
|
|
62042
64446
|
} },
|
|
62043
64447
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62044
64448
|
* whether persisting is worth a SQLite commit. */
|
|
62045
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
64449
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
64450
|
+
customize: {
|
|
64451
|
+
version: 1,
|
|
64452
|
+
advanced: "derive",
|
|
64453
|
+
targets: []
|
|
64454
|
+
}
|
|
62046
64455
|
};
|
|
62047
64456
|
/**
|
|
62048
64457
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
@@ -62464,9 +64873,9 @@ var PtzOptionsSchema = object({
|
|
|
62464
64873
|
* Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
|
|
62465
64874
|
* not one of the three cameras honours its own:
|
|
62466
64875
|
*
|
|
62467
|
-
*
|
|
62468
|
-
* 1438
|
|
62469
|
-
* 3836
|
|
64876
|
+
* 107 Camera camera Carol (reolink) preset 0 holds "stanza"
|
|
64877
|
+
* 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
|
|
64878
|
+
* 3836 Camera studio (amcrest) preset 1 holds "Preset1"
|
|
62470
64879
|
*
|
|
62471
64880
|
* So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
|
|
62472
64881
|
* and two of the three swallowed the failure in a bare `catch`. For autotrack
|
|
@@ -62718,7 +65127,7 @@ var RunningStateStatusSchema = object({
|
|
|
62718
65127
|
running: boolean().nullable(),
|
|
62719
65128
|
/** Epoch ms the current boolean began; null while `running` is null. */
|
|
62720
65129
|
since: number().nullable(),
|
|
62721
|
-
source: RunningStateSourceSchema,
|
|
65130
|
+
source: RunningStateSourceSchema.meta({ label: "Source" }),
|
|
62722
65131
|
phase: string().nullable(),
|
|
62723
65132
|
/** null until a reading has been published (D393). */
|
|
62724
65133
|
lastFetchedAt: number().nullable()
|
|
@@ -62732,6 +65141,7 @@ var RUNNING_DEVICE_TYPES = Object.values(DeviceType);
|
|
|
62732
65141
|
/** Generic Customize target for the running boolean (D936). */
|
|
62733
65142
|
var runningCustomize = {
|
|
62734
65143
|
version: 1,
|
|
65144
|
+
advanced: "derive",
|
|
62735
65145
|
targets: [{
|
|
62736
65146
|
id: "running",
|
|
62737
65147
|
cardinality: "scalar",
|
|
@@ -62870,7 +65280,7 @@ var RecordingAvailabilitySchema = object({
|
|
|
62870
65280
|
* would look identical. But the answer used to say nothing about that, so a
|
|
62871
65281
|
* caller asking "what can I export?" read the single preferred profile as
|
|
62872
65282
|
* the only one that exists — on this deployment every camera records `high`
|
|
62873
|
-
* AND `low`, the low tree holding 14 GB for camera
|
|
65283
|
+
* AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
|
|
62874
65284
|
* UI could not see it.
|
|
62875
65285
|
*
|
|
62876
65286
|
* Cheap: it is the same shallow directory read the profile CHOICE already
|
|
@@ -62969,7 +65379,7 @@ var RecordingSourceOptionsSchema = object({
|
|
|
62969
65379
|
* `sparse` = gaps are the absence of one, and must be drawn as such.
|
|
62970
65380
|
*
|
|
62971
65381
|
* Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
|
|
62972
|
-
* of
|
|
65382
|
+
* of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
|
|
62973
65383
|
* pair, and ours answers it per camera from `deriveRecordingMode`. */
|
|
62974
65384
|
coverage: _enum(["continuous", "sparse"]),
|
|
62975
65385
|
/** Where the playhead may be put.
|
|
@@ -63045,7 +65455,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
|
|
|
63045
65455
|
* merely discouraged (D554 amended).
|
|
63046
65456
|
*
|
|
63047
65457
|
* It was learned the expensive way on `videoclips.listClips`: measured
|
|
63048
|
-
* on the live hub 2026-09-20, device
|
|
65458
|
+
* on the live hub 2026-09-20, device 107 bound to `recorder` AND
|
|
63049
65459
|
* `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
|
|
63050
65460
|
* three from each source, merged — `device-collection-dispatch.ts`
|
|
63051
65461
|
* leaves an unpinned fan-out un-narrowed, so absence buys the union the
|
|
@@ -63646,7 +66056,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
|
|
|
63646
66056
|
* on a 10 h window holding 29,393 s of footage every range landed late by the
|
|
63647
66057
|
* gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
|
|
63648
66058
|
* the video was a uniform timelapse, and the log line reported the five ranges
|
|
63649
|
-
* that had been ASKED for (2026-08-13, export `57d14363`, camera
|
|
66059
|
+
* that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
|
|
63650
66060
|
*
|
|
63651
66061
|
* Relative and not absolute epoch, because an absolute epoch would make every
|
|
63652
66062
|
* call site responsible for the same subtraction.
|
|
@@ -64357,7 +66767,7 @@ getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) }
|
|
|
64357
66767
|
* which put a "Scenes" tab on one camera's detail page. That is the wrong shape
|
|
64358
66768
|
* for the thing: a scene is a standing question about the property ("is the bin
|
|
64359
66769
|
* still out"), and the operator's question is "which of my scenes have tripped",
|
|
64360
|
-
* across every camera at once — not "what does camera
|
|
66770
|
+
* across every camera at once — not "what does camera 102 think". Buried one
|
|
64361
66771
|
* camera deep it also could not be found. The surface is now a top-level admin
|
|
64362
66772
|
* page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
|
|
64363
66773
|
* picks the camera inside the create flow, the same shape Events and Faces have.
|
|
@@ -65216,7 +67626,7 @@ var streamParamsCapability = {
|
|
|
65216
67626
|
* `getSettingsUISchema()` surface.
|
|
65217
67627
|
*/
|
|
65218
67628
|
var SwitchStatusSchema = object({
|
|
65219
|
-
on: boolean(),
|
|
67629
|
+
on: boolean().meta({ label: "On" }),
|
|
65220
67630
|
/** Ms epoch of the last state change. Useful for UI "X minutes ago". */
|
|
65221
67631
|
lastChangedAt: number()
|
|
65222
67632
|
});
|
|
@@ -65275,7 +67685,12 @@ var switchCapability = {
|
|
|
65275
67685
|
label: "On",
|
|
65276
67686
|
kind: "boolean"
|
|
65277
67687
|
}
|
|
65278
|
-
}] }
|
|
67688
|
+
}] },
|
|
67689
|
+
customize: {
|
|
67690
|
+
version: 1,
|
|
67691
|
+
advanced: "derive",
|
|
67692
|
+
targets: []
|
|
67693
|
+
}
|
|
65279
67694
|
};
|
|
65280
67695
|
/** C0 controls, DEL and the C1 range: none of them belongs in a name. */
|
|
65281
67696
|
function hasControlCharacter(value) {
|
|
@@ -65871,7 +68286,10 @@ var tamperCapability = {
|
|
|
65871
68286
|
*/
|
|
65872
68287
|
var TemperatureSensorStatusSchema = object({
|
|
65873
68288
|
/** Current temperature in Celsius. */
|
|
65874
|
-
celsius: number()
|
|
68289
|
+
celsius: number().meta({
|
|
68290
|
+
unit: "°C",
|
|
68291
|
+
label: "Temperature"
|
|
68292
|
+
}),
|
|
65875
68293
|
/** Ms epoch when the slice was last updated (push or poll). */
|
|
65876
68294
|
lastFetchedAt: number(),
|
|
65877
68295
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -65914,7 +68332,12 @@ var temperatureSensorCapability = {
|
|
|
65914
68332
|
} } },
|
|
65915
68333
|
/** Clock fields: written, but excluded from the compare that decides
|
|
65916
68334
|
* whether persisting is worth a SQLite commit. */
|
|
65917
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
68335
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
68336
|
+
customize: {
|
|
68337
|
+
version: 1,
|
|
68338
|
+
advanced: "derive",
|
|
68339
|
+
targets: []
|
|
68340
|
+
}
|
|
65918
68341
|
};
|
|
65919
68342
|
/**
|
|
65920
68343
|
* toast — system-scoped singleton capability that streams toast
|
|
@@ -67497,6 +69920,10 @@ function runningFromMediaPlayer(state, previous, fetchedAt, transitionAt) {
|
|
|
67497
69920
|
return nativeSlice(false, state, previous, transitionAtMs, fetchedAt, null);
|
|
67498
69921
|
}
|
|
67499
69922
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
69923
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
69924
|
+
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
69925
|
+
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
69926
|
+
new Set(CAP_NAMES);
|
|
67500
69927
|
Object.freeze({
|
|
67501
69928
|
person: .5,
|
|
67502
69929
|
vehicle: .5,
|
|
@@ -68730,7 +71157,7 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
68730
71157
|
* A top-level persisted row with NO configuration is a leftover, not a
|
|
68731
71158
|
* device — quarantine it instead of dialling it.
|
|
68732
71159
|
*
|
|
68733
|
-
* Device
|
|
71160
|
+
* Device 105 was deleted, resurrected as a config-less shell by a write
|
|
68734
71161
|
* already in flight (D376), and then dialled at every single boot: eight
|
|
68735
71162
|
* `Failed to restore device — bounded retry scheduled` lines in one day,
|
|
68736
71163
|
* each one the same Zod refusal on `host` and `password`. The bound was
|
|
@@ -72040,6 +74467,27 @@ Object.freeze({
|
|
|
72040
74467
|
access: "create",
|
|
72041
74468
|
role: "viewer"
|
|
72042
74469
|
},
|
|
74470
|
+
"displayPalette.getPalette": {
|
|
74471
|
+
capName: "display-palette",
|
|
74472
|
+
capScope: "system",
|
|
74473
|
+
addonId: null,
|
|
74474
|
+
access: "view",
|
|
74475
|
+
role: "viewer"
|
|
74476
|
+
},
|
|
74477
|
+
"displayPalette.listPresets": {
|
|
74478
|
+
capName: "display-palette",
|
|
74479
|
+
capScope: "system",
|
|
74480
|
+
addonId: null,
|
|
74481
|
+
access: "view",
|
|
74482
|
+
role: "viewer"
|
|
74483
|
+
},
|
|
74484
|
+
"displayPalette.setPalette": {
|
|
74485
|
+
capName: "display-palette",
|
|
74486
|
+
capScope: "system",
|
|
74487
|
+
addonId: null,
|
|
74488
|
+
access: "create",
|
|
74489
|
+
role: "admin"
|
|
74490
|
+
},
|
|
72043
74491
|
"doorbell.getStatus": {
|
|
72044
74492
|
capName: "doorbell",
|
|
72045
74493
|
capScope: "device",
|
|
@@ -81957,7 +84405,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
81957
84405
|
state: [{
|
|
81958
84406
|
kind: "boolean",
|
|
81959
84407
|
field: "on",
|
|
81960
|
-
label: t("
|
|
84408
|
+
label: t("On", "Acceso"),
|
|
81961
84409
|
whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
|
|
81962
84410
|
whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
|
|
81963
84411
|
icon: "toggle-right"
|
|
@@ -82496,6 +84944,7 @@ var SYSTEM_CAP_VOCABULARY = {
|
|
|
82496
84944
|
"device-provider": system(INTERNAL),
|
|
82497
84945
|
"device-removal-hook": system(INTERNAL),
|
|
82498
84946
|
"device-state": system("the runtime-state mirror every trigger already reads through"),
|
|
84947
|
+
"display-palette": system("the cluster display palette — one colour table for every client, not a device action"),
|
|
82499
84948
|
"embedding-encoder": system(ML),
|
|
82500
84949
|
"face-gallery": system("the face gallery — curated on its own page"),
|
|
82501
84950
|
"failure-contribution": system(INTERNAL),
|
|
@@ -85380,7 +87829,6 @@ Object.freeze({
|
|
|
85380
87829
|
"smtp-provider": "email"
|
|
85381
87830
|
});
|
|
85382
87831
|
DeviceType.Camera;
|
|
85383
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
85384
87832
|
/**
|
|
85385
87833
|
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
85386
87834
|
* `z.infer`, they do not restate the shape.
|
|
@@ -85469,7 +87917,6 @@ object({
|
|
|
85469
87917
|
]),
|
|
85470
87918
|
reason: string().nullable()
|
|
85471
87919
|
});
|
|
85472
|
-
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
85473
87920
|
var G711_SCALE_CORRECTION_DB = {
|
|
85474
87921
|
PCMU: 20 * Math.log10(4),
|
|
85475
87922
|
PCMA: 20 * Math.log10(8)
|
|
@@ -86049,7 +88496,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
86049
88496
|
{
|
|
86050
88497
|
name: "summaryStreams",
|
|
86051
88498
|
label: "Summary: streams offline",
|
|
86052
|
-
example: "
|
|
88499
|
+
example: "Front door (high) — since 06:40",
|
|
86053
88500
|
kinds: ["stream-offline", "stream-online"]
|
|
86054
88501
|
},
|
|
86055
88502
|
{
|
|
@@ -86067,13 +88514,13 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
86067
88514
|
{
|
|
86068
88515
|
name: "summaryDetection",
|
|
86069
88516
|
label: "Summary: cameras detecting nothing",
|
|
86070
|
-
example: "
|
|
88517
|
+
example: "Front door — since 05:10",
|
|
86071
88518
|
kinds: ["detection-blind"]
|
|
86072
88519
|
},
|
|
86073
88520
|
{
|
|
86074
88521
|
name: "summaryNodes",
|
|
86075
88522
|
label: "Summary: nodes",
|
|
86076
|
-
example: "
|
|
88523
|
+
example: "agent-a — offline since 03:00",
|
|
86077
88524
|
kinds: [
|
|
86078
88525
|
"node-offline",
|
|
86079
88526
|
"node-online",
|