@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "node:crypto";
|
|
2
|
-
//#region ../types/dist/event-category-
|
|
2
|
+
//#region ../types/dist/event-category-DHXxB8t9.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -295,7 +295,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
295
295
|
* TRANSITION into that state (never per dispatch), and the node is dropped
|
|
296
296
|
* from the placement candidate set for as long as it holds.
|
|
297
297
|
*
|
|
298
|
-
* This exists because the state was previously invisible:
|
|
298
|
+
* This exists because the state was previously invisible: agent-a
|
|
299
299
|
* absorbed 283k inference errors in a day while still being handed cameras,
|
|
300
300
|
* and nothing in the system said so.
|
|
301
301
|
*
|
|
@@ -5567,7 +5567,7 @@ var ZodIssueCode = {
|
|
|
5567
5567
|
var ZodFirstPartyTypeKind;
|
|
5568
5568
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5569
5569
|
//#endregion
|
|
5570
|
-
//#region ../types/dist/sleep-
|
|
5570
|
+
//#region ../types/dist/sleep-BErAxhul.mjs
|
|
5571
5571
|
/**
|
|
5572
5572
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5573
5573
|
* window to float samples (D455).
|
|
@@ -8767,6 +8767,1980 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
8767
8767
|
kind: "mutation",
|
|
8768
8768
|
auth: "admin"
|
|
8769
8769
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
8770
|
+
Object.freeze({ "doorbell": "lastPressedAt" });
|
|
8771
|
+
/** Every capability name, so addon code can check a name without the schema graph. */
|
|
8772
|
+
var CAP_NAMES = Object.freeze([
|
|
8773
|
+
"accessories",
|
|
8774
|
+
"addon-pages",
|
|
8775
|
+
"addon-pages-source",
|
|
8776
|
+
"addon-routes",
|
|
8777
|
+
"addon-settings",
|
|
8778
|
+
"addon-widgets",
|
|
8779
|
+
"addon-widgets-source",
|
|
8780
|
+
"addons",
|
|
8781
|
+
"admin-ui",
|
|
8782
|
+
"air-quality-sensor",
|
|
8783
|
+
"alarm-panel",
|
|
8784
|
+
"alerts",
|
|
8785
|
+
"ambient-light-sensor",
|
|
8786
|
+
"audio-analysis",
|
|
8787
|
+
"audio-analyzer",
|
|
8788
|
+
"audio-codec",
|
|
8789
|
+
"audio-metrics",
|
|
8790
|
+
"auth-provider",
|
|
8791
|
+
"automation-control",
|
|
8792
|
+
"backup",
|
|
8793
|
+
"battery",
|
|
8794
|
+
"binary",
|
|
8795
|
+
"brightness",
|
|
8796
|
+
"broker",
|
|
8797
|
+
"button",
|
|
8798
|
+
"calendar-source",
|
|
8799
|
+
"calendars",
|
|
8800
|
+
"camera-credentials",
|
|
8801
|
+
"camera-grid-layout",
|
|
8802
|
+
"camera-pipeline-config",
|
|
8803
|
+
"camera-streams",
|
|
8804
|
+
"carbon-monoxide",
|
|
8805
|
+
"climate-control",
|
|
8806
|
+
"color",
|
|
8807
|
+
"composer",
|
|
8808
|
+
"connection-test",
|
|
8809
|
+
"connectivity",
|
|
8810
|
+
"consumables",
|
|
8811
|
+
"contact",
|
|
8812
|
+
"control",
|
|
8813
|
+
"core-blocks",
|
|
8814
|
+
"cover",
|
|
8815
|
+
"custom-model-registry",
|
|
8816
|
+
"data-store-provider",
|
|
8817
|
+
"database-snapshot",
|
|
8818
|
+
"day-night",
|
|
8819
|
+
"decoder",
|
|
8820
|
+
"detection-pipeline",
|
|
8821
|
+
"device-admin-link",
|
|
8822
|
+
"device-adoption",
|
|
8823
|
+
"device-credentials",
|
|
8824
|
+
"device-discovery",
|
|
8825
|
+
"device-export",
|
|
8826
|
+
"device-extension",
|
|
8827
|
+
"device-history",
|
|
8828
|
+
"device-manager",
|
|
8829
|
+
"device-ops",
|
|
8830
|
+
"device-provider",
|
|
8831
|
+
"device-removal-hook",
|
|
8832
|
+
"device-state",
|
|
8833
|
+
"device-status",
|
|
8834
|
+
"dishwasher",
|
|
8835
|
+
"display-palette",
|
|
8836
|
+
"doorbell",
|
|
8837
|
+
"embedding-encoder",
|
|
8838
|
+
"enum-sensor",
|
|
8839
|
+
"event-emitter",
|
|
8840
|
+
"face-gallery",
|
|
8841
|
+
"failure-contribution",
|
|
8842
|
+
"fan-control",
|
|
8843
|
+
"feature-probe",
|
|
8844
|
+
"filesystem-browse",
|
|
8845
|
+
"flood",
|
|
8846
|
+
"gas",
|
|
8847
|
+
"heating-valve",
|
|
8848
|
+
"humidifier",
|
|
8849
|
+
"humidity-sensor",
|
|
8850
|
+
"image",
|
|
8851
|
+
"image-settings",
|
|
8852
|
+
"integrations",
|
|
8853
|
+
"intercom",
|
|
8854
|
+
"keychain",
|
|
8855
|
+
"keychain-admin",
|
|
8856
|
+
"lawn-mower-control",
|
|
8857
|
+
"llm",
|
|
8858
|
+
"llm-runtime",
|
|
8859
|
+
"load-contribution",
|
|
8860
|
+
"local-network",
|
|
8861
|
+
"lock-control",
|
|
8862
|
+
"log-channels",
|
|
8863
|
+
"log-destination",
|
|
8864
|
+
"login-method",
|
|
8865
|
+
"media-player",
|
|
8866
|
+
"mesh-network",
|
|
8867
|
+
"metrics-provider",
|
|
8868
|
+
"model-convert",
|
|
8869
|
+
"model-distributor",
|
|
8870
|
+
"motion",
|
|
8871
|
+
"motion-detection",
|
|
8872
|
+
"motion-trigger",
|
|
8873
|
+
"motion-zones",
|
|
8874
|
+
"mqtt-broker",
|
|
8875
|
+
"native-object-detection",
|
|
8876
|
+
"navigation",
|
|
8877
|
+
"network-access",
|
|
8878
|
+
"network-link",
|
|
8879
|
+
"network-quality",
|
|
8880
|
+
"node-certificates",
|
|
8881
|
+
"nodes",
|
|
8882
|
+
"notification-output",
|
|
8883
|
+
"notification-rules",
|
|
8884
|
+
"notifier",
|
|
8885
|
+
"numeric-sensor",
|
|
8886
|
+
"oauth-integration",
|
|
8887
|
+
"oidc-connections",
|
|
8888
|
+
"osd",
|
|
8889
|
+
"osd-manager",
|
|
8890
|
+
"pet-feeder",
|
|
8891
|
+
"pipeline-analytics",
|
|
8892
|
+
"pipeline-executor",
|
|
8893
|
+
"pipeline-orchestrator",
|
|
8894
|
+
"pipeline-runner",
|
|
8895
|
+
"plate-gallery",
|
|
8896
|
+
"platform-probe",
|
|
8897
|
+
"power-meter",
|
|
8898
|
+
"presence",
|
|
8899
|
+
"pressure-sensor",
|
|
8900
|
+
"privacy-mask",
|
|
8901
|
+
"ptz",
|
|
8902
|
+
"ptz-autotrack",
|
|
8903
|
+
"reboot",
|
|
8904
|
+
"record-entries",
|
|
8905
|
+
"recording",
|
|
8906
|
+
"recording-archive",
|
|
8907
|
+
"recording-export",
|
|
8908
|
+
"recording-onboard",
|
|
8909
|
+
"recording-signal",
|
|
8910
|
+
"records",
|
|
8911
|
+
"running-state",
|
|
8912
|
+
"scene-monitor",
|
|
8913
|
+
"script-runner",
|
|
8914
|
+
"server-management",
|
|
8915
|
+
"settings-store",
|
|
8916
|
+
"smoke",
|
|
8917
|
+
"smtp-provider",
|
|
8918
|
+
"snapshot",
|
|
8919
|
+
"sso-bridge",
|
|
8920
|
+
"storage",
|
|
8921
|
+
"storage-admin",
|
|
8922
|
+
"storage-evictable",
|
|
8923
|
+
"storage-migration",
|
|
8924
|
+
"storage-occupancy",
|
|
8925
|
+
"storage-provider",
|
|
8926
|
+
"stream-broker",
|
|
8927
|
+
"stream-catalog",
|
|
8928
|
+
"stream-params",
|
|
8929
|
+
"stream-signals",
|
|
8930
|
+
"switch",
|
|
8931
|
+
"system",
|
|
8932
|
+
"tamper",
|
|
8933
|
+
"temperature-sensor",
|
|
8934
|
+
"terminal-session",
|
|
8935
|
+
"toast",
|
|
8936
|
+
"training",
|
|
8937
|
+
"training-provider",
|
|
8938
|
+
"turn-provider",
|
|
8939
|
+
"update",
|
|
8940
|
+
"user-management",
|
|
8941
|
+
"user-passkeys",
|
|
8942
|
+
"vacuum-control",
|
|
8943
|
+
"valve",
|
|
8944
|
+
"vector-store",
|
|
8945
|
+
"vibration",
|
|
8946
|
+
"videoclips",
|
|
8947
|
+
"viewer-ui",
|
|
8948
|
+
"water-heater",
|
|
8949
|
+
"weather",
|
|
8950
|
+
"webrtc-session",
|
|
8951
|
+
"zone-analytics",
|
|
8952
|
+
"zone-rules",
|
|
8953
|
+
"zones"
|
|
8954
|
+
]);
|
|
8955
|
+
Object.freeze({
|
|
8956
|
+
"air-quality-sensor": [
|
|
8957
|
+
{
|
|
8958
|
+
"path": "co2Ppm",
|
|
8959
|
+
"valueType": "number"
|
|
8960
|
+
},
|
|
8961
|
+
{
|
|
8962
|
+
"path": "vocPpb",
|
|
8963
|
+
"valueType": "number"
|
|
8964
|
+
},
|
|
8965
|
+
{
|
|
8966
|
+
"path": "pm25",
|
|
8967
|
+
"valueType": "number"
|
|
8968
|
+
},
|
|
8969
|
+
{
|
|
8970
|
+
"path": "pm10",
|
|
8971
|
+
"valueType": "number"
|
|
8972
|
+
},
|
|
8973
|
+
{
|
|
8974
|
+
"path": "aqi",
|
|
8975
|
+
"valueType": "number"
|
|
8976
|
+
},
|
|
8977
|
+
{
|
|
8978
|
+
"path": "unit",
|
|
8979
|
+
"valueType": "string"
|
|
8980
|
+
},
|
|
8981
|
+
{
|
|
8982
|
+
"path": "precision",
|
|
8983
|
+
"valueType": "number"
|
|
8984
|
+
}
|
|
8985
|
+
],
|
|
8986
|
+
"alarm-panel": [
|
|
8987
|
+
{
|
|
8988
|
+
"path": "state",
|
|
8989
|
+
"valueType": "enum",
|
|
8990
|
+
"enumValues": [
|
|
8991
|
+
"disarmed",
|
|
8992
|
+
"armed_home",
|
|
8993
|
+
"armed_away",
|
|
8994
|
+
"armed_night",
|
|
8995
|
+
"armed_vacation",
|
|
8996
|
+
"armed_custom_bypass",
|
|
8997
|
+
"arming",
|
|
8998
|
+
"disarming",
|
|
8999
|
+
"pending",
|
|
9000
|
+
"triggered"
|
|
9001
|
+
]
|
|
9002
|
+
},
|
|
9003
|
+
{
|
|
9004
|
+
"path": "targetMode",
|
|
9005
|
+
"valueType": "enum",
|
|
9006
|
+
"enumValues": [
|
|
9007
|
+
"home",
|
|
9008
|
+
"away",
|
|
9009
|
+
"night",
|
|
9010
|
+
"vacation",
|
|
9011
|
+
"custom_bypass"
|
|
9012
|
+
]
|
|
9013
|
+
},
|
|
9014
|
+
{
|
|
9015
|
+
"path": "requiresCode",
|
|
9016
|
+
"valueType": "boolean"
|
|
9017
|
+
}
|
|
9018
|
+
],
|
|
9019
|
+
"ambient-light-sensor": [
|
|
9020
|
+
{
|
|
9021
|
+
"path": "lux",
|
|
9022
|
+
"valueType": "number"
|
|
9023
|
+
},
|
|
9024
|
+
{
|
|
9025
|
+
"path": "unit",
|
|
9026
|
+
"valueType": "string"
|
|
9027
|
+
},
|
|
9028
|
+
{
|
|
9029
|
+
"path": "precision",
|
|
9030
|
+
"valueType": "number"
|
|
9031
|
+
}
|
|
9032
|
+
],
|
|
9033
|
+
"audio-metrics": [
|
|
9034
|
+
{
|
|
9035
|
+
"path": "ts",
|
|
9036
|
+
"valueType": "number"
|
|
9037
|
+
},
|
|
9038
|
+
{
|
|
9039
|
+
"path": "windowSec",
|
|
9040
|
+
"valueType": "number"
|
|
9041
|
+
},
|
|
9042
|
+
{
|
|
9043
|
+
"path": "level.rms",
|
|
9044
|
+
"valueType": "number"
|
|
9045
|
+
},
|
|
9046
|
+
{
|
|
9047
|
+
"path": "level.dbfs",
|
|
9048
|
+
"valueType": "number"
|
|
9049
|
+
},
|
|
9050
|
+
{
|
|
9051
|
+
"path": "peakDbfs",
|
|
9052
|
+
"valueType": "number"
|
|
9053
|
+
},
|
|
9054
|
+
{
|
|
9055
|
+
"path": "avgDbfs",
|
|
9056
|
+
"valueType": "number"
|
|
9057
|
+
},
|
|
9058
|
+
{
|
|
9059
|
+
"path": "current.className",
|
|
9060
|
+
"valueType": "string"
|
|
9061
|
+
},
|
|
9062
|
+
{
|
|
9063
|
+
"path": "current.score",
|
|
9064
|
+
"valueType": "number"
|
|
9065
|
+
},
|
|
9066
|
+
{
|
|
9067
|
+
"path": "current.timestamp",
|
|
9068
|
+
"valueType": "number"
|
|
9069
|
+
}
|
|
9070
|
+
],
|
|
9071
|
+
"automation-control": [
|
|
9072
|
+
{
|
|
9073
|
+
"path": "enabled",
|
|
9074
|
+
"valueType": "boolean"
|
|
9075
|
+
},
|
|
9076
|
+
{
|
|
9077
|
+
"path": "isRunning",
|
|
9078
|
+
"valueType": "boolean"
|
|
9079
|
+
},
|
|
9080
|
+
{
|
|
9081
|
+
"path": "lastTriggeredAt",
|
|
9082
|
+
"valueType": "number"
|
|
9083
|
+
},
|
|
9084
|
+
{
|
|
9085
|
+
"path": "lastError",
|
|
9086
|
+
"valueType": "string"
|
|
9087
|
+
}
|
|
9088
|
+
],
|
|
9089
|
+
"battery": [
|
|
9090
|
+
{
|
|
9091
|
+
"path": "percentage",
|
|
9092
|
+
"valueType": "number"
|
|
9093
|
+
},
|
|
9094
|
+
{
|
|
9095
|
+
"path": "charging",
|
|
9096
|
+
"valueType": "enum",
|
|
9097
|
+
"enumValues": [
|
|
9098
|
+
"dc",
|
|
9099
|
+
"solar",
|
|
9100
|
+
"none",
|
|
9101
|
+
"unknown"
|
|
9102
|
+
]
|
|
9103
|
+
},
|
|
9104
|
+
{
|
|
9105
|
+
"path": "sleeping",
|
|
9106
|
+
"valueType": "boolean"
|
|
9107
|
+
},
|
|
9108
|
+
{
|
|
9109
|
+
"path": "lastUpdated",
|
|
9110
|
+
"valueType": "number"
|
|
9111
|
+
},
|
|
9112
|
+
{
|
|
9113
|
+
"path": "lastContactAt",
|
|
9114
|
+
"valueType": "number"
|
|
9115
|
+
},
|
|
9116
|
+
{
|
|
9117
|
+
"path": "lastFullRefreshAt",
|
|
9118
|
+
"valueType": "number"
|
|
9119
|
+
},
|
|
9120
|
+
{
|
|
9121
|
+
"path": "binary",
|
|
9122
|
+
"valueType": "boolean"
|
|
9123
|
+
}
|
|
9124
|
+
],
|
|
9125
|
+
"binary": [{
|
|
9126
|
+
"path": "on",
|
|
9127
|
+
"valueType": "boolean"
|
|
9128
|
+
}],
|
|
9129
|
+
"brightness": [{
|
|
9130
|
+
"path": "percentage",
|
|
9131
|
+
"valueType": "number"
|
|
9132
|
+
}],
|
|
9133
|
+
"broker": [{
|
|
9134
|
+
"path": "brokerCount",
|
|
9135
|
+
"valueType": "number"
|
|
9136
|
+
}, {
|
|
9137
|
+
"path": "connectedCount",
|
|
9138
|
+
"valueType": "number"
|
|
9139
|
+
}],
|
|
9140
|
+
"camera-credentials": [
|
|
9141
|
+
{
|
|
9142
|
+
"path": "host",
|
|
9143
|
+
"valueType": "string"
|
|
9144
|
+
},
|
|
9145
|
+
{
|
|
9146
|
+
"path": "port",
|
|
9147
|
+
"valueType": "number"
|
|
9148
|
+
},
|
|
9149
|
+
{
|
|
9150
|
+
"path": "onvifPort",
|
|
9151
|
+
"valueType": "number"
|
|
9152
|
+
},
|
|
9153
|
+
{
|
|
9154
|
+
"path": "rtspPort",
|
|
9155
|
+
"valueType": "number"
|
|
9156
|
+
},
|
|
9157
|
+
{
|
|
9158
|
+
"path": "https",
|
|
9159
|
+
"valueType": "boolean"
|
|
9160
|
+
},
|
|
9161
|
+
{
|
|
9162
|
+
"path": "hasUsername",
|
|
9163
|
+
"valueType": "boolean"
|
|
9164
|
+
},
|
|
9165
|
+
{
|
|
9166
|
+
"path": "hasPassword",
|
|
9167
|
+
"valueType": "boolean"
|
|
9168
|
+
},
|
|
9169
|
+
{
|
|
9170
|
+
"path": "onvifProfile",
|
|
9171
|
+
"valueType": "string"
|
|
9172
|
+
}
|
|
9173
|
+
],
|
|
9174
|
+
"camera-streams": [
|
|
9175
|
+
{
|
|
9176
|
+
"path": "online",
|
|
9177
|
+
"valueType": "boolean"
|
|
9178
|
+
},
|
|
9179
|
+
{
|
|
9180
|
+
"path": "slotStatuses.high",
|
|
9181
|
+
"valueType": "enum",
|
|
9182
|
+
"enumValues": [
|
|
9183
|
+
"unassigned",
|
|
9184
|
+
"idle",
|
|
9185
|
+
"connecting",
|
|
9186
|
+
"streaming",
|
|
9187
|
+
"error"
|
|
9188
|
+
]
|
|
9189
|
+
},
|
|
9190
|
+
{
|
|
9191
|
+
"path": "slotStatuses.mid",
|
|
9192
|
+
"valueType": "enum",
|
|
9193
|
+
"enumValues": [
|
|
9194
|
+
"unassigned",
|
|
9195
|
+
"idle",
|
|
9196
|
+
"connecting",
|
|
9197
|
+
"streaming",
|
|
9198
|
+
"error"
|
|
9199
|
+
]
|
|
9200
|
+
},
|
|
9201
|
+
{
|
|
9202
|
+
"path": "slotStatuses.low",
|
|
9203
|
+
"valueType": "enum",
|
|
9204
|
+
"enumValues": [
|
|
9205
|
+
"unassigned",
|
|
9206
|
+
"idle",
|
|
9207
|
+
"connecting",
|
|
9208
|
+
"streaming",
|
|
9209
|
+
"error"
|
|
9210
|
+
]
|
|
9211
|
+
},
|
|
9212
|
+
{
|
|
9213
|
+
"path": "slotErrors.high",
|
|
9214
|
+
"valueType": "string"
|
|
9215
|
+
},
|
|
9216
|
+
{
|
|
9217
|
+
"path": "slotErrors.mid",
|
|
9218
|
+
"valueType": "string"
|
|
9219
|
+
},
|
|
9220
|
+
{
|
|
9221
|
+
"path": "slotErrors.low",
|
|
9222
|
+
"valueType": "string"
|
|
9223
|
+
}
|
|
9224
|
+
],
|
|
9225
|
+
"carbon-monoxide": [{
|
|
9226
|
+
"path": "detected",
|
|
9227
|
+
"valueType": "boolean"
|
|
9228
|
+
}],
|
|
9229
|
+
"climate-control": [
|
|
9230
|
+
{
|
|
9231
|
+
"path": "mode",
|
|
9232
|
+
"valueType": "enum",
|
|
9233
|
+
"enumValues": [
|
|
9234
|
+
"off",
|
|
9235
|
+
"heat",
|
|
9236
|
+
"cool",
|
|
9237
|
+
"auto",
|
|
9238
|
+
"heat_cool",
|
|
9239
|
+
"fan_only",
|
|
9240
|
+
"dry"
|
|
9241
|
+
]
|
|
9242
|
+
},
|
|
9243
|
+
{
|
|
9244
|
+
"path": "fanMode",
|
|
9245
|
+
"valueType": "string"
|
|
9246
|
+
},
|
|
9247
|
+
{
|
|
9248
|
+
"path": "preset",
|
|
9249
|
+
"valueType": "string"
|
|
9250
|
+
},
|
|
9251
|
+
{
|
|
9252
|
+
"path": "target",
|
|
9253
|
+
"valueType": "number"
|
|
9254
|
+
},
|
|
9255
|
+
{
|
|
9256
|
+
"path": "targetHigh",
|
|
9257
|
+
"valueType": "number"
|
|
9258
|
+
},
|
|
9259
|
+
{
|
|
9260
|
+
"path": "targetLow",
|
|
9261
|
+
"valueType": "number"
|
|
9262
|
+
},
|
|
9263
|
+
{
|
|
9264
|
+
"path": "targetHumidity",
|
|
9265
|
+
"valueType": "number"
|
|
9266
|
+
},
|
|
9267
|
+
{
|
|
9268
|
+
"path": "currentTemp",
|
|
9269
|
+
"valueType": "number"
|
|
9270
|
+
},
|
|
9271
|
+
{
|
|
9272
|
+
"path": "currentHumidity",
|
|
9273
|
+
"valueType": "number"
|
|
9274
|
+
},
|
|
9275
|
+
{
|
|
9276
|
+
"path": "swingVertical",
|
|
9277
|
+
"valueType": "boolean"
|
|
9278
|
+
},
|
|
9279
|
+
{
|
|
9280
|
+
"path": "swingHorizontal",
|
|
9281
|
+
"valueType": "boolean"
|
|
9282
|
+
},
|
|
9283
|
+
{
|
|
9284
|
+
"path": "minTemp",
|
|
9285
|
+
"valueType": "number"
|
|
9286
|
+
},
|
|
9287
|
+
{
|
|
9288
|
+
"path": "maxTemp",
|
|
9289
|
+
"valueType": "number"
|
|
9290
|
+
},
|
|
9291
|
+
{
|
|
9292
|
+
"path": "tempStep",
|
|
9293
|
+
"valueType": "number"
|
|
9294
|
+
}
|
|
9295
|
+
],
|
|
9296
|
+
"color": [
|
|
9297
|
+
{
|
|
9298
|
+
"path": "mode",
|
|
9299
|
+
"valueType": "enum",
|
|
9300
|
+
"enumValues": [
|
|
9301
|
+
"rgb",
|
|
9302
|
+
"hsv",
|
|
9303
|
+
"mired"
|
|
9304
|
+
]
|
|
9305
|
+
},
|
|
9306
|
+
{
|
|
9307
|
+
"path": "rgb.r",
|
|
9308
|
+
"valueType": "number"
|
|
9309
|
+
},
|
|
9310
|
+
{
|
|
9311
|
+
"path": "rgb.g",
|
|
9312
|
+
"valueType": "number"
|
|
9313
|
+
},
|
|
9314
|
+
{
|
|
9315
|
+
"path": "rgb.b",
|
|
9316
|
+
"valueType": "number"
|
|
9317
|
+
},
|
|
9318
|
+
{
|
|
9319
|
+
"path": "hsv.h",
|
|
9320
|
+
"valueType": "number"
|
|
9321
|
+
},
|
|
9322
|
+
{
|
|
9323
|
+
"path": "hsv.s",
|
|
9324
|
+
"valueType": "number"
|
|
9325
|
+
},
|
|
9326
|
+
{
|
|
9327
|
+
"path": "hsv.v",
|
|
9328
|
+
"valueType": "number"
|
|
9329
|
+
},
|
|
9330
|
+
{
|
|
9331
|
+
"path": "mireds",
|
|
9332
|
+
"valueType": "number"
|
|
9333
|
+
}
|
|
9334
|
+
],
|
|
9335
|
+
"connectivity": [{
|
|
9336
|
+
"path": "connected",
|
|
9337
|
+
"valueType": "boolean"
|
|
9338
|
+
}],
|
|
9339
|
+
"contact": [{
|
|
9340
|
+
"path": "entryOpen",
|
|
9341
|
+
"valueType": "boolean"
|
|
9342
|
+
}],
|
|
9343
|
+
"control": [
|
|
9344
|
+
{
|
|
9345
|
+
"path": "kind",
|
|
9346
|
+
"valueType": "enum",
|
|
9347
|
+
"enumValues": [
|
|
9348
|
+
"numeric",
|
|
9349
|
+
"select",
|
|
9350
|
+
"text",
|
|
9351
|
+
"datetime"
|
|
9352
|
+
]
|
|
9353
|
+
},
|
|
9354
|
+
{
|
|
9355
|
+
"path": "unit",
|
|
9356
|
+
"valueType": "string"
|
|
9357
|
+
},
|
|
9358
|
+
{
|
|
9359
|
+
"path": "min",
|
|
9360
|
+
"valueType": "number"
|
|
9361
|
+
},
|
|
9362
|
+
{
|
|
9363
|
+
"path": "max",
|
|
9364
|
+
"valueType": "number"
|
|
9365
|
+
},
|
|
9366
|
+
{
|
|
9367
|
+
"path": "step",
|
|
9368
|
+
"valueType": "number"
|
|
9369
|
+
},
|
|
9370
|
+
{
|
|
9371
|
+
"path": "precision",
|
|
9372
|
+
"valueType": "number"
|
|
9373
|
+
},
|
|
9374
|
+
{
|
|
9375
|
+
"path": "format",
|
|
9376
|
+
"valueType": "enum",
|
|
9377
|
+
"enumValues": [
|
|
9378
|
+
"date",
|
|
9379
|
+
"time",
|
|
9380
|
+
"datetime"
|
|
9381
|
+
]
|
|
9382
|
+
}
|
|
9383
|
+
],
|
|
9384
|
+
"cover": [
|
|
9385
|
+
{
|
|
9386
|
+
"path": "state",
|
|
9387
|
+
"valueType": "enum",
|
|
9388
|
+
"enumValues": [
|
|
9389
|
+
"open",
|
|
9390
|
+
"opening",
|
|
9391
|
+
"closing",
|
|
9392
|
+
"closed",
|
|
9393
|
+
"stopped"
|
|
9394
|
+
]
|
|
9395
|
+
},
|
|
9396
|
+
{
|
|
9397
|
+
"path": "position",
|
|
9398
|
+
"valueType": "number"
|
|
9399
|
+
},
|
|
9400
|
+
{
|
|
9401
|
+
"path": "tiltPosition",
|
|
9402
|
+
"valueType": "number"
|
|
9403
|
+
}
|
|
9404
|
+
],
|
|
9405
|
+
"day-night": [
|
|
9406
|
+
{
|
|
9407
|
+
"path": "mode",
|
|
9408
|
+
"valueType": "enum",
|
|
9409
|
+
"enumValues": [
|
|
9410
|
+
"auto",
|
|
9411
|
+
"day",
|
|
9412
|
+
"night",
|
|
9413
|
+
"schedule"
|
|
9414
|
+
]
|
|
9415
|
+
},
|
|
9416
|
+
{
|
|
9417
|
+
"path": "sensitivity",
|
|
9418
|
+
"valueType": "number"
|
|
9419
|
+
},
|
|
9420
|
+
{
|
|
9421
|
+
"path": "switchDelaySec",
|
|
9422
|
+
"valueType": "number"
|
|
9423
|
+
}
|
|
9424
|
+
],
|
|
9425
|
+
"device-adoption": [
|
|
9426
|
+
{
|
|
9427
|
+
"path": "lastDiscoveryAt",
|
|
9428
|
+
"valueType": "number"
|
|
9429
|
+
},
|
|
9430
|
+
{
|
|
9431
|
+
"path": "candidateCount",
|
|
9432
|
+
"valueType": "number"
|
|
9433
|
+
},
|
|
9434
|
+
{
|
|
9435
|
+
"path": "adoptedCount",
|
|
9436
|
+
"valueType": "number"
|
|
9437
|
+
},
|
|
9438
|
+
{
|
|
9439
|
+
"path": "lastError",
|
|
9440
|
+
"valueType": "string"
|
|
9441
|
+
}
|
|
9442
|
+
],
|
|
9443
|
+
"device-discovery": [{
|
|
9444
|
+
"path": "lastDiscoveryAt",
|
|
9445
|
+
"valueType": "number"
|
|
9446
|
+
}, {
|
|
9447
|
+
"path": "lastError",
|
|
9448
|
+
"valueType": "string"
|
|
9449
|
+
}],
|
|
9450
|
+
"device-export": [
|
|
9451
|
+
{
|
|
9452
|
+
"path": "linkState",
|
|
9453
|
+
"valueType": "enum",
|
|
9454
|
+
"enumValues": [
|
|
9455
|
+
"unlinked",
|
|
9456
|
+
"linked",
|
|
9457
|
+
"error"
|
|
9458
|
+
]
|
|
9459
|
+
},
|
|
9460
|
+
{
|
|
9461
|
+
"path": "exposedDeviceCount",
|
|
9462
|
+
"valueType": "number"
|
|
9463
|
+
},
|
|
9464
|
+
{
|
|
9465
|
+
"path": "error",
|
|
9466
|
+
"valueType": "string"
|
|
9467
|
+
},
|
|
9468
|
+
{
|
|
9469
|
+
"path": "setup.qr",
|
|
9470
|
+
"valueType": "string"
|
|
9471
|
+
},
|
|
9472
|
+
{
|
|
9473
|
+
"path": "setup.note",
|
|
9474
|
+
"valueType": "string"
|
|
9475
|
+
}
|
|
9476
|
+
],
|
|
9477
|
+
"device-status": [{
|
|
9478
|
+
"path": "online",
|
|
9479
|
+
"valueType": "boolean"
|
|
9480
|
+
}],
|
|
9481
|
+
"dishwasher": [
|
|
9482
|
+
{
|
|
9483
|
+
"path": "availability",
|
|
9484
|
+
"valueType": "enum",
|
|
9485
|
+
"enumValues": [
|
|
9486
|
+
"available",
|
|
9487
|
+
"offline",
|
|
9488
|
+
"description-missing"
|
|
9489
|
+
]
|
|
9490
|
+
},
|
|
9491
|
+
{
|
|
9492
|
+
"path": "state",
|
|
9493
|
+
"valueType": "enum",
|
|
9494
|
+
"enumValues": [
|
|
9495
|
+
"idle",
|
|
9496
|
+
"running",
|
|
9497
|
+
"paused",
|
|
9498
|
+
"finished",
|
|
9499
|
+
"error",
|
|
9500
|
+
"unavailable"
|
|
9501
|
+
]
|
|
9502
|
+
},
|
|
9503
|
+
{
|
|
9504
|
+
"path": "operationState",
|
|
9505
|
+
"valueType": "enum",
|
|
9506
|
+
"enumValues": [
|
|
9507
|
+
"Inactive",
|
|
9508
|
+
"Ready",
|
|
9509
|
+
"DelayedStart",
|
|
9510
|
+
"Run",
|
|
9511
|
+
"Pause",
|
|
9512
|
+
"ActionRequired",
|
|
9513
|
+
"Finished",
|
|
9514
|
+
"Error",
|
|
9515
|
+
"Aborting"
|
|
9516
|
+
]
|
|
9517
|
+
},
|
|
9518
|
+
{
|
|
9519
|
+
"path": "program",
|
|
9520
|
+
"valueType": "string"
|
|
9521
|
+
},
|
|
9522
|
+
{
|
|
9523
|
+
"path": "selectedProgram",
|
|
9524
|
+
"valueType": "string"
|
|
9525
|
+
},
|
|
9526
|
+
{
|
|
9527
|
+
"path": "remainingSeconds",
|
|
9528
|
+
"valueType": "number"
|
|
9529
|
+
},
|
|
9530
|
+
{
|
|
9531
|
+
"path": "delayedStartSeconds",
|
|
9532
|
+
"valueType": "number"
|
|
9533
|
+
},
|
|
9534
|
+
{
|
|
9535
|
+
"path": "progressPercent",
|
|
9536
|
+
"valueType": "number"
|
|
9537
|
+
},
|
|
9538
|
+
{
|
|
9539
|
+
"path": "doorOpen",
|
|
9540
|
+
"valueType": "boolean"
|
|
9541
|
+
},
|
|
9542
|
+
{
|
|
9543
|
+
"path": "doorLocked",
|
|
9544
|
+
"valueType": "boolean"
|
|
9545
|
+
},
|
|
9546
|
+
{
|
|
9547
|
+
"path": "remoteStartAllowed",
|
|
9548
|
+
"valueType": "boolean"
|
|
9549
|
+
},
|
|
9550
|
+
{
|
|
9551
|
+
"path": "remoteControlActive",
|
|
9552
|
+
"valueType": "boolean"
|
|
9553
|
+
},
|
|
9554
|
+
{
|
|
9555
|
+
"path": "localControlActive",
|
|
9556
|
+
"valueType": "boolean"
|
|
9557
|
+
},
|
|
9558
|
+
{
|
|
9559
|
+
"path": "powerOn",
|
|
9560
|
+
"valueType": "boolean"
|
|
9561
|
+
},
|
|
9562
|
+
{
|
|
9563
|
+
"path": "powerState",
|
|
9564
|
+
"valueType": "string"
|
|
9565
|
+
},
|
|
9566
|
+
{
|
|
9567
|
+
"path": "filterCleaningDue",
|
|
9568
|
+
"valueType": "boolean"
|
|
9569
|
+
},
|
|
9570
|
+
{
|
|
9571
|
+
"path": "machineCareDue",
|
|
9572
|
+
"valueType": "boolean"
|
|
9573
|
+
},
|
|
9574
|
+
{
|
|
9575
|
+
"path": "machineCareRemainingRuns",
|
|
9576
|
+
"valueType": "number"
|
|
9577
|
+
},
|
|
9578
|
+
{
|
|
9579
|
+
"path": "halfLoad",
|
|
9580
|
+
"valueType": "boolean"
|
|
9581
|
+
},
|
|
9582
|
+
{
|
|
9583
|
+
"path": "hygienePlus",
|
|
9584
|
+
"valueType": "boolean"
|
|
9585
|
+
},
|
|
9586
|
+
{
|
|
9587
|
+
"path": "extraDry",
|
|
9588
|
+
"valueType": "boolean"
|
|
9589
|
+
},
|
|
9590
|
+
{
|
|
9591
|
+
"path": "intensiveZone",
|
|
9592
|
+
"valueType": "boolean"
|
|
9593
|
+
},
|
|
9594
|
+
{
|
|
9595
|
+
"path": "varioSpeedPlus",
|
|
9596
|
+
"valueType": "boolean"
|
|
9597
|
+
},
|
|
9598
|
+
{
|
|
9599
|
+
"path": "childLock",
|
|
9600
|
+
"valueType": "boolean"
|
|
9601
|
+
},
|
|
9602
|
+
{
|
|
9603
|
+
"path": "errorCode",
|
|
9604
|
+
"valueType": "number"
|
|
9605
|
+
},
|
|
9606
|
+
{
|
|
9607
|
+
"path": "errorLabel",
|
|
9608
|
+
"valueType": "string"
|
|
9609
|
+
}
|
|
9610
|
+
],
|
|
9611
|
+
"doorbell": [{
|
|
9612
|
+
"path": "lastPressedAt",
|
|
9613
|
+
"valueType": "number"
|
|
9614
|
+
}, {
|
|
9615
|
+
"path": "pressCountSinceStart",
|
|
9616
|
+
"valueType": "number"
|
|
9617
|
+
}],
|
|
9618
|
+
"enum-sensor": [{
|
|
9619
|
+
"path": "value",
|
|
9620
|
+
"valueType": "string"
|
|
9621
|
+
}, {
|
|
9622
|
+
"path": "format",
|
|
9623
|
+
"valueType": "enum",
|
|
9624
|
+
"enumValues": [
|
|
9625
|
+
"date",
|
|
9626
|
+
"time",
|
|
9627
|
+
"datetime"
|
|
9628
|
+
]
|
|
9629
|
+
}],
|
|
9630
|
+
"event-emitter": [
|
|
9631
|
+
{
|
|
9632
|
+
"path": "lastEvent.deviceId",
|
|
9633
|
+
"valueType": "number"
|
|
9634
|
+
},
|
|
9635
|
+
{
|
|
9636
|
+
"path": "lastEvent.eventType",
|
|
9637
|
+
"valueType": "string"
|
|
9638
|
+
},
|
|
9639
|
+
{
|
|
9640
|
+
"path": "lastEvent.timestamp",
|
|
9641
|
+
"valueType": "number"
|
|
9642
|
+
},
|
|
9643
|
+
{
|
|
9644
|
+
"path": "lastEvent.seq",
|
|
9645
|
+
"valueType": "number"
|
|
9646
|
+
},
|
|
9647
|
+
{
|
|
9648
|
+
"path": "eventCountSinceStart",
|
|
9649
|
+
"valueType": "number"
|
|
9650
|
+
}
|
|
9651
|
+
],
|
|
9652
|
+
"fan-control": [
|
|
9653
|
+
{
|
|
9654
|
+
"path": "percentage",
|
|
9655
|
+
"valueType": "number"
|
|
9656
|
+
},
|
|
9657
|
+
{
|
|
9658
|
+
"path": "percentageStep",
|
|
9659
|
+
"valueType": "number"
|
|
9660
|
+
},
|
|
9661
|
+
{
|
|
9662
|
+
"path": "preset",
|
|
9663
|
+
"valueType": "string"
|
|
9664
|
+
},
|
|
9665
|
+
{
|
|
9666
|
+
"path": "direction",
|
|
9667
|
+
"valueType": "enum",
|
|
9668
|
+
"enumValues": ["forward", "reverse"]
|
|
9669
|
+
},
|
|
9670
|
+
{
|
|
9671
|
+
"path": "oscillating",
|
|
9672
|
+
"valueType": "boolean"
|
|
9673
|
+
}
|
|
9674
|
+
],
|
|
9675
|
+
"feature-probe": [
|
|
9676
|
+
{
|
|
9677
|
+
"path": "deviceType",
|
|
9678
|
+
"valueType": "string"
|
|
9679
|
+
},
|
|
9680
|
+
{
|
|
9681
|
+
"path": "model",
|
|
9682
|
+
"valueType": "string"
|
|
9683
|
+
},
|
|
9684
|
+
{
|
|
9685
|
+
"path": "channelCount",
|
|
9686
|
+
"valueType": "number"
|
|
9687
|
+
},
|
|
9688
|
+
{
|
|
9689
|
+
"path": "lastProbedAt",
|
|
9690
|
+
"valueType": "number"
|
|
9691
|
+
}
|
|
9692
|
+
],
|
|
9693
|
+
"flood": [{
|
|
9694
|
+
"path": "flooded",
|
|
9695
|
+
"valueType": "boolean"
|
|
9696
|
+
}],
|
|
9697
|
+
"gas": [{
|
|
9698
|
+
"path": "detected",
|
|
9699
|
+
"valueType": "boolean"
|
|
9700
|
+
}],
|
|
9701
|
+
"heating-valve": [{
|
|
9702
|
+
"path": "position",
|
|
9703
|
+
"valueType": "number"
|
|
9704
|
+
}],
|
|
9705
|
+
"humidifier": [
|
|
9706
|
+
{
|
|
9707
|
+
"path": "on",
|
|
9708
|
+
"valueType": "boolean"
|
|
9709
|
+
},
|
|
9710
|
+
{
|
|
9711
|
+
"path": "currentHumidity",
|
|
9712
|
+
"valueType": "number"
|
|
9713
|
+
},
|
|
9714
|
+
{
|
|
9715
|
+
"path": "targetHumidity",
|
|
9716
|
+
"valueType": "number"
|
|
9717
|
+
},
|
|
9718
|
+
{
|
|
9719
|
+
"path": "mode",
|
|
9720
|
+
"valueType": "string"
|
|
9721
|
+
},
|
|
9722
|
+
{
|
|
9723
|
+
"path": "action",
|
|
9724
|
+
"valueType": "string"
|
|
9725
|
+
},
|
|
9726
|
+
{
|
|
9727
|
+
"path": "minHumidity",
|
|
9728
|
+
"valueType": "number"
|
|
9729
|
+
},
|
|
9730
|
+
{
|
|
9731
|
+
"path": "maxHumidity",
|
|
9732
|
+
"valueType": "number"
|
|
9733
|
+
}
|
|
9734
|
+
],
|
|
9735
|
+
"humidity-sensor": [
|
|
9736
|
+
{
|
|
9737
|
+
"path": "percent",
|
|
9738
|
+
"valueType": "number"
|
|
9739
|
+
},
|
|
9740
|
+
{
|
|
9741
|
+
"path": "unit",
|
|
9742
|
+
"valueType": "string"
|
|
9743
|
+
},
|
|
9744
|
+
{
|
|
9745
|
+
"path": "precision",
|
|
9746
|
+
"valueType": "number"
|
|
9747
|
+
}
|
|
9748
|
+
],
|
|
9749
|
+
"image": [{
|
|
9750
|
+
"path": "url",
|
|
9751
|
+
"valueType": "string"
|
|
9752
|
+
}, {
|
|
9753
|
+
"path": "lastUpdated",
|
|
9754
|
+
"valueType": "number"
|
|
9755
|
+
}],
|
|
9756
|
+
"image-settings": [
|
|
9757
|
+
{
|
|
9758
|
+
"path": "brightness",
|
|
9759
|
+
"valueType": "number"
|
|
9760
|
+
},
|
|
9761
|
+
{
|
|
9762
|
+
"path": "contrast",
|
|
9763
|
+
"valueType": "number"
|
|
9764
|
+
},
|
|
9765
|
+
{
|
|
9766
|
+
"path": "saturation",
|
|
9767
|
+
"valueType": "number"
|
|
9768
|
+
},
|
|
9769
|
+
{
|
|
9770
|
+
"path": "sharpness",
|
|
9771
|
+
"valueType": "number"
|
|
9772
|
+
},
|
|
9773
|
+
{
|
|
9774
|
+
"path": "mirror",
|
|
9775
|
+
"valueType": "boolean"
|
|
9776
|
+
},
|
|
9777
|
+
{
|
|
9778
|
+
"path": "flip",
|
|
9779
|
+
"valueType": "boolean"
|
|
9780
|
+
},
|
|
9781
|
+
{
|
|
9782
|
+
"path": "rotate",
|
|
9783
|
+
"valueType": "enum",
|
|
9784
|
+
"enumValues": [
|
|
9785
|
+
"0",
|
|
9786
|
+
"90",
|
|
9787
|
+
"180",
|
|
9788
|
+
"270"
|
|
9789
|
+
]
|
|
9790
|
+
},
|
|
9791
|
+
{
|
|
9792
|
+
"path": "whiteBalance",
|
|
9793
|
+
"valueType": "enum",
|
|
9794
|
+
"enumValues": ["auto", "manual"]
|
|
9795
|
+
},
|
|
9796
|
+
{
|
|
9797
|
+
"path": "warmth",
|
|
9798
|
+
"valueType": "number"
|
|
9799
|
+
},
|
|
9800
|
+
{
|
|
9801
|
+
"path": "exposureMode",
|
|
9802
|
+
"valueType": "enum",
|
|
9803
|
+
"enumValues": ["auto", "manual"]
|
|
9804
|
+
},
|
|
9805
|
+
{
|
|
9806
|
+
"path": "backlightMode",
|
|
9807
|
+
"valueType": "enum",
|
|
9808
|
+
"enumValues": [
|
|
9809
|
+
"off",
|
|
9810
|
+
"blc",
|
|
9811
|
+
"wdr",
|
|
9812
|
+
"hlc"
|
|
9813
|
+
]
|
|
9814
|
+
}
|
|
9815
|
+
],
|
|
9816
|
+
"intercom": [
|
|
9817
|
+
{
|
|
9818
|
+
"path": "talking",
|
|
9819
|
+
"valueType": "boolean"
|
|
9820
|
+
},
|
|
9821
|
+
{
|
|
9822
|
+
"path": "lastSessionAt",
|
|
9823
|
+
"valueType": "number"
|
|
9824
|
+
},
|
|
9825
|
+
{
|
|
9826
|
+
"path": "ability.sampleRate",
|
|
9827
|
+
"valueType": "number"
|
|
9828
|
+
},
|
|
9829
|
+
{
|
|
9830
|
+
"path": "ability.duplex",
|
|
9831
|
+
"valueType": "enum",
|
|
9832
|
+
"enumValues": ["half", "full"]
|
|
9833
|
+
},
|
|
9834
|
+
{
|
|
9835
|
+
"path": "ability.maxBacklogMs",
|
|
9836
|
+
"valueType": "number"
|
|
9837
|
+
}
|
|
9838
|
+
],
|
|
9839
|
+
"lawn-mower-control": [
|
|
9840
|
+
{
|
|
9841
|
+
"path": "activity",
|
|
9842
|
+
"valueType": "enum",
|
|
9843
|
+
"enumValues": [
|
|
9844
|
+
"idle",
|
|
9845
|
+
"mowing",
|
|
9846
|
+
"paused",
|
|
9847
|
+
"docked",
|
|
9848
|
+
"error"
|
|
9849
|
+
]
|
|
9850
|
+
},
|
|
9851
|
+
{
|
|
9852
|
+
"path": "batteryLevel",
|
|
9853
|
+
"valueType": "number"
|
|
9854
|
+
},
|
|
9855
|
+
{
|
|
9856
|
+
"path": "progressPercent",
|
|
9857
|
+
"valueType": "number"
|
|
9858
|
+
},
|
|
9859
|
+
{
|
|
9860
|
+
"path": "currentCode",
|
|
9861
|
+
"valueType": "number"
|
|
9862
|
+
},
|
|
9863
|
+
{
|
|
9864
|
+
"path": "currentCodeLabel",
|
|
9865
|
+
"valueType": "string"
|
|
9866
|
+
},
|
|
9867
|
+
{
|
|
9868
|
+
"path": "severity",
|
|
9869
|
+
"valueType": "enum",
|
|
9870
|
+
"enumValues": [
|
|
9871
|
+
"info",
|
|
9872
|
+
"warning",
|
|
9873
|
+
"error"
|
|
9874
|
+
]
|
|
9875
|
+
}
|
|
9876
|
+
],
|
|
9877
|
+
"lock-control": [{
|
|
9878
|
+
"path": "state",
|
|
9879
|
+
"valueType": "enum",
|
|
9880
|
+
"enumValues": [
|
|
9881
|
+
"locked",
|
|
9882
|
+
"unlocked",
|
|
9883
|
+
"locking",
|
|
9884
|
+
"unlocking",
|
|
9885
|
+
"jammed"
|
|
9886
|
+
]
|
|
9887
|
+
}],
|
|
9888
|
+
"media-player": [
|
|
9889
|
+
{
|
|
9890
|
+
"path": "state",
|
|
9891
|
+
"valueType": "enum",
|
|
9892
|
+
"enumValues": [
|
|
9893
|
+
"off",
|
|
9894
|
+
"on",
|
|
9895
|
+
"idle",
|
|
9896
|
+
"playing",
|
|
9897
|
+
"paused",
|
|
9898
|
+
"buffering",
|
|
9899
|
+
"standby"
|
|
9900
|
+
]
|
|
9901
|
+
},
|
|
9902
|
+
{
|
|
9903
|
+
"path": "volumeLevel",
|
|
9904
|
+
"valueType": "number"
|
|
9905
|
+
},
|
|
9906
|
+
{
|
|
9907
|
+
"path": "isMuted",
|
|
9908
|
+
"valueType": "boolean"
|
|
9909
|
+
},
|
|
9910
|
+
{
|
|
9911
|
+
"path": "source",
|
|
9912
|
+
"valueType": "string"
|
|
9913
|
+
},
|
|
9914
|
+
{
|
|
9915
|
+
"path": "currentMedia.type",
|
|
9916
|
+
"valueType": "string"
|
|
9917
|
+
},
|
|
9918
|
+
{
|
|
9919
|
+
"path": "currentMedia.title",
|
|
9920
|
+
"valueType": "string"
|
|
9921
|
+
},
|
|
9922
|
+
{
|
|
9923
|
+
"path": "currentMedia.artist",
|
|
9924
|
+
"valueType": "string"
|
|
9925
|
+
},
|
|
9926
|
+
{
|
|
9927
|
+
"path": "currentMedia.album",
|
|
9928
|
+
"valueType": "string"
|
|
9929
|
+
},
|
|
9930
|
+
{
|
|
9931
|
+
"path": "currentMedia.imageUrl",
|
|
9932
|
+
"valueType": "string"
|
|
9933
|
+
},
|
|
9934
|
+
{
|
|
9935
|
+
"path": "positionMs",
|
|
9936
|
+
"valueType": "number"
|
|
9937
|
+
},
|
|
9938
|
+
{
|
|
9939
|
+
"path": "durationMs",
|
|
9940
|
+
"valueType": "number"
|
|
9941
|
+
},
|
|
9942
|
+
{
|
|
9943
|
+
"path": "shuffle",
|
|
9944
|
+
"valueType": "boolean"
|
|
9945
|
+
},
|
|
9946
|
+
{
|
|
9947
|
+
"path": "repeat",
|
|
9948
|
+
"valueType": "enum",
|
|
9949
|
+
"enumValues": [
|
|
9950
|
+
"off",
|
|
9951
|
+
"all",
|
|
9952
|
+
"one"
|
|
9953
|
+
]
|
|
9954
|
+
}
|
|
9955
|
+
],
|
|
9956
|
+
"motion": [
|
|
9957
|
+
{
|
|
9958
|
+
"path": "detected",
|
|
9959
|
+
"valueType": "boolean"
|
|
9960
|
+
},
|
|
9961
|
+
{
|
|
9962
|
+
"path": "lastDetectedAt",
|
|
9963
|
+
"valueType": "number"
|
|
9964
|
+
},
|
|
9965
|
+
{
|
|
9966
|
+
"path": "autoClearAfterMs",
|
|
9967
|
+
"valueType": "number"
|
|
9968
|
+
}
|
|
9969
|
+
],
|
|
9970
|
+
"motion-trigger": [{
|
|
9971
|
+
"path": "enabled",
|
|
9972
|
+
"valueType": "boolean"
|
|
9973
|
+
}],
|
|
9974
|
+
"motion-zones": [{
|
|
9975
|
+
"path": "enabled",
|
|
9976
|
+
"valueType": "boolean"
|
|
9977
|
+
}, {
|
|
9978
|
+
"path": "sensitivity",
|
|
9979
|
+
"valueType": "number"
|
|
9980
|
+
}],
|
|
9981
|
+
"mqtt-broker": [{
|
|
9982
|
+
"path": "brokerCount",
|
|
9983
|
+
"valueType": "number"
|
|
9984
|
+
}, {
|
|
9985
|
+
"path": "embeddedRunning",
|
|
9986
|
+
"valueType": "boolean"
|
|
9987
|
+
}],
|
|
9988
|
+
"native-object-detection": [{
|
|
9989
|
+
"path": "enabled",
|
|
9990
|
+
"valueType": "boolean"
|
|
9991
|
+
}],
|
|
9992
|
+
"navigation": [
|
|
9993
|
+
{
|
|
9994
|
+
"path": "mode",
|
|
9995
|
+
"valueType": "enum",
|
|
9996
|
+
"enumValues": [
|
|
9997
|
+
"idle",
|
|
9998
|
+
"cleaning",
|
|
9999
|
+
"spot",
|
|
10000
|
+
"following",
|
|
10001
|
+
"goto",
|
|
10002
|
+
"returning",
|
|
10003
|
+
"paused",
|
|
10004
|
+
"unknown"
|
|
10005
|
+
]
|
|
10006
|
+
},
|
|
10007
|
+
{
|
|
10008
|
+
"path": "following",
|
|
10009
|
+
"valueType": "boolean"
|
|
10010
|
+
},
|
|
10011
|
+
{
|
|
10012
|
+
"path": "flash",
|
|
10013
|
+
"valueType": "boolean"
|
|
10014
|
+
},
|
|
10015
|
+
{
|
|
10016
|
+
"path": "lightMode",
|
|
10017
|
+
"valueType": "enum",
|
|
10018
|
+
"enumValues": ["auto", "manual"]
|
|
10019
|
+
},
|
|
10020
|
+
{
|
|
10021
|
+
"path": "lightLevel",
|
|
10022
|
+
"valueType": "number"
|
|
10023
|
+
}
|
|
10024
|
+
],
|
|
10025
|
+
"network-link": [
|
|
10026
|
+
{
|
|
10027
|
+
"path": "type",
|
|
10028
|
+
"valueType": "enum",
|
|
10029
|
+
"enumValues": [
|
|
10030
|
+
"wifi",
|
|
10031
|
+
"ethernet",
|
|
10032
|
+
"cellular",
|
|
10033
|
+
"unknown"
|
|
10034
|
+
]
|
|
10035
|
+
},
|
|
10036
|
+
{
|
|
10037
|
+
"path": "signalPercent",
|
|
10038
|
+
"valueType": "number"
|
|
10039
|
+
},
|
|
10040
|
+
{
|
|
10041
|
+
"path": "rssiDbm",
|
|
10042
|
+
"valueType": "number"
|
|
10043
|
+
},
|
|
10044
|
+
{
|
|
10045
|
+
"path": "ssid",
|
|
10046
|
+
"valueType": "string"
|
|
10047
|
+
},
|
|
10048
|
+
{
|
|
10049
|
+
"path": "lastUpdated",
|
|
10050
|
+
"valueType": "number"
|
|
10051
|
+
}
|
|
10052
|
+
],
|
|
10053
|
+
"notifier": [
|
|
10054
|
+
{
|
|
10055
|
+
"path": "lastSentAt",
|
|
10056
|
+
"valueType": "number"
|
|
10057
|
+
},
|
|
10058
|
+
{
|
|
10059
|
+
"path": "lastError",
|
|
10060
|
+
"valueType": "string"
|
|
10061
|
+
},
|
|
10062
|
+
{
|
|
10063
|
+
"path": "queueDepth",
|
|
10064
|
+
"valueType": "number"
|
|
10065
|
+
},
|
|
10066
|
+
{
|
|
10067
|
+
"path": "supports.image",
|
|
10068
|
+
"valueType": "boolean"
|
|
10069
|
+
},
|
|
10070
|
+
{
|
|
10071
|
+
"path": "supports.priority",
|
|
10072
|
+
"valueType": "boolean"
|
|
10073
|
+
},
|
|
10074
|
+
{
|
|
10075
|
+
"path": "supports.data",
|
|
10076
|
+
"valueType": "boolean"
|
|
10077
|
+
},
|
|
10078
|
+
{
|
|
10079
|
+
"path": "supports.actions",
|
|
10080
|
+
"valueType": "boolean"
|
|
10081
|
+
},
|
|
10082
|
+
{
|
|
10083
|
+
"path": "supports.recipients",
|
|
10084
|
+
"valueType": "boolean"
|
|
10085
|
+
}
|
|
10086
|
+
],
|
|
10087
|
+
"numeric-sensor": [
|
|
10088
|
+
{
|
|
10089
|
+
"path": "value",
|
|
10090
|
+
"valueType": "number"
|
|
10091
|
+
},
|
|
10092
|
+
{
|
|
10093
|
+
"path": "unit",
|
|
10094
|
+
"valueType": "string"
|
|
10095
|
+
},
|
|
10096
|
+
{
|
|
10097
|
+
"path": "precision",
|
|
10098
|
+
"valueType": "number"
|
|
10099
|
+
}
|
|
10100
|
+
],
|
|
10101
|
+
"pet-feeder": [
|
|
10102
|
+
{
|
|
10103
|
+
"path": "foodLevel",
|
|
10104
|
+
"valueType": "number"
|
|
10105
|
+
},
|
|
10106
|
+
{
|
|
10107
|
+
"path": "food1",
|
|
10108
|
+
"valueType": "number"
|
|
10109
|
+
},
|
|
10110
|
+
{
|
|
10111
|
+
"path": "food2",
|
|
10112
|
+
"valueType": "number"
|
|
10113
|
+
},
|
|
10114
|
+
{
|
|
10115
|
+
"path": "lowFood",
|
|
10116
|
+
"valueType": "boolean"
|
|
10117
|
+
},
|
|
10118
|
+
{
|
|
10119
|
+
"path": "batteryPower",
|
|
10120
|
+
"valueType": "number"
|
|
10121
|
+
},
|
|
10122
|
+
{
|
|
10123
|
+
"path": "desiccantLeftDays",
|
|
10124
|
+
"valueType": "number"
|
|
10125
|
+
},
|
|
10126
|
+
{
|
|
10127
|
+
"path": "feeding",
|
|
10128
|
+
"valueType": "boolean"
|
|
10129
|
+
},
|
|
10130
|
+
{
|
|
10131
|
+
"path": "status",
|
|
10132
|
+
"valueType": "enum",
|
|
10133
|
+
"enumValues": [
|
|
10134
|
+
"normal",
|
|
10135
|
+
"offline",
|
|
10136
|
+
"on_batteries"
|
|
10137
|
+
]
|
|
10138
|
+
},
|
|
10139
|
+
{
|
|
10140
|
+
"path": "error",
|
|
10141
|
+
"valueType": "string"
|
|
10142
|
+
},
|
|
10143
|
+
{
|
|
10144
|
+
"path": "errorCode",
|
|
10145
|
+
"valueType": "number"
|
|
10146
|
+
},
|
|
10147
|
+
{
|
|
10148
|
+
"path": "isDualHopper",
|
|
10149
|
+
"valueType": "boolean"
|
|
10150
|
+
},
|
|
10151
|
+
{
|
|
10152
|
+
"path": "childLock",
|
|
10153
|
+
"valueType": "boolean"
|
|
10154
|
+
},
|
|
10155
|
+
{
|
|
10156
|
+
"path": "indicatorLight",
|
|
10157
|
+
"valueType": "boolean"
|
|
10158
|
+
},
|
|
10159
|
+
{
|
|
10160
|
+
"path": "feedSound",
|
|
10161
|
+
"valueType": "boolean"
|
|
10162
|
+
},
|
|
10163
|
+
{
|
|
10164
|
+
"path": "volume",
|
|
10165
|
+
"valueType": "number"
|
|
10166
|
+
}
|
|
10167
|
+
],
|
|
10168
|
+
"power-meter": [
|
|
10169
|
+
{
|
|
10170
|
+
"path": "watts",
|
|
10171
|
+
"valueType": "number"
|
|
10172
|
+
},
|
|
10173
|
+
{
|
|
10174
|
+
"path": "kwhTotal",
|
|
10175
|
+
"valueType": "number"
|
|
10176
|
+
},
|
|
10177
|
+
{
|
|
10178
|
+
"path": "volts",
|
|
10179
|
+
"valueType": "number"
|
|
10180
|
+
},
|
|
10181
|
+
{
|
|
10182
|
+
"path": "amps",
|
|
10183
|
+
"valueType": "number"
|
|
10184
|
+
},
|
|
10185
|
+
{
|
|
10186
|
+
"path": "va",
|
|
10187
|
+
"valueType": "number"
|
|
10188
|
+
},
|
|
10189
|
+
{
|
|
10190
|
+
"path": "powerFactor",
|
|
10191
|
+
"valueType": "number"
|
|
10192
|
+
},
|
|
10193
|
+
{
|
|
10194
|
+
"path": "unit",
|
|
10195
|
+
"valueType": "string"
|
|
10196
|
+
},
|
|
10197
|
+
{
|
|
10198
|
+
"path": "precision",
|
|
10199
|
+
"valueType": "number"
|
|
10200
|
+
}
|
|
10201
|
+
],
|
|
10202
|
+
"presence": [
|
|
10203
|
+
{
|
|
10204
|
+
"path": "state",
|
|
10205
|
+
"valueType": "string"
|
|
10206
|
+
},
|
|
10207
|
+
{
|
|
10208
|
+
"path": "location",
|
|
10209
|
+
"valueType": "string"
|
|
10210
|
+
},
|
|
10211
|
+
{
|
|
10212
|
+
"path": "gps.latitude",
|
|
10213
|
+
"valueType": "number"
|
|
10214
|
+
},
|
|
10215
|
+
{
|
|
10216
|
+
"path": "gps.longitude",
|
|
10217
|
+
"valueType": "number"
|
|
10218
|
+
},
|
|
10219
|
+
{
|
|
10220
|
+
"path": "gps.accuracyMeters",
|
|
10221
|
+
"valueType": "number"
|
|
10222
|
+
},
|
|
10223
|
+
{
|
|
10224
|
+
"path": "batteryPercent",
|
|
10225
|
+
"valueType": "number"
|
|
10226
|
+
}
|
|
10227
|
+
],
|
|
10228
|
+
"pressure-sensor": [
|
|
10229
|
+
{
|
|
10230
|
+
"path": "hpa",
|
|
10231
|
+
"valueType": "number"
|
|
10232
|
+
},
|
|
10233
|
+
{
|
|
10234
|
+
"path": "unit",
|
|
10235
|
+
"valueType": "string"
|
|
10236
|
+
},
|
|
10237
|
+
{
|
|
10238
|
+
"path": "precision",
|
|
10239
|
+
"valueType": "number"
|
|
10240
|
+
}
|
|
10241
|
+
],
|
|
10242
|
+
"privacy-mask": [{
|
|
10243
|
+
"path": "enabled",
|
|
10244
|
+
"valueType": "boolean"
|
|
10245
|
+
}, {
|
|
10246
|
+
"path": "audioEnabled",
|
|
10247
|
+
"valueType": "boolean"
|
|
10248
|
+
}],
|
|
10249
|
+
"ptz": [
|
|
10250
|
+
{
|
|
10251
|
+
"path": "pan",
|
|
10252
|
+
"valueType": "number"
|
|
10253
|
+
},
|
|
10254
|
+
{
|
|
10255
|
+
"path": "tilt",
|
|
10256
|
+
"valueType": "number"
|
|
10257
|
+
},
|
|
10258
|
+
{
|
|
10259
|
+
"path": "zoom",
|
|
10260
|
+
"valueType": "number"
|
|
10261
|
+
},
|
|
10262
|
+
{
|
|
10263
|
+
"path": "autofocus",
|
|
10264
|
+
"valueType": "boolean"
|
|
10265
|
+
}
|
|
10266
|
+
],
|
|
10267
|
+
"ptz-autotrack": [
|
|
10268
|
+
{
|
|
10269
|
+
"path": "enabled",
|
|
10270
|
+
"valueType": "boolean"
|
|
10271
|
+
},
|
|
10272
|
+
{
|
|
10273
|
+
"path": "currentSettings.targetType",
|
|
10274
|
+
"valueType": "string"
|
|
10275
|
+
},
|
|
10276
|
+
{
|
|
10277
|
+
"path": "currentSettings.stopDelaySeconds",
|
|
10278
|
+
"valueType": "number"
|
|
10279
|
+
},
|
|
10280
|
+
{
|
|
10281
|
+
"path": "currentSettings.disappearDelaySeconds",
|
|
10282
|
+
"valueType": "number"
|
|
10283
|
+
}
|
|
10284
|
+
],
|
|
10285
|
+
"recording-archive": [
|
|
10286
|
+
{
|
|
10287
|
+
"path": "deviceId",
|
|
10288
|
+
"valueType": "number"
|
|
10289
|
+
},
|
|
10290
|
+
{
|
|
10291
|
+
"path": "enabled",
|
|
10292
|
+
"valueType": "boolean"
|
|
10293
|
+
},
|
|
10294
|
+
{
|
|
10295
|
+
"path": "activeMode",
|
|
10296
|
+
"valueType": "enum",
|
|
10297
|
+
"enumValues": [
|
|
10298
|
+
"off",
|
|
10299
|
+
"events",
|
|
10300
|
+
"continuous",
|
|
10301
|
+
"on-device-decision"
|
|
10302
|
+
]
|
|
10303
|
+
},
|
|
10304
|
+
{
|
|
10305
|
+
"path": "nodeId",
|
|
10306
|
+
"valueType": "string"
|
|
10307
|
+
},
|
|
10308
|
+
{
|
|
10309
|
+
"path": "storageBytes",
|
|
10310
|
+
"valueType": "number"
|
|
10311
|
+
}
|
|
10312
|
+
],
|
|
10313
|
+
"recording-onboard": [
|
|
10314
|
+
{
|
|
10315
|
+
"path": "primaryTrackId",
|
|
10316
|
+
"valueType": "string"
|
|
10317
|
+
},
|
|
10318
|
+
{
|
|
10319
|
+
"path": "enabled",
|
|
10320
|
+
"valueType": "boolean"
|
|
10321
|
+
},
|
|
10322
|
+
{
|
|
10323
|
+
"path": "overwriteWhenFull",
|
|
10324
|
+
"valueType": "boolean"
|
|
10325
|
+
},
|
|
10326
|
+
{
|
|
10327
|
+
"path": "preRecordSec",
|
|
10328
|
+
"valueType": "number"
|
|
10329
|
+
},
|
|
10330
|
+
{
|
|
10331
|
+
"path": "postRecordSec",
|
|
10332
|
+
"valueType": "number"
|
|
10333
|
+
},
|
|
10334
|
+
{
|
|
10335
|
+
"path": "segmentMinutes",
|
|
10336
|
+
"valueType": "number"
|
|
10337
|
+
},
|
|
10338
|
+
{
|
|
10339
|
+
"path": "unreadableWindows",
|
|
10340
|
+
"valueType": "number"
|
|
10341
|
+
},
|
|
10342
|
+
{
|
|
10343
|
+
"path": "recordingToNowhere",
|
|
10344
|
+
"valueType": "boolean"
|
|
10345
|
+
}
|
|
10346
|
+
],
|
|
10347
|
+
"recording-signal": [{
|
|
10348
|
+
"path": "active",
|
|
10349
|
+
"valueType": "boolean"
|
|
10350
|
+
}, {
|
|
10351
|
+
"path": "reason",
|
|
10352
|
+
"valueType": "string"
|
|
10353
|
+
}],
|
|
10354
|
+
"running-state": [
|
|
10355
|
+
{
|
|
10356
|
+
"path": "running",
|
|
10357
|
+
"valueType": "boolean"
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"path": "since",
|
|
10361
|
+
"valueType": "number"
|
|
10362
|
+
},
|
|
10363
|
+
{
|
|
10364
|
+
"path": "source",
|
|
10365
|
+
"valueType": "enum",
|
|
10366
|
+
"enumValues": ["native", "assigned"]
|
|
10367
|
+
},
|
|
10368
|
+
{
|
|
10369
|
+
"path": "phase",
|
|
10370
|
+
"valueType": "string"
|
|
10371
|
+
}
|
|
10372
|
+
],
|
|
10373
|
+
"script-runner": [
|
|
10374
|
+
{
|
|
10375
|
+
"path": "isRunning",
|
|
10376
|
+
"valueType": "boolean"
|
|
10377
|
+
},
|
|
10378
|
+
{
|
|
10379
|
+
"path": "lastRunAt",
|
|
10380
|
+
"valueType": "number"
|
|
10381
|
+
},
|
|
10382
|
+
{
|
|
10383
|
+
"path": "lastRunSuccess",
|
|
10384
|
+
"valueType": "boolean"
|
|
10385
|
+
},
|
|
10386
|
+
{
|
|
10387
|
+
"path": "lastError",
|
|
10388
|
+
"valueType": "string"
|
|
10389
|
+
}
|
|
10390
|
+
],
|
|
10391
|
+
"smoke": [{
|
|
10392
|
+
"path": "detected",
|
|
10393
|
+
"valueType": "boolean"
|
|
10394
|
+
}],
|
|
10395
|
+
"snapshot": [
|
|
10396
|
+
{
|
|
10397
|
+
"path": "lastCapturedAt",
|
|
10398
|
+
"valueType": "number"
|
|
10399
|
+
},
|
|
10400
|
+
{
|
|
10401
|
+
"path": "cacheAgeMs",
|
|
10402
|
+
"valueType": "number"
|
|
10403
|
+
},
|
|
10404
|
+
{
|
|
10405
|
+
"path": "lastBytes",
|
|
10406
|
+
"valueType": "number"
|
|
10407
|
+
},
|
|
10408
|
+
{
|
|
10409
|
+
"path": "lastStreamId",
|
|
10410
|
+
"valueType": "string"
|
|
10411
|
+
}
|
|
10412
|
+
],
|
|
10413
|
+
"stream-params": [
|
|
10414
|
+
{
|
|
10415
|
+
"path": "main.width",
|
|
10416
|
+
"valueType": "number"
|
|
10417
|
+
},
|
|
10418
|
+
{
|
|
10419
|
+
"path": "main.height",
|
|
10420
|
+
"valueType": "number"
|
|
10421
|
+
},
|
|
10422
|
+
{
|
|
10423
|
+
"path": "main.codec",
|
|
10424
|
+
"valueType": "enum",
|
|
10425
|
+
"enumValues": ["h264", "h265"]
|
|
10426
|
+
},
|
|
10427
|
+
{
|
|
10428
|
+
"path": "main.framerate",
|
|
10429
|
+
"valueType": "number"
|
|
10430
|
+
},
|
|
10431
|
+
{
|
|
10432
|
+
"path": "main.bitrate",
|
|
10433
|
+
"valueType": "number"
|
|
10434
|
+
},
|
|
10435
|
+
{
|
|
10436
|
+
"path": "main.bitrateMode",
|
|
10437
|
+
"valueType": "enum",
|
|
10438
|
+
"enumValues": ["vbr", "cbr"]
|
|
10439
|
+
},
|
|
10440
|
+
{
|
|
10441
|
+
"path": "main.encoderProfile",
|
|
10442
|
+
"valueType": "enum",
|
|
10443
|
+
"enumValues": [
|
|
10444
|
+
"high",
|
|
10445
|
+
"main",
|
|
10446
|
+
"baseline"
|
|
10447
|
+
]
|
|
10448
|
+
},
|
|
10449
|
+
{
|
|
10450
|
+
"path": "main.gop",
|
|
10451
|
+
"valueType": "number"
|
|
10452
|
+
},
|
|
10453
|
+
{
|
|
10454
|
+
"path": "main.audio",
|
|
10455
|
+
"valueType": "boolean"
|
|
10456
|
+
},
|
|
10457
|
+
{
|
|
10458
|
+
"path": "sub.width",
|
|
10459
|
+
"valueType": "number"
|
|
10460
|
+
},
|
|
10461
|
+
{
|
|
10462
|
+
"path": "sub.height",
|
|
10463
|
+
"valueType": "number"
|
|
10464
|
+
},
|
|
10465
|
+
{
|
|
10466
|
+
"path": "sub.codec",
|
|
10467
|
+
"valueType": "enum",
|
|
10468
|
+
"enumValues": ["h264", "h265"]
|
|
10469
|
+
},
|
|
10470
|
+
{
|
|
10471
|
+
"path": "sub.framerate",
|
|
10472
|
+
"valueType": "number"
|
|
10473
|
+
},
|
|
10474
|
+
{
|
|
10475
|
+
"path": "sub.bitrate",
|
|
10476
|
+
"valueType": "number"
|
|
10477
|
+
},
|
|
10478
|
+
{
|
|
10479
|
+
"path": "sub.bitrateMode",
|
|
10480
|
+
"valueType": "enum",
|
|
10481
|
+
"enumValues": ["vbr", "cbr"]
|
|
10482
|
+
},
|
|
10483
|
+
{
|
|
10484
|
+
"path": "sub.encoderProfile",
|
|
10485
|
+
"valueType": "enum",
|
|
10486
|
+
"enumValues": [
|
|
10487
|
+
"high",
|
|
10488
|
+
"main",
|
|
10489
|
+
"baseline"
|
|
10490
|
+
]
|
|
10491
|
+
},
|
|
10492
|
+
{
|
|
10493
|
+
"path": "sub.gop",
|
|
10494
|
+
"valueType": "number"
|
|
10495
|
+
},
|
|
10496
|
+
{
|
|
10497
|
+
"path": "sub.audio",
|
|
10498
|
+
"valueType": "boolean"
|
|
10499
|
+
},
|
|
10500
|
+
{
|
|
10501
|
+
"path": "ext.width",
|
|
10502
|
+
"valueType": "number"
|
|
10503
|
+
},
|
|
10504
|
+
{
|
|
10505
|
+
"path": "ext.height",
|
|
10506
|
+
"valueType": "number"
|
|
10507
|
+
},
|
|
10508
|
+
{
|
|
10509
|
+
"path": "ext.codec",
|
|
10510
|
+
"valueType": "enum",
|
|
10511
|
+
"enumValues": ["h264", "h265"]
|
|
10512
|
+
},
|
|
10513
|
+
{
|
|
10514
|
+
"path": "ext.framerate",
|
|
10515
|
+
"valueType": "number"
|
|
10516
|
+
},
|
|
10517
|
+
{
|
|
10518
|
+
"path": "ext.bitrate",
|
|
10519
|
+
"valueType": "number"
|
|
10520
|
+
},
|
|
10521
|
+
{
|
|
10522
|
+
"path": "ext.bitrateMode",
|
|
10523
|
+
"valueType": "enum",
|
|
10524
|
+
"enumValues": ["vbr", "cbr"]
|
|
10525
|
+
},
|
|
10526
|
+
{
|
|
10527
|
+
"path": "ext.encoderProfile",
|
|
10528
|
+
"valueType": "enum",
|
|
10529
|
+
"enumValues": [
|
|
10530
|
+
"high",
|
|
10531
|
+
"main",
|
|
10532
|
+
"baseline"
|
|
10533
|
+
]
|
|
10534
|
+
},
|
|
10535
|
+
{
|
|
10536
|
+
"path": "ext.gop",
|
|
10537
|
+
"valueType": "number"
|
|
10538
|
+
},
|
|
10539
|
+
{
|
|
10540
|
+
"path": "ext.audio",
|
|
10541
|
+
"valueType": "boolean"
|
|
10542
|
+
}
|
|
10543
|
+
],
|
|
10544
|
+
"switch": [{
|
|
10545
|
+
"path": "on",
|
|
10546
|
+
"valueType": "boolean"
|
|
10547
|
+
}],
|
|
10548
|
+
"tamper": [{
|
|
10549
|
+
"path": "tampered",
|
|
10550
|
+
"valueType": "boolean"
|
|
10551
|
+
}],
|
|
10552
|
+
"temperature-sensor": [
|
|
10553
|
+
{
|
|
10554
|
+
"path": "celsius",
|
|
10555
|
+
"valueType": "number"
|
|
10556
|
+
},
|
|
10557
|
+
{
|
|
10558
|
+
"path": "unit",
|
|
10559
|
+
"valueType": "string"
|
|
10560
|
+
},
|
|
10561
|
+
{
|
|
10562
|
+
"path": "precision",
|
|
10563
|
+
"valueType": "number"
|
|
10564
|
+
}
|
|
10565
|
+
],
|
|
10566
|
+
"update": [
|
|
10567
|
+
{
|
|
10568
|
+
"path": "currentVersion",
|
|
10569
|
+
"valueType": "string"
|
|
10570
|
+
},
|
|
10571
|
+
{
|
|
10572
|
+
"path": "availableVersion",
|
|
10573
|
+
"valueType": "string"
|
|
10574
|
+
},
|
|
10575
|
+
{
|
|
10576
|
+
"path": "updatable",
|
|
10577
|
+
"valueType": "boolean"
|
|
10578
|
+
},
|
|
10579
|
+
{
|
|
10580
|
+
"path": "state",
|
|
10581
|
+
"valueType": "string"
|
|
10582
|
+
},
|
|
10583
|
+
{
|
|
10584
|
+
"path": "inProgress",
|
|
10585
|
+
"valueType": "boolean"
|
|
10586
|
+
}
|
|
10587
|
+
],
|
|
10588
|
+
"vacuum-control": [
|
|
10589
|
+
{
|
|
10590
|
+
"path": "state",
|
|
10591
|
+
"valueType": "enum",
|
|
10592
|
+
"enumValues": [
|
|
10593
|
+
"idle",
|
|
10594
|
+
"cleaning",
|
|
10595
|
+
"paused",
|
|
10596
|
+
"returning",
|
|
10597
|
+
"docked",
|
|
10598
|
+
"drying",
|
|
10599
|
+
"error"
|
|
10600
|
+
]
|
|
10601
|
+
},
|
|
10602
|
+
{
|
|
10603
|
+
"path": "batteryLevel",
|
|
10604
|
+
"valueType": "number"
|
|
10605
|
+
},
|
|
10606
|
+
{
|
|
10607
|
+
"path": "fanSpeed",
|
|
10608
|
+
"valueType": "string"
|
|
10609
|
+
},
|
|
10610
|
+
{
|
|
10611
|
+
"path": "progressPercent",
|
|
10612
|
+
"valueType": "number"
|
|
10613
|
+
},
|
|
10614
|
+
{
|
|
10615
|
+
"path": "errorCode",
|
|
10616
|
+
"valueType": "number"
|
|
10617
|
+
},
|
|
10618
|
+
{
|
|
10619
|
+
"path": "errorLabel",
|
|
10620
|
+
"valueType": "string"
|
|
10621
|
+
}
|
|
10622
|
+
],
|
|
10623
|
+
"valve": [{
|
|
10624
|
+
"path": "state",
|
|
10625
|
+
"valueType": "enum",
|
|
10626
|
+
"enumValues": [
|
|
10627
|
+
"open",
|
|
10628
|
+
"opening",
|
|
10629
|
+
"closing",
|
|
10630
|
+
"closed",
|
|
10631
|
+
"stopped"
|
|
10632
|
+
]
|
|
10633
|
+
}, {
|
|
10634
|
+
"path": "position",
|
|
10635
|
+
"valueType": "number"
|
|
10636
|
+
}],
|
|
10637
|
+
"vibration": [{
|
|
10638
|
+
"path": "detected",
|
|
10639
|
+
"valueType": "boolean"
|
|
10640
|
+
}],
|
|
10641
|
+
"water-heater": [
|
|
10642
|
+
{
|
|
10643
|
+
"path": "currentTemp",
|
|
10644
|
+
"valueType": "number"
|
|
10645
|
+
},
|
|
10646
|
+
{
|
|
10647
|
+
"path": "targetTemp",
|
|
10648
|
+
"valueType": "number"
|
|
10649
|
+
},
|
|
10650
|
+
{
|
|
10651
|
+
"path": "operationMode",
|
|
10652
|
+
"valueType": "string"
|
|
10653
|
+
},
|
|
10654
|
+
{
|
|
10655
|
+
"path": "away",
|
|
10656
|
+
"valueType": "boolean"
|
|
10657
|
+
},
|
|
10658
|
+
{
|
|
10659
|
+
"path": "minTemp",
|
|
10660
|
+
"valueType": "number"
|
|
10661
|
+
},
|
|
10662
|
+
{
|
|
10663
|
+
"path": "maxTemp",
|
|
10664
|
+
"valueType": "number"
|
|
10665
|
+
}
|
|
10666
|
+
],
|
|
10667
|
+
"weather": [
|
|
10668
|
+
{
|
|
10669
|
+
"path": "condition",
|
|
10670
|
+
"valueType": "string"
|
|
10671
|
+
},
|
|
10672
|
+
{
|
|
10673
|
+
"path": "temperature",
|
|
10674
|
+
"valueType": "number"
|
|
10675
|
+
},
|
|
10676
|
+
{
|
|
10677
|
+
"path": "temperatureUnit",
|
|
10678
|
+
"valueType": "string"
|
|
10679
|
+
},
|
|
10680
|
+
{
|
|
10681
|
+
"path": "humidity",
|
|
10682
|
+
"valueType": "number"
|
|
10683
|
+
},
|
|
10684
|
+
{
|
|
10685
|
+
"path": "pressure",
|
|
10686
|
+
"valueType": "number"
|
|
10687
|
+
},
|
|
10688
|
+
{
|
|
10689
|
+
"path": "pressureUnit",
|
|
10690
|
+
"valueType": "string"
|
|
10691
|
+
},
|
|
10692
|
+
{
|
|
10693
|
+
"path": "windSpeed",
|
|
10694
|
+
"valueType": "number"
|
|
10695
|
+
},
|
|
10696
|
+
{
|
|
10697
|
+
"path": "windSpeedUnit",
|
|
10698
|
+
"valueType": "string"
|
|
10699
|
+
},
|
|
10700
|
+
{
|
|
10701
|
+
"path": "windBearing",
|
|
10702
|
+
"valueType": "number"
|
|
10703
|
+
}
|
|
10704
|
+
],
|
|
10705
|
+
"zone-analytics": [
|
|
10706
|
+
{
|
|
10707
|
+
"path": "ts",
|
|
10708
|
+
"valueType": "number"
|
|
10709
|
+
},
|
|
10710
|
+
{
|
|
10711
|
+
"path": "frameWidth",
|
|
10712
|
+
"valueType": "number"
|
|
10713
|
+
},
|
|
10714
|
+
{
|
|
10715
|
+
"path": "frameHeight",
|
|
10716
|
+
"valueType": "number"
|
|
10717
|
+
},
|
|
10718
|
+
{
|
|
10719
|
+
"path": "frame.totalObjects",
|
|
10720
|
+
"valueType": "number"
|
|
10721
|
+
},
|
|
10722
|
+
{
|
|
10723
|
+
"path": "frame.standingObjects",
|
|
10724
|
+
"valueType": "number"
|
|
10725
|
+
},
|
|
10726
|
+
{
|
|
10727
|
+
"path": "frame.transientObjects",
|
|
10728
|
+
"valueType": "number"
|
|
10729
|
+
},
|
|
10730
|
+
{
|
|
10731
|
+
"path": "unzoned.totalObjects",
|
|
10732
|
+
"valueType": "number"
|
|
10733
|
+
},
|
|
10734
|
+
{
|
|
10735
|
+
"path": "unzoned.standingObjects",
|
|
10736
|
+
"valueType": "number"
|
|
10737
|
+
},
|
|
10738
|
+
{
|
|
10739
|
+
"path": "unzoned.transientObjects",
|
|
10740
|
+
"valueType": "number"
|
|
10741
|
+
}
|
|
10742
|
+
]
|
|
10743
|
+
});
|
|
8770
10744
|
object({
|
|
8771
10745
|
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
8772
10746
|
params: record(string(), union([string(), number()])).optional()
|
|
@@ -9115,7 +11089,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
9115
11089
|
return DeviceRole;
|
|
9116
11090
|
}({});
|
|
9117
11091
|
//#endregion
|
|
9118
|
-
//#region ../types/dist/composition-
|
|
11092
|
+
//#region ../types/dist/composition-kEl9mevu.mjs
|
|
9119
11093
|
/**
|
|
9120
11094
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
9121
11095
|
*
|
|
@@ -12348,7 +14322,7 @@ var LogChannelDescriptorSchema = object({
|
|
|
12348
14322
|
* `true` is a PROMISE with two halves, and both must hold: the gate is
|
|
12349
14323
|
* consulted with the numeric device id, AND every line the channel admits
|
|
12350
14324
|
* carries `tags: { deviceId }` with that same numeric id. The second half is
|
|
12351
|
-
* what makes `| json | deviceId="
|
|
14325
|
+
* what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
|
|
12352
14326
|
* keeps `deviceId` out of the stream labels for cardinality, so the tag in
|
|
12353
14327
|
* the body is the only way to filter.
|
|
12354
14328
|
*
|
|
@@ -12536,7 +14510,7 @@ var ModelVariantGroupSchema = object({
|
|
|
12536
14510
|
precision: _enum(["fp32", "int8"]).optional(),
|
|
12537
14511
|
/**
|
|
12538
14512
|
* Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
|
|
12539
|
-
* an alternate training of the same family (
|
|
14513
|
+
* an alternate training of the same family (plugin catalog `relu_test`); chip
|
|
12540
14514
|
* label is "Test".
|
|
12541
14515
|
*/
|
|
12542
14516
|
optimization: _enum(["standard", "test"]).optional(),
|
|
@@ -12788,8 +14762,8 @@ var ModelCatalogEntrySchema = object({
|
|
|
12788
14762
|
provider: ModelProviderIdSchema.optional(),
|
|
12789
14763
|
/**
|
|
12790
14764
|
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
12791
|
-
* applies (
|
|
12792
|
-
* labels already ARE the CamStack macros (
|
|
14765
|
+
* applies (plus catalog / COCO public catalog). Set on a custom model whose raw
|
|
14766
|
+
* labels already ARE the CamStack macros (plugin catalog identity map).
|
|
12793
14767
|
*/
|
|
12794
14768
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
12795
14769
|
/**
|
|
@@ -15775,7 +17749,7 @@ method(object({
|
|
|
15775
17749
|
* `1` is real time and is the ONLY value that allows the copy branch —
|
|
15776
17750
|
* anything else forces `libx264` over the window. That was priced
|
|
15777
17751
|
* before it was chosen: a per-event burst measured at 0.23 s and 254 KB
|
|
15778
|
-
* on a real
|
|
17752
|
+
* on a real 101 720p cut, against 922 KB for the copy it replaces. A
|
|
15779
17753
|
* re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
|
|
15780
17754
|
* once the decode is forced the width stops being free.
|
|
15781
17755
|
*/
|
|
@@ -16195,6 +18169,7 @@ var CompositionRunStatusSchema = _enum([
|
|
|
16195
18169
|
"starting",
|
|
16196
18170
|
"running",
|
|
16197
18171
|
"degraded",
|
|
18172
|
+
"incomplete",
|
|
16198
18173
|
"failed"
|
|
16199
18174
|
]);
|
|
16200
18175
|
var CompositionFieldStateKindSchema = _enum([
|
|
@@ -16244,6 +18219,13 @@ var ComposerUnreadableBlockSchema = object({
|
|
|
16244
18219
|
/** The parse error, in the operator's words. */
|
|
16245
18220
|
error: string()
|
|
16246
18221
|
});
|
|
18222
|
+
/** A confirmed release the hub did not accept. `deviceId` is the claim's device. */
|
|
18223
|
+
var UnreleasedClaimSchema = object({
|
|
18224
|
+
deviceId: number().int(),
|
|
18225
|
+
capName: string(),
|
|
18226
|
+
owner: string(),
|
|
18227
|
+
error: string()
|
|
18228
|
+
});
|
|
16247
18229
|
method(object({
|
|
16248
18230
|
/** The shared Blocks integration; null until `core-blocks` has reconciled it. */
|
|
16249
18231
|
integrationId: string().nullable(),
|
|
@@ -16253,7 +18235,13 @@ method(object({
|
|
|
16253
18235
|
/** Operator restarts: rebuild these runtimes and re-resolve their sources. Stores nothing (D62). */
|
|
16254
18236
|
restartBlockIds: array(string()),
|
|
16255
18237
|
/** Composition rows that exist but do not parse: held, never withdrawn, reported failed. */
|
|
16256
|
-
unreadableBlocks: array(ComposerUnreadableBlockSchema)
|
|
18238
|
+
unreadableBlocks: array(ComposerUnreadableBlockSchema),
|
|
18239
|
+
/**
|
|
18240
|
+
* Operator-confirmed deletions. Their claims are released on this apply,
|
|
18241
|
+
* before any replacement block claims. A block that merely vanished from the
|
|
18242
|
+
* snapshot is not listed here and still waits for two applies (D49).
|
|
18243
|
+
*/
|
|
18244
|
+
retiredBlockIds: array(string()).optional()
|
|
16257
18245
|
}), object({
|
|
16258
18246
|
blocks: array(object({
|
|
16259
18247
|
blockId: string(),
|
|
@@ -16265,7 +18253,13 @@ method(object({
|
|
|
16265
18253
|
* integration unknown, its own rows unread or read empty once). An empty
|
|
16266
18254
|
* apply the caller owes is paid off only by one the composer acted on (D49).
|
|
16267
18255
|
*/
|
|
16268
|
-
acted: boolean()
|
|
18256
|
+
acted: boolean(),
|
|
18257
|
+
/**
|
|
18258
|
+
* Confirmed releases this apply tried and the hub did not accept. Empty when
|
|
18259
|
+
* every one landed (or there was nothing to hand back). Absent on a result
|
|
18260
|
+
* that never got that far.
|
|
18261
|
+
*/
|
|
18262
|
+
unreleasedClaims: array(UnreleasedClaimSchema).optional()
|
|
16269
18263
|
}), {
|
|
16270
18264
|
kind: "mutation",
|
|
16271
18265
|
auth: "admin"
|
|
@@ -16389,6 +18383,7 @@ var CoreBlockStatusSchema = _enum([
|
|
|
16389
18383
|
"starting",
|
|
16390
18384
|
"running",
|
|
16391
18385
|
"degraded",
|
|
18386
|
+
"incomplete",
|
|
16392
18387
|
"failed"
|
|
16393
18388
|
]);
|
|
16394
18389
|
/** path → TypeScript source for a multi-file block. */
|
|
@@ -38312,7 +40307,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
|
|
|
38312
40307
|
* `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
|
|
38313
40308
|
* operator's casing. The registry matches labels trimmed + case-insensitively
|
|
38314
40309
|
* everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
|
|
38315
|
-
* case-only rename (`
|
|
40310
|
+
* case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
|
|
38316
40311
|
* map keyed on the displayed casing would orphan its entry on exactly that
|
|
38317
40312
|
* edit. Consumers join by keying their own label through `locationIconKey`.
|
|
38318
40313
|
*/
|
|
@@ -38337,7 +40332,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
38337
40332
|
/**
|
|
38338
40333
|
* A SITE ZONE — a named part of the property that several locations belong to.
|
|
38339
40334
|
*
|
|
38340
|
-
* "
|
|
40335
|
+
* "Night zone" holds every bedroom; "Zona giorno" the living room and the
|
|
38341
40336
|
* kitchen. A camera belongs to exactly one location, and a location to at most
|
|
38342
40337
|
* one zone, so a camera's zone is derived and never stored on the device: the
|
|
38343
40338
|
* whole point of this entity is that grouping rooms touches no device row.
|
|
@@ -38366,7 +40361,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
38366
40361
|
* the locations inside it.
|
|
38367
40362
|
*
|
|
38368
40363
|
* The LABEL is carried alongside the key because the key is lossy on purpose —
|
|
38369
|
-
* a surface must show "
|
|
40364
|
+
* a surface must show "Night zone", not "night zone". Locations are carried
|
|
38370
40365
|
* here, rather than left to a second call, because every consumer wants both
|
|
38371
40366
|
* at once and a viewer that asked twice could render a zone whose membership
|
|
38372
40367
|
* it has not fetched yet.
|
|
@@ -40479,8 +42474,8 @@ var LoadContributionSchema = object({
|
|
|
40479
42474
|
"unattributable"
|
|
40480
42475
|
]),
|
|
40481
42476
|
/**
|
|
40482
|
-
* What ONE entry is, in the contributor's own words — `
|
|
40483
|
-
* `
|
|
42477
|
+
* What ONE entry is, in the contributor's own words — `101/high`,
|
|
42478
|
+
* `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
|
|
40484
42479
|
* family and inventing a common one would lose the only information that
|
|
40485
42480
|
* makes two entries for the same camera distinguishable.
|
|
40486
42481
|
*/
|
|
@@ -42128,6 +44123,381 @@ var _macroLookup = /* @__PURE__ */ new Map();
|
|
|
42128
44123
|
for (const [k, v] of Object.entries(YAMNET_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
42129
44124
|
for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
42130
44125
|
/**
|
|
44126
|
+
* Palette entry ids (D939). Audio is the one gradient; `audio-*` leaves are
|
|
44127
|
+
* not entries. `heatmapScrub` is a mark, not an event kind.
|
|
44128
|
+
*/
|
|
44129
|
+
var PALETTE_ENTRY_IDS = [
|
|
44130
|
+
"motion",
|
|
44131
|
+
"audio",
|
|
44132
|
+
"recording",
|
|
44133
|
+
"live",
|
|
44134
|
+
"heatmapScrub",
|
|
44135
|
+
"person",
|
|
44136
|
+
"vehicle",
|
|
44137
|
+
"animal",
|
|
44138
|
+
"package",
|
|
44139
|
+
"sensor",
|
|
44140
|
+
"control",
|
|
44141
|
+
"face",
|
|
44142
|
+
"plate",
|
|
44143
|
+
"car",
|
|
44144
|
+
"truck",
|
|
44145
|
+
"bus",
|
|
44146
|
+
"motorcycle",
|
|
44147
|
+
"bicycle",
|
|
44148
|
+
"airplane",
|
|
44149
|
+
"boat",
|
|
44150
|
+
"train",
|
|
44151
|
+
"bird",
|
|
44152
|
+
"dog",
|
|
44153
|
+
"cat",
|
|
44154
|
+
"horse",
|
|
44155
|
+
"sheep",
|
|
44156
|
+
"cow",
|
|
44157
|
+
"elephant",
|
|
44158
|
+
"bear",
|
|
44159
|
+
"zebra",
|
|
44160
|
+
"giraffe",
|
|
44161
|
+
"package-delivered",
|
|
44162
|
+
"package-picked-up",
|
|
44163
|
+
"suitcase",
|
|
44164
|
+
"backpack",
|
|
44165
|
+
"handbag",
|
|
44166
|
+
"contact",
|
|
44167
|
+
"motion-sensor",
|
|
44168
|
+
"smoke",
|
|
44169
|
+
"flood",
|
|
44170
|
+
"gas",
|
|
44171
|
+
"carbon-monoxide",
|
|
44172
|
+
"vibration",
|
|
44173
|
+
"tamper",
|
|
44174
|
+
"presence",
|
|
44175
|
+
"enum-sensor",
|
|
44176
|
+
"device-event",
|
|
44177
|
+
"lock",
|
|
44178
|
+
"cover",
|
|
44179
|
+
"switch",
|
|
44180
|
+
"siren",
|
|
44181
|
+
"button",
|
|
44182
|
+
"doorbell"
|
|
44183
|
+
];
|
|
44184
|
+
var AUDIO_ENTRY_ID = "audio";
|
|
44185
|
+
/** Six rungs, quiet → loud. The opaque end is the entry's hex. */
|
|
44186
|
+
var AUDIO_GRADIENT_ALPHAS = [
|
|
44187
|
+
.3,
|
|
44188
|
+
.42,
|
|
44189
|
+
.55,
|
|
44190
|
+
.7,
|
|
44191
|
+
.85,
|
|
44192
|
+
1
|
|
44193
|
+
];
|
|
44194
|
+
var PALETTE_PRESET_IDS = [
|
|
44195
|
+
"camstack",
|
|
44196
|
+
"high-contrast",
|
|
44197
|
+
"okabe-ito"
|
|
44198
|
+
];
|
|
44199
|
+
/** Frozen palette tables (D939). The spec refuses a table that breaks the rule. */
|
|
44200
|
+
var CAMSTACK_HEX = {
|
|
44201
|
+
motion: "#d946ef",
|
|
44202
|
+
audio: "#059eb8",
|
|
44203
|
+
recording: "#ef4444",
|
|
44204
|
+
live: "#8d7a00",
|
|
44205
|
+
heatmapScrub: "#4b32ff",
|
|
44206
|
+
person: "#11a64c",
|
|
44207
|
+
vehicle: "#3b82f6",
|
|
44208
|
+
animal: "#ea6a09",
|
|
44209
|
+
package: "#924667",
|
|
44210
|
+
sensor: "#624bbc",
|
|
44211
|
+
control: "#944d24",
|
|
44212
|
+
face: "#ed4f8d",
|
|
44213
|
+
plate: "#4b7027",
|
|
44214
|
+
car: "#9684cf",
|
|
44215
|
+
truck: "#0f9b89",
|
|
44216
|
+
bus: "#a734a9",
|
|
44217
|
+
motorcycle: "#c1133a",
|
|
44218
|
+
bicycle: "#0e6a9b",
|
|
44219
|
+
airplane: "#7c9928",
|
|
44220
|
+
boat: "#b17933",
|
|
44221
|
+
train: "#ad6ca3",
|
|
44222
|
+
bird: "#0f7c55",
|
|
44223
|
+
dog: "#c82700",
|
|
44224
|
+
cat: "#7268f2",
|
|
44225
|
+
horse: "#cb795e",
|
|
44226
|
+
sheep: "#b8636b",
|
|
44227
|
+
cow: "#cb2969",
|
|
44228
|
+
elephant: "#1158d2",
|
|
44229
|
+
bear: "#8d5e00",
|
|
44230
|
+
zebra: "#0097d6",
|
|
44231
|
+
giraffe: "#8f61bb",
|
|
44232
|
+
"package-delivered": "#cd3f9b",
|
|
44233
|
+
"package-picked-up": "#388a08",
|
|
44234
|
+
suitcase: "#666800",
|
|
44235
|
+
backpack: "#ec5022",
|
|
44236
|
+
handbag: "#a76ef8",
|
|
44237
|
+
contact: "#ab5a49",
|
|
44238
|
+
"motion-sensor": "#b95d1a",
|
|
44239
|
+
smoke: "#dd3858",
|
|
44240
|
+
flood: "#b31e7d",
|
|
44241
|
+
gas: "#5b70b5",
|
|
44242
|
+
"carbon-monoxide": "#7b4e8e",
|
|
44243
|
+
vibration: "#e65bba",
|
|
44244
|
+
tamper: "#98464b",
|
|
44245
|
+
presence: "#3a9468",
|
|
44246
|
+
"enum-sensor": "#7885f8",
|
|
44247
|
+
"device-event": "#8c43c8",
|
|
44248
|
+
lock: "#649653",
|
|
44249
|
+
cover: "#c67597",
|
|
44250
|
+
switch: "#7a812a",
|
|
44251
|
+
siren: "#ac5d7f",
|
|
44252
|
+
button: "#b276cd",
|
|
44253
|
+
doorbell: "#0087ab"
|
|
44254
|
+
};
|
|
44255
|
+
var CAMSTACK_FALLBACK = [
|
|
44256
|
+
"#b34dc7",
|
|
44257
|
+
"#1d7d34",
|
|
44258
|
+
"#db6b6c",
|
|
44259
|
+
"#a43d29",
|
|
44260
|
+
"#0e6ee6",
|
|
44261
|
+
"#29a10b",
|
|
44262
|
+
"#a98731",
|
|
44263
|
+
"#0181c6"
|
|
44264
|
+
];
|
|
44265
|
+
var HIGH_CONTRAST_HEX = {
|
|
44266
|
+
motion: "#964360",
|
|
44267
|
+
audio: "#23a132",
|
|
44268
|
+
recording: "#2494ca",
|
|
44269
|
+
live: "#bd7e2b",
|
|
44270
|
+
heatmapScrub: "#ad6eea",
|
|
44271
|
+
person: "#62611e",
|
|
44272
|
+
vehicle: "#f4534c",
|
|
44273
|
+
animal: "#1556cd",
|
|
44274
|
+
package: "#9c4415",
|
|
44275
|
+
sensor: "#066c48",
|
|
44276
|
+
control: "#f2479f",
|
|
44277
|
+
face: "#139d8a",
|
|
44278
|
+
plate: "#909024",
|
|
44279
|
+
car: "#8e35ab",
|
|
44280
|
+
truck: "#bd0b2b",
|
|
44281
|
+
bus: "#7a88ca",
|
|
44282
|
+
motorcycle: "#e26725",
|
|
44283
|
+
bicycle: "#a6679b",
|
|
44284
|
+
airplane: "#7c5720",
|
|
44285
|
+
boat: "#467a1b",
|
|
44286
|
+
train: "#6f65a4",
|
|
44287
|
+
bird: "#cb717f",
|
|
44288
|
+
dog: "#c62490",
|
|
44289
|
+
cat: "#b36850",
|
|
44290
|
+
horse: "#1872ac",
|
|
44291
|
+
sheep: "#927939",
|
|
44292
|
+
cow: "#428a5c",
|
|
44293
|
+
elephant: "#d41160",
|
|
44294
|
+
bear: "#799453",
|
|
44295
|
+
zebra: "#a85455",
|
|
44296
|
+
giraffe: "#746be8",
|
|
44297
|
+
"package-delivered": "#824a80",
|
|
44298
|
+
"package-picked-up": "#614ac1",
|
|
44299
|
+
suitcase: "#2f77f3",
|
|
44300
|
+
backpack: "#fa476d",
|
|
44301
|
+
handbag: "#c14cbe",
|
|
44302
|
+
contact: "#c83921",
|
|
44303
|
+
"motion-sensor": "#a07ebd",
|
|
44304
|
+
smoke: "#a25b13",
|
|
44305
|
+
flood: "#526bab",
|
|
44306
|
+
gas: "#924938",
|
|
44307
|
+
"carbon-monoxide": "#bb7e53",
|
|
44308
|
+
vibration: "#b66182",
|
|
44309
|
+
tamper: "#3c6931",
|
|
44310
|
+
presence: "#6c851d",
|
|
44311
|
+
"enum-sensor": "#ad2d48",
|
|
44312
|
+
"device-event": "#5e9b04",
|
|
44313
|
+
lock: "#00a062",
|
|
44314
|
+
cover: "#ad8624",
|
|
44315
|
+
switch: "#d05259",
|
|
44316
|
+
siren: "#cd67b3",
|
|
44317
|
+
button: "#c9746a",
|
|
44318
|
+
doorbell: "#338eeb"
|
|
44319
|
+
};
|
|
44320
|
+
var HIGH_CONTRAST_FALLBACK = [
|
|
44321
|
+
"#817f3b",
|
|
44322
|
+
"#a0733e",
|
|
44323
|
+
"#8658b2",
|
|
44324
|
+
"#956301",
|
|
44325
|
+
"#bc652d",
|
|
44326
|
+
"#647331",
|
|
44327
|
+
"#a14c9e",
|
|
44328
|
+
"#d14e71"
|
|
44329
|
+
];
|
|
44330
|
+
var OKABE_ITO_HEX = {
|
|
44331
|
+
motion: "#b88128",
|
|
44332
|
+
audio: "#1096c8",
|
|
44333
|
+
recording: "#009e73",
|
|
44334
|
+
live: "#9c8c22",
|
|
44335
|
+
heatmapScrub: "#0072b2",
|
|
44336
|
+
person: "#d55e00",
|
|
44337
|
+
vehicle: "#c0739f",
|
|
44338
|
+
animal: "#226d18",
|
|
44339
|
+
package: "#91446c",
|
|
44340
|
+
sensor: "#217b56",
|
|
44341
|
+
control: "#648647",
|
|
44342
|
+
face: "#c22998",
|
|
44343
|
+
plate: "#fa4575",
|
|
44344
|
+
car: "#956301",
|
|
44345
|
+
truck: "#2f77f3",
|
|
44346
|
+
bus: "#7a4e86",
|
|
44347
|
+
motorcycle: "#f54597",
|
|
44348
|
+
bicycle: "#bb3e75",
|
|
44349
|
+
airplane: "#e054c0",
|
|
44350
|
+
boat: "#457942",
|
|
44351
|
+
train: "#867afa",
|
|
44352
|
+
bird: "#88914c",
|
|
44353
|
+
dog: "#1556cd",
|
|
44354
|
+
cat: "#71702c",
|
|
44355
|
+
horse: "#9b4fa4",
|
|
44356
|
+
sheep: "#c0559d",
|
|
44357
|
+
cow: "#d14f65",
|
|
44358
|
+
elephant: "#98470f",
|
|
44359
|
+
bear: "#595896",
|
|
44360
|
+
zebra: "#96790e",
|
|
44361
|
+
giraffe: "#cb717b",
|
|
44362
|
+
"package-delivered": "#139d8a",
|
|
44363
|
+
"package-picked-up": "#906ead",
|
|
44364
|
+
suitcase: "#d02939",
|
|
44365
|
+
backpack: "#d41160",
|
|
44366
|
+
handbag: "#f64f54",
|
|
44367
|
+
contact: "#7258d2",
|
|
44368
|
+
"motion-sensor": "#b66182",
|
|
44369
|
+
smoke: "#627abb",
|
|
44370
|
+
flood: "#b86ae4",
|
|
44371
|
+
gas: "#a95261",
|
|
44372
|
+
"carbon-monoxide": "#c65d3c",
|
|
44373
|
+
vibration: "#7a40b7",
|
|
44374
|
+
tamper: "#914b34",
|
|
44375
|
+
presence: "#9481c3",
|
|
44376
|
+
"enum-sensor": "#ac6d47",
|
|
44377
|
+
"device-event": "#7b6fce",
|
|
44378
|
+
lock: "#c67662",
|
|
44379
|
+
cover: "#a6564d",
|
|
44380
|
+
switch: "#ad2c4e",
|
|
44381
|
+
siren: "#348e08",
|
|
44382
|
+
button: "#d27303",
|
|
44383
|
+
doorbell: "#55770f"
|
|
44384
|
+
};
|
|
44385
|
+
var OKABE_ITO_FALLBACK = [
|
|
44386
|
+
"#9a3784",
|
|
44387
|
+
"#a7392c",
|
|
44388
|
+
"#409d50",
|
|
44389
|
+
"#6987e7",
|
|
44390
|
+
"#ee5b3d",
|
|
44391
|
+
"#c0430d",
|
|
44392
|
+
"#af79b3",
|
|
44393
|
+
"#4b6628"
|
|
44394
|
+
];
|
|
44395
|
+
/**
|
|
44396
|
+
* The display palette (D939). One table of colours, three presets, one
|
|
44397
|
+
* validator. Taxonomy colours and every consumer read this — there is no
|
|
44398
|
+
* second hex table.
|
|
44399
|
+
*/
|
|
44400
|
+
var paletteHexSchema = string().regex(/^#[0-9a-f]{6}$/);
|
|
44401
|
+
var paletteSwatchSchema = discriminatedUnion("form", [object({
|
|
44402
|
+
form: literal("solid"),
|
|
44403
|
+
hex: paletteHexSchema
|
|
44404
|
+
}), object({
|
|
44405
|
+
form: literal("gradient"),
|
|
44406
|
+
hex: paletteHexSchema,
|
|
44407
|
+
alphas: array(number().gt(0).lte(1)).length(AUDIO_GRADIENT_ALPHAS.length)
|
|
44408
|
+
})]);
|
|
44409
|
+
var paletteReadySchema = object({
|
|
44410
|
+
status: literal("ready"),
|
|
44411
|
+
presetId: _enum(PALETTE_PRESET_IDS),
|
|
44412
|
+
customized: boolean(),
|
|
44413
|
+
source: _enum(["stored", "unconfigured"]),
|
|
44414
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
44415
|
+
fallbacks: array(paletteHexSchema).length(8)
|
|
44416
|
+
});
|
|
44417
|
+
var paletteResultSchema = discriminatedUnion("status", [paletteReadySchema, object({
|
|
44418
|
+
status: literal("unknown"),
|
|
44419
|
+
reason: string()
|
|
44420
|
+
})]);
|
|
44421
|
+
var setPaletteInputSchema = union([object({ presetId: string() }), object({
|
|
44422
|
+
presetId: string(),
|
|
44423
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
44424
|
+
})]);
|
|
44425
|
+
object({
|
|
44426
|
+
presetId: string(),
|
|
44427
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
44428
|
+
});
|
|
44429
|
+
function solid(hex) {
|
|
44430
|
+
return {
|
|
44431
|
+
form: "solid",
|
|
44432
|
+
hex
|
|
44433
|
+
};
|
|
44434
|
+
}
|
|
44435
|
+
function audioGradient(hex) {
|
|
44436
|
+
return {
|
|
44437
|
+
form: "gradient",
|
|
44438
|
+
hex,
|
|
44439
|
+
alphas: [...AUDIO_GRADIENT_ALPHAS]
|
|
44440
|
+
};
|
|
44441
|
+
}
|
|
44442
|
+
function swatchesFrom(hexes) {
|
|
44443
|
+
const out = {};
|
|
44444
|
+
for (const id of PALETTE_ENTRY_IDS) {
|
|
44445
|
+
const hex = hexes[id];
|
|
44446
|
+
if (hex === void 0) throw new Error(`palette table missing ${id}`);
|
|
44447
|
+
out[id] = id === "audio" ? audioGradient(hex) : solid(hex);
|
|
44448
|
+
}
|
|
44449
|
+
return out;
|
|
44450
|
+
}
|
|
44451
|
+
function preset(id, name, hexes, fallbacks) {
|
|
44452
|
+
return {
|
|
44453
|
+
id,
|
|
44454
|
+
name,
|
|
44455
|
+
swatches: swatchesFrom(hexes),
|
|
44456
|
+
fallbacks
|
|
44457
|
+
};
|
|
44458
|
+
}
|
|
44459
|
+
var DISPLAY_PRESETS = [
|
|
44460
|
+
preset("camstack", "CamStack", CAMSTACK_HEX, CAMSTACK_FALLBACK),
|
|
44461
|
+
preset("high-contrast", "High contrast", HIGH_CONTRAST_HEX, HIGH_CONTRAST_FALLBACK),
|
|
44462
|
+
preset("okabe-ito", "Colour-blind safe", OKABE_ITO_HEX, OKABE_ITO_FALLBACK)
|
|
44463
|
+
];
|
|
44464
|
+
function presetById(id) {
|
|
44465
|
+
return DISPLAY_PRESETS.find((item) => item.id === id);
|
|
44466
|
+
}
|
|
44467
|
+
function bundledCamstack() {
|
|
44468
|
+
const presetRow = presetById("camstack");
|
|
44469
|
+
if (presetRow === void 0) throw new Error("CamStack preset missing");
|
|
44470
|
+
return readyOf(presetRow, "unconfigured", false);
|
|
44471
|
+
}
|
|
44472
|
+
function readyOf(row, source, customized) {
|
|
44473
|
+
return {
|
|
44474
|
+
status: "ready",
|
|
44475
|
+
presetId: row.id,
|
|
44476
|
+
customized,
|
|
44477
|
+
source,
|
|
44478
|
+
swatches: row.swatches,
|
|
44479
|
+
fallbacks: [...row.fallbacks]
|
|
44480
|
+
};
|
|
44481
|
+
}
|
|
44482
|
+
function hashFallback(kind, fallbacks) {
|
|
44483
|
+
let hash = 0;
|
|
44484
|
+
for (let i = 0; i < kind.length; i++) hash = hash * 31 + (kind.codePointAt(i) ?? 0) >>> 0;
|
|
44485
|
+
const hex = fallbacks[hash % fallbacks.length];
|
|
44486
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
44487
|
+
return hex;
|
|
44488
|
+
}
|
|
44489
|
+
/** Colour a kind paints with. Audio leaves share the audio gradient's hex. */
|
|
44490
|
+
function paintHex(swatches, fallbacks, kind) {
|
|
44491
|
+
const key = kind.trim().toLowerCase();
|
|
44492
|
+
if (key.startsWith("audio-")) {
|
|
44493
|
+
const audio = swatches[AUDIO_ENTRY_ID];
|
|
44494
|
+
return audio !== void 0 ? audio.hex : hashFallback(key, fallbacks);
|
|
44495
|
+
}
|
|
44496
|
+
const direct = swatches[key];
|
|
44497
|
+
if (direct !== void 0) return direct.hex;
|
|
44498
|
+
return hashFallback(key, fallbacks);
|
|
44499
|
+
}
|
|
44500
|
+
/**
|
|
42131
44501
|
* Unified event-kind taxonomy — THE single source of truth for
|
|
42132
44502
|
* `kind → { parentKind, category, level, color, iconId, labelKey, label,
|
|
42133
44503
|
* icon }`.
|
|
@@ -42141,109 +44511,88 @@ for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set
|
|
|
42141
44511
|
* - `addon-post-analysis/shared/frame/box-drawer.ts` (DEFAULT_COLOR)
|
|
42142
44512
|
* - the COCO / audio class maps (macro ↔ sub relationships)
|
|
42143
44513
|
*
|
|
42144
|
-
* The DATA (serializable —
|
|
42145
|
-
* `@camstack/types`.
|
|
42146
|
-
*
|
|
42147
|
-
*
|
|
42148
|
-
*
|
|
44514
|
+
* The DATA (serializable — parentKind / iconId / labelKey) lives here in
|
|
44515
|
+
* `@camstack/types`. Colour is NOT a second table: each entry's `color` is
|
|
44516
|
+
* the bundled CamStack display palette (D939). The effective cluster palette
|
|
44517
|
+
* is the `display-palette` capability. The UI-side mapping `iconId → lucide
|
|
44518
|
+
* component` and `labelKey → t()` lives in `@camstack/ui-library`.
|
|
42149
44519
|
*
|
|
42150
44520
|
* Two levels only (v1 YAGNI): macro → sub. `person` is a leaf macro.
|
|
42151
44521
|
*/
|
|
42152
|
-
var
|
|
42153
|
-
|
|
42154
|
-
|
|
42155
|
-
|
|
42156
|
-
|
|
42157
|
-
|
|
42158
|
-
|
|
42159
|
-
|
|
42160
|
-
|
|
42161
|
-
|
|
42162
|
-
};
|
|
42163
|
-
var DETECTION_SUB_COLORS = {
|
|
42164
|
-
car: "#f59e0b",
|
|
42165
|
-
truck: "#d97706",
|
|
42166
|
-
bus: "#b45309",
|
|
42167
|
-
motorcycle: "#eab308",
|
|
42168
|
-
bicycle: "#ca8a04",
|
|
42169
|
-
airplane: "#60a5fa",
|
|
42170
|
-
boat: "#2563eb",
|
|
42171
|
-
train: "#1d4ed8",
|
|
42172
|
-
bird: "#14b8a6",
|
|
42173
|
-
dog: "#84cc16",
|
|
42174
|
-
cat: "#f97316",
|
|
42175
|
-
horse: "#a16207",
|
|
42176
|
-
sheep: "#a3a3a3",
|
|
42177
|
-
cow: "#78716c",
|
|
42178
|
-
elephant: "#6b7280",
|
|
42179
|
-
bear: "#7c2d12",
|
|
42180
|
-
zebra: "#404040",
|
|
42181
|
-
giraffe: "#d4a373"
|
|
42182
|
-
};
|
|
44522
|
+
var BUNDLED_PALETTE = bundledCamstack();
|
|
44523
|
+
function kindColor(kind) {
|
|
44524
|
+
return paintHex(BUNDLED_PALETTE.swatches, BUNDLED_PALETTE.fallbacks, kind);
|
|
44525
|
+
}
|
|
44526
|
+
function firstFallback(fallbacks) {
|
|
44527
|
+
const hex = fallbacks[0];
|
|
44528
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
44529
|
+
return hex;
|
|
44530
|
+
}
|
|
44531
|
+
firstFallback(BUNDLED_PALETTE.fallbacks);
|
|
42183
44532
|
function titleCase(id) {
|
|
42184
44533
|
return id.split(/[-_ ]/).filter((p) => p.length > 0).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
|
|
42185
44534
|
}
|
|
42186
44535
|
var entries = /* @__PURE__ */ new Map();
|
|
42187
|
-
function macro(kind, category,
|
|
44536
|
+
function macro(kind, category, iconId, label) {
|
|
42188
44537
|
entries.set(kind, {
|
|
42189
44538
|
kind,
|
|
42190
44539
|
parentKind: null,
|
|
42191
44540
|
level: "macro",
|
|
42192
44541
|
category,
|
|
42193
|
-
color,
|
|
44542
|
+
color: kindColor(kind),
|
|
42194
44543
|
iconId,
|
|
42195
44544
|
labelKey: `eventKind.${kind}`,
|
|
42196
44545
|
label
|
|
42197
44546
|
});
|
|
42198
44547
|
}
|
|
42199
|
-
function sub(kind, parentKind, category,
|
|
44548
|
+
function sub(kind, parentKind, category, iconId, label) {
|
|
42200
44549
|
entries.set(kind, {
|
|
42201
44550
|
kind,
|
|
42202
44551
|
parentKind,
|
|
42203
44552
|
level: "sub",
|
|
42204
44553
|
category,
|
|
42205
|
-
color,
|
|
44554
|
+
color: kindColor(kind),
|
|
42206
44555
|
iconId,
|
|
42207
44556
|
labelKey: `eventKind.${kind}`,
|
|
42208
44557
|
label
|
|
42209
44558
|
});
|
|
42210
44559
|
}
|
|
42211
|
-
macro("motion", "motion",
|
|
42212
|
-
macro("audio", "audio",
|
|
42213
|
-
macro("person", "detection",
|
|
42214
|
-
macro("vehicle", "detection",
|
|
42215
|
-
macro("animal", "detection",
|
|
42216
|
-
macro("package", "package",
|
|
42217
|
-
macro("sensor", "sensor",
|
|
42218
|
-
macro("control", "control",
|
|
44560
|
+
macro("motion", "motion", "motion", "Motion");
|
|
44561
|
+
macro("audio", "audio", "audio", "Audio");
|
|
44562
|
+
macro("person", "detection", "person", "Person");
|
|
44563
|
+
macro("vehicle", "detection", "vehicle", "Vehicle");
|
|
44564
|
+
macro("animal", "detection", "animal", "Animal");
|
|
44565
|
+
macro("package", "package", "package", "Package");
|
|
44566
|
+
macro("sensor", "sensor", "sensor", "Sensor");
|
|
44567
|
+
macro("control", "control", "control", "Control");
|
|
42219
44568
|
for (const [cocoClass, macroClass] of Object.entries(COCO_TO_MACRO.mapping)) {
|
|
42220
44569
|
if (macroClass !== "vehicle" && macroClass !== "animal") continue;
|
|
42221
44570
|
if (entries.has(cocoClass)) continue;
|
|
42222
|
-
sub(cocoClass, macroClass, "detection",
|
|
44571
|
+
sub(cocoClass, macroClass, "detection", cocoClass, titleCase(cocoClass));
|
|
42223
44572
|
}
|
|
42224
|
-
sub("package-delivered", "package", "package",
|
|
42225
|
-
sub("package-picked-up", "package", "package",
|
|
42226
|
-
sub("contact", "sensor", "sensor", "
|
|
42227
|
-
sub("motion-sensor", "sensor", "sensor",
|
|
42228
|
-
sub("smoke", "sensor", "sensor", "
|
|
42229
|
-
sub("flood", "sensor", "sensor", "
|
|
42230
|
-
sub("gas", "sensor", "sensor", "
|
|
42231
|
-
sub("carbon-monoxide", "sensor", "sensor", "
|
|
42232
|
-
sub("vibration", "sensor", "sensor", "
|
|
42233
|
-
sub("tamper", "sensor", "sensor", "
|
|
42234
|
-
sub("presence", "sensor", "sensor", "
|
|
42235
|
-
sub("enum-sensor", "sensor", "sensor",
|
|
42236
|
-
sub("device-event", "sensor", "sensor", "
|
|
42237
|
-
sub("lock", "control", "control", "
|
|
42238
|
-
sub("cover", "control", "control", "
|
|
42239
|
-
sub("switch", "control", "control",
|
|
42240
|
-
sub("siren", "control", "control", "
|
|
42241
|
-
sub("button", "control", "control", "
|
|
42242
|
-
sub("doorbell", "control", "control", "
|
|
44573
|
+
sub("package-delivered", "package", "package", "package", "Package delivered");
|
|
44574
|
+
sub("package-picked-up", "package", "package", "package", "Package picked up");
|
|
44575
|
+
sub("contact", "sensor", "sensor", "door", "Contact");
|
|
44576
|
+
sub("motion-sensor", "sensor", "sensor", "pir", "Motion sensor");
|
|
44577
|
+
sub("smoke", "sensor", "sensor", "smoke", "Smoke");
|
|
44578
|
+
sub("flood", "sensor", "sensor", "water", "Water leak");
|
|
44579
|
+
sub("gas", "sensor", "sensor", "gas", "Gas");
|
|
44580
|
+
sub("carbon-monoxide", "sensor", "sensor", "smoke", "Carbon monoxide");
|
|
44581
|
+
sub("vibration", "sensor", "sensor", "vibration", "Vibration");
|
|
44582
|
+
sub("tamper", "sensor", "sensor", "tamper", "Tamper");
|
|
44583
|
+
sub("presence", "sensor", "sensor", "presence", "Presence");
|
|
44584
|
+
sub("enum-sensor", "sensor", "sensor", "generic", "Sensor state");
|
|
44585
|
+
sub("device-event", "sensor", "sensor", "button", "Device event");
|
|
44586
|
+
sub("lock", "control", "control", "lock", "Lock");
|
|
44587
|
+
sub("cover", "control", "control", "door", "Cover");
|
|
44588
|
+
sub("switch", "control", "control", "switch", "Switch");
|
|
44589
|
+
sub("siren", "control", "control", "siren", "Siren");
|
|
44590
|
+
sub("button", "control", "control", "button", "Button");
|
|
44591
|
+
sub("doorbell", "control", "control", "doorbell", "Doorbell");
|
|
42243
44592
|
for (const l of AUDIO_MACRO_LABELS) {
|
|
42244
44593
|
const kind = `audio-${l.id}`;
|
|
42245
44594
|
if (entries.has(kind)) continue;
|
|
42246
|
-
sub(kind, "audio", "audio",
|
|
44595
|
+
sub(kind, "audio", "audio", kind, l.name);
|
|
42247
44596
|
}
|
|
42248
44597
|
/** The complete taxonomy dictionary, keyed by kind. */
|
|
42249
44598
|
var EVENT_TAXONOMY = Object.freeze(Object.fromEntries(entries));
|
|
@@ -43086,7 +45435,7 @@ var NcConditionsSchema = object({
|
|
|
43086
45435
|
* with the list under it is worse than no switch (D62).
|
|
43087
45436
|
*
|
|
43088
45437
|
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
43089
|
-
* renameable, and a rule authored on "
|
|
45438
|
+
* renameable, and a rule authored on "Alice" went silently dark the moment
|
|
43090
45439
|
* the operator fixed the spelling. The id reaches the record on
|
|
43091
45440
|
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
43092
45441
|
* `{{label}}` renders.
|
|
@@ -43637,7 +45986,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
43637
45986
|
* A rule scoped to one camera and one zone silently became a rule that
|
|
43638
45987
|
* matches EVERY event on EVERY camera, and lost its `media` policy
|
|
43639
45988
|
* (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
|
|
43640
|
-
* live on 2026-08-12: a rule scoped to device
|
|
45989
|
+
* live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
|
|
43641
45990
|
* within a minute of a two-field patch.
|
|
43642
45991
|
*
|
|
43643
45992
|
* So every defaulted field is re-declared here WITHOUT its default. The
|
|
@@ -45450,7 +47799,7 @@ var LabelAttributionSchema = object({
|
|
|
45450
47799
|
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
45451
47800
|
*
|
|
45452
47801
|
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
45453
|
-
* notification rule authored on "
|
|
47802
|
+
* notification rule authored on "Alice" stopped matching the moment the
|
|
45454
47803
|
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
45455
47804
|
* the thing that does not move, so it is what a rule matches on
|
|
45456
47805
|
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
@@ -47989,7 +50338,7 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
47989
50338
|
/**
|
|
47990
50339
|
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
47991
50340
|
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
47992
|
-
* step (a
|
|
50341
|
+
* step (a plus catalog `license_plate` for `plate-detection`): the step is
|
|
47993
50342
|
* NOT inferred, these boxes are its output, and its children (the plate
|
|
47994
50343
|
* reader) run on them through their own crop policy. Boxes are in the
|
|
47995
50344
|
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
@@ -49622,7 +51971,7 @@ var RunnerCameraConfigSchema = object({
|
|
|
49622
51971
|
* detection session that asks for history. What shipped was a last-moment
|
|
49623
51972
|
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
49624
51973
|
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
49625
|
-
* worth. Device
|
|
51974
|
+
* worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
|
|
49626
51975
|
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
49627
51976
|
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
49628
51977
|
* was decoded, and was freed.
|
|
@@ -51652,7 +54001,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
|
|
|
51652
54001
|
* The signals a device can emit to WAKE its own stream.
|
|
51653
54002
|
*
|
|
51654
54003
|
* A camera whose stream is built on demand sleeps until something asks for it,
|
|
51655
|
-
* and "something" cannot be a consumer that is merely attached — a
|
|
54004
|
+
* and "something" cannot be a consumer that is merely attached — a external-catalog
|
|
51656
54005
|
* puller holds a session open for ever, and treating that as demand would keep
|
|
51657
54006
|
* a battery camera awake for ever, which is the whole thing the battery is for
|
|
51658
54007
|
* (D173). So the wake has to come from the CAMERA: an event it noticed by
|
|
@@ -52339,7 +54688,7 @@ var ClipSchema = object({
|
|
|
52339
54688
|
* {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
|
|
52340
54689
|
*
|
|
52341
54690
|
* Bounded because it is not a payload the surface pages through: one visit on
|
|
52342
|
-
* device
|
|
54691
|
+
* device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
|
|
52343
54692
|
* camera-day. Read {@link eventCount} for the true total.
|
|
52344
54693
|
*/
|
|
52345
54694
|
eventIds: array(string()).optional(),
|
|
@@ -52484,7 +54833,7 @@ var ClipPlaybackSchema = object({
|
|
|
52484
54833
|
* camera has no recordings", which is the defect this whole line of work is
|
|
52485
54834
|
* about: a battery camera nobody woke (`sleeping`), a camera that could not be
|
|
52486
54835
|
* reached at all (`unreachable`, also what a provider that THREW reports), a
|
|
52487
|
-
* camera whose SD card is not mounted (`no-storage`, measured on
|
|
54836
|
+
* camera whose SD card is not mounted (`no-storage`, measured on 106 —
|
|
52488
54837
|
* `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
|
|
52489
54838
|
* camera whose OWN index disagrees with its OWN calendar (`index-empty`,
|
|
52490
54839
|
* measured on 618: the calendar marks 3–20 September, days 6–20 list zero
|
|
@@ -52749,7 +55098,7 @@ DeviceType.Camera, method(object({
|
|
|
52749
55098
|
*
|
|
52750
55099
|
* It was optional, documented as "absent means the device's BOUND
|
|
52751
55100
|
* provider, which is CamStack on every camera". No code implemented
|
|
52752
|
-
* that. Measured on the live hub 2026-09-20 — device
|
|
55101
|
+
* that. Measured on the live hub 2026-09-20 — device 107, bound to
|
|
52753
55102
|
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
52754
55103
|
* answered SIX rows, three from each source, merged newest-first:
|
|
52755
55104
|
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
@@ -53827,7 +56176,10 @@ object({
|
|
|
53827
56176
|
DeviceType.Sensor;
|
|
53828
56177
|
object({
|
|
53829
56178
|
/** Current illuminance in lux (lx). */
|
|
53830
|
-
lux: number().min(0)
|
|
56179
|
+
lux: number().min(0).meta({
|
|
56180
|
+
unit: "lx",
|
|
56181
|
+
label: "Illuminance"
|
|
56182
|
+
}),
|
|
53831
56183
|
/** Ms epoch when the slice was last updated. */
|
|
53832
56184
|
lastFetchedAt: number(),
|
|
53833
56185
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -53983,7 +56335,10 @@ var BatteryStatusSchema = object({
|
|
|
53983
56335
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
53984
56336
|
* declines to band a non-finite reading, which is the correct shape.
|
|
53985
56337
|
*/
|
|
53986
|
-
percentage: number().min(0).max(100).nullable()
|
|
56338
|
+
percentage: number().min(0).max(100).nullable().meta({
|
|
56339
|
+
unit: "%",
|
|
56340
|
+
label: "Charge"
|
|
56341
|
+
}),
|
|
53987
56342
|
/**
|
|
53988
56343
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
53989
56344
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -54002,13 +56357,13 @@ var BatteryStatusSchema = object({
|
|
|
54002
56357
|
"solar",
|
|
54003
56358
|
"none",
|
|
54004
56359
|
"unknown"
|
|
54005
|
-
]),
|
|
56360
|
+
]).meta({ label: "Charging source" }),
|
|
54006
56361
|
/**
|
|
54007
56362
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
54008
56363
|
* providers MUST avoid polling during sleep — reading the battery
|
|
54009
56364
|
* wakes the camera up and drains charge.
|
|
54010
56365
|
*/
|
|
54011
|
-
sleeping: boolean(),
|
|
56366
|
+
sleeping: boolean().meta({ label: "Sleeping" }),
|
|
54012
56367
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
54013
56368
|
lastUpdated: number(),
|
|
54014
56369
|
/**
|
|
@@ -54048,7 +56403,7 @@ var BatteryStatusSchema = object({
|
|
|
54048
56403
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
54049
56404
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
54050
56405
|
*/
|
|
54051
|
-
binary: boolean().optional()
|
|
56406
|
+
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
54052
56407
|
});
|
|
54053
56408
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat;
|
|
54054
56409
|
method(object({
|
|
@@ -54063,7 +56418,7 @@ method(object({
|
|
|
54063
56418
|
status: BatteryStatusSchema
|
|
54064
56419
|
});
|
|
54065
56420
|
object({
|
|
54066
|
-
on: boolean(),
|
|
56421
|
+
on: boolean().meta({ label: "On" }),
|
|
54067
56422
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
54068
56423
|
lastChangedAt: number()
|
|
54069
56424
|
});
|
|
@@ -54321,7 +56676,7 @@ var GridLayoutCellSchema = object({
|
|
|
54321
56676
|
*
|
|
54322
56677
|
* A grid's `high` composes its sources' `high` and its `low` their `low`, so a
|
|
54323
56678
|
* profile is on offer only when EVERY source can serve it. The refusal NAMES
|
|
54324
|
-
* the sources, because "this grid has no low" is not a finding — "
|
|
56679
|
+
* the sources, because "this grid has no low" is not a finding — "101 has no
|
|
54325
56680
|
* low" is, and it is the one an operator can act on.
|
|
54326
56681
|
*/
|
|
54327
56682
|
var GridProfileOfferSchema = object({
|
|
@@ -54953,6 +57308,30 @@ DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema)
|
|
|
54953
57308
|
auth: "admin"
|
|
54954
57309
|
});
|
|
54955
57310
|
/**
|
|
57311
|
+
* display-palette — the cluster's one colour table (D939).
|
|
57312
|
+
*
|
|
57313
|
+
* Hub singleton. `getPalette` reports `unknown` when the settings store
|
|
57314
|
+
* cannot be read; it does not pretend the bundled preset was stored.
|
|
57315
|
+
* `setPalette` refuses a palette that fails the ΔE / contrast rule and names
|
|
57316
|
+
* the pairs.
|
|
57317
|
+
*/
|
|
57318
|
+
var presetSummarySchema = object({
|
|
57319
|
+
id: string(),
|
|
57320
|
+
name: string(),
|
|
57321
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
57322
|
+
fallbacks: array(string())
|
|
57323
|
+
});
|
|
57324
|
+
method(_void(), paletteResultSchema, {
|
|
57325
|
+
auth: "protected",
|
|
57326
|
+
role: "viewer"
|
|
57327
|
+
}), method(_void(), array(presetSummarySchema).readonly(), {
|
|
57328
|
+
auth: "protected",
|
|
57329
|
+
role: "viewer"
|
|
57330
|
+
}), method(setPaletteInputSchema, paletteReadySchema, {
|
|
57331
|
+
kind: "mutation",
|
|
57332
|
+
auth: "admin"
|
|
57333
|
+
});
|
|
57334
|
+
/**
|
|
54956
57335
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
54957
57336
|
* for every device, regardless of provider — the kernel needs a uniform
|
|
54958
57337
|
* cap-keyed slice for the basic device flags every consumer expects to
|
|
@@ -55848,7 +58227,10 @@ DeviceType.Humidifier, method(object({
|
|
|
55848
58227
|
});
|
|
55849
58228
|
object({
|
|
55850
58229
|
/** Current relative humidity, 0..100. */
|
|
55851
|
-
percent: number().min(0).max(100)
|
|
58230
|
+
percent: number().min(0).max(100).meta({
|
|
58231
|
+
unit: "%",
|
|
58232
|
+
label: "Humidity"
|
|
58233
|
+
}),
|
|
55852
58234
|
/** Ms epoch when the slice was last updated. */
|
|
55853
58235
|
lastFetchedAt: number(),
|
|
55854
58236
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -58625,9 +61007,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
58625
61007
|
});
|
|
58626
61008
|
object({
|
|
58627
61009
|
/** Instantaneous power draw in watts. */
|
|
58628
|
-
watts: number().optional()
|
|
61010
|
+
watts: number().optional().meta({
|
|
61011
|
+
unit: "W",
|
|
61012
|
+
label: "Power"
|
|
61013
|
+
}),
|
|
58629
61014
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
58630
|
-
kwhTotal: number().optional()
|
|
61015
|
+
kwhTotal: number().optional().meta({
|
|
61016
|
+
unit: "kWh",
|
|
61017
|
+
label: "Energy"
|
|
61018
|
+
}),
|
|
58631
61019
|
/** Voltage in volts. */
|
|
58632
61020
|
volts: number().optional(),
|
|
58633
61021
|
/** Current in amperes. */
|
|
@@ -58946,9 +61334,9 @@ var PtzOptionsSchema = object({
|
|
|
58946
61334
|
* Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
|
|
58947
61335
|
* not one of the three cameras honours its own:
|
|
58948
61336
|
*
|
|
58949
|
-
*
|
|
58950
|
-
* 1438
|
|
58951
|
-
* 3836
|
|
61337
|
+
* 107 Camera camera Carol (reolink) preset 0 holds "stanza"
|
|
61338
|
+
* 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
|
|
61339
|
+
* 3836 Camera studio (amcrest) preset 1 holds "Preset1"
|
|
58952
61340
|
*
|
|
58953
61341
|
* So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
|
|
58954
61342
|
* and two of the three swallowed the failure in a bare `catch`. For autotrack
|
|
@@ -59095,7 +61483,7 @@ object({
|
|
|
59095
61483
|
running: boolean().nullable(),
|
|
59096
61484
|
/** Epoch ms the current boolean began; null while `running` is null. */
|
|
59097
61485
|
since: number().nullable(),
|
|
59098
|
-
source: RunningStateSourceSchema,
|
|
61486
|
+
source: RunningStateSourceSchema.meta({ label: "Source" }),
|
|
59099
61487
|
phase: string().nullable(),
|
|
59100
61488
|
/** null until a reading has been published (D393). */
|
|
59101
61489
|
lastFetchedAt: number().nullable()
|
|
@@ -59148,7 +61536,7 @@ var RecordingAvailabilitySchema = object({
|
|
|
59148
61536
|
* would look identical. But the answer used to say nothing about that, so a
|
|
59149
61537
|
* caller asking "what can I export?" read the single preferred profile as
|
|
59150
61538
|
* the only one that exists — on this deployment every camera records `high`
|
|
59151
|
-
* AND `low`, the low tree holding 14 GB for camera
|
|
61539
|
+
* AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
|
|
59152
61540
|
* UI could not see it.
|
|
59153
61541
|
*
|
|
59154
61542
|
* Cheap: it is the same shallow directory read the profile CHOICE already
|
|
@@ -59247,7 +61635,7 @@ var RecordingSourceOptionsSchema = object({
|
|
|
59247
61635
|
* `sparse` = gaps are the absence of one, and must be drawn as such.
|
|
59248
61636
|
*
|
|
59249
61637
|
* Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
|
|
59250
|
-
* of
|
|
61638
|
+
* of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
|
|
59251
61639
|
* pair, and ours answers it per camera from `deriveRecordingMode`. */
|
|
59252
61640
|
coverage: _enum(["continuous", "sparse"]),
|
|
59253
61641
|
/** Where the playhead may be put.
|
|
@@ -59323,7 +61711,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
|
|
|
59323
61711
|
* merely discouraged (D554 amended).
|
|
59324
61712
|
*
|
|
59325
61713
|
* It was learned the expensive way on `videoclips.listClips`: measured
|
|
59326
|
-
* on the live hub 2026-09-20, device
|
|
61714
|
+
* on the live hub 2026-09-20, device 107 bound to `recorder` AND
|
|
59327
61715
|
* `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
|
|
59328
61716
|
* three from each source, merged — `device-collection-dispatch.ts`
|
|
59329
61717
|
* leaves an unpinned fan-out un-narrowed, so absence buys the union the
|
|
@@ -59924,7 +62312,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
|
|
|
59924
62312
|
* on a 10 h window holding 29,393 s of footage every range landed late by the
|
|
59925
62313
|
* gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
|
|
59926
62314
|
* the video was a uniform timelapse, and the log line reported the five ranges
|
|
59927
|
-
* that had been ASKED for (2026-08-13, export `57d14363`, camera
|
|
62315
|
+
* that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
|
|
59928
62316
|
*
|
|
59929
62317
|
* Relative and not absolute epoch, because an absolute epoch would make every
|
|
59930
62318
|
* call site responsible for the same subtraction.
|
|
@@ -60558,7 +62946,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), RecordingSignalStatusS
|
|
|
60558
62946
|
* which put a "Scenes" tab on one camera's detail page. That is the wrong shape
|
|
60559
62947
|
* for the thing: a scene is a standing question about the property ("is the bin
|
|
60560
62948
|
* still out"), and the operator's question is "which of my scenes have tripped",
|
|
60561
|
-
* across every camera at once — not "what does camera
|
|
62949
|
+
* across every camera at once — not "what does camera 102 think". Buried one
|
|
60562
62950
|
* camera deep it also could not be found. The surface is now a top-level admin
|
|
60563
62951
|
* page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
|
|
60564
62952
|
* picks the camera inside the create flow, the same shape Events and Faces have.
|
|
@@ -61141,7 +63529,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), StreamParamsOptionsSch
|
|
|
61141
63529
|
auth: "admin"
|
|
61142
63530
|
}), method(object({ deviceId: number() }), unknown().nullable());
|
|
61143
63531
|
object({
|
|
61144
|
-
on: boolean(),
|
|
63532
|
+
on: boolean().meta({ label: "On" }),
|
|
61145
63533
|
/** Ms epoch of the last state change. Useful for UI "X minutes ago". */
|
|
61146
63534
|
lastChangedAt: number()
|
|
61147
63535
|
});
|
|
@@ -61704,7 +64092,10 @@ object({
|
|
|
61704
64092
|
DeviceType.Sensor;
|
|
61705
64093
|
object({
|
|
61706
64094
|
/** Current temperature in Celsius. */
|
|
61707
|
-
celsius: number()
|
|
64095
|
+
celsius: number().meta({
|
|
64096
|
+
unit: "°C",
|
|
64097
|
+
label: "Temperature"
|
|
64098
|
+
}),
|
|
61708
64099
|
/** Ms epoch when the slice was last updated (push or poll). */
|
|
61709
64100
|
lastFetchedAt: number(),
|
|
61710
64101
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -62954,6 +65345,10 @@ var trainingCapability = {
|
|
|
62954
65345
|
}
|
|
62955
65346
|
};
|
|
62956
65347
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
65348
|
+
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;
|
|
65349
|
+
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
65350
|
+
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
65351
|
+
new Set(CAP_NAMES);
|
|
62957
65352
|
Object.freeze({
|
|
62958
65353
|
person: .5,
|
|
62959
65354
|
vehicle: .5,
|
|
@@ -65953,6 +68348,27 @@ Object.freeze({
|
|
|
65953
68348
|
access: "create",
|
|
65954
68349
|
role: "viewer"
|
|
65955
68350
|
},
|
|
68351
|
+
"displayPalette.getPalette": {
|
|
68352
|
+
capName: "display-palette",
|
|
68353
|
+
capScope: "system",
|
|
68354
|
+
addonId: null,
|
|
68355
|
+
access: "view",
|
|
68356
|
+
role: "viewer"
|
|
68357
|
+
},
|
|
68358
|
+
"displayPalette.listPresets": {
|
|
68359
|
+
capName: "display-palette",
|
|
68360
|
+
capScope: "system",
|
|
68361
|
+
addonId: null,
|
|
68362
|
+
access: "view",
|
|
68363
|
+
role: "viewer"
|
|
68364
|
+
},
|
|
68365
|
+
"displayPalette.setPalette": {
|
|
68366
|
+
capName: "display-palette",
|
|
68367
|
+
capScope: "system",
|
|
68368
|
+
addonId: null,
|
|
68369
|
+
access: "create",
|
|
68370
|
+
role: "admin"
|
|
68371
|
+
},
|
|
65956
68372
|
"doorbell.getStatus": {
|
|
65957
68373
|
capName: "doorbell",
|
|
65958
68374
|
capScope: "device",
|
|
@@ -75870,7 +78286,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
75870
78286
|
state: [{
|
|
75871
78287
|
kind: "boolean",
|
|
75872
78288
|
field: "on",
|
|
75873
|
-
label: t("
|
|
78289
|
+
label: t("On", "Acceso"),
|
|
75874
78290
|
whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
|
|
75875
78291
|
whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
|
|
75876
78292
|
icon: "toggle-right"
|
|
@@ -76409,6 +78825,7 @@ var SYSTEM_CAP_VOCABULARY = {
|
|
|
76409
78825
|
"device-provider": system(INTERNAL),
|
|
76410
78826
|
"device-removal-hook": system(INTERNAL),
|
|
76411
78827
|
"device-state": system("the runtime-state mirror every trigger already reads through"),
|
|
78828
|
+
"display-palette": system("the cluster display palette — one colour table for every client, not a device action"),
|
|
76412
78829
|
"embedding-encoder": system(ML),
|
|
76413
78830
|
"face-gallery": system("the face gallery — curated on its own page"),
|
|
76414
78831
|
"failure-contribution": system(INTERNAL),
|
|
@@ -79293,7 +81710,6 @@ Object.freeze({
|
|
|
79293
81710
|
"smtp-provider": "email"
|
|
79294
81711
|
});
|
|
79295
81712
|
DeviceType.Camera;
|
|
79296
|
-
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;
|
|
79297
81713
|
/**
|
|
79298
81714
|
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
79299
81715
|
* `z.infer`, they do not restate the shape.
|
|
@@ -79382,7 +81798,6 @@ object({
|
|
|
79382
81798
|
]),
|
|
79383
81799
|
reason: string().nullable()
|
|
79384
81800
|
});
|
|
79385
|
-
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
79386
81801
|
var G711_SCALE_CORRECTION_DB = {
|
|
79387
81802
|
PCMU: 20 * Math.log10(4),
|
|
79388
81803
|
PCMA: 20 * Math.log10(8)
|
|
@@ -79755,7 +82170,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
79755
82170
|
{
|
|
79756
82171
|
name: "summaryStreams",
|
|
79757
82172
|
label: "Summary: streams offline",
|
|
79758
|
-
example: "
|
|
82173
|
+
example: "Front door (high) — since 06:40",
|
|
79759
82174
|
kinds: ["stream-offline", "stream-online"]
|
|
79760
82175
|
},
|
|
79761
82176
|
{
|
|
@@ -79773,13 +82188,13 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
79773
82188
|
{
|
|
79774
82189
|
name: "summaryDetection",
|
|
79775
82190
|
label: "Summary: cameras detecting nothing",
|
|
79776
|
-
example: "
|
|
82191
|
+
example: "Front door — since 05:10",
|
|
79777
82192
|
kinds: ["detection-blind"]
|
|
79778
82193
|
},
|
|
79779
82194
|
{
|
|
79780
82195
|
name: "summaryNodes",
|
|
79781
82196
|
label: "Summary: nodes",
|
|
79782
|
-
example: "
|
|
82197
|
+
example: "agent-a — offline since 03:00",
|
|
79783
82198
|
kinds: [
|
|
79784
82199
|
"node-offline",
|
|
79785
82200
|
"node-online",
|