@camstack/addon-training 0.1.79 → 0.1.81
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/{MotionZonesSettings-CHoUtlZU.mjs → MotionZonesSettings-Ca-6XXfI.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-DfxPrf-U.mjs → PrivacyMaskSettings-BCUM9T8S.mjs} +2 -2
- package/dist/{SceneMonitorEditor-B32hWMGP.mjs → SceneMonitorEditor-CjJ891SK.mjs} +1 -1
- package/dist/_stub.js +5248 -5127
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-GwANcGcn.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-Cr7Pmc7w.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-9NmkfCw8.mjs +26 -0
- package/dist/addon-training.css +1 -1
- package/dist/{dist-we-Yi15l.mjs → dist-BEHbfGro.mjs} +2536 -121
- package/dist/{dist-DuaaneP-.js → dist-CdN9FdUa.js} +2536 -121
- package/dist/{hostInit-OSodFHgq.mjs → hostInit-XwE0hfA0.mjs} +3 -3
- package/dist/index.js +1 -1
- package/dist/orchestrator/training.addon.js +1 -1
- package/dist/orchestrator/training.addon.mjs +1 -1
- package/dist/{player-overlays-CN0bZ_0v.mjs → player-overlays-Bk8LUHwl.mjs} +1 -1
- package/dist/providers/modal/training-modal.addon.js +1 -1
- package/dist/providers/modal/training-modal.addon.mjs +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-wQi9hajb.mjs → responsive-DkRlf-GQ.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-CbTZ0yvt.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-DslbW4nN.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-ff_0UQsH.mjs +0 -26
|
@@ -32,7 +32,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
32
32
|
}) : target, mod));
|
|
33
33
|
var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
34
|
require("node:crypto");
|
|
35
|
-
//#region ../types/dist/event-category-
|
|
35
|
+
//#region ../types/dist/event-category-DHXxB8t9.mjs
|
|
36
36
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
37
37
|
EventCategory["SystemBoot"] = "system.boot";
|
|
38
38
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -328,7 +328,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
328
328
|
* TRANSITION into that state (never per dispatch), and the node is dropped
|
|
329
329
|
* from the placement candidate set for as long as it holds.
|
|
330
330
|
*
|
|
331
|
-
* This exists because the state was previously invisible:
|
|
331
|
+
* This exists because the state was previously invisible: agent-a
|
|
332
332
|
* absorbed 283k inference errors in a day while still being handed cameras,
|
|
333
333
|
* and nothing in the system said so.
|
|
334
334
|
*
|
|
@@ -5600,7 +5600,7 @@ var ZodIssueCode = {
|
|
|
5600
5600
|
var ZodFirstPartyTypeKind;
|
|
5601
5601
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5602
5602
|
//#endregion
|
|
5603
|
-
//#region ../types/dist/sleep-
|
|
5603
|
+
//#region ../types/dist/sleep-BErAxhul.mjs
|
|
5604
5604
|
/**
|
|
5605
5605
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5606
5606
|
* window to float samples (D455).
|
|
@@ -8800,6 +8800,1980 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
8800
8800
|
kind: "mutation",
|
|
8801
8801
|
auth: "admin"
|
|
8802
8802
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
8803
|
+
Object.freeze({ "doorbell": "lastPressedAt" });
|
|
8804
|
+
/** Every capability name, so addon code can check a name without the schema graph. */
|
|
8805
|
+
var CAP_NAMES = Object.freeze([
|
|
8806
|
+
"accessories",
|
|
8807
|
+
"addon-pages",
|
|
8808
|
+
"addon-pages-source",
|
|
8809
|
+
"addon-routes",
|
|
8810
|
+
"addon-settings",
|
|
8811
|
+
"addon-widgets",
|
|
8812
|
+
"addon-widgets-source",
|
|
8813
|
+
"addons",
|
|
8814
|
+
"admin-ui",
|
|
8815
|
+
"air-quality-sensor",
|
|
8816
|
+
"alarm-panel",
|
|
8817
|
+
"alerts",
|
|
8818
|
+
"ambient-light-sensor",
|
|
8819
|
+
"audio-analysis",
|
|
8820
|
+
"audio-analyzer",
|
|
8821
|
+
"audio-codec",
|
|
8822
|
+
"audio-metrics",
|
|
8823
|
+
"auth-provider",
|
|
8824
|
+
"automation-control",
|
|
8825
|
+
"backup",
|
|
8826
|
+
"battery",
|
|
8827
|
+
"binary",
|
|
8828
|
+
"brightness",
|
|
8829
|
+
"broker",
|
|
8830
|
+
"button",
|
|
8831
|
+
"calendar-source",
|
|
8832
|
+
"calendars",
|
|
8833
|
+
"camera-credentials",
|
|
8834
|
+
"camera-grid-layout",
|
|
8835
|
+
"camera-pipeline-config",
|
|
8836
|
+
"camera-streams",
|
|
8837
|
+
"carbon-monoxide",
|
|
8838
|
+
"climate-control",
|
|
8839
|
+
"color",
|
|
8840
|
+
"composer",
|
|
8841
|
+
"connection-test",
|
|
8842
|
+
"connectivity",
|
|
8843
|
+
"consumables",
|
|
8844
|
+
"contact",
|
|
8845
|
+
"control",
|
|
8846
|
+
"core-blocks",
|
|
8847
|
+
"cover",
|
|
8848
|
+
"custom-model-registry",
|
|
8849
|
+
"data-store-provider",
|
|
8850
|
+
"database-snapshot",
|
|
8851
|
+
"day-night",
|
|
8852
|
+
"decoder",
|
|
8853
|
+
"detection-pipeline",
|
|
8854
|
+
"device-admin-link",
|
|
8855
|
+
"device-adoption",
|
|
8856
|
+
"device-credentials",
|
|
8857
|
+
"device-discovery",
|
|
8858
|
+
"device-export",
|
|
8859
|
+
"device-extension",
|
|
8860
|
+
"device-history",
|
|
8861
|
+
"device-manager",
|
|
8862
|
+
"device-ops",
|
|
8863
|
+
"device-provider",
|
|
8864
|
+
"device-removal-hook",
|
|
8865
|
+
"device-state",
|
|
8866
|
+
"device-status",
|
|
8867
|
+
"dishwasher",
|
|
8868
|
+
"display-palette",
|
|
8869
|
+
"doorbell",
|
|
8870
|
+
"embedding-encoder",
|
|
8871
|
+
"enum-sensor",
|
|
8872
|
+
"event-emitter",
|
|
8873
|
+
"face-gallery",
|
|
8874
|
+
"failure-contribution",
|
|
8875
|
+
"fan-control",
|
|
8876
|
+
"feature-probe",
|
|
8877
|
+
"filesystem-browse",
|
|
8878
|
+
"flood",
|
|
8879
|
+
"gas",
|
|
8880
|
+
"heating-valve",
|
|
8881
|
+
"humidifier",
|
|
8882
|
+
"humidity-sensor",
|
|
8883
|
+
"image",
|
|
8884
|
+
"image-settings",
|
|
8885
|
+
"integrations",
|
|
8886
|
+
"intercom",
|
|
8887
|
+
"keychain",
|
|
8888
|
+
"keychain-admin",
|
|
8889
|
+
"lawn-mower-control",
|
|
8890
|
+
"llm",
|
|
8891
|
+
"llm-runtime",
|
|
8892
|
+
"load-contribution",
|
|
8893
|
+
"local-network",
|
|
8894
|
+
"lock-control",
|
|
8895
|
+
"log-channels",
|
|
8896
|
+
"log-destination",
|
|
8897
|
+
"login-method",
|
|
8898
|
+
"media-player",
|
|
8899
|
+
"mesh-network",
|
|
8900
|
+
"metrics-provider",
|
|
8901
|
+
"model-convert",
|
|
8902
|
+
"model-distributor",
|
|
8903
|
+
"motion",
|
|
8904
|
+
"motion-detection",
|
|
8905
|
+
"motion-trigger",
|
|
8906
|
+
"motion-zones",
|
|
8907
|
+
"mqtt-broker",
|
|
8908
|
+
"native-object-detection",
|
|
8909
|
+
"navigation",
|
|
8910
|
+
"network-access",
|
|
8911
|
+
"network-link",
|
|
8912
|
+
"network-quality",
|
|
8913
|
+
"node-certificates",
|
|
8914
|
+
"nodes",
|
|
8915
|
+
"notification-output",
|
|
8916
|
+
"notification-rules",
|
|
8917
|
+
"notifier",
|
|
8918
|
+
"numeric-sensor",
|
|
8919
|
+
"oauth-integration",
|
|
8920
|
+
"oidc-connections",
|
|
8921
|
+
"osd",
|
|
8922
|
+
"osd-manager",
|
|
8923
|
+
"pet-feeder",
|
|
8924
|
+
"pipeline-analytics",
|
|
8925
|
+
"pipeline-executor",
|
|
8926
|
+
"pipeline-orchestrator",
|
|
8927
|
+
"pipeline-runner",
|
|
8928
|
+
"plate-gallery",
|
|
8929
|
+
"platform-probe",
|
|
8930
|
+
"power-meter",
|
|
8931
|
+
"presence",
|
|
8932
|
+
"pressure-sensor",
|
|
8933
|
+
"privacy-mask",
|
|
8934
|
+
"ptz",
|
|
8935
|
+
"ptz-autotrack",
|
|
8936
|
+
"reboot",
|
|
8937
|
+
"record-entries",
|
|
8938
|
+
"recording",
|
|
8939
|
+
"recording-archive",
|
|
8940
|
+
"recording-export",
|
|
8941
|
+
"recording-onboard",
|
|
8942
|
+
"recording-signal",
|
|
8943
|
+
"records",
|
|
8944
|
+
"running-state",
|
|
8945
|
+
"scene-monitor",
|
|
8946
|
+
"script-runner",
|
|
8947
|
+
"server-management",
|
|
8948
|
+
"settings-store",
|
|
8949
|
+
"smoke",
|
|
8950
|
+
"smtp-provider",
|
|
8951
|
+
"snapshot",
|
|
8952
|
+
"sso-bridge",
|
|
8953
|
+
"storage",
|
|
8954
|
+
"storage-admin",
|
|
8955
|
+
"storage-evictable",
|
|
8956
|
+
"storage-migration",
|
|
8957
|
+
"storage-occupancy",
|
|
8958
|
+
"storage-provider",
|
|
8959
|
+
"stream-broker",
|
|
8960
|
+
"stream-catalog",
|
|
8961
|
+
"stream-params",
|
|
8962
|
+
"stream-signals",
|
|
8963
|
+
"switch",
|
|
8964
|
+
"system",
|
|
8965
|
+
"tamper",
|
|
8966
|
+
"temperature-sensor",
|
|
8967
|
+
"terminal-session",
|
|
8968
|
+
"toast",
|
|
8969
|
+
"training",
|
|
8970
|
+
"training-provider",
|
|
8971
|
+
"turn-provider",
|
|
8972
|
+
"update",
|
|
8973
|
+
"user-management",
|
|
8974
|
+
"user-passkeys",
|
|
8975
|
+
"vacuum-control",
|
|
8976
|
+
"valve",
|
|
8977
|
+
"vector-store",
|
|
8978
|
+
"vibration",
|
|
8979
|
+
"videoclips",
|
|
8980
|
+
"viewer-ui",
|
|
8981
|
+
"water-heater",
|
|
8982
|
+
"weather",
|
|
8983
|
+
"webrtc-session",
|
|
8984
|
+
"zone-analytics",
|
|
8985
|
+
"zone-rules",
|
|
8986
|
+
"zones"
|
|
8987
|
+
]);
|
|
8988
|
+
Object.freeze({
|
|
8989
|
+
"air-quality-sensor": [
|
|
8990
|
+
{
|
|
8991
|
+
"path": "co2Ppm",
|
|
8992
|
+
"valueType": "number"
|
|
8993
|
+
},
|
|
8994
|
+
{
|
|
8995
|
+
"path": "vocPpb",
|
|
8996
|
+
"valueType": "number"
|
|
8997
|
+
},
|
|
8998
|
+
{
|
|
8999
|
+
"path": "pm25",
|
|
9000
|
+
"valueType": "number"
|
|
9001
|
+
},
|
|
9002
|
+
{
|
|
9003
|
+
"path": "pm10",
|
|
9004
|
+
"valueType": "number"
|
|
9005
|
+
},
|
|
9006
|
+
{
|
|
9007
|
+
"path": "aqi",
|
|
9008
|
+
"valueType": "number"
|
|
9009
|
+
},
|
|
9010
|
+
{
|
|
9011
|
+
"path": "unit",
|
|
9012
|
+
"valueType": "string"
|
|
9013
|
+
},
|
|
9014
|
+
{
|
|
9015
|
+
"path": "precision",
|
|
9016
|
+
"valueType": "number"
|
|
9017
|
+
}
|
|
9018
|
+
],
|
|
9019
|
+
"alarm-panel": [
|
|
9020
|
+
{
|
|
9021
|
+
"path": "state",
|
|
9022
|
+
"valueType": "enum",
|
|
9023
|
+
"enumValues": [
|
|
9024
|
+
"disarmed",
|
|
9025
|
+
"armed_home",
|
|
9026
|
+
"armed_away",
|
|
9027
|
+
"armed_night",
|
|
9028
|
+
"armed_vacation",
|
|
9029
|
+
"armed_custom_bypass",
|
|
9030
|
+
"arming",
|
|
9031
|
+
"disarming",
|
|
9032
|
+
"pending",
|
|
9033
|
+
"triggered"
|
|
9034
|
+
]
|
|
9035
|
+
},
|
|
9036
|
+
{
|
|
9037
|
+
"path": "targetMode",
|
|
9038
|
+
"valueType": "enum",
|
|
9039
|
+
"enumValues": [
|
|
9040
|
+
"home",
|
|
9041
|
+
"away",
|
|
9042
|
+
"night",
|
|
9043
|
+
"vacation",
|
|
9044
|
+
"custom_bypass"
|
|
9045
|
+
]
|
|
9046
|
+
},
|
|
9047
|
+
{
|
|
9048
|
+
"path": "requiresCode",
|
|
9049
|
+
"valueType": "boolean"
|
|
9050
|
+
}
|
|
9051
|
+
],
|
|
9052
|
+
"ambient-light-sensor": [
|
|
9053
|
+
{
|
|
9054
|
+
"path": "lux",
|
|
9055
|
+
"valueType": "number"
|
|
9056
|
+
},
|
|
9057
|
+
{
|
|
9058
|
+
"path": "unit",
|
|
9059
|
+
"valueType": "string"
|
|
9060
|
+
},
|
|
9061
|
+
{
|
|
9062
|
+
"path": "precision",
|
|
9063
|
+
"valueType": "number"
|
|
9064
|
+
}
|
|
9065
|
+
],
|
|
9066
|
+
"audio-metrics": [
|
|
9067
|
+
{
|
|
9068
|
+
"path": "ts",
|
|
9069
|
+
"valueType": "number"
|
|
9070
|
+
},
|
|
9071
|
+
{
|
|
9072
|
+
"path": "windowSec",
|
|
9073
|
+
"valueType": "number"
|
|
9074
|
+
},
|
|
9075
|
+
{
|
|
9076
|
+
"path": "level.rms",
|
|
9077
|
+
"valueType": "number"
|
|
9078
|
+
},
|
|
9079
|
+
{
|
|
9080
|
+
"path": "level.dbfs",
|
|
9081
|
+
"valueType": "number"
|
|
9082
|
+
},
|
|
9083
|
+
{
|
|
9084
|
+
"path": "peakDbfs",
|
|
9085
|
+
"valueType": "number"
|
|
9086
|
+
},
|
|
9087
|
+
{
|
|
9088
|
+
"path": "avgDbfs",
|
|
9089
|
+
"valueType": "number"
|
|
9090
|
+
},
|
|
9091
|
+
{
|
|
9092
|
+
"path": "current.className",
|
|
9093
|
+
"valueType": "string"
|
|
9094
|
+
},
|
|
9095
|
+
{
|
|
9096
|
+
"path": "current.score",
|
|
9097
|
+
"valueType": "number"
|
|
9098
|
+
},
|
|
9099
|
+
{
|
|
9100
|
+
"path": "current.timestamp",
|
|
9101
|
+
"valueType": "number"
|
|
9102
|
+
}
|
|
9103
|
+
],
|
|
9104
|
+
"automation-control": [
|
|
9105
|
+
{
|
|
9106
|
+
"path": "enabled",
|
|
9107
|
+
"valueType": "boolean"
|
|
9108
|
+
},
|
|
9109
|
+
{
|
|
9110
|
+
"path": "isRunning",
|
|
9111
|
+
"valueType": "boolean"
|
|
9112
|
+
},
|
|
9113
|
+
{
|
|
9114
|
+
"path": "lastTriggeredAt",
|
|
9115
|
+
"valueType": "number"
|
|
9116
|
+
},
|
|
9117
|
+
{
|
|
9118
|
+
"path": "lastError",
|
|
9119
|
+
"valueType": "string"
|
|
9120
|
+
}
|
|
9121
|
+
],
|
|
9122
|
+
"battery": [
|
|
9123
|
+
{
|
|
9124
|
+
"path": "percentage",
|
|
9125
|
+
"valueType": "number"
|
|
9126
|
+
},
|
|
9127
|
+
{
|
|
9128
|
+
"path": "charging",
|
|
9129
|
+
"valueType": "enum",
|
|
9130
|
+
"enumValues": [
|
|
9131
|
+
"dc",
|
|
9132
|
+
"solar",
|
|
9133
|
+
"none",
|
|
9134
|
+
"unknown"
|
|
9135
|
+
]
|
|
9136
|
+
},
|
|
9137
|
+
{
|
|
9138
|
+
"path": "sleeping",
|
|
9139
|
+
"valueType": "boolean"
|
|
9140
|
+
},
|
|
9141
|
+
{
|
|
9142
|
+
"path": "lastUpdated",
|
|
9143
|
+
"valueType": "number"
|
|
9144
|
+
},
|
|
9145
|
+
{
|
|
9146
|
+
"path": "lastContactAt",
|
|
9147
|
+
"valueType": "number"
|
|
9148
|
+
},
|
|
9149
|
+
{
|
|
9150
|
+
"path": "lastFullRefreshAt",
|
|
9151
|
+
"valueType": "number"
|
|
9152
|
+
},
|
|
9153
|
+
{
|
|
9154
|
+
"path": "binary",
|
|
9155
|
+
"valueType": "boolean"
|
|
9156
|
+
}
|
|
9157
|
+
],
|
|
9158
|
+
"binary": [{
|
|
9159
|
+
"path": "on",
|
|
9160
|
+
"valueType": "boolean"
|
|
9161
|
+
}],
|
|
9162
|
+
"brightness": [{
|
|
9163
|
+
"path": "percentage",
|
|
9164
|
+
"valueType": "number"
|
|
9165
|
+
}],
|
|
9166
|
+
"broker": [{
|
|
9167
|
+
"path": "brokerCount",
|
|
9168
|
+
"valueType": "number"
|
|
9169
|
+
}, {
|
|
9170
|
+
"path": "connectedCount",
|
|
9171
|
+
"valueType": "number"
|
|
9172
|
+
}],
|
|
9173
|
+
"camera-credentials": [
|
|
9174
|
+
{
|
|
9175
|
+
"path": "host",
|
|
9176
|
+
"valueType": "string"
|
|
9177
|
+
},
|
|
9178
|
+
{
|
|
9179
|
+
"path": "port",
|
|
9180
|
+
"valueType": "number"
|
|
9181
|
+
},
|
|
9182
|
+
{
|
|
9183
|
+
"path": "onvifPort",
|
|
9184
|
+
"valueType": "number"
|
|
9185
|
+
},
|
|
9186
|
+
{
|
|
9187
|
+
"path": "rtspPort",
|
|
9188
|
+
"valueType": "number"
|
|
9189
|
+
},
|
|
9190
|
+
{
|
|
9191
|
+
"path": "https",
|
|
9192
|
+
"valueType": "boolean"
|
|
9193
|
+
},
|
|
9194
|
+
{
|
|
9195
|
+
"path": "hasUsername",
|
|
9196
|
+
"valueType": "boolean"
|
|
9197
|
+
},
|
|
9198
|
+
{
|
|
9199
|
+
"path": "hasPassword",
|
|
9200
|
+
"valueType": "boolean"
|
|
9201
|
+
},
|
|
9202
|
+
{
|
|
9203
|
+
"path": "onvifProfile",
|
|
9204
|
+
"valueType": "string"
|
|
9205
|
+
}
|
|
9206
|
+
],
|
|
9207
|
+
"camera-streams": [
|
|
9208
|
+
{
|
|
9209
|
+
"path": "online",
|
|
9210
|
+
"valueType": "boolean"
|
|
9211
|
+
},
|
|
9212
|
+
{
|
|
9213
|
+
"path": "slotStatuses.high",
|
|
9214
|
+
"valueType": "enum",
|
|
9215
|
+
"enumValues": [
|
|
9216
|
+
"unassigned",
|
|
9217
|
+
"idle",
|
|
9218
|
+
"connecting",
|
|
9219
|
+
"streaming",
|
|
9220
|
+
"error"
|
|
9221
|
+
]
|
|
9222
|
+
},
|
|
9223
|
+
{
|
|
9224
|
+
"path": "slotStatuses.mid",
|
|
9225
|
+
"valueType": "enum",
|
|
9226
|
+
"enumValues": [
|
|
9227
|
+
"unassigned",
|
|
9228
|
+
"idle",
|
|
9229
|
+
"connecting",
|
|
9230
|
+
"streaming",
|
|
9231
|
+
"error"
|
|
9232
|
+
]
|
|
9233
|
+
},
|
|
9234
|
+
{
|
|
9235
|
+
"path": "slotStatuses.low",
|
|
9236
|
+
"valueType": "enum",
|
|
9237
|
+
"enumValues": [
|
|
9238
|
+
"unassigned",
|
|
9239
|
+
"idle",
|
|
9240
|
+
"connecting",
|
|
9241
|
+
"streaming",
|
|
9242
|
+
"error"
|
|
9243
|
+
]
|
|
9244
|
+
},
|
|
9245
|
+
{
|
|
9246
|
+
"path": "slotErrors.high",
|
|
9247
|
+
"valueType": "string"
|
|
9248
|
+
},
|
|
9249
|
+
{
|
|
9250
|
+
"path": "slotErrors.mid",
|
|
9251
|
+
"valueType": "string"
|
|
9252
|
+
},
|
|
9253
|
+
{
|
|
9254
|
+
"path": "slotErrors.low",
|
|
9255
|
+
"valueType": "string"
|
|
9256
|
+
}
|
|
9257
|
+
],
|
|
9258
|
+
"carbon-monoxide": [{
|
|
9259
|
+
"path": "detected",
|
|
9260
|
+
"valueType": "boolean"
|
|
9261
|
+
}],
|
|
9262
|
+
"climate-control": [
|
|
9263
|
+
{
|
|
9264
|
+
"path": "mode",
|
|
9265
|
+
"valueType": "enum",
|
|
9266
|
+
"enumValues": [
|
|
9267
|
+
"off",
|
|
9268
|
+
"heat",
|
|
9269
|
+
"cool",
|
|
9270
|
+
"auto",
|
|
9271
|
+
"heat_cool",
|
|
9272
|
+
"fan_only",
|
|
9273
|
+
"dry"
|
|
9274
|
+
]
|
|
9275
|
+
},
|
|
9276
|
+
{
|
|
9277
|
+
"path": "fanMode",
|
|
9278
|
+
"valueType": "string"
|
|
9279
|
+
},
|
|
9280
|
+
{
|
|
9281
|
+
"path": "preset",
|
|
9282
|
+
"valueType": "string"
|
|
9283
|
+
},
|
|
9284
|
+
{
|
|
9285
|
+
"path": "target",
|
|
9286
|
+
"valueType": "number"
|
|
9287
|
+
},
|
|
9288
|
+
{
|
|
9289
|
+
"path": "targetHigh",
|
|
9290
|
+
"valueType": "number"
|
|
9291
|
+
},
|
|
9292
|
+
{
|
|
9293
|
+
"path": "targetLow",
|
|
9294
|
+
"valueType": "number"
|
|
9295
|
+
},
|
|
9296
|
+
{
|
|
9297
|
+
"path": "targetHumidity",
|
|
9298
|
+
"valueType": "number"
|
|
9299
|
+
},
|
|
9300
|
+
{
|
|
9301
|
+
"path": "currentTemp",
|
|
9302
|
+
"valueType": "number"
|
|
9303
|
+
},
|
|
9304
|
+
{
|
|
9305
|
+
"path": "currentHumidity",
|
|
9306
|
+
"valueType": "number"
|
|
9307
|
+
},
|
|
9308
|
+
{
|
|
9309
|
+
"path": "swingVertical",
|
|
9310
|
+
"valueType": "boolean"
|
|
9311
|
+
},
|
|
9312
|
+
{
|
|
9313
|
+
"path": "swingHorizontal",
|
|
9314
|
+
"valueType": "boolean"
|
|
9315
|
+
},
|
|
9316
|
+
{
|
|
9317
|
+
"path": "minTemp",
|
|
9318
|
+
"valueType": "number"
|
|
9319
|
+
},
|
|
9320
|
+
{
|
|
9321
|
+
"path": "maxTemp",
|
|
9322
|
+
"valueType": "number"
|
|
9323
|
+
},
|
|
9324
|
+
{
|
|
9325
|
+
"path": "tempStep",
|
|
9326
|
+
"valueType": "number"
|
|
9327
|
+
}
|
|
9328
|
+
],
|
|
9329
|
+
"color": [
|
|
9330
|
+
{
|
|
9331
|
+
"path": "mode",
|
|
9332
|
+
"valueType": "enum",
|
|
9333
|
+
"enumValues": [
|
|
9334
|
+
"rgb",
|
|
9335
|
+
"hsv",
|
|
9336
|
+
"mired"
|
|
9337
|
+
]
|
|
9338
|
+
},
|
|
9339
|
+
{
|
|
9340
|
+
"path": "rgb.r",
|
|
9341
|
+
"valueType": "number"
|
|
9342
|
+
},
|
|
9343
|
+
{
|
|
9344
|
+
"path": "rgb.g",
|
|
9345
|
+
"valueType": "number"
|
|
9346
|
+
},
|
|
9347
|
+
{
|
|
9348
|
+
"path": "rgb.b",
|
|
9349
|
+
"valueType": "number"
|
|
9350
|
+
},
|
|
9351
|
+
{
|
|
9352
|
+
"path": "hsv.h",
|
|
9353
|
+
"valueType": "number"
|
|
9354
|
+
},
|
|
9355
|
+
{
|
|
9356
|
+
"path": "hsv.s",
|
|
9357
|
+
"valueType": "number"
|
|
9358
|
+
},
|
|
9359
|
+
{
|
|
9360
|
+
"path": "hsv.v",
|
|
9361
|
+
"valueType": "number"
|
|
9362
|
+
},
|
|
9363
|
+
{
|
|
9364
|
+
"path": "mireds",
|
|
9365
|
+
"valueType": "number"
|
|
9366
|
+
}
|
|
9367
|
+
],
|
|
9368
|
+
"connectivity": [{
|
|
9369
|
+
"path": "connected",
|
|
9370
|
+
"valueType": "boolean"
|
|
9371
|
+
}],
|
|
9372
|
+
"contact": [{
|
|
9373
|
+
"path": "entryOpen",
|
|
9374
|
+
"valueType": "boolean"
|
|
9375
|
+
}],
|
|
9376
|
+
"control": [
|
|
9377
|
+
{
|
|
9378
|
+
"path": "kind",
|
|
9379
|
+
"valueType": "enum",
|
|
9380
|
+
"enumValues": [
|
|
9381
|
+
"numeric",
|
|
9382
|
+
"select",
|
|
9383
|
+
"text",
|
|
9384
|
+
"datetime"
|
|
9385
|
+
]
|
|
9386
|
+
},
|
|
9387
|
+
{
|
|
9388
|
+
"path": "unit",
|
|
9389
|
+
"valueType": "string"
|
|
9390
|
+
},
|
|
9391
|
+
{
|
|
9392
|
+
"path": "min",
|
|
9393
|
+
"valueType": "number"
|
|
9394
|
+
},
|
|
9395
|
+
{
|
|
9396
|
+
"path": "max",
|
|
9397
|
+
"valueType": "number"
|
|
9398
|
+
},
|
|
9399
|
+
{
|
|
9400
|
+
"path": "step",
|
|
9401
|
+
"valueType": "number"
|
|
9402
|
+
},
|
|
9403
|
+
{
|
|
9404
|
+
"path": "precision",
|
|
9405
|
+
"valueType": "number"
|
|
9406
|
+
},
|
|
9407
|
+
{
|
|
9408
|
+
"path": "format",
|
|
9409
|
+
"valueType": "enum",
|
|
9410
|
+
"enumValues": [
|
|
9411
|
+
"date",
|
|
9412
|
+
"time",
|
|
9413
|
+
"datetime"
|
|
9414
|
+
]
|
|
9415
|
+
}
|
|
9416
|
+
],
|
|
9417
|
+
"cover": [
|
|
9418
|
+
{
|
|
9419
|
+
"path": "state",
|
|
9420
|
+
"valueType": "enum",
|
|
9421
|
+
"enumValues": [
|
|
9422
|
+
"open",
|
|
9423
|
+
"opening",
|
|
9424
|
+
"closing",
|
|
9425
|
+
"closed",
|
|
9426
|
+
"stopped"
|
|
9427
|
+
]
|
|
9428
|
+
},
|
|
9429
|
+
{
|
|
9430
|
+
"path": "position",
|
|
9431
|
+
"valueType": "number"
|
|
9432
|
+
},
|
|
9433
|
+
{
|
|
9434
|
+
"path": "tiltPosition",
|
|
9435
|
+
"valueType": "number"
|
|
9436
|
+
}
|
|
9437
|
+
],
|
|
9438
|
+
"day-night": [
|
|
9439
|
+
{
|
|
9440
|
+
"path": "mode",
|
|
9441
|
+
"valueType": "enum",
|
|
9442
|
+
"enumValues": [
|
|
9443
|
+
"auto",
|
|
9444
|
+
"day",
|
|
9445
|
+
"night",
|
|
9446
|
+
"schedule"
|
|
9447
|
+
]
|
|
9448
|
+
},
|
|
9449
|
+
{
|
|
9450
|
+
"path": "sensitivity",
|
|
9451
|
+
"valueType": "number"
|
|
9452
|
+
},
|
|
9453
|
+
{
|
|
9454
|
+
"path": "switchDelaySec",
|
|
9455
|
+
"valueType": "number"
|
|
9456
|
+
}
|
|
9457
|
+
],
|
|
9458
|
+
"device-adoption": [
|
|
9459
|
+
{
|
|
9460
|
+
"path": "lastDiscoveryAt",
|
|
9461
|
+
"valueType": "number"
|
|
9462
|
+
},
|
|
9463
|
+
{
|
|
9464
|
+
"path": "candidateCount",
|
|
9465
|
+
"valueType": "number"
|
|
9466
|
+
},
|
|
9467
|
+
{
|
|
9468
|
+
"path": "adoptedCount",
|
|
9469
|
+
"valueType": "number"
|
|
9470
|
+
},
|
|
9471
|
+
{
|
|
9472
|
+
"path": "lastError",
|
|
9473
|
+
"valueType": "string"
|
|
9474
|
+
}
|
|
9475
|
+
],
|
|
9476
|
+
"device-discovery": [{
|
|
9477
|
+
"path": "lastDiscoveryAt",
|
|
9478
|
+
"valueType": "number"
|
|
9479
|
+
}, {
|
|
9480
|
+
"path": "lastError",
|
|
9481
|
+
"valueType": "string"
|
|
9482
|
+
}],
|
|
9483
|
+
"device-export": [
|
|
9484
|
+
{
|
|
9485
|
+
"path": "linkState",
|
|
9486
|
+
"valueType": "enum",
|
|
9487
|
+
"enumValues": [
|
|
9488
|
+
"unlinked",
|
|
9489
|
+
"linked",
|
|
9490
|
+
"error"
|
|
9491
|
+
]
|
|
9492
|
+
},
|
|
9493
|
+
{
|
|
9494
|
+
"path": "exposedDeviceCount",
|
|
9495
|
+
"valueType": "number"
|
|
9496
|
+
},
|
|
9497
|
+
{
|
|
9498
|
+
"path": "error",
|
|
9499
|
+
"valueType": "string"
|
|
9500
|
+
},
|
|
9501
|
+
{
|
|
9502
|
+
"path": "setup.qr",
|
|
9503
|
+
"valueType": "string"
|
|
9504
|
+
},
|
|
9505
|
+
{
|
|
9506
|
+
"path": "setup.note",
|
|
9507
|
+
"valueType": "string"
|
|
9508
|
+
}
|
|
9509
|
+
],
|
|
9510
|
+
"device-status": [{
|
|
9511
|
+
"path": "online",
|
|
9512
|
+
"valueType": "boolean"
|
|
9513
|
+
}],
|
|
9514
|
+
"dishwasher": [
|
|
9515
|
+
{
|
|
9516
|
+
"path": "availability",
|
|
9517
|
+
"valueType": "enum",
|
|
9518
|
+
"enumValues": [
|
|
9519
|
+
"available",
|
|
9520
|
+
"offline",
|
|
9521
|
+
"description-missing"
|
|
9522
|
+
]
|
|
9523
|
+
},
|
|
9524
|
+
{
|
|
9525
|
+
"path": "state",
|
|
9526
|
+
"valueType": "enum",
|
|
9527
|
+
"enumValues": [
|
|
9528
|
+
"idle",
|
|
9529
|
+
"running",
|
|
9530
|
+
"paused",
|
|
9531
|
+
"finished",
|
|
9532
|
+
"error",
|
|
9533
|
+
"unavailable"
|
|
9534
|
+
]
|
|
9535
|
+
},
|
|
9536
|
+
{
|
|
9537
|
+
"path": "operationState",
|
|
9538
|
+
"valueType": "enum",
|
|
9539
|
+
"enumValues": [
|
|
9540
|
+
"Inactive",
|
|
9541
|
+
"Ready",
|
|
9542
|
+
"DelayedStart",
|
|
9543
|
+
"Run",
|
|
9544
|
+
"Pause",
|
|
9545
|
+
"ActionRequired",
|
|
9546
|
+
"Finished",
|
|
9547
|
+
"Error",
|
|
9548
|
+
"Aborting"
|
|
9549
|
+
]
|
|
9550
|
+
},
|
|
9551
|
+
{
|
|
9552
|
+
"path": "program",
|
|
9553
|
+
"valueType": "string"
|
|
9554
|
+
},
|
|
9555
|
+
{
|
|
9556
|
+
"path": "selectedProgram",
|
|
9557
|
+
"valueType": "string"
|
|
9558
|
+
},
|
|
9559
|
+
{
|
|
9560
|
+
"path": "remainingSeconds",
|
|
9561
|
+
"valueType": "number"
|
|
9562
|
+
},
|
|
9563
|
+
{
|
|
9564
|
+
"path": "delayedStartSeconds",
|
|
9565
|
+
"valueType": "number"
|
|
9566
|
+
},
|
|
9567
|
+
{
|
|
9568
|
+
"path": "progressPercent",
|
|
9569
|
+
"valueType": "number"
|
|
9570
|
+
},
|
|
9571
|
+
{
|
|
9572
|
+
"path": "doorOpen",
|
|
9573
|
+
"valueType": "boolean"
|
|
9574
|
+
},
|
|
9575
|
+
{
|
|
9576
|
+
"path": "doorLocked",
|
|
9577
|
+
"valueType": "boolean"
|
|
9578
|
+
},
|
|
9579
|
+
{
|
|
9580
|
+
"path": "remoteStartAllowed",
|
|
9581
|
+
"valueType": "boolean"
|
|
9582
|
+
},
|
|
9583
|
+
{
|
|
9584
|
+
"path": "remoteControlActive",
|
|
9585
|
+
"valueType": "boolean"
|
|
9586
|
+
},
|
|
9587
|
+
{
|
|
9588
|
+
"path": "localControlActive",
|
|
9589
|
+
"valueType": "boolean"
|
|
9590
|
+
},
|
|
9591
|
+
{
|
|
9592
|
+
"path": "powerOn",
|
|
9593
|
+
"valueType": "boolean"
|
|
9594
|
+
},
|
|
9595
|
+
{
|
|
9596
|
+
"path": "powerState",
|
|
9597
|
+
"valueType": "string"
|
|
9598
|
+
},
|
|
9599
|
+
{
|
|
9600
|
+
"path": "filterCleaningDue",
|
|
9601
|
+
"valueType": "boolean"
|
|
9602
|
+
},
|
|
9603
|
+
{
|
|
9604
|
+
"path": "machineCareDue",
|
|
9605
|
+
"valueType": "boolean"
|
|
9606
|
+
},
|
|
9607
|
+
{
|
|
9608
|
+
"path": "machineCareRemainingRuns",
|
|
9609
|
+
"valueType": "number"
|
|
9610
|
+
},
|
|
9611
|
+
{
|
|
9612
|
+
"path": "halfLoad",
|
|
9613
|
+
"valueType": "boolean"
|
|
9614
|
+
},
|
|
9615
|
+
{
|
|
9616
|
+
"path": "hygienePlus",
|
|
9617
|
+
"valueType": "boolean"
|
|
9618
|
+
},
|
|
9619
|
+
{
|
|
9620
|
+
"path": "extraDry",
|
|
9621
|
+
"valueType": "boolean"
|
|
9622
|
+
},
|
|
9623
|
+
{
|
|
9624
|
+
"path": "intensiveZone",
|
|
9625
|
+
"valueType": "boolean"
|
|
9626
|
+
},
|
|
9627
|
+
{
|
|
9628
|
+
"path": "varioSpeedPlus",
|
|
9629
|
+
"valueType": "boolean"
|
|
9630
|
+
},
|
|
9631
|
+
{
|
|
9632
|
+
"path": "childLock",
|
|
9633
|
+
"valueType": "boolean"
|
|
9634
|
+
},
|
|
9635
|
+
{
|
|
9636
|
+
"path": "errorCode",
|
|
9637
|
+
"valueType": "number"
|
|
9638
|
+
},
|
|
9639
|
+
{
|
|
9640
|
+
"path": "errorLabel",
|
|
9641
|
+
"valueType": "string"
|
|
9642
|
+
}
|
|
9643
|
+
],
|
|
9644
|
+
"doorbell": [{
|
|
9645
|
+
"path": "lastPressedAt",
|
|
9646
|
+
"valueType": "number"
|
|
9647
|
+
}, {
|
|
9648
|
+
"path": "pressCountSinceStart",
|
|
9649
|
+
"valueType": "number"
|
|
9650
|
+
}],
|
|
9651
|
+
"enum-sensor": [{
|
|
9652
|
+
"path": "value",
|
|
9653
|
+
"valueType": "string"
|
|
9654
|
+
}, {
|
|
9655
|
+
"path": "format",
|
|
9656
|
+
"valueType": "enum",
|
|
9657
|
+
"enumValues": [
|
|
9658
|
+
"date",
|
|
9659
|
+
"time",
|
|
9660
|
+
"datetime"
|
|
9661
|
+
]
|
|
9662
|
+
}],
|
|
9663
|
+
"event-emitter": [
|
|
9664
|
+
{
|
|
9665
|
+
"path": "lastEvent.deviceId",
|
|
9666
|
+
"valueType": "number"
|
|
9667
|
+
},
|
|
9668
|
+
{
|
|
9669
|
+
"path": "lastEvent.eventType",
|
|
9670
|
+
"valueType": "string"
|
|
9671
|
+
},
|
|
9672
|
+
{
|
|
9673
|
+
"path": "lastEvent.timestamp",
|
|
9674
|
+
"valueType": "number"
|
|
9675
|
+
},
|
|
9676
|
+
{
|
|
9677
|
+
"path": "lastEvent.seq",
|
|
9678
|
+
"valueType": "number"
|
|
9679
|
+
},
|
|
9680
|
+
{
|
|
9681
|
+
"path": "eventCountSinceStart",
|
|
9682
|
+
"valueType": "number"
|
|
9683
|
+
}
|
|
9684
|
+
],
|
|
9685
|
+
"fan-control": [
|
|
9686
|
+
{
|
|
9687
|
+
"path": "percentage",
|
|
9688
|
+
"valueType": "number"
|
|
9689
|
+
},
|
|
9690
|
+
{
|
|
9691
|
+
"path": "percentageStep",
|
|
9692
|
+
"valueType": "number"
|
|
9693
|
+
},
|
|
9694
|
+
{
|
|
9695
|
+
"path": "preset",
|
|
9696
|
+
"valueType": "string"
|
|
9697
|
+
},
|
|
9698
|
+
{
|
|
9699
|
+
"path": "direction",
|
|
9700
|
+
"valueType": "enum",
|
|
9701
|
+
"enumValues": ["forward", "reverse"]
|
|
9702
|
+
},
|
|
9703
|
+
{
|
|
9704
|
+
"path": "oscillating",
|
|
9705
|
+
"valueType": "boolean"
|
|
9706
|
+
}
|
|
9707
|
+
],
|
|
9708
|
+
"feature-probe": [
|
|
9709
|
+
{
|
|
9710
|
+
"path": "deviceType",
|
|
9711
|
+
"valueType": "string"
|
|
9712
|
+
},
|
|
9713
|
+
{
|
|
9714
|
+
"path": "model",
|
|
9715
|
+
"valueType": "string"
|
|
9716
|
+
},
|
|
9717
|
+
{
|
|
9718
|
+
"path": "channelCount",
|
|
9719
|
+
"valueType": "number"
|
|
9720
|
+
},
|
|
9721
|
+
{
|
|
9722
|
+
"path": "lastProbedAt",
|
|
9723
|
+
"valueType": "number"
|
|
9724
|
+
}
|
|
9725
|
+
],
|
|
9726
|
+
"flood": [{
|
|
9727
|
+
"path": "flooded",
|
|
9728
|
+
"valueType": "boolean"
|
|
9729
|
+
}],
|
|
9730
|
+
"gas": [{
|
|
9731
|
+
"path": "detected",
|
|
9732
|
+
"valueType": "boolean"
|
|
9733
|
+
}],
|
|
9734
|
+
"heating-valve": [{
|
|
9735
|
+
"path": "position",
|
|
9736
|
+
"valueType": "number"
|
|
9737
|
+
}],
|
|
9738
|
+
"humidifier": [
|
|
9739
|
+
{
|
|
9740
|
+
"path": "on",
|
|
9741
|
+
"valueType": "boolean"
|
|
9742
|
+
},
|
|
9743
|
+
{
|
|
9744
|
+
"path": "currentHumidity",
|
|
9745
|
+
"valueType": "number"
|
|
9746
|
+
},
|
|
9747
|
+
{
|
|
9748
|
+
"path": "targetHumidity",
|
|
9749
|
+
"valueType": "number"
|
|
9750
|
+
},
|
|
9751
|
+
{
|
|
9752
|
+
"path": "mode",
|
|
9753
|
+
"valueType": "string"
|
|
9754
|
+
},
|
|
9755
|
+
{
|
|
9756
|
+
"path": "action",
|
|
9757
|
+
"valueType": "string"
|
|
9758
|
+
},
|
|
9759
|
+
{
|
|
9760
|
+
"path": "minHumidity",
|
|
9761
|
+
"valueType": "number"
|
|
9762
|
+
},
|
|
9763
|
+
{
|
|
9764
|
+
"path": "maxHumidity",
|
|
9765
|
+
"valueType": "number"
|
|
9766
|
+
}
|
|
9767
|
+
],
|
|
9768
|
+
"humidity-sensor": [
|
|
9769
|
+
{
|
|
9770
|
+
"path": "percent",
|
|
9771
|
+
"valueType": "number"
|
|
9772
|
+
},
|
|
9773
|
+
{
|
|
9774
|
+
"path": "unit",
|
|
9775
|
+
"valueType": "string"
|
|
9776
|
+
},
|
|
9777
|
+
{
|
|
9778
|
+
"path": "precision",
|
|
9779
|
+
"valueType": "number"
|
|
9780
|
+
}
|
|
9781
|
+
],
|
|
9782
|
+
"image": [{
|
|
9783
|
+
"path": "url",
|
|
9784
|
+
"valueType": "string"
|
|
9785
|
+
}, {
|
|
9786
|
+
"path": "lastUpdated",
|
|
9787
|
+
"valueType": "number"
|
|
9788
|
+
}],
|
|
9789
|
+
"image-settings": [
|
|
9790
|
+
{
|
|
9791
|
+
"path": "brightness",
|
|
9792
|
+
"valueType": "number"
|
|
9793
|
+
},
|
|
9794
|
+
{
|
|
9795
|
+
"path": "contrast",
|
|
9796
|
+
"valueType": "number"
|
|
9797
|
+
},
|
|
9798
|
+
{
|
|
9799
|
+
"path": "saturation",
|
|
9800
|
+
"valueType": "number"
|
|
9801
|
+
},
|
|
9802
|
+
{
|
|
9803
|
+
"path": "sharpness",
|
|
9804
|
+
"valueType": "number"
|
|
9805
|
+
},
|
|
9806
|
+
{
|
|
9807
|
+
"path": "mirror",
|
|
9808
|
+
"valueType": "boolean"
|
|
9809
|
+
},
|
|
9810
|
+
{
|
|
9811
|
+
"path": "flip",
|
|
9812
|
+
"valueType": "boolean"
|
|
9813
|
+
},
|
|
9814
|
+
{
|
|
9815
|
+
"path": "rotate",
|
|
9816
|
+
"valueType": "enum",
|
|
9817
|
+
"enumValues": [
|
|
9818
|
+
"0",
|
|
9819
|
+
"90",
|
|
9820
|
+
"180",
|
|
9821
|
+
"270"
|
|
9822
|
+
]
|
|
9823
|
+
},
|
|
9824
|
+
{
|
|
9825
|
+
"path": "whiteBalance",
|
|
9826
|
+
"valueType": "enum",
|
|
9827
|
+
"enumValues": ["auto", "manual"]
|
|
9828
|
+
},
|
|
9829
|
+
{
|
|
9830
|
+
"path": "warmth",
|
|
9831
|
+
"valueType": "number"
|
|
9832
|
+
},
|
|
9833
|
+
{
|
|
9834
|
+
"path": "exposureMode",
|
|
9835
|
+
"valueType": "enum",
|
|
9836
|
+
"enumValues": ["auto", "manual"]
|
|
9837
|
+
},
|
|
9838
|
+
{
|
|
9839
|
+
"path": "backlightMode",
|
|
9840
|
+
"valueType": "enum",
|
|
9841
|
+
"enumValues": [
|
|
9842
|
+
"off",
|
|
9843
|
+
"blc",
|
|
9844
|
+
"wdr",
|
|
9845
|
+
"hlc"
|
|
9846
|
+
]
|
|
9847
|
+
}
|
|
9848
|
+
],
|
|
9849
|
+
"intercom": [
|
|
9850
|
+
{
|
|
9851
|
+
"path": "talking",
|
|
9852
|
+
"valueType": "boolean"
|
|
9853
|
+
},
|
|
9854
|
+
{
|
|
9855
|
+
"path": "lastSessionAt",
|
|
9856
|
+
"valueType": "number"
|
|
9857
|
+
},
|
|
9858
|
+
{
|
|
9859
|
+
"path": "ability.sampleRate",
|
|
9860
|
+
"valueType": "number"
|
|
9861
|
+
},
|
|
9862
|
+
{
|
|
9863
|
+
"path": "ability.duplex",
|
|
9864
|
+
"valueType": "enum",
|
|
9865
|
+
"enumValues": ["half", "full"]
|
|
9866
|
+
},
|
|
9867
|
+
{
|
|
9868
|
+
"path": "ability.maxBacklogMs",
|
|
9869
|
+
"valueType": "number"
|
|
9870
|
+
}
|
|
9871
|
+
],
|
|
9872
|
+
"lawn-mower-control": [
|
|
9873
|
+
{
|
|
9874
|
+
"path": "activity",
|
|
9875
|
+
"valueType": "enum",
|
|
9876
|
+
"enumValues": [
|
|
9877
|
+
"idle",
|
|
9878
|
+
"mowing",
|
|
9879
|
+
"paused",
|
|
9880
|
+
"docked",
|
|
9881
|
+
"error"
|
|
9882
|
+
]
|
|
9883
|
+
},
|
|
9884
|
+
{
|
|
9885
|
+
"path": "batteryLevel",
|
|
9886
|
+
"valueType": "number"
|
|
9887
|
+
},
|
|
9888
|
+
{
|
|
9889
|
+
"path": "progressPercent",
|
|
9890
|
+
"valueType": "number"
|
|
9891
|
+
},
|
|
9892
|
+
{
|
|
9893
|
+
"path": "currentCode",
|
|
9894
|
+
"valueType": "number"
|
|
9895
|
+
},
|
|
9896
|
+
{
|
|
9897
|
+
"path": "currentCodeLabel",
|
|
9898
|
+
"valueType": "string"
|
|
9899
|
+
},
|
|
9900
|
+
{
|
|
9901
|
+
"path": "severity",
|
|
9902
|
+
"valueType": "enum",
|
|
9903
|
+
"enumValues": [
|
|
9904
|
+
"info",
|
|
9905
|
+
"warning",
|
|
9906
|
+
"error"
|
|
9907
|
+
]
|
|
9908
|
+
}
|
|
9909
|
+
],
|
|
9910
|
+
"lock-control": [{
|
|
9911
|
+
"path": "state",
|
|
9912
|
+
"valueType": "enum",
|
|
9913
|
+
"enumValues": [
|
|
9914
|
+
"locked",
|
|
9915
|
+
"unlocked",
|
|
9916
|
+
"locking",
|
|
9917
|
+
"unlocking",
|
|
9918
|
+
"jammed"
|
|
9919
|
+
]
|
|
9920
|
+
}],
|
|
9921
|
+
"media-player": [
|
|
9922
|
+
{
|
|
9923
|
+
"path": "state",
|
|
9924
|
+
"valueType": "enum",
|
|
9925
|
+
"enumValues": [
|
|
9926
|
+
"off",
|
|
9927
|
+
"on",
|
|
9928
|
+
"idle",
|
|
9929
|
+
"playing",
|
|
9930
|
+
"paused",
|
|
9931
|
+
"buffering",
|
|
9932
|
+
"standby"
|
|
9933
|
+
]
|
|
9934
|
+
},
|
|
9935
|
+
{
|
|
9936
|
+
"path": "volumeLevel",
|
|
9937
|
+
"valueType": "number"
|
|
9938
|
+
},
|
|
9939
|
+
{
|
|
9940
|
+
"path": "isMuted",
|
|
9941
|
+
"valueType": "boolean"
|
|
9942
|
+
},
|
|
9943
|
+
{
|
|
9944
|
+
"path": "source",
|
|
9945
|
+
"valueType": "string"
|
|
9946
|
+
},
|
|
9947
|
+
{
|
|
9948
|
+
"path": "currentMedia.type",
|
|
9949
|
+
"valueType": "string"
|
|
9950
|
+
},
|
|
9951
|
+
{
|
|
9952
|
+
"path": "currentMedia.title",
|
|
9953
|
+
"valueType": "string"
|
|
9954
|
+
},
|
|
9955
|
+
{
|
|
9956
|
+
"path": "currentMedia.artist",
|
|
9957
|
+
"valueType": "string"
|
|
9958
|
+
},
|
|
9959
|
+
{
|
|
9960
|
+
"path": "currentMedia.album",
|
|
9961
|
+
"valueType": "string"
|
|
9962
|
+
},
|
|
9963
|
+
{
|
|
9964
|
+
"path": "currentMedia.imageUrl",
|
|
9965
|
+
"valueType": "string"
|
|
9966
|
+
},
|
|
9967
|
+
{
|
|
9968
|
+
"path": "positionMs",
|
|
9969
|
+
"valueType": "number"
|
|
9970
|
+
},
|
|
9971
|
+
{
|
|
9972
|
+
"path": "durationMs",
|
|
9973
|
+
"valueType": "number"
|
|
9974
|
+
},
|
|
9975
|
+
{
|
|
9976
|
+
"path": "shuffle",
|
|
9977
|
+
"valueType": "boolean"
|
|
9978
|
+
},
|
|
9979
|
+
{
|
|
9980
|
+
"path": "repeat",
|
|
9981
|
+
"valueType": "enum",
|
|
9982
|
+
"enumValues": [
|
|
9983
|
+
"off",
|
|
9984
|
+
"all",
|
|
9985
|
+
"one"
|
|
9986
|
+
]
|
|
9987
|
+
}
|
|
9988
|
+
],
|
|
9989
|
+
"motion": [
|
|
9990
|
+
{
|
|
9991
|
+
"path": "detected",
|
|
9992
|
+
"valueType": "boolean"
|
|
9993
|
+
},
|
|
9994
|
+
{
|
|
9995
|
+
"path": "lastDetectedAt",
|
|
9996
|
+
"valueType": "number"
|
|
9997
|
+
},
|
|
9998
|
+
{
|
|
9999
|
+
"path": "autoClearAfterMs",
|
|
10000
|
+
"valueType": "number"
|
|
10001
|
+
}
|
|
10002
|
+
],
|
|
10003
|
+
"motion-trigger": [{
|
|
10004
|
+
"path": "enabled",
|
|
10005
|
+
"valueType": "boolean"
|
|
10006
|
+
}],
|
|
10007
|
+
"motion-zones": [{
|
|
10008
|
+
"path": "enabled",
|
|
10009
|
+
"valueType": "boolean"
|
|
10010
|
+
}, {
|
|
10011
|
+
"path": "sensitivity",
|
|
10012
|
+
"valueType": "number"
|
|
10013
|
+
}],
|
|
10014
|
+
"mqtt-broker": [{
|
|
10015
|
+
"path": "brokerCount",
|
|
10016
|
+
"valueType": "number"
|
|
10017
|
+
}, {
|
|
10018
|
+
"path": "embeddedRunning",
|
|
10019
|
+
"valueType": "boolean"
|
|
10020
|
+
}],
|
|
10021
|
+
"native-object-detection": [{
|
|
10022
|
+
"path": "enabled",
|
|
10023
|
+
"valueType": "boolean"
|
|
10024
|
+
}],
|
|
10025
|
+
"navigation": [
|
|
10026
|
+
{
|
|
10027
|
+
"path": "mode",
|
|
10028
|
+
"valueType": "enum",
|
|
10029
|
+
"enumValues": [
|
|
10030
|
+
"idle",
|
|
10031
|
+
"cleaning",
|
|
10032
|
+
"spot",
|
|
10033
|
+
"following",
|
|
10034
|
+
"goto",
|
|
10035
|
+
"returning",
|
|
10036
|
+
"paused",
|
|
10037
|
+
"unknown"
|
|
10038
|
+
]
|
|
10039
|
+
},
|
|
10040
|
+
{
|
|
10041
|
+
"path": "following",
|
|
10042
|
+
"valueType": "boolean"
|
|
10043
|
+
},
|
|
10044
|
+
{
|
|
10045
|
+
"path": "flash",
|
|
10046
|
+
"valueType": "boolean"
|
|
10047
|
+
},
|
|
10048
|
+
{
|
|
10049
|
+
"path": "lightMode",
|
|
10050
|
+
"valueType": "enum",
|
|
10051
|
+
"enumValues": ["auto", "manual"]
|
|
10052
|
+
},
|
|
10053
|
+
{
|
|
10054
|
+
"path": "lightLevel",
|
|
10055
|
+
"valueType": "number"
|
|
10056
|
+
}
|
|
10057
|
+
],
|
|
10058
|
+
"network-link": [
|
|
10059
|
+
{
|
|
10060
|
+
"path": "type",
|
|
10061
|
+
"valueType": "enum",
|
|
10062
|
+
"enumValues": [
|
|
10063
|
+
"wifi",
|
|
10064
|
+
"ethernet",
|
|
10065
|
+
"cellular",
|
|
10066
|
+
"unknown"
|
|
10067
|
+
]
|
|
10068
|
+
},
|
|
10069
|
+
{
|
|
10070
|
+
"path": "signalPercent",
|
|
10071
|
+
"valueType": "number"
|
|
10072
|
+
},
|
|
10073
|
+
{
|
|
10074
|
+
"path": "rssiDbm",
|
|
10075
|
+
"valueType": "number"
|
|
10076
|
+
},
|
|
10077
|
+
{
|
|
10078
|
+
"path": "ssid",
|
|
10079
|
+
"valueType": "string"
|
|
10080
|
+
},
|
|
10081
|
+
{
|
|
10082
|
+
"path": "lastUpdated",
|
|
10083
|
+
"valueType": "number"
|
|
10084
|
+
}
|
|
10085
|
+
],
|
|
10086
|
+
"notifier": [
|
|
10087
|
+
{
|
|
10088
|
+
"path": "lastSentAt",
|
|
10089
|
+
"valueType": "number"
|
|
10090
|
+
},
|
|
10091
|
+
{
|
|
10092
|
+
"path": "lastError",
|
|
10093
|
+
"valueType": "string"
|
|
10094
|
+
},
|
|
10095
|
+
{
|
|
10096
|
+
"path": "queueDepth",
|
|
10097
|
+
"valueType": "number"
|
|
10098
|
+
},
|
|
10099
|
+
{
|
|
10100
|
+
"path": "supports.image",
|
|
10101
|
+
"valueType": "boolean"
|
|
10102
|
+
},
|
|
10103
|
+
{
|
|
10104
|
+
"path": "supports.priority",
|
|
10105
|
+
"valueType": "boolean"
|
|
10106
|
+
},
|
|
10107
|
+
{
|
|
10108
|
+
"path": "supports.data",
|
|
10109
|
+
"valueType": "boolean"
|
|
10110
|
+
},
|
|
10111
|
+
{
|
|
10112
|
+
"path": "supports.actions",
|
|
10113
|
+
"valueType": "boolean"
|
|
10114
|
+
},
|
|
10115
|
+
{
|
|
10116
|
+
"path": "supports.recipients",
|
|
10117
|
+
"valueType": "boolean"
|
|
10118
|
+
}
|
|
10119
|
+
],
|
|
10120
|
+
"numeric-sensor": [
|
|
10121
|
+
{
|
|
10122
|
+
"path": "value",
|
|
10123
|
+
"valueType": "number"
|
|
10124
|
+
},
|
|
10125
|
+
{
|
|
10126
|
+
"path": "unit",
|
|
10127
|
+
"valueType": "string"
|
|
10128
|
+
},
|
|
10129
|
+
{
|
|
10130
|
+
"path": "precision",
|
|
10131
|
+
"valueType": "number"
|
|
10132
|
+
}
|
|
10133
|
+
],
|
|
10134
|
+
"pet-feeder": [
|
|
10135
|
+
{
|
|
10136
|
+
"path": "foodLevel",
|
|
10137
|
+
"valueType": "number"
|
|
10138
|
+
},
|
|
10139
|
+
{
|
|
10140
|
+
"path": "food1",
|
|
10141
|
+
"valueType": "number"
|
|
10142
|
+
},
|
|
10143
|
+
{
|
|
10144
|
+
"path": "food2",
|
|
10145
|
+
"valueType": "number"
|
|
10146
|
+
},
|
|
10147
|
+
{
|
|
10148
|
+
"path": "lowFood",
|
|
10149
|
+
"valueType": "boolean"
|
|
10150
|
+
},
|
|
10151
|
+
{
|
|
10152
|
+
"path": "batteryPower",
|
|
10153
|
+
"valueType": "number"
|
|
10154
|
+
},
|
|
10155
|
+
{
|
|
10156
|
+
"path": "desiccantLeftDays",
|
|
10157
|
+
"valueType": "number"
|
|
10158
|
+
},
|
|
10159
|
+
{
|
|
10160
|
+
"path": "feeding",
|
|
10161
|
+
"valueType": "boolean"
|
|
10162
|
+
},
|
|
10163
|
+
{
|
|
10164
|
+
"path": "status",
|
|
10165
|
+
"valueType": "enum",
|
|
10166
|
+
"enumValues": [
|
|
10167
|
+
"normal",
|
|
10168
|
+
"offline",
|
|
10169
|
+
"on_batteries"
|
|
10170
|
+
]
|
|
10171
|
+
},
|
|
10172
|
+
{
|
|
10173
|
+
"path": "error",
|
|
10174
|
+
"valueType": "string"
|
|
10175
|
+
},
|
|
10176
|
+
{
|
|
10177
|
+
"path": "errorCode",
|
|
10178
|
+
"valueType": "number"
|
|
10179
|
+
},
|
|
10180
|
+
{
|
|
10181
|
+
"path": "isDualHopper",
|
|
10182
|
+
"valueType": "boolean"
|
|
10183
|
+
},
|
|
10184
|
+
{
|
|
10185
|
+
"path": "childLock",
|
|
10186
|
+
"valueType": "boolean"
|
|
10187
|
+
},
|
|
10188
|
+
{
|
|
10189
|
+
"path": "indicatorLight",
|
|
10190
|
+
"valueType": "boolean"
|
|
10191
|
+
},
|
|
10192
|
+
{
|
|
10193
|
+
"path": "feedSound",
|
|
10194
|
+
"valueType": "boolean"
|
|
10195
|
+
},
|
|
10196
|
+
{
|
|
10197
|
+
"path": "volume",
|
|
10198
|
+
"valueType": "number"
|
|
10199
|
+
}
|
|
10200
|
+
],
|
|
10201
|
+
"power-meter": [
|
|
10202
|
+
{
|
|
10203
|
+
"path": "watts",
|
|
10204
|
+
"valueType": "number"
|
|
10205
|
+
},
|
|
10206
|
+
{
|
|
10207
|
+
"path": "kwhTotal",
|
|
10208
|
+
"valueType": "number"
|
|
10209
|
+
},
|
|
10210
|
+
{
|
|
10211
|
+
"path": "volts",
|
|
10212
|
+
"valueType": "number"
|
|
10213
|
+
},
|
|
10214
|
+
{
|
|
10215
|
+
"path": "amps",
|
|
10216
|
+
"valueType": "number"
|
|
10217
|
+
},
|
|
10218
|
+
{
|
|
10219
|
+
"path": "va",
|
|
10220
|
+
"valueType": "number"
|
|
10221
|
+
},
|
|
10222
|
+
{
|
|
10223
|
+
"path": "powerFactor",
|
|
10224
|
+
"valueType": "number"
|
|
10225
|
+
},
|
|
10226
|
+
{
|
|
10227
|
+
"path": "unit",
|
|
10228
|
+
"valueType": "string"
|
|
10229
|
+
},
|
|
10230
|
+
{
|
|
10231
|
+
"path": "precision",
|
|
10232
|
+
"valueType": "number"
|
|
10233
|
+
}
|
|
10234
|
+
],
|
|
10235
|
+
"presence": [
|
|
10236
|
+
{
|
|
10237
|
+
"path": "state",
|
|
10238
|
+
"valueType": "string"
|
|
10239
|
+
},
|
|
10240
|
+
{
|
|
10241
|
+
"path": "location",
|
|
10242
|
+
"valueType": "string"
|
|
10243
|
+
},
|
|
10244
|
+
{
|
|
10245
|
+
"path": "gps.latitude",
|
|
10246
|
+
"valueType": "number"
|
|
10247
|
+
},
|
|
10248
|
+
{
|
|
10249
|
+
"path": "gps.longitude",
|
|
10250
|
+
"valueType": "number"
|
|
10251
|
+
},
|
|
10252
|
+
{
|
|
10253
|
+
"path": "gps.accuracyMeters",
|
|
10254
|
+
"valueType": "number"
|
|
10255
|
+
},
|
|
10256
|
+
{
|
|
10257
|
+
"path": "batteryPercent",
|
|
10258
|
+
"valueType": "number"
|
|
10259
|
+
}
|
|
10260
|
+
],
|
|
10261
|
+
"pressure-sensor": [
|
|
10262
|
+
{
|
|
10263
|
+
"path": "hpa",
|
|
10264
|
+
"valueType": "number"
|
|
10265
|
+
},
|
|
10266
|
+
{
|
|
10267
|
+
"path": "unit",
|
|
10268
|
+
"valueType": "string"
|
|
10269
|
+
},
|
|
10270
|
+
{
|
|
10271
|
+
"path": "precision",
|
|
10272
|
+
"valueType": "number"
|
|
10273
|
+
}
|
|
10274
|
+
],
|
|
10275
|
+
"privacy-mask": [{
|
|
10276
|
+
"path": "enabled",
|
|
10277
|
+
"valueType": "boolean"
|
|
10278
|
+
}, {
|
|
10279
|
+
"path": "audioEnabled",
|
|
10280
|
+
"valueType": "boolean"
|
|
10281
|
+
}],
|
|
10282
|
+
"ptz": [
|
|
10283
|
+
{
|
|
10284
|
+
"path": "pan",
|
|
10285
|
+
"valueType": "number"
|
|
10286
|
+
},
|
|
10287
|
+
{
|
|
10288
|
+
"path": "tilt",
|
|
10289
|
+
"valueType": "number"
|
|
10290
|
+
},
|
|
10291
|
+
{
|
|
10292
|
+
"path": "zoom",
|
|
10293
|
+
"valueType": "number"
|
|
10294
|
+
},
|
|
10295
|
+
{
|
|
10296
|
+
"path": "autofocus",
|
|
10297
|
+
"valueType": "boolean"
|
|
10298
|
+
}
|
|
10299
|
+
],
|
|
10300
|
+
"ptz-autotrack": [
|
|
10301
|
+
{
|
|
10302
|
+
"path": "enabled",
|
|
10303
|
+
"valueType": "boolean"
|
|
10304
|
+
},
|
|
10305
|
+
{
|
|
10306
|
+
"path": "currentSettings.targetType",
|
|
10307
|
+
"valueType": "string"
|
|
10308
|
+
},
|
|
10309
|
+
{
|
|
10310
|
+
"path": "currentSettings.stopDelaySeconds",
|
|
10311
|
+
"valueType": "number"
|
|
10312
|
+
},
|
|
10313
|
+
{
|
|
10314
|
+
"path": "currentSettings.disappearDelaySeconds",
|
|
10315
|
+
"valueType": "number"
|
|
10316
|
+
}
|
|
10317
|
+
],
|
|
10318
|
+
"recording-archive": [
|
|
10319
|
+
{
|
|
10320
|
+
"path": "deviceId",
|
|
10321
|
+
"valueType": "number"
|
|
10322
|
+
},
|
|
10323
|
+
{
|
|
10324
|
+
"path": "enabled",
|
|
10325
|
+
"valueType": "boolean"
|
|
10326
|
+
},
|
|
10327
|
+
{
|
|
10328
|
+
"path": "activeMode",
|
|
10329
|
+
"valueType": "enum",
|
|
10330
|
+
"enumValues": [
|
|
10331
|
+
"off",
|
|
10332
|
+
"events",
|
|
10333
|
+
"continuous",
|
|
10334
|
+
"on-device-decision"
|
|
10335
|
+
]
|
|
10336
|
+
},
|
|
10337
|
+
{
|
|
10338
|
+
"path": "nodeId",
|
|
10339
|
+
"valueType": "string"
|
|
10340
|
+
},
|
|
10341
|
+
{
|
|
10342
|
+
"path": "storageBytes",
|
|
10343
|
+
"valueType": "number"
|
|
10344
|
+
}
|
|
10345
|
+
],
|
|
10346
|
+
"recording-onboard": [
|
|
10347
|
+
{
|
|
10348
|
+
"path": "primaryTrackId",
|
|
10349
|
+
"valueType": "string"
|
|
10350
|
+
},
|
|
10351
|
+
{
|
|
10352
|
+
"path": "enabled",
|
|
10353
|
+
"valueType": "boolean"
|
|
10354
|
+
},
|
|
10355
|
+
{
|
|
10356
|
+
"path": "overwriteWhenFull",
|
|
10357
|
+
"valueType": "boolean"
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"path": "preRecordSec",
|
|
10361
|
+
"valueType": "number"
|
|
10362
|
+
},
|
|
10363
|
+
{
|
|
10364
|
+
"path": "postRecordSec",
|
|
10365
|
+
"valueType": "number"
|
|
10366
|
+
},
|
|
10367
|
+
{
|
|
10368
|
+
"path": "segmentMinutes",
|
|
10369
|
+
"valueType": "number"
|
|
10370
|
+
},
|
|
10371
|
+
{
|
|
10372
|
+
"path": "unreadableWindows",
|
|
10373
|
+
"valueType": "number"
|
|
10374
|
+
},
|
|
10375
|
+
{
|
|
10376
|
+
"path": "recordingToNowhere",
|
|
10377
|
+
"valueType": "boolean"
|
|
10378
|
+
}
|
|
10379
|
+
],
|
|
10380
|
+
"recording-signal": [{
|
|
10381
|
+
"path": "active",
|
|
10382
|
+
"valueType": "boolean"
|
|
10383
|
+
}, {
|
|
10384
|
+
"path": "reason",
|
|
10385
|
+
"valueType": "string"
|
|
10386
|
+
}],
|
|
10387
|
+
"running-state": [
|
|
10388
|
+
{
|
|
10389
|
+
"path": "running",
|
|
10390
|
+
"valueType": "boolean"
|
|
10391
|
+
},
|
|
10392
|
+
{
|
|
10393
|
+
"path": "since",
|
|
10394
|
+
"valueType": "number"
|
|
10395
|
+
},
|
|
10396
|
+
{
|
|
10397
|
+
"path": "source",
|
|
10398
|
+
"valueType": "enum",
|
|
10399
|
+
"enumValues": ["native", "assigned"]
|
|
10400
|
+
},
|
|
10401
|
+
{
|
|
10402
|
+
"path": "phase",
|
|
10403
|
+
"valueType": "string"
|
|
10404
|
+
}
|
|
10405
|
+
],
|
|
10406
|
+
"script-runner": [
|
|
10407
|
+
{
|
|
10408
|
+
"path": "isRunning",
|
|
10409
|
+
"valueType": "boolean"
|
|
10410
|
+
},
|
|
10411
|
+
{
|
|
10412
|
+
"path": "lastRunAt",
|
|
10413
|
+
"valueType": "number"
|
|
10414
|
+
},
|
|
10415
|
+
{
|
|
10416
|
+
"path": "lastRunSuccess",
|
|
10417
|
+
"valueType": "boolean"
|
|
10418
|
+
},
|
|
10419
|
+
{
|
|
10420
|
+
"path": "lastError",
|
|
10421
|
+
"valueType": "string"
|
|
10422
|
+
}
|
|
10423
|
+
],
|
|
10424
|
+
"smoke": [{
|
|
10425
|
+
"path": "detected",
|
|
10426
|
+
"valueType": "boolean"
|
|
10427
|
+
}],
|
|
10428
|
+
"snapshot": [
|
|
10429
|
+
{
|
|
10430
|
+
"path": "lastCapturedAt",
|
|
10431
|
+
"valueType": "number"
|
|
10432
|
+
},
|
|
10433
|
+
{
|
|
10434
|
+
"path": "cacheAgeMs",
|
|
10435
|
+
"valueType": "number"
|
|
10436
|
+
},
|
|
10437
|
+
{
|
|
10438
|
+
"path": "lastBytes",
|
|
10439
|
+
"valueType": "number"
|
|
10440
|
+
},
|
|
10441
|
+
{
|
|
10442
|
+
"path": "lastStreamId",
|
|
10443
|
+
"valueType": "string"
|
|
10444
|
+
}
|
|
10445
|
+
],
|
|
10446
|
+
"stream-params": [
|
|
10447
|
+
{
|
|
10448
|
+
"path": "main.width",
|
|
10449
|
+
"valueType": "number"
|
|
10450
|
+
},
|
|
10451
|
+
{
|
|
10452
|
+
"path": "main.height",
|
|
10453
|
+
"valueType": "number"
|
|
10454
|
+
},
|
|
10455
|
+
{
|
|
10456
|
+
"path": "main.codec",
|
|
10457
|
+
"valueType": "enum",
|
|
10458
|
+
"enumValues": ["h264", "h265"]
|
|
10459
|
+
},
|
|
10460
|
+
{
|
|
10461
|
+
"path": "main.framerate",
|
|
10462
|
+
"valueType": "number"
|
|
10463
|
+
},
|
|
10464
|
+
{
|
|
10465
|
+
"path": "main.bitrate",
|
|
10466
|
+
"valueType": "number"
|
|
10467
|
+
},
|
|
10468
|
+
{
|
|
10469
|
+
"path": "main.bitrateMode",
|
|
10470
|
+
"valueType": "enum",
|
|
10471
|
+
"enumValues": ["vbr", "cbr"]
|
|
10472
|
+
},
|
|
10473
|
+
{
|
|
10474
|
+
"path": "main.encoderProfile",
|
|
10475
|
+
"valueType": "enum",
|
|
10476
|
+
"enumValues": [
|
|
10477
|
+
"high",
|
|
10478
|
+
"main",
|
|
10479
|
+
"baseline"
|
|
10480
|
+
]
|
|
10481
|
+
},
|
|
10482
|
+
{
|
|
10483
|
+
"path": "main.gop",
|
|
10484
|
+
"valueType": "number"
|
|
10485
|
+
},
|
|
10486
|
+
{
|
|
10487
|
+
"path": "main.audio",
|
|
10488
|
+
"valueType": "boolean"
|
|
10489
|
+
},
|
|
10490
|
+
{
|
|
10491
|
+
"path": "sub.width",
|
|
10492
|
+
"valueType": "number"
|
|
10493
|
+
},
|
|
10494
|
+
{
|
|
10495
|
+
"path": "sub.height",
|
|
10496
|
+
"valueType": "number"
|
|
10497
|
+
},
|
|
10498
|
+
{
|
|
10499
|
+
"path": "sub.codec",
|
|
10500
|
+
"valueType": "enum",
|
|
10501
|
+
"enumValues": ["h264", "h265"]
|
|
10502
|
+
},
|
|
10503
|
+
{
|
|
10504
|
+
"path": "sub.framerate",
|
|
10505
|
+
"valueType": "number"
|
|
10506
|
+
},
|
|
10507
|
+
{
|
|
10508
|
+
"path": "sub.bitrate",
|
|
10509
|
+
"valueType": "number"
|
|
10510
|
+
},
|
|
10511
|
+
{
|
|
10512
|
+
"path": "sub.bitrateMode",
|
|
10513
|
+
"valueType": "enum",
|
|
10514
|
+
"enumValues": ["vbr", "cbr"]
|
|
10515
|
+
},
|
|
10516
|
+
{
|
|
10517
|
+
"path": "sub.encoderProfile",
|
|
10518
|
+
"valueType": "enum",
|
|
10519
|
+
"enumValues": [
|
|
10520
|
+
"high",
|
|
10521
|
+
"main",
|
|
10522
|
+
"baseline"
|
|
10523
|
+
]
|
|
10524
|
+
},
|
|
10525
|
+
{
|
|
10526
|
+
"path": "sub.gop",
|
|
10527
|
+
"valueType": "number"
|
|
10528
|
+
},
|
|
10529
|
+
{
|
|
10530
|
+
"path": "sub.audio",
|
|
10531
|
+
"valueType": "boolean"
|
|
10532
|
+
},
|
|
10533
|
+
{
|
|
10534
|
+
"path": "ext.width",
|
|
10535
|
+
"valueType": "number"
|
|
10536
|
+
},
|
|
10537
|
+
{
|
|
10538
|
+
"path": "ext.height",
|
|
10539
|
+
"valueType": "number"
|
|
10540
|
+
},
|
|
10541
|
+
{
|
|
10542
|
+
"path": "ext.codec",
|
|
10543
|
+
"valueType": "enum",
|
|
10544
|
+
"enumValues": ["h264", "h265"]
|
|
10545
|
+
},
|
|
10546
|
+
{
|
|
10547
|
+
"path": "ext.framerate",
|
|
10548
|
+
"valueType": "number"
|
|
10549
|
+
},
|
|
10550
|
+
{
|
|
10551
|
+
"path": "ext.bitrate",
|
|
10552
|
+
"valueType": "number"
|
|
10553
|
+
},
|
|
10554
|
+
{
|
|
10555
|
+
"path": "ext.bitrateMode",
|
|
10556
|
+
"valueType": "enum",
|
|
10557
|
+
"enumValues": ["vbr", "cbr"]
|
|
10558
|
+
},
|
|
10559
|
+
{
|
|
10560
|
+
"path": "ext.encoderProfile",
|
|
10561
|
+
"valueType": "enum",
|
|
10562
|
+
"enumValues": [
|
|
10563
|
+
"high",
|
|
10564
|
+
"main",
|
|
10565
|
+
"baseline"
|
|
10566
|
+
]
|
|
10567
|
+
},
|
|
10568
|
+
{
|
|
10569
|
+
"path": "ext.gop",
|
|
10570
|
+
"valueType": "number"
|
|
10571
|
+
},
|
|
10572
|
+
{
|
|
10573
|
+
"path": "ext.audio",
|
|
10574
|
+
"valueType": "boolean"
|
|
10575
|
+
}
|
|
10576
|
+
],
|
|
10577
|
+
"switch": [{
|
|
10578
|
+
"path": "on",
|
|
10579
|
+
"valueType": "boolean"
|
|
10580
|
+
}],
|
|
10581
|
+
"tamper": [{
|
|
10582
|
+
"path": "tampered",
|
|
10583
|
+
"valueType": "boolean"
|
|
10584
|
+
}],
|
|
10585
|
+
"temperature-sensor": [
|
|
10586
|
+
{
|
|
10587
|
+
"path": "celsius",
|
|
10588
|
+
"valueType": "number"
|
|
10589
|
+
},
|
|
10590
|
+
{
|
|
10591
|
+
"path": "unit",
|
|
10592
|
+
"valueType": "string"
|
|
10593
|
+
},
|
|
10594
|
+
{
|
|
10595
|
+
"path": "precision",
|
|
10596
|
+
"valueType": "number"
|
|
10597
|
+
}
|
|
10598
|
+
],
|
|
10599
|
+
"update": [
|
|
10600
|
+
{
|
|
10601
|
+
"path": "currentVersion",
|
|
10602
|
+
"valueType": "string"
|
|
10603
|
+
},
|
|
10604
|
+
{
|
|
10605
|
+
"path": "availableVersion",
|
|
10606
|
+
"valueType": "string"
|
|
10607
|
+
},
|
|
10608
|
+
{
|
|
10609
|
+
"path": "updatable",
|
|
10610
|
+
"valueType": "boolean"
|
|
10611
|
+
},
|
|
10612
|
+
{
|
|
10613
|
+
"path": "state",
|
|
10614
|
+
"valueType": "string"
|
|
10615
|
+
},
|
|
10616
|
+
{
|
|
10617
|
+
"path": "inProgress",
|
|
10618
|
+
"valueType": "boolean"
|
|
10619
|
+
}
|
|
10620
|
+
],
|
|
10621
|
+
"vacuum-control": [
|
|
10622
|
+
{
|
|
10623
|
+
"path": "state",
|
|
10624
|
+
"valueType": "enum",
|
|
10625
|
+
"enumValues": [
|
|
10626
|
+
"idle",
|
|
10627
|
+
"cleaning",
|
|
10628
|
+
"paused",
|
|
10629
|
+
"returning",
|
|
10630
|
+
"docked",
|
|
10631
|
+
"drying",
|
|
10632
|
+
"error"
|
|
10633
|
+
]
|
|
10634
|
+
},
|
|
10635
|
+
{
|
|
10636
|
+
"path": "batteryLevel",
|
|
10637
|
+
"valueType": "number"
|
|
10638
|
+
},
|
|
10639
|
+
{
|
|
10640
|
+
"path": "fanSpeed",
|
|
10641
|
+
"valueType": "string"
|
|
10642
|
+
},
|
|
10643
|
+
{
|
|
10644
|
+
"path": "progressPercent",
|
|
10645
|
+
"valueType": "number"
|
|
10646
|
+
},
|
|
10647
|
+
{
|
|
10648
|
+
"path": "errorCode",
|
|
10649
|
+
"valueType": "number"
|
|
10650
|
+
},
|
|
10651
|
+
{
|
|
10652
|
+
"path": "errorLabel",
|
|
10653
|
+
"valueType": "string"
|
|
10654
|
+
}
|
|
10655
|
+
],
|
|
10656
|
+
"valve": [{
|
|
10657
|
+
"path": "state",
|
|
10658
|
+
"valueType": "enum",
|
|
10659
|
+
"enumValues": [
|
|
10660
|
+
"open",
|
|
10661
|
+
"opening",
|
|
10662
|
+
"closing",
|
|
10663
|
+
"closed",
|
|
10664
|
+
"stopped"
|
|
10665
|
+
]
|
|
10666
|
+
}, {
|
|
10667
|
+
"path": "position",
|
|
10668
|
+
"valueType": "number"
|
|
10669
|
+
}],
|
|
10670
|
+
"vibration": [{
|
|
10671
|
+
"path": "detected",
|
|
10672
|
+
"valueType": "boolean"
|
|
10673
|
+
}],
|
|
10674
|
+
"water-heater": [
|
|
10675
|
+
{
|
|
10676
|
+
"path": "currentTemp",
|
|
10677
|
+
"valueType": "number"
|
|
10678
|
+
},
|
|
10679
|
+
{
|
|
10680
|
+
"path": "targetTemp",
|
|
10681
|
+
"valueType": "number"
|
|
10682
|
+
},
|
|
10683
|
+
{
|
|
10684
|
+
"path": "operationMode",
|
|
10685
|
+
"valueType": "string"
|
|
10686
|
+
},
|
|
10687
|
+
{
|
|
10688
|
+
"path": "away",
|
|
10689
|
+
"valueType": "boolean"
|
|
10690
|
+
},
|
|
10691
|
+
{
|
|
10692
|
+
"path": "minTemp",
|
|
10693
|
+
"valueType": "number"
|
|
10694
|
+
},
|
|
10695
|
+
{
|
|
10696
|
+
"path": "maxTemp",
|
|
10697
|
+
"valueType": "number"
|
|
10698
|
+
}
|
|
10699
|
+
],
|
|
10700
|
+
"weather": [
|
|
10701
|
+
{
|
|
10702
|
+
"path": "condition",
|
|
10703
|
+
"valueType": "string"
|
|
10704
|
+
},
|
|
10705
|
+
{
|
|
10706
|
+
"path": "temperature",
|
|
10707
|
+
"valueType": "number"
|
|
10708
|
+
},
|
|
10709
|
+
{
|
|
10710
|
+
"path": "temperatureUnit",
|
|
10711
|
+
"valueType": "string"
|
|
10712
|
+
},
|
|
10713
|
+
{
|
|
10714
|
+
"path": "humidity",
|
|
10715
|
+
"valueType": "number"
|
|
10716
|
+
},
|
|
10717
|
+
{
|
|
10718
|
+
"path": "pressure",
|
|
10719
|
+
"valueType": "number"
|
|
10720
|
+
},
|
|
10721
|
+
{
|
|
10722
|
+
"path": "pressureUnit",
|
|
10723
|
+
"valueType": "string"
|
|
10724
|
+
},
|
|
10725
|
+
{
|
|
10726
|
+
"path": "windSpeed",
|
|
10727
|
+
"valueType": "number"
|
|
10728
|
+
},
|
|
10729
|
+
{
|
|
10730
|
+
"path": "windSpeedUnit",
|
|
10731
|
+
"valueType": "string"
|
|
10732
|
+
},
|
|
10733
|
+
{
|
|
10734
|
+
"path": "windBearing",
|
|
10735
|
+
"valueType": "number"
|
|
10736
|
+
}
|
|
10737
|
+
],
|
|
10738
|
+
"zone-analytics": [
|
|
10739
|
+
{
|
|
10740
|
+
"path": "ts",
|
|
10741
|
+
"valueType": "number"
|
|
10742
|
+
},
|
|
10743
|
+
{
|
|
10744
|
+
"path": "frameWidth",
|
|
10745
|
+
"valueType": "number"
|
|
10746
|
+
},
|
|
10747
|
+
{
|
|
10748
|
+
"path": "frameHeight",
|
|
10749
|
+
"valueType": "number"
|
|
10750
|
+
},
|
|
10751
|
+
{
|
|
10752
|
+
"path": "frame.totalObjects",
|
|
10753
|
+
"valueType": "number"
|
|
10754
|
+
},
|
|
10755
|
+
{
|
|
10756
|
+
"path": "frame.standingObjects",
|
|
10757
|
+
"valueType": "number"
|
|
10758
|
+
},
|
|
10759
|
+
{
|
|
10760
|
+
"path": "frame.transientObjects",
|
|
10761
|
+
"valueType": "number"
|
|
10762
|
+
},
|
|
10763
|
+
{
|
|
10764
|
+
"path": "unzoned.totalObjects",
|
|
10765
|
+
"valueType": "number"
|
|
10766
|
+
},
|
|
10767
|
+
{
|
|
10768
|
+
"path": "unzoned.standingObjects",
|
|
10769
|
+
"valueType": "number"
|
|
10770
|
+
},
|
|
10771
|
+
{
|
|
10772
|
+
"path": "unzoned.transientObjects",
|
|
10773
|
+
"valueType": "number"
|
|
10774
|
+
}
|
|
10775
|
+
]
|
|
10776
|
+
});
|
|
8803
10777
|
object({
|
|
8804
10778
|
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
8805
10779
|
params: record(string(), union([string(), number()])).optional()
|
|
@@ -9148,7 +11122,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
9148
11122
|
return DeviceRole;
|
|
9149
11123
|
}({});
|
|
9150
11124
|
//#endregion
|
|
9151
|
-
//#region ../types/dist/composition-
|
|
11125
|
+
//#region ../types/dist/composition-kEl9mevu.mjs
|
|
9152
11126
|
/**
|
|
9153
11127
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
9154
11128
|
*
|
|
@@ -12381,7 +14355,7 @@ var LogChannelDescriptorSchema = object({
|
|
|
12381
14355
|
* `true` is a PROMISE with two halves, and both must hold: the gate is
|
|
12382
14356
|
* consulted with the numeric device id, AND every line the channel admits
|
|
12383
14357
|
* carries `tags: { deviceId }` with that same numeric id. The second half is
|
|
12384
|
-
* what makes `| json | deviceId="
|
|
14358
|
+
* what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
|
|
12385
14359
|
* keeps `deviceId` out of the stream labels for cardinality, so the tag in
|
|
12386
14360
|
* the body is the only way to filter.
|
|
12387
14361
|
*
|
|
@@ -12569,7 +14543,7 @@ var ModelVariantGroupSchema = object({
|
|
|
12569
14543
|
precision: _enum(["fp32", "int8"]).optional(),
|
|
12570
14544
|
/**
|
|
12571
14545
|
* Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
|
|
12572
|
-
* an alternate training of the same family (
|
|
14546
|
+
* an alternate training of the same family (plugin catalog `relu_test`); chip
|
|
12573
14547
|
* label is "Test".
|
|
12574
14548
|
*/
|
|
12575
14549
|
optimization: _enum(["standard", "test"]).optional(),
|
|
@@ -12821,8 +14795,8 @@ var ModelCatalogEntrySchema = object({
|
|
|
12821
14795
|
provider: ModelProviderIdSchema.optional(),
|
|
12822
14796
|
/**
|
|
12823
14797
|
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
12824
|
-
* applies (
|
|
12825
|
-
* labels already ARE the CamStack macros (
|
|
14798
|
+
* applies (plus catalog / COCO public catalog). Set on a custom model whose raw
|
|
14799
|
+
* labels already ARE the CamStack macros (plugin catalog identity map).
|
|
12826
14800
|
*/
|
|
12827
14801
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
12828
14802
|
/**
|
|
@@ -15808,7 +17782,7 @@ method(object({
|
|
|
15808
17782
|
* `1` is real time and is the ONLY value that allows the copy branch —
|
|
15809
17783
|
* anything else forces `libx264` over the window. That was priced
|
|
15810
17784
|
* before it was chosen: a per-event burst measured at 0.23 s and 254 KB
|
|
15811
|
-
* on a real
|
|
17785
|
+
* on a real 101 720p cut, against 922 KB for the copy it replaces. A
|
|
15812
17786
|
* re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
|
|
15813
17787
|
* once the decode is forced the width stops being free.
|
|
15814
17788
|
*/
|
|
@@ -16228,6 +18202,7 @@ var CompositionRunStatusSchema = _enum([
|
|
|
16228
18202
|
"starting",
|
|
16229
18203
|
"running",
|
|
16230
18204
|
"degraded",
|
|
18205
|
+
"incomplete",
|
|
16231
18206
|
"failed"
|
|
16232
18207
|
]);
|
|
16233
18208
|
var CompositionFieldStateKindSchema = _enum([
|
|
@@ -16277,6 +18252,13 @@ var ComposerUnreadableBlockSchema = object({
|
|
|
16277
18252
|
/** The parse error, in the operator's words. */
|
|
16278
18253
|
error: string()
|
|
16279
18254
|
});
|
|
18255
|
+
/** A confirmed release the hub did not accept. `deviceId` is the claim's device. */
|
|
18256
|
+
var UnreleasedClaimSchema = object({
|
|
18257
|
+
deviceId: number().int(),
|
|
18258
|
+
capName: string(),
|
|
18259
|
+
owner: string(),
|
|
18260
|
+
error: string()
|
|
18261
|
+
});
|
|
16280
18262
|
method(object({
|
|
16281
18263
|
/** The shared Blocks integration; null until `core-blocks` has reconciled it. */
|
|
16282
18264
|
integrationId: string().nullable(),
|
|
@@ -16286,7 +18268,13 @@ method(object({
|
|
|
16286
18268
|
/** Operator restarts: rebuild these runtimes and re-resolve their sources. Stores nothing (D62). */
|
|
16287
18269
|
restartBlockIds: array(string()),
|
|
16288
18270
|
/** Composition rows that exist but do not parse: held, never withdrawn, reported failed. */
|
|
16289
|
-
unreadableBlocks: array(ComposerUnreadableBlockSchema)
|
|
18271
|
+
unreadableBlocks: array(ComposerUnreadableBlockSchema),
|
|
18272
|
+
/**
|
|
18273
|
+
* Operator-confirmed deletions. Their claims are released on this apply,
|
|
18274
|
+
* before any replacement block claims. A block that merely vanished from the
|
|
18275
|
+
* snapshot is not listed here and still waits for two applies (D49).
|
|
18276
|
+
*/
|
|
18277
|
+
retiredBlockIds: array(string()).optional()
|
|
16290
18278
|
}), object({
|
|
16291
18279
|
blocks: array(object({
|
|
16292
18280
|
blockId: string(),
|
|
@@ -16298,7 +18286,13 @@ method(object({
|
|
|
16298
18286
|
* integration unknown, its own rows unread or read empty once). An empty
|
|
16299
18287
|
* apply the caller owes is paid off only by one the composer acted on (D49).
|
|
16300
18288
|
*/
|
|
16301
|
-
acted: boolean()
|
|
18289
|
+
acted: boolean(),
|
|
18290
|
+
/**
|
|
18291
|
+
* Confirmed releases this apply tried and the hub did not accept. Empty when
|
|
18292
|
+
* every one landed (or there was nothing to hand back). Absent on a result
|
|
18293
|
+
* that never got that far.
|
|
18294
|
+
*/
|
|
18295
|
+
unreleasedClaims: array(UnreleasedClaimSchema).optional()
|
|
16302
18296
|
}), {
|
|
16303
18297
|
kind: "mutation",
|
|
16304
18298
|
auth: "admin"
|
|
@@ -16422,6 +18416,7 @@ var CoreBlockStatusSchema = _enum([
|
|
|
16422
18416
|
"starting",
|
|
16423
18417
|
"running",
|
|
16424
18418
|
"degraded",
|
|
18419
|
+
"incomplete",
|
|
16425
18420
|
"failed"
|
|
16426
18421
|
]);
|
|
16427
18422
|
/** path → TypeScript source for a multi-file block. */
|
|
@@ -38345,7 +40340,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
|
|
|
38345
40340
|
* `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
|
|
38346
40341
|
* operator's casing. The registry matches labels trimmed + case-insensitively
|
|
38347
40342
|
* everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
|
|
38348
|
-
* case-only rename (`
|
|
40343
|
+
* case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
|
|
38349
40344
|
* map keyed on the displayed casing would orphan its entry on exactly that
|
|
38350
40345
|
* edit. Consumers join by keying their own label through `locationIconKey`.
|
|
38351
40346
|
*/
|
|
@@ -38370,7 +40365,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
38370
40365
|
/**
|
|
38371
40366
|
* A SITE ZONE — a named part of the property that several locations belong to.
|
|
38372
40367
|
*
|
|
38373
|
-
* "
|
|
40368
|
+
* "Night zone" holds every bedroom; "Zona giorno" the living room and the
|
|
38374
40369
|
* kitchen. A camera belongs to exactly one location, and a location to at most
|
|
38375
40370
|
* one zone, so a camera's zone is derived and never stored on the device: the
|
|
38376
40371
|
* whole point of this entity is that grouping rooms touches no device row.
|
|
@@ -38399,7 +40394,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
38399
40394
|
* the locations inside it.
|
|
38400
40395
|
*
|
|
38401
40396
|
* The LABEL is carried alongside the key because the key is lossy on purpose —
|
|
38402
|
-
* a surface must show "
|
|
40397
|
+
* a surface must show "Night zone", not "night zone". Locations are carried
|
|
38403
40398
|
* here, rather than left to a second call, because every consumer wants both
|
|
38404
40399
|
* at once and a viewer that asked twice could render a zone whose membership
|
|
38405
40400
|
* it has not fetched yet.
|
|
@@ -40512,8 +42507,8 @@ var LoadContributionSchema = object({
|
|
|
40512
42507
|
"unattributable"
|
|
40513
42508
|
]),
|
|
40514
42509
|
/**
|
|
40515
|
-
* What ONE entry is, in the contributor's own words — `
|
|
40516
|
-
* `
|
|
42510
|
+
* What ONE entry is, in the contributor's own words — `101/high`,
|
|
42511
|
+
* `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
|
|
40517
42512
|
* family and inventing a common one would lose the only information that
|
|
40518
42513
|
* makes two entries for the same camera distinguishable.
|
|
40519
42514
|
*/
|
|
@@ -42161,6 +44156,381 @@ var _macroLookup = /* @__PURE__ */ new Map();
|
|
|
42161
44156
|
for (const [k, v] of Object.entries(YAMNET_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
42162
44157
|
for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
42163
44158
|
/**
|
|
44159
|
+
* Palette entry ids (D939). Audio is the one gradient; `audio-*` leaves are
|
|
44160
|
+
* not entries. `heatmapScrub` is a mark, not an event kind.
|
|
44161
|
+
*/
|
|
44162
|
+
var PALETTE_ENTRY_IDS = [
|
|
44163
|
+
"motion",
|
|
44164
|
+
"audio",
|
|
44165
|
+
"recording",
|
|
44166
|
+
"live",
|
|
44167
|
+
"heatmapScrub",
|
|
44168
|
+
"person",
|
|
44169
|
+
"vehicle",
|
|
44170
|
+
"animal",
|
|
44171
|
+
"package",
|
|
44172
|
+
"sensor",
|
|
44173
|
+
"control",
|
|
44174
|
+
"face",
|
|
44175
|
+
"plate",
|
|
44176
|
+
"car",
|
|
44177
|
+
"truck",
|
|
44178
|
+
"bus",
|
|
44179
|
+
"motorcycle",
|
|
44180
|
+
"bicycle",
|
|
44181
|
+
"airplane",
|
|
44182
|
+
"boat",
|
|
44183
|
+
"train",
|
|
44184
|
+
"bird",
|
|
44185
|
+
"dog",
|
|
44186
|
+
"cat",
|
|
44187
|
+
"horse",
|
|
44188
|
+
"sheep",
|
|
44189
|
+
"cow",
|
|
44190
|
+
"elephant",
|
|
44191
|
+
"bear",
|
|
44192
|
+
"zebra",
|
|
44193
|
+
"giraffe",
|
|
44194
|
+
"package-delivered",
|
|
44195
|
+
"package-picked-up",
|
|
44196
|
+
"suitcase",
|
|
44197
|
+
"backpack",
|
|
44198
|
+
"handbag",
|
|
44199
|
+
"contact",
|
|
44200
|
+
"motion-sensor",
|
|
44201
|
+
"smoke",
|
|
44202
|
+
"flood",
|
|
44203
|
+
"gas",
|
|
44204
|
+
"carbon-monoxide",
|
|
44205
|
+
"vibration",
|
|
44206
|
+
"tamper",
|
|
44207
|
+
"presence",
|
|
44208
|
+
"enum-sensor",
|
|
44209
|
+
"device-event",
|
|
44210
|
+
"lock",
|
|
44211
|
+
"cover",
|
|
44212
|
+
"switch",
|
|
44213
|
+
"siren",
|
|
44214
|
+
"button",
|
|
44215
|
+
"doorbell"
|
|
44216
|
+
];
|
|
44217
|
+
var AUDIO_ENTRY_ID = "audio";
|
|
44218
|
+
/** Six rungs, quiet → loud. The opaque end is the entry's hex. */
|
|
44219
|
+
var AUDIO_GRADIENT_ALPHAS = [
|
|
44220
|
+
.3,
|
|
44221
|
+
.42,
|
|
44222
|
+
.55,
|
|
44223
|
+
.7,
|
|
44224
|
+
.85,
|
|
44225
|
+
1
|
|
44226
|
+
];
|
|
44227
|
+
var PALETTE_PRESET_IDS = [
|
|
44228
|
+
"camstack",
|
|
44229
|
+
"high-contrast",
|
|
44230
|
+
"okabe-ito"
|
|
44231
|
+
];
|
|
44232
|
+
/** Frozen palette tables (D939). The spec refuses a table that breaks the rule. */
|
|
44233
|
+
var CAMSTACK_HEX = {
|
|
44234
|
+
motion: "#d946ef",
|
|
44235
|
+
audio: "#059eb8",
|
|
44236
|
+
recording: "#ef4444",
|
|
44237
|
+
live: "#8d7a00",
|
|
44238
|
+
heatmapScrub: "#4b32ff",
|
|
44239
|
+
person: "#11a64c",
|
|
44240
|
+
vehicle: "#3b82f6",
|
|
44241
|
+
animal: "#ea6a09",
|
|
44242
|
+
package: "#924667",
|
|
44243
|
+
sensor: "#624bbc",
|
|
44244
|
+
control: "#944d24",
|
|
44245
|
+
face: "#ed4f8d",
|
|
44246
|
+
plate: "#4b7027",
|
|
44247
|
+
car: "#9684cf",
|
|
44248
|
+
truck: "#0f9b89",
|
|
44249
|
+
bus: "#a734a9",
|
|
44250
|
+
motorcycle: "#c1133a",
|
|
44251
|
+
bicycle: "#0e6a9b",
|
|
44252
|
+
airplane: "#7c9928",
|
|
44253
|
+
boat: "#b17933",
|
|
44254
|
+
train: "#ad6ca3",
|
|
44255
|
+
bird: "#0f7c55",
|
|
44256
|
+
dog: "#c82700",
|
|
44257
|
+
cat: "#7268f2",
|
|
44258
|
+
horse: "#cb795e",
|
|
44259
|
+
sheep: "#b8636b",
|
|
44260
|
+
cow: "#cb2969",
|
|
44261
|
+
elephant: "#1158d2",
|
|
44262
|
+
bear: "#8d5e00",
|
|
44263
|
+
zebra: "#0097d6",
|
|
44264
|
+
giraffe: "#8f61bb",
|
|
44265
|
+
"package-delivered": "#cd3f9b",
|
|
44266
|
+
"package-picked-up": "#388a08",
|
|
44267
|
+
suitcase: "#666800",
|
|
44268
|
+
backpack: "#ec5022",
|
|
44269
|
+
handbag: "#a76ef8",
|
|
44270
|
+
contact: "#ab5a49",
|
|
44271
|
+
"motion-sensor": "#b95d1a",
|
|
44272
|
+
smoke: "#dd3858",
|
|
44273
|
+
flood: "#b31e7d",
|
|
44274
|
+
gas: "#5b70b5",
|
|
44275
|
+
"carbon-monoxide": "#7b4e8e",
|
|
44276
|
+
vibration: "#e65bba",
|
|
44277
|
+
tamper: "#98464b",
|
|
44278
|
+
presence: "#3a9468",
|
|
44279
|
+
"enum-sensor": "#7885f8",
|
|
44280
|
+
"device-event": "#8c43c8",
|
|
44281
|
+
lock: "#649653",
|
|
44282
|
+
cover: "#c67597",
|
|
44283
|
+
switch: "#7a812a",
|
|
44284
|
+
siren: "#ac5d7f",
|
|
44285
|
+
button: "#b276cd",
|
|
44286
|
+
doorbell: "#0087ab"
|
|
44287
|
+
};
|
|
44288
|
+
var CAMSTACK_FALLBACK = [
|
|
44289
|
+
"#b34dc7",
|
|
44290
|
+
"#1d7d34",
|
|
44291
|
+
"#db6b6c",
|
|
44292
|
+
"#a43d29",
|
|
44293
|
+
"#0e6ee6",
|
|
44294
|
+
"#29a10b",
|
|
44295
|
+
"#a98731",
|
|
44296
|
+
"#0181c6"
|
|
44297
|
+
];
|
|
44298
|
+
var HIGH_CONTRAST_HEX = {
|
|
44299
|
+
motion: "#964360",
|
|
44300
|
+
audio: "#23a132",
|
|
44301
|
+
recording: "#2494ca",
|
|
44302
|
+
live: "#bd7e2b",
|
|
44303
|
+
heatmapScrub: "#ad6eea",
|
|
44304
|
+
person: "#62611e",
|
|
44305
|
+
vehicle: "#f4534c",
|
|
44306
|
+
animal: "#1556cd",
|
|
44307
|
+
package: "#9c4415",
|
|
44308
|
+
sensor: "#066c48",
|
|
44309
|
+
control: "#f2479f",
|
|
44310
|
+
face: "#139d8a",
|
|
44311
|
+
plate: "#909024",
|
|
44312
|
+
car: "#8e35ab",
|
|
44313
|
+
truck: "#bd0b2b",
|
|
44314
|
+
bus: "#7a88ca",
|
|
44315
|
+
motorcycle: "#e26725",
|
|
44316
|
+
bicycle: "#a6679b",
|
|
44317
|
+
airplane: "#7c5720",
|
|
44318
|
+
boat: "#467a1b",
|
|
44319
|
+
train: "#6f65a4",
|
|
44320
|
+
bird: "#cb717f",
|
|
44321
|
+
dog: "#c62490",
|
|
44322
|
+
cat: "#b36850",
|
|
44323
|
+
horse: "#1872ac",
|
|
44324
|
+
sheep: "#927939",
|
|
44325
|
+
cow: "#428a5c",
|
|
44326
|
+
elephant: "#d41160",
|
|
44327
|
+
bear: "#799453",
|
|
44328
|
+
zebra: "#a85455",
|
|
44329
|
+
giraffe: "#746be8",
|
|
44330
|
+
"package-delivered": "#824a80",
|
|
44331
|
+
"package-picked-up": "#614ac1",
|
|
44332
|
+
suitcase: "#2f77f3",
|
|
44333
|
+
backpack: "#fa476d",
|
|
44334
|
+
handbag: "#c14cbe",
|
|
44335
|
+
contact: "#c83921",
|
|
44336
|
+
"motion-sensor": "#a07ebd",
|
|
44337
|
+
smoke: "#a25b13",
|
|
44338
|
+
flood: "#526bab",
|
|
44339
|
+
gas: "#924938",
|
|
44340
|
+
"carbon-monoxide": "#bb7e53",
|
|
44341
|
+
vibration: "#b66182",
|
|
44342
|
+
tamper: "#3c6931",
|
|
44343
|
+
presence: "#6c851d",
|
|
44344
|
+
"enum-sensor": "#ad2d48",
|
|
44345
|
+
"device-event": "#5e9b04",
|
|
44346
|
+
lock: "#00a062",
|
|
44347
|
+
cover: "#ad8624",
|
|
44348
|
+
switch: "#d05259",
|
|
44349
|
+
siren: "#cd67b3",
|
|
44350
|
+
button: "#c9746a",
|
|
44351
|
+
doorbell: "#338eeb"
|
|
44352
|
+
};
|
|
44353
|
+
var HIGH_CONTRAST_FALLBACK = [
|
|
44354
|
+
"#817f3b",
|
|
44355
|
+
"#a0733e",
|
|
44356
|
+
"#8658b2",
|
|
44357
|
+
"#956301",
|
|
44358
|
+
"#bc652d",
|
|
44359
|
+
"#647331",
|
|
44360
|
+
"#a14c9e",
|
|
44361
|
+
"#d14e71"
|
|
44362
|
+
];
|
|
44363
|
+
var OKABE_ITO_HEX = {
|
|
44364
|
+
motion: "#b88128",
|
|
44365
|
+
audio: "#1096c8",
|
|
44366
|
+
recording: "#009e73",
|
|
44367
|
+
live: "#9c8c22",
|
|
44368
|
+
heatmapScrub: "#0072b2",
|
|
44369
|
+
person: "#d55e00",
|
|
44370
|
+
vehicle: "#c0739f",
|
|
44371
|
+
animal: "#226d18",
|
|
44372
|
+
package: "#91446c",
|
|
44373
|
+
sensor: "#217b56",
|
|
44374
|
+
control: "#648647",
|
|
44375
|
+
face: "#c22998",
|
|
44376
|
+
plate: "#fa4575",
|
|
44377
|
+
car: "#956301",
|
|
44378
|
+
truck: "#2f77f3",
|
|
44379
|
+
bus: "#7a4e86",
|
|
44380
|
+
motorcycle: "#f54597",
|
|
44381
|
+
bicycle: "#bb3e75",
|
|
44382
|
+
airplane: "#e054c0",
|
|
44383
|
+
boat: "#457942",
|
|
44384
|
+
train: "#867afa",
|
|
44385
|
+
bird: "#88914c",
|
|
44386
|
+
dog: "#1556cd",
|
|
44387
|
+
cat: "#71702c",
|
|
44388
|
+
horse: "#9b4fa4",
|
|
44389
|
+
sheep: "#c0559d",
|
|
44390
|
+
cow: "#d14f65",
|
|
44391
|
+
elephant: "#98470f",
|
|
44392
|
+
bear: "#595896",
|
|
44393
|
+
zebra: "#96790e",
|
|
44394
|
+
giraffe: "#cb717b",
|
|
44395
|
+
"package-delivered": "#139d8a",
|
|
44396
|
+
"package-picked-up": "#906ead",
|
|
44397
|
+
suitcase: "#d02939",
|
|
44398
|
+
backpack: "#d41160",
|
|
44399
|
+
handbag: "#f64f54",
|
|
44400
|
+
contact: "#7258d2",
|
|
44401
|
+
"motion-sensor": "#b66182",
|
|
44402
|
+
smoke: "#627abb",
|
|
44403
|
+
flood: "#b86ae4",
|
|
44404
|
+
gas: "#a95261",
|
|
44405
|
+
"carbon-monoxide": "#c65d3c",
|
|
44406
|
+
vibration: "#7a40b7",
|
|
44407
|
+
tamper: "#914b34",
|
|
44408
|
+
presence: "#9481c3",
|
|
44409
|
+
"enum-sensor": "#ac6d47",
|
|
44410
|
+
"device-event": "#7b6fce",
|
|
44411
|
+
lock: "#c67662",
|
|
44412
|
+
cover: "#a6564d",
|
|
44413
|
+
switch: "#ad2c4e",
|
|
44414
|
+
siren: "#348e08",
|
|
44415
|
+
button: "#d27303",
|
|
44416
|
+
doorbell: "#55770f"
|
|
44417
|
+
};
|
|
44418
|
+
var OKABE_ITO_FALLBACK = [
|
|
44419
|
+
"#9a3784",
|
|
44420
|
+
"#a7392c",
|
|
44421
|
+
"#409d50",
|
|
44422
|
+
"#6987e7",
|
|
44423
|
+
"#ee5b3d",
|
|
44424
|
+
"#c0430d",
|
|
44425
|
+
"#af79b3",
|
|
44426
|
+
"#4b6628"
|
|
44427
|
+
];
|
|
44428
|
+
/**
|
|
44429
|
+
* The display palette (D939). One table of colours, three presets, one
|
|
44430
|
+
* validator. Taxonomy colours and every consumer read this — there is no
|
|
44431
|
+
* second hex table.
|
|
44432
|
+
*/
|
|
44433
|
+
var paletteHexSchema = string().regex(/^#[0-9a-f]{6}$/);
|
|
44434
|
+
var paletteSwatchSchema = discriminatedUnion("form", [object({
|
|
44435
|
+
form: literal("solid"),
|
|
44436
|
+
hex: paletteHexSchema
|
|
44437
|
+
}), object({
|
|
44438
|
+
form: literal("gradient"),
|
|
44439
|
+
hex: paletteHexSchema,
|
|
44440
|
+
alphas: array(number().gt(0).lte(1)).length(AUDIO_GRADIENT_ALPHAS.length)
|
|
44441
|
+
})]);
|
|
44442
|
+
var paletteReadySchema = object({
|
|
44443
|
+
status: literal("ready"),
|
|
44444
|
+
presetId: _enum(PALETTE_PRESET_IDS),
|
|
44445
|
+
customized: boolean(),
|
|
44446
|
+
source: _enum(["stored", "unconfigured"]),
|
|
44447
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
44448
|
+
fallbacks: array(paletteHexSchema).length(8)
|
|
44449
|
+
});
|
|
44450
|
+
var paletteResultSchema = discriminatedUnion("status", [paletteReadySchema, object({
|
|
44451
|
+
status: literal("unknown"),
|
|
44452
|
+
reason: string()
|
|
44453
|
+
})]);
|
|
44454
|
+
var setPaletteInputSchema = union([object({ presetId: string() }), object({
|
|
44455
|
+
presetId: string(),
|
|
44456
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
44457
|
+
})]);
|
|
44458
|
+
object({
|
|
44459
|
+
presetId: string(),
|
|
44460
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
44461
|
+
});
|
|
44462
|
+
function solid(hex) {
|
|
44463
|
+
return {
|
|
44464
|
+
form: "solid",
|
|
44465
|
+
hex
|
|
44466
|
+
};
|
|
44467
|
+
}
|
|
44468
|
+
function audioGradient(hex) {
|
|
44469
|
+
return {
|
|
44470
|
+
form: "gradient",
|
|
44471
|
+
hex,
|
|
44472
|
+
alphas: [...AUDIO_GRADIENT_ALPHAS]
|
|
44473
|
+
};
|
|
44474
|
+
}
|
|
44475
|
+
function swatchesFrom(hexes) {
|
|
44476
|
+
const out = {};
|
|
44477
|
+
for (const id of PALETTE_ENTRY_IDS) {
|
|
44478
|
+
const hex = hexes[id];
|
|
44479
|
+
if (hex === void 0) throw new Error(`palette table missing ${id}`);
|
|
44480
|
+
out[id] = id === "audio" ? audioGradient(hex) : solid(hex);
|
|
44481
|
+
}
|
|
44482
|
+
return out;
|
|
44483
|
+
}
|
|
44484
|
+
function preset(id, name, hexes, fallbacks) {
|
|
44485
|
+
return {
|
|
44486
|
+
id,
|
|
44487
|
+
name,
|
|
44488
|
+
swatches: swatchesFrom(hexes),
|
|
44489
|
+
fallbacks
|
|
44490
|
+
};
|
|
44491
|
+
}
|
|
44492
|
+
var DISPLAY_PRESETS = [
|
|
44493
|
+
preset("camstack", "CamStack", CAMSTACK_HEX, CAMSTACK_FALLBACK),
|
|
44494
|
+
preset("high-contrast", "High contrast", HIGH_CONTRAST_HEX, HIGH_CONTRAST_FALLBACK),
|
|
44495
|
+
preset("okabe-ito", "Colour-blind safe", OKABE_ITO_HEX, OKABE_ITO_FALLBACK)
|
|
44496
|
+
];
|
|
44497
|
+
function presetById(id) {
|
|
44498
|
+
return DISPLAY_PRESETS.find((item) => item.id === id);
|
|
44499
|
+
}
|
|
44500
|
+
function bundledCamstack() {
|
|
44501
|
+
const presetRow = presetById("camstack");
|
|
44502
|
+
if (presetRow === void 0) throw new Error("CamStack preset missing");
|
|
44503
|
+
return readyOf(presetRow, "unconfigured", false);
|
|
44504
|
+
}
|
|
44505
|
+
function readyOf(row, source, customized) {
|
|
44506
|
+
return {
|
|
44507
|
+
status: "ready",
|
|
44508
|
+
presetId: row.id,
|
|
44509
|
+
customized,
|
|
44510
|
+
source,
|
|
44511
|
+
swatches: row.swatches,
|
|
44512
|
+
fallbacks: [...row.fallbacks]
|
|
44513
|
+
};
|
|
44514
|
+
}
|
|
44515
|
+
function hashFallback(kind, fallbacks) {
|
|
44516
|
+
let hash = 0;
|
|
44517
|
+
for (let i = 0; i < kind.length; i++) hash = hash * 31 + (kind.codePointAt(i) ?? 0) >>> 0;
|
|
44518
|
+
const hex = fallbacks[hash % fallbacks.length];
|
|
44519
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
44520
|
+
return hex;
|
|
44521
|
+
}
|
|
44522
|
+
/** Colour a kind paints with. Audio leaves share the audio gradient's hex. */
|
|
44523
|
+
function paintHex(swatches, fallbacks, kind) {
|
|
44524
|
+
const key = kind.trim().toLowerCase();
|
|
44525
|
+
if (key.startsWith("audio-")) {
|
|
44526
|
+
const audio = swatches[AUDIO_ENTRY_ID];
|
|
44527
|
+
return audio !== void 0 ? audio.hex : hashFallback(key, fallbacks);
|
|
44528
|
+
}
|
|
44529
|
+
const direct = swatches[key];
|
|
44530
|
+
if (direct !== void 0) return direct.hex;
|
|
44531
|
+
return hashFallback(key, fallbacks);
|
|
44532
|
+
}
|
|
44533
|
+
/**
|
|
42164
44534
|
* Unified event-kind taxonomy — THE single source of truth for
|
|
42165
44535
|
* `kind → { parentKind, category, level, color, iconId, labelKey, label,
|
|
42166
44536
|
* icon }`.
|
|
@@ -42174,109 +44544,88 @@ for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set
|
|
|
42174
44544
|
* - `addon-post-analysis/shared/frame/box-drawer.ts` (DEFAULT_COLOR)
|
|
42175
44545
|
* - the COCO / audio class maps (macro ↔ sub relationships)
|
|
42176
44546
|
*
|
|
42177
|
-
* The DATA (serializable —
|
|
42178
|
-
* `@camstack/types`.
|
|
42179
|
-
*
|
|
42180
|
-
*
|
|
42181
|
-
*
|
|
44547
|
+
* The DATA (serializable — parentKind / iconId / labelKey) lives here in
|
|
44548
|
+
* `@camstack/types`. Colour is NOT a second table: each entry's `color` is
|
|
44549
|
+
* the bundled CamStack display palette (D939). The effective cluster palette
|
|
44550
|
+
* is the `display-palette` capability. The UI-side mapping `iconId → lucide
|
|
44551
|
+
* component` and `labelKey → t()` lives in `@camstack/ui-library`.
|
|
42182
44552
|
*
|
|
42183
44553
|
* Two levels only (v1 YAGNI): macro → sub. `person` is a leaf macro.
|
|
42184
44554
|
*/
|
|
42185
|
-
var
|
|
42186
|
-
|
|
42187
|
-
|
|
42188
|
-
|
|
42189
|
-
|
|
42190
|
-
|
|
42191
|
-
|
|
42192
|
-
|
|
42193
|
-
|
|
42194
|
-
|
|
42195
|
-
};
|
|
42196
|
-
var DETECTION_SUB_COLORS = {
|
|
42197
|
-
car: "#f59e0b",
|
|
42198
|
-
truck: "#d97706",
|
|
42199
|
-
bus: "#b45309",
|
|
42200
|
-
motorcycle: "#eab308",
|
|
42201
|
-
bicycle: "#ca8a04",
|
|
42202
|
-
airplane: "#60a5fa",
|
|
42203
|
-
boat: "#2563eb",
|
|
42204
|
-
train: "#1d4ed8",
|
|
42205
|
-
bird: "#14b8a6",
|
|
42206
|
-
dog: "#84cc16",
|
|
42207
|
-
cat: "#f97316",
|
|
42208
|
-
horse: "#a16207",
|
|
42209
|
-
sheep: "#a3a3a3",
|
|
42210
|
-
cow: "#78716c",
|
|
42211
|
-
elephant: "#6b7280",
|
|
42212
|
-
bear: "#7c2d12",
|
|
42213
|
-
zebra: "#404040",
|
|
42214
|
-
giraffe: "#d4a373"
|
|
42215
|
-
};
|
|
44555
|
+
var BUNDLED_PALETTE = bundledCamstack();
|
|
44556
|
+
function kindColor(kind) {
|
|
44557
|
+
return paintHex(BUNDLED_PALETTE.swatches, BUNDLED_PALETTE.fallbacks, kind);
|
|
44558
|
+
}
|
|
44559
|
+
function firstFallback(fallbacks) {
|
|
44560
|
+
const hex = fallbacks[0];
|
|
44561
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
44562
|
+
return hex;
|
|
44563
|
+
}
|
|
44564
|
+
firstFallback(BUNDLED_PALETTE.fallbacks);
|
|
42216
44565
|
function titleCase(id) {
|
|
42217
44566
|
return id.split(/[-_ ]/).filter((p) => p.length > 0).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
|
|
42218
44567
|
}
|
|
42219
44568
|
var entries = /* @__PURE__ */ new Map();
|
|
42220
|
-
function macro(kind, category,
|
|
44569
|
+
function macro(kind, category, iconId, label) {
|
|
42221
44570
|
entries.set(kind, {
|
|
42222
44571
|
kind,
|
|
42223
44572
|
parentKind: null,
|
|
42224
44573
|
level: "macro",
|
|
42225
44574
|
category,
|
|
42226
|
-
color,
|
|
44575
|
+
color: kindColor(kind),
|
|
42227
44576
|
iconId,
|
|
42228
44577
|
labelKey: `eventKind.${kind}`,
|
|
42229
44578
|
label
|
|
42230
44579
|
});
|
|
42231
44580
|
}
|
|
42232
|
-
function sub(kind, parentKind, category,
|
|
44581
|
+
function sub(kind, parentKind, category, iconId, label) {
|
|
42233
44582
|
entries.set(kind, {
|
|
42234
44583
|
kind,
|
|
42235
44584
|
parentKind,
|
|
42236
44585
|
level: "sub",
|
|
42237
44586
|
category,
|
|
42238
|
-
color,
|
|
44587
|
+
color: kindColor(kind),
|
|
42239
44588
|
iconId,
|
|
42240
44589
|
labelKey: `eventKind.${kind}`,
|
|
42241
44590
|
label
|
|
42242
44591
|
});
|
|
42243
44592
|
}
|
|
42244
|
-
macro("motion", "motion",
|
|
42245
|
-
macro("audio", "audio",
|
|
42246
|
-
macro("person", "detection",
|
|
42247
|
-
macro("vehicle", "detection",
|
|
42248
|
-
macro("animal", "detection",
|
|
42249
|
-
macro("package", "package",
|
|
42250
|
-
macro("sensor", "sensor",
|
|
42251
|
-
macro("control", "control",
|
|
44593
|
+
macro("motion", "motion", "motion", "Motion");
|
|
44594
|
+
macro("audio", "audio", "audio", "Audio");
|
|
44595
|
+
macro("person", "detection", "person", "Person");
|
|
44596
|
+
macro("vehicle", "detection", "vehicle", "Vehicle");
|
|
44597
|
+
macro("animal", "detection", "animal", "Animal");
|
|
44598
|
+
macro("package", "package", "package", "Package");
|
|
44599
|
+
macro("sensor", "sensor", "sensor", "Sensor");
|
|
44600
|
+
macro("control", "control", "control", "Control");
|
|
42252
44601
|
for (const [cocoClass, macroClass] of Object.entries(COCO_TO_MACRO.mapping)) {
|
|
42253
44602
|
if (macroClass !== "vehicle" && macroClass !== "animal") continue;
|
|
42254
44603
|
if (entries.has(cocoClass)) continue;
|
|
42255
|
-
sub(cocoClass, macroClass, "detection",
|
|
44604
|
+
sub(cocoClass, macroClass, "detection", cocoClass, titleCase(cocoClass));
|
|
42256
44605
|
}
|
|
42257
|
-
sub("package-delivered", "package", "package",
|
|
42258
|
-
sub("package-picked-up", "package", "package",
|
|
42259
|
-
sub("contact", "sensor", "sensor", "
|
|
42260
|
-
sub("motion-sensor", "sensor", "sensor",
|
|
42261
|
-
sub("smoke", "sensor", "sensor", "
|
|
42262
|
-
sub("flood", "sensor", "sensor", "
|
|
42263
|
-
sub("gas", "sensor", "sensor", "
|
|
42264
|
-
sub("carbon-monoxide", "sensor", "sensor", "
|
|
42265
|
-
sub("vibration", "sensor", "sensor", "
|
|
42266
|
-
sub("tamper", "sensor", "sensor", "
|
|
42267
|
-
sub("presence", "sensor", "sensor", "
|
|
42268
|
-
sub("enum-sensor", "sensor", "sensor",
|
|
42269
|
-
sub("device-event", "sensor", "sensor", "
|
|
42270
|
-
sub("lock", "control", "control", "
|
|
42271
|
-
sub("cover", "control", "control", "
|
|
42272
|
-
sub("switch", "control", "control",
|
|
42273
|
-
sub("siren", "control", "control", "
|
|
42274
|
-
sub("button", "control", "control", "
|
|
42275
|
-
sub("doorbell", "control", "control", "
|
|
44606
|
+
sub("package-delivered", "package", "package", "package", "Package delivered");
|
|
44607
|
+
sub("package-picked-up", "package", "package", "package", "Package picked up");
|
|
44608
|
+
sub("contact", "sensor", "sensor", "door", "Contact");
|
|
44609
|
+
sub("motion-sensor", "sensor", "sensor", "pir", "Motion sensor");
|
|
44610
|
+
sub("smoke", "sensor", "sensor", "smoke", "Smoke");
|
|
44611
|
+
sub("flood", "sensor", "sensor", "water", "Water leak");
|
|
44612
|
+
sub("gas", "sensor", "sensor", "gas", "Gas");
|
|
44613
|
+
sub("carbon-monoxide", "sensor", "sensor", "smoke", "Carbon monoxide");
|
|
44614
|
+
sub("vibration", "sensor", "sensor", "vibration", "Vibration");
|
|
44615
|
+
sub("tamper", "sensor", "sensor", "tamper", "Tamper");
|
|
44616
|
+
sub("presence", "sensor", "sensor", "presence", "Presence");
|
|
44617
|
+
sub("enum-sensor", "sensor", "sensor", "generic", "Sensor state");
|
|
44618
|
+
sub("device-event", "sensor", "sensor", "button", "Device event");
|
|
44619
|
+
sub("lock", "control", "control", "lock", "Lock");
|
|
44620
|
+
sub("cover", "control", "control", "door", "Cover");
|
|
44621
|
+
sub("switch", "control", "control", "switch", "Switch");
|
|
44622
|
+
sub("siren", "control", "control", "siren", "Siren");
|
|
44623
|
+
sub("button", "control", "control", "button", "Button");
|
|
44624
|
+
sub("doorbell", "control", "control", "doorbell", "Doorbell");
|
|
42276
44625
|
for (const l of AUDIO_MACRO_LABELS) {
|
|
42277
44626
|
const kind = `audio-${l.id}`;
|
|
42278
44627
|
if (entries.has(kind)) continue;
|
|
42279
|
-
sub(kind, "audio", "audio",
|
|
44628
|
+
sub(kind, "audio", "audio", kind, l.name);
|
|
42280
44629
|
}
|
|
42281
44630
|
/** The complete taxonomy dictionary, keyed by kind. */
|
|
42282
44631
|
var EVENT_TAXONOMY = Object.freeze(Object.fromEntries(entries));
|
|
@@ -43119,7 +45468,7 @@ var NcConditionsSchema = object({
|
|
|
43119
45468
|
* with the list under it is worse than no switch (D62).
|
|
43120
45469
|
*
|
|
43121
45470
|
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
43122
|
-
* renameable, and a rule authored on "
|
|
45471
|
+
* renameable, and a rule authored on "Alice" went silently dark the moment
|
|
43123
45472
|
* the operator fixed the spelling. The id reaches the record on
|
|
43124
45473
|
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
43125
45474
|
* `{{label}}` renders.
|
|
@@ -43670,7 +46019,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
43670
46019
|
* A rule scoped to one camera and one zone silently became a rule that
|
|
43671
46020
|
* matches EVERY event on EVERY camera, and lost its `media` policy
|
|
43672
46021
|
* (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
|
|
43673
|
-
* live on 2026-08-12: a rule scoped to device
|
|
46022
|
+
* live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
|
|
43674
46023
|
* within a minute of a two-field patch.
|
|
43675
46024
|
*
|
|
43676
46025
|
* So every defaulted field is re-declared here WITHOUT its default. The
|
|
@@ -45483,7 +47832,7 @@ var LabelAttributionSchema = object({
|
|
|
45483
47832
|
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
45484
47833
|
*
|
|
45485
47834
|
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
45486
|
-
* notification rule authored on "
|
|
47835
|
+
* notification rule authored on "Alice" stopped matching the moment the
|
|
45487
47836
|
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
45488
47837
|
* the thing that does not move, so it is what a rule matches on
|
|
45489
47838
|
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
@@ -48022,7 +50371,7 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
48022
50371
|
/**
|
|
48023
50372
|
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
48024
50373
|
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
48025
|
-
* step (a
|
|
50374
|
+
* step (a plus catalog `license_plate` for `plate-detection`): the step is
|
|
48026
50375
|
* NOT inferred, these boxes are its output, and its children (the plate
|
|
48027
50376
|
* reader) run on them through their own crop policy. Boxes are in the
|
|
48028
50377
|
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
@@ -49655,7 +52004,7 @@ var RunnerCameraConfigSchema = object({
|
|
|
49655
52004
|
* detection session that asks for history. What shipped was a last-moment
|
|
49656
52005
|
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
49657
52006
|
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
49658
|
-
* worth. Device
|
|
52007
|
+
* worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
|
|
49659
52008
|
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
49660
52009
|
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
49661
52010
|
* was decoded, and was freed.
|
|
@@ -51685,7 +54034,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
|
|
|
51685
54034
|
* The signals a device can emit to WAKE its own stream.
|
|
51686
54035
|
*
|
|
51687
54036
|
* A camera whose stream is built on demand sleeps until something asks for it,
|
|
51688
|
-
* and "something" cannot be a consumer that is merely attached — a
|
|
54037
|
+
* and "something" cannot be a consumer that is merely attached — a external-catalog
|
|
51689
54038
|
* puller holds a session open for ever, and treating that as demand would keep
|
|
51690
54039
|
* a battery camera awake for ever, which is the whole thing the battery is for
|
|
51691
54040
|
* (D173). So the wake has to come from the CAMERA: an event it noticed by
|
|
@@ -52372,7 +54721,7 @@ var ClipSchema = object({
|
|
|
52372
54721
|
* {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
|
|
52373
54722
|
*
|
|
52374
54723
|
* Bounded because it is not a payload the surface pages through: one visit on
|
|
52375
|
-
* device
|
|
54724
|
+
* device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
|
|
52376
54725
|
* camera-day. Read {@link eventCount} for the true total.
|
|
52377
54726
|
*/
|
|
52378
54727
|
eventIds: array(string()).optional(),
|
|
@@ -52517,7 +54866,7 @@ var ClipPlaybackSchema = object({
|
|
|
52517
54866
|
* camera has no recordings", which is the defect this whole line of work is
|
|
52518
54867
|
* about: a battery camera nobody woke (`sleeping`), a camera that could not be
|
|
52519
54868
|
* reached at all (`unreachable`, also what a provider that THREW reports), a
|
|
52520
|
-
* camera whose SD card is not mounted (`no-storage`, measured on
|
|
54869
|
+
* camera whose SD card is not mounted (`no-storage`, measured on 106 —
|
|
52521
54870
|
* `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
|
|
52522
54871
|
* camera whose OWN index disagrees with its OWN calendar (`index-empty`,
|
|
52523
54872
|
* measured on 618: the calendar marks 3–20 September, days 6–20 list zero
|
|
@@ -52782,7 +55131,7 @@ DeviceType.Camera, method(object({
|
|
|
52782
55131
|
*
|
|
52783
55132
|
* It was optional, documented as "absent means the device's BOUND
|
|
52784
55133
|
* provider, which is CamStack on every camera". No code implemented
|
|
52785
|
-
* that. Measured on the live hub 2026-09-20 — device
|
|
55134
|
+
* that. Measured on the live hub 2026-09-20 — device 107, bound to
|
|
52786
55135
|
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
52787
55136
|
* answered SIX rows, three from each source, merged newest-first:
|
|
52788
55137
|
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
@@ -53860,7 +56209,10 @@ object({
|
|
|
53860
56209
|
DeviceType.Sensor;
|
|
53861
56210
|
object({
|
|
53862
56211
|
/** Current illuminance in lux (lx). */
|
|
53863
|
-
lux: number().min(0)
|
|
56212
|
+
lux: number().min(0).meta({
|
|
56213
|
+
unit: "lx",
|
|
56214
|
+
label: "Illuminance"
|
|
56215
|
+
}),
|
|
53864
56216
|
/** Ms epoch when the slice was last updated. */
|
|
53865
56217
|
lastFetchedAt: number(),
|
|
53866
56218
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -54016,7 +56368,10 @@ var BatteryStatusSchema = object({
|
|
|
54016
56368
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
54017
56369
|
* declines to band a non-finite reading, which is the correct shape.
|
|
54018
56370
|
*/
|
|
54019
|
-
percentage: number().min(0).max(100).nullable()
|
|
56371
|
+
percentage: number().min(0).max(100).nullable().meta({
|
|
56372
|
+
unit: "%",
|
|
56373
|
+
label: "Charge"
|
|
56374
|
+
}),
|
|
54020
56375
|
/**
|
|
54021
56376
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
54022
56377
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -54035,13 +56390,13 @@ var BatteryStatusSchema = object({
|
|
|
54035
56390
|
"solar",
|
|
54036
56391
|
"none",
|
|
54037
56392
|
"unknown"
|
|
54038
|
-
]),
|
|
56393
|
+
]).meta({ label: "Charging source" }),
|
|
54039
56394
|
/**
|
|
54040
56395
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
54041
56396
|
* providers MUST avoid polling during sleep — reading the battery
|
|
54042
56397
|
* wakes the camera up and drains charge.
|
|
54043
56398
|
*/
|
|
54044
|
-
sleeping: boolean(),
|
|
56399
|
+
sleeping: boolean().meta({ label: "Sleeping" }),
|
|
54045
56400
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
54046
56401
|
lastUpdated: number(),
|
|
54047
56402
|
/**
|
|
@@ -54081,7 +56436,7 @@ var BatteryStatusSchema = object({
|
|
|
54081
56436
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
54082
56437
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
54083
56438
|
*/
|
|
54084
|
-
binary: boolean().optional()
|
|
56439
|
+
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
54085
56440
|
});
|
|
54086
56441
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat;
|
|
54087
56442
|
method(object({
|
|
@@ -54096,7 +56451,7 @@ method(object({
|
|
|
54096
56451
|
status: BatteryStatusSchema
|
|
54097
56452
|
});
|
|
54098
56453
|
object({
|
|
54099
|
-
on: boolean(),
|
|
56454
|
+
on: boolean().meta({ label: "On" }),
|
|
54100
56455
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
54101
56456
|
lastChangedAt: number()
|
|
54102
56457
|
});
|
|
@@ -54354,7 +56709,7 @@ var GridLayoutCellSchema = object({
|
|
|
54354
56709
|
*
|
|
54355
56710
|
* A grid's `high` composes its sources' `high` and its `low` their `low`, so a
|
|
54356
56711
|
* profile is on offer only when EVERY source can serve it. The refusal NAMES
|
|
54357
|
-
* the sources, because "this grid has no low" is not a finding — "
|
|
56712
|
+
* the sources, because "this grid has no low" is not a finding — "101 has no
|
|
54358
56713
|
* low" is, and it is the one an operator can act on.
|
|
54359
56714
|
*/
|
|
54360
56715
|
var GridProfileOfferSchema = object({
|
|
@@ -54986,6 +57341,30 @@ DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema)
|
|
|
54986
57341
|
auth: "admin"
|
|
54987
57342
|
});
|
|
54988
57343
|
/**
|
|
57344
|
+
* display-palette — the cluster's one colour table (D939).
|
|
57345
|
+
*
|
|
57346
|
+
* Hub singleton. `getPalette` reports `unknown` when the settings store
|
|
57347
|
+
* cannot be read; it does not pretend the bundled preset was stored.
|
|
57348
|
+
* `setPalette` refuses a palette that fails the ΔE / contrast rule and names
|
|
57349
|
+
* the pairs.
|
|
57350
|
+
*/
|
|
57351
|
+
var presetSummarySchema = object({
|
|
57352
|
+
id: string(),
|
|
57353
|
+
name: string(),
|
|
57354
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
57355
|
+
fallbacks: array(string())
|
|
57356
|
+
});
|
|
57357
|
+
method(_void(), paletteResultSchema, {
|
|
57358
|
+
auth: "protected",
|
|
57359
|
+
role: "viewer"
|
|
57360
|
+
}), method(_void(), array(presetSummarySchema).readonly(), {
|
|
57361
|
+
auth: "protected",
|
|
57362
|
+
role: "viewer"
|
|
57363
|
+
}), method(setPaletteInputSchema, paletteReadySchema, {
|
|
57364
|
+
kind: "mutation",
|
|
57365
|
+
auth: "admin"
|
|
57366
|
+
});
|
|
57367
|
+
/**
|
|
54989
57368
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
54990
57369
|
* for every device, regardless of provider — the kernel needs a uniform
|
|
54991
57370
|
* cap-keyed slice for the basic device flags every consumer expects to
|
|
@@ -55881,7 +58260,10 @@ DeviceType.Humidifier, method(object({
|
|
|
55881
58260
|
});
|
|
55882
58261
|
object({
|
|
55883
58262
|
/** Current relative humidity, 0..100. */
|
|
55884
|
-
percent: number().min(0).max(100)
|
|
58263
|
+
percent: number().min(0).max(100).meta({
|
|
58264
|
+
unit: "%",
|
|
58265
|
+
label: "Humidity"
|
|
58266
|
+
}),
|
|
55885
58267
|
/** Ms epoch when the slice was last updated. */
|
|
55886
58268
|
lastFetchedAt: number(),
|
|
55887
58269
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -58658,9 +61040,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
58658
61040
|
});
|
|
58659
61041
|
object({
|
|
58660
61042
|
/** Instantaneous power draw in watts. */
|
|
58661
|
-
watts: number().optional()
|
|
61043
|
+
watts: number().optional().meta({
|
|
61044
|
+
unit: "W",
|
|
61045
|
+
label: "Power"
|
|
61046
|
+
}),
|
|
58662
61047
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
58663
|
-
kwhTotal: number().optional()
|
|
61048
|
+
kwhTotal: number().optional().meta({
|
|
61049
|
+
unit: "kWh",
|
|
61050
|
+
label: "Energy"
|
|
61051
|
+
}),
|
|
58664
61052
|
/** Voltage in volts. */
|
|
58665
61053
|
volts: number().optional(),
|
|
58666
61054
|
/** Current in amperes. */
|
|
@@ -58979,9 +61367,9 @@ var PtzOptionsSchema = object({
|
|
|
58979
61367
|
* Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
|
|
58980
61368
|
* not one of the three cameras honours its own:
|
|
58981
61369
|
*
|
|
58982
|
-
*
|
|
58983
|
-
* 1438
|
|
58984
|
-
* 3836
|
|
61370
|
+
* 107 Camera camera Carol (reolink) preset 0 holds "stanza"
|
|
61371
|
+
* 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
|
|
61372
|
+
* 3836 Camera studio (amcrest) preset 1 holds "Preset1"
|
|
58985
61373
|
*
|
|
58986
61374
|
* So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
|
|
58987
61375
|
* and two of the three swallowed the failure in a bare `catch`. For autotrack
|
|
@@ -59128,7 +61516,7 @@ object({
|
|
|
59128
61516
|
running: boolean().nullable(),
|
|
59129
61517
|
/** Epoch ms the current boolean began; null while `running` is null. */
|
|
59130
61518
|
since: number().nullable(),
|
|
59131
|
-
source: RunningStateSourceSchema,
|
|
61519
|
+
source: RunningStateSourceSchema.meta({ label: "Source" }),
|
|
59132
61520
|
phase: string().nullable(),
|
|
59133
61521
|
/** null until a reading has been published (D393). */
|
|
59134
61522
|
lastFetchedAt: number().nullable()
|
|
@@ -59181,7 +61569,7 @@ var RecordingAvailabilitySchema = object({
|
|
|
59181
61569
|
* would look identical. But the answer used to say nothing about that, so a
|
|
59182
61570
|
* caller asking "what can I export?" read the single preferred profile as
|
|
59183
61571
|
* the only one that exists — on this deployment every camera records `high`
|
|
59184
|
-
* AND `low`, the low tree holding 14 GB for camera
|
|
61572
|
+
* AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
|
|
59185
61573
|
* UI could not see it.
|
|
59186
61574
|
*
|
|
59187
61575
|
* Cheap: it is the same shallow directory read the profile CHOICE already
|
|
@@ -59280,7 +61668,7 @@ var RecordingSourceOptionsSchema = object({
|
|
|
59280
61668
|
* `sparse` = gaps are the absence of one, and must be drawn as such.
|
|
59281
61669
|
*
|
|
59282
61670
|
* Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
|
|
59283
|
-
* of
|
|
61671
|
+
* of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
|
|
59284
61672
|
* pair, and ours answers it per camera from `deriveRecordingMode`. */
|
|
59285
61673
|
coverage: _enum(["continuous", "sparse"]),
|
|
59286
61674
|
/** Where the playhead may be put.
|
|
@@ -59356,7 +61744,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
|
|
|
59356
61744
|
* merely discouraged (D554 amended).
|
|
59357
61745
|
*
|
|
59358
61746
|
* It was learned the expensive way on `videoclips.listClips`: measured
|
|
59359
|
-
* on the live hub 2026-09-20, device
|
|
61747
|
+
* on the live hub 2026-09-20, device 107 bound to `recorder` AND
|
|
59360
61748
|
* `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
|
|
59361
61749
|
* three from each source, merged — `device-collection-dispatch.ts`
|
|
59362
61750
|
* leaves an unpinned fan-out un-narrowed, so absence buys the union the
|
|
@@ -59957,7 +62345,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
|
|
|
59957
62345
|
* on a 10 h window holding 29,393 s of footage every range landed late by the
|
|
59958
62346
|
* gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
|
|
59959
62347
|
* the video was a uniform timelapse, and the log line reported the five ranges
|
|
59960
|
-
* that had been ASKED for (2026-08-13, export `57d14363`, camera
|
|
62348
|
+
* that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
|
|
59961
62349
|
*
|
|
59962
62350
|
* Relative and not absolute epoch, because an absolute epoch would make every
|
|
59963
62351
|
* call site responsible for the same subtraction.
|
|
@@ -60591,7 +62979,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), RecordingSignalStatusS
|
|
|
60591
62979
|
* which put a "Scenes" tab on one camera's detail page. That is the wrong shape
|
|
60592
62980
|
* for the thing: a scene is a standing question about the property ("is the bin
|
|
60593
62981
|
* still out"), and the operator's question is "which of my scenes have tripped",
|
|
60594
|
-
* across every camera at once — not "what does camera
|
|
62982
|
+
* across every camera at once — not "what does camera 102 think". Buried one
|
|
60595
62983
|
* camera deep it also could not be found. The surface is now a top-level admin
|
|
60596
62984
|
* page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
|
|
60597
62985
|
* picks the camera inside the create flow, the same shape Events and Faces have.
|
|
@@ -61174,7 +63562,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), StreamParamsOptionsSch
|
|
|
61174
63562
|
auth: "admin"
|
|
61175
63563
|
}), method(object({ deviceId: number() }), unknown().nullable());
|
|
61176
63564
|
object({
|
|
61177
|
-
on: boolean(),
|
|
63565
|
+
on: boolean().meta({ label: "On" }),
|
|
61178
63566
|
/** Ms epoch of the last state change. Useful for UI "X minutes ago". */
|
|
61179
63567
|
lastChangedAt: number()
|
|
61180
63568
|
});
|
|
@@ -61737,7 +64125,10 @@ object({
|
|
|
61737
64125
|
DeviceType.Sensor;
|
|
61738
64126
|
object({
|
|
61739
64127
|
/** Current temperature in Celsius. */
|
|
61740
|
-
celsius: number()
|
|
64128
|
+
celsius: number().meta({
|
|
64129
|
+
unit: "°C",
|
|
64130
|
+
label: "Temperature"
|
|
64131
|
+
}),
|
|
61741
64132
|
/** Ms epoch when the slice was last updated (push or poll). */
|
|
61742
64133
|
lastFetchedAt: number(),
|
|
61743
64134
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -62987,6 +65378,10 @@ var trainingCapability = {
|
|
|
62987
65378
|
}
|
|
62988
65379
|
};
|
|
62989
65380
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
65381
|
+
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;
|
|
65382
|
+
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
65383
|
+
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
65384
|
+
new Set(CAP_NAMES);
|
|
62990
65385
|
Object.freeze({
|
|
62991
65386
|
person: .5,
|
|
62992
65387
|
vehicle: .5,
|
|
@@ -65986,6 +68381,27 @@ Object.freeze({
|
|
|
65986
68381
|
access: "create",
|
|
65987
68382
|
role: "viewer"
|
|
65988
68383
|
},
|
|
68384
|
+
"displayPalette.getPalette": {
|
|
68385
|
+
capName: "display-palette",
|
|
68386
|
+
capScope: "system",
|
|
68387
|
+
addonId: null,
|
|
68388
|
+
access: "view",
|
|
68389
|
+
role: "viewer"
|
|
68390
|
+
},
|
|
68391
|
+
"displayPalette.listPresets": {
|
|
68392
|
+
capName: "display-palette",
|
|
68393
|
+
capScope: "system",
|
|
68394
|
+
addonId: null,
|
|
68395
|
+
access: "view",
|
|
68396
|
+
role: "viewer"
|
|
68397
|
+
},
|
|
68398
|
+
"displayPalette.setPalette": {
|
|
68399
|
+
capName: "display-palette",
|
|
68400
|
+
capScope: "system",
|
|
68401
|
+
addonId: null,
|
|
68402
|
+
access: "create",
|
|
68403
|
+
role: "admin"
|
|
68404
|
+
},
|
|
65989
68405
|
"doorbell.getStatus": {
|
|
65990
68406
|
capName: "doorbell",
|
|
65991
68407
|
capScope: "device",
|
|
@@ -75903,7 +78319,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
75903
78319
|
state: [{
|
|
75904
78320
|
kind: "boolean",
|
|
75905
78321
|
field: "on",
|
|
75906
|
-
label: t("
|
|
78322
|
+
label: t("On", "Acceso"),
|
|
75907
78323
|
whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
|
|
75908
78324
|
whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
|
|
75909
78325
|
icon: "toggle-right"
|
|
@@ -76442,6 +78858,7 @@ var SYSTEM_CAP_VOCABULARY = {
|
|
|
76442
78858
|
"device-provider": system(INTERNAL),
|
|
76443
78859
|
"device-removal-hook": system(INTERNAL),
|
|
76444
78860
|
"device-state": system("the runtime-state mirror every trigger already reads through"),
|
|
78861
|
+
"display-palette": system("the cluster display palette — one colour table for every client, not a device action"),
|
|
76445
78862
|
"embedding-encoder": system(ML),
|
|
76446
78863
|
"face-gallery": system("the face gallery — curated on its own page"),
|
|
76447
78864
|
"failure-contribution": system(INTERNAL),
|
|
@@ -79326,7 +81743,6 @@ Object.freeze({
|
|
|
79326
81743
|
"smtp-provider": "email"
|
|
79327
81744
|
});
|
|
79328
81745
|
DeviceType.Camera;
|
|
79329
|
-
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;
|
|
79330
81746
|
/**
|
|
79331
81747
|
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
79332
81748
|
* `z.infer`, they do not restate the shape.
|
|
@@ -79415,7 +81831,6 @@ object({
|
|
|
79415
81831
|
]),
|
|
79416
81832
|
reason: string().nullable()
|
|
79417
81833
|
});
|
|
79418
|
-
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
79419
81834
|
var G711_SCALE_CORRECTION_DB = {
|
|
79420
81835
|
PCMU: 20 * Math.log10(4),
|
|
79421
81836
|
PCMA: 20 * Math.log10(8)
|
|
@@ -79788,7 +82203,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
79788
82203
|
{
|
|
79789
82204
|
name: "summaryStreams",
|
|
79790
82205
|
label: "Summary: streams offline",
|
|
79791
|
-
example: "
|
|
82206
|
+
example: "Front door (high) — since 06:40",
|
|
79792
82207
|
kinds: ["stream-offline", "stream-online"]
|
|
79793
82208
|
},
|
|
79794
82209
|
{
|
|
@@ -79806,13 +82221,13 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
79806
82221
|
{
|
|
79807
82222
|
name: "summaryDetection",
|
|
79808
82223
|
label: "Summary: cameras detecting nothing",
|
|
79809
|
-
example: "
|
|
82224
|
+
example: "Front door — since 05:10",
|
|
79810
82225
|
kinds: ["detection-blind"]
|
|
79811
82226
|
},
|
|
79812
82227
|
{
|
|
79813
82228
|
name: "summaryNodes",
|
|
79814
82229
|
label: "Summary: nodes",
|
|
79815
|
-
example: "
|
|
82230
|
+
example: "agent-a — offline since 03:00",
|
|
79816
82231
|
kinds: [
|
|
79817
82232
|
"node-offline",
|
|
79818
82233
|
"node-online",
|