@camstack/addon-provider-reolink 1.2.208 → 1.2.210
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +2103 -68
- package/dist/addon.mjs +2103 -68
- package/package.json +7 -2
package/dist/addon.js
CHANGED
|
@@ -36,7 +36,7 @@ let node_os = require("node:os");
|
|
|
36
36
|
node_os = require_chunk.__toESM(node_os, 1);
|
|
37
37
|
let node_fs = require("node:fs");
|
|
38
38
|
node_fs = require_chunk.__toESM(node_fs, 1);
|
|
39
|
-
//#region ../types/dist/event-category-
|
|
39
|
+
//#region ../types/dist/event-category-DHXxB8t9.mjs
|
|
40
40
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
41
41
|
EventCategory["SystemBoot"] = "system.boot";
|
|
42
42
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -332,7 +332,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
332
332
|
* TRANSITION into that state (never per dispatch), and the node is dropped
|
|
333
333
|
* from the placement candidate set for as long as it holds.
|
|
334
334
|
*
|
|
335
|
-
* This exists because the state was previously invisible:
|
|
335
|
+
* This exists because the state was previously invisible: agent-a
|
|
336
336
|
* absorbed 283k inference errors in a day while still being handed cameras,
|
|
337
337
|
* and nothing in the system said so.
|
|
338
338
|
*
|
|
@@ -5471,7 +5471,7 @@ var ZodIssueCode = {
|
|
|
5471
5471
|
var ZodFirstPartyTypeKind;
|
|
5472
5472
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5473
5473
|
//#endregion
|
|
5474
|
-
//#region ../types/dist/sleep-
|
|
5474
|
+
//#region ../types/dist/sleep-BErAxhul.mjs
|
|
5475
5475
|
/**
|
|
5476
5476
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5477
5477
|
* window to float samples (D455).
|
|
@@ -8532,6 +8532,1980 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
8532
8532
|
kind: "mutation",
|
|
8533
8533
|
auth: "admin"
|
|
8534
8534
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
8535
|
+
Object.freeze({ "doorbell": "lastPressedAt" });
|
|
8536
|
+
/** Every capability name, so addon code can check a name without the schema graph. */
|
|
8537
|
+
var CAP_NAMES = Object.freeze([
|
|
8538
|
+
"accessories",
|
|
8539
|
+
"addon-pages",
|
|
8540
|
+
"addon-pages-source",
|
|
8541
|
+
"addon-routes",
|
|
8542
|
+
"addon-settings",
|
|
8543
|
+
"addon-widgets",
|
|
8544
|
+
"addon-widgets-source",
|
|
8545
|
+
"addons",
|
|
8546
|
+
"admin-ui",
|
|
8547
|
+
"air-quality-sensor",
|
|
8548
|
+
"alarm-panel",
|
|
8549
|
+
"alerts",
|
|
8550
|
+
"ambient-light-sensor",
|
|
8551
|
+
"audio-analysis",
|
|
8552
|
+
"audio-analyzer",
|
|
8553
|
+
"audio-codec",
|
|
8554
|
+
"audio-metrics",
|
|
8555
|
+
"auth-provider",
|
|
8556
|
+
"automation-control",
|
|
8557
|
+
"backup",
|
|
8558
|
+
"battery",
|
|
8559
|
+
"binary",
|
|
8560
|
+
"brightness",
|
|
8561
|
+
"broker",
|
|
8562
|
+
"button",
|
|
8563
|
+
"calendar-source",
|
|
8564
|
+
"calendars",
|
|
8565
|
+
"camera-credentials",
|
|
8566
|
+
"camera-grid-layout",
|
|
8567
|
+
"camera-pipeline-config",
|
|
8568
|
+
"camera-streams",
|
|
8569
|
+
"carbon-monoxide",
|
|
8570
|
+
"climate-control",
|
|
8571
|
+
"color",
|
|
8572
|
+
"composer",
|
|
8573
|
+
"connection-test",
|
|
8574
|
+
"connectivity",
|
|
8575
|
+
"consumables",
|
|
8576
|
+
"contact",
|
|
8577
|
+
"control",
|
|
8578
|
+
"core-blocks",
|
|
8579
|
+
"cover",
|
|
8580
|
+
"custom-model-registry",
|
|
8581
|
+
"data-store-provider",
|
|
8582
|
+
"database-snapshot",
|
|
8583
|
+
"day-night",
|
|
8584
|
+
"decoder",
|
|
8585
|
+
"detection-pipeline",
|
|
8586
|
+
"device-admin-link",
|
|
8587
|
+
"device-adoption",
|
|
8588
|
+
"device-credentials",
|
|
8589
|
+
"device-discovery",
|
|
8590
|
+
"device-export",
|
|
8591
|
+
"device-extension",
|
|
8592
|
+
"device-history",
|
|
8593
|
+
"device-manager",
|
|
8594
|
+
"device-ops",
|
|
8595
|
+
"device-provider",
|
|
8596
|
+
"device-removal-hook",
|
|
8597
|
+
"device-state",
|
|
8598
|
+
"device-status",
|
|
8599
|
+
"dishwasher",
|
|
8600
|
+
"display-palette",
|
|
8601
|
+
"doorbell",
|
|
8602
|
+
"embedding-encoder",
|
|
8603
|
+
"enum-sensor",
|
|
8604
|
+
"event-emitter",
|
|
8605
|
+
"face-gallery",
|
|
8606
|
+
"failure-contribution",
|
|
8607
|
+
"fan-control",
|
|
8608
|
+
"feature-probe",
|
|
8609
|
+
"filesystem-browse",
|
|
8610
|
+
"flood",
|
|
8611
|
+
"gas",
|
|
8612
|
+
"heating-valve",
|
|
8613
|
+
"humidifier",
|
|
8614
|
+
"humidity-sensor",
|
|
8615
|
+
"image",
|
|
8616
|
+
"image-settings",
|
|
8617
|
+
"integrations",
|
|
8618
|
+
"intercom",
|
|
8619
|
+
"keychain",
|
|
8620
|
+
"keychain-admin",
|
|
8621
|
+
"lawn-mower-control",
|
|
8622
|
+
"llm",
|
|
8623
|
+
"llm-runtime",
|
|
8624
|
+
"load-contribution",
|
|
8625
|
+
"local-network",
|
|
8626
|
+
"lock-control",
|
|
8627
|
+
"log-channels",
|
|
8628
|
+
"log-destination",
|
|
8629
|
+
"login-method",
|
|
8630
|
+
"media-player",
|
|
8631
|
+
"mesh-network",
|
|
8632
|
+
"metrics-provider",
|
|
8633
|
+
"model-convert",
|
|
8634
|
+
"model-distributor",
|
|
8635
|
+
"motion",
|
|
8636
|
+
"motion-detection",
|
|
8637
|
+
"motion-trigger",
|
|
8638
|
+
"motion-zones",
|
|
8639
|
+
"mqtt-broker",
|
|
8640
|
+
"native-object-detection",
|
|
8641
|
+
"navigation",
|
|
8642
|
+
"network-access",
|
|
8643
|
+
"network-link",
|
|
8644
|
+
"network-quality",
|
|
8645
|
+
"node-certificates",
|
|
8646
|
+
"nodes",
|
|
8647
|
+
"notification-output",
|
|
8648
|
+
"notification-rules",
|
|
8649
|
+
"notifier",
|
|
8650
|
+
"numeric-sensor",
|
|
8651
|
+
"oauth-integration",
|
|
8652
|
+
"oidc-connections",
|
|
8653
|
+
"osd",
|
|
8654
|
+
"osd-manager",
|
|
8655
|
+
"pet-feeder",
|
|
8656
|
+
"pipeline-analytics",
|
|
8657
|
+
"pipeline-executor",
|
|
8658
|
+
"pipeline-orchestrator",
|
|
8659
|
+
"pipeline-runner",
|
|
8660
|
+
"plate-gallery",
|
|
8661
|
+
"platform-probe",
|
|
8662
|
+
"power-meter",
|
|
8663
|
+
"presence",
|
|
8664
|
+
"pressure-sensor",
|
|
8665
|
+
"privacy-mask",
|
|
8666
|
+
"ptz",
|
|
8667
|
+
"ptz-autotrack",
|
|
8668
|
+
"reboot",
|
|
8669
|
+
"record-entries",
|
|
8670
|
+
"recording",
|
|
8671
|
+
"recording-archive",
|
|
8672
|
+
"recording-export",
|
|
8673
|
+
"recording-onboard",
|
|
8674
|
+
"recording-signal",
|
|
8675
|
+
"records",
|
|
8676
|
+
"running-state",
|
|
8677
|
+
"scene-monitor",
|
|
8678
|
+
"script-runner",
|
|
8679
|
+
"server-management",
|
|
8680
|
+
"settings-store",
|
|
8681
|
+
"smoke",
|
|
8682
|
+
"smtp-provider",
|
|
8683
|
+
"snapshot",
|
|
8684
|
+
"sso-bridge",
|
|
8685
|
+
"storage",
|
|
8686
|
+
"storage-admin",
|
|
8687
|
+
"storage-evictable",
|
|
8688
|
+
"storage-migration",
|
|
8689
|
+
"storage-occupancy",
|
|
8690
|
+
"storage-provider",
|
|
8691
|
+
"stream-broker",
|
|
8692
|
+
"stream-catalog",
|
|
8693
|
+
"stream-params",
|
|
8694
|
+
"stream-signals",
|
|
8695
|
+
"switch",
|
|
8696
|
+
"system",
|
|
8697
|
+
"tamper",
|
|
8698
|
+
"temperature-sensor",
|
|
8699
|
+
"terminal-session",
|
|
8700
|
+
"toast",
|
|
8701
|
+
"training",
|
|
8702
|
+
"training-provider",
|
|
8703
|
+
"turn-provider",
|
|
8704
|
+
"update",
|
|
8705
|
+
"user-management",
|
|
8706
|
+
"user-passkeys",
|
|
8707
|
+
"vacuum-control",
|
|
8708
|
+
"valve",
|
|
8709
|
+
"vector-store",
|
|
8710
|
+
"vibration",
|
|
8711
|
+
"videoclips",
|
|
8712
|
+
"viewer-ui",
|
|
8713
|
+
"water-heater",
|
|
8714
|
+
"weather",
|
|
8715
|
+
"webrtc-session",
|
|
8716
|
+
"zone-analytics",
|
|
8717
|
+
"zone-rules",
|
|
8718
|
+
"zones"
|
|
8719
|
+
]);
|
|
8720
|
+
Object.freeze({
|
|
8721
|
+
"air-quality-sensor": [
|
|
8722
|
+
{
|
|
8723
|
+
"path": "co2Ppm",
|
|
8724
|
+
"valueType": "number"
|
|
8725
|
+
},
|
|
8726
|
+
{
|
|
8727
|
+
"path": "vocPpb",
|
|
8728
|
+
"valueType": "number"
|
|
8729
|
+
},
|
|
8730
|
+
{
|
|
8731
|
+
"path": "pm25",
|
|
8732
|
+
"valueType": "number"
|
|
8733
|
+
},
|
|
8734
|
+
{
|
|
8735
|
+
"path": "pm10",
|
|
8736
|
+
"valueType": "number"
|
|
8737
|
+
},
|
|
8738
|
+
{
|
|
8739
|
+
"path": "aqi",
|
|
8740
|
+
"valueType": "number"
|
|
8741
|
+
},
|
|
8742
|
+
{
|
|
8743
|
+
"path": "unit",
|
|
8744
|
+
"valueType": "string"
|
|
8745
|
+
},
|
|
8746
|
+
{
|
|
8747
|
+
"path": "precision",
|
|
8748
|
+
"valueType": "number"
|
|
8749
|
+
}
|
|
8750
|
+
],
|
|
8751
|
+
"alarm-panel": [
|
|
8752
|
+
{
|
|
8753
|
+
"path": "state",
|
|
8754
|
+
"valueType": "enum",
|
|
8755
|
+
"enumValues": [
|
|
8756
|
+
"disarmed",
|
|
8757
|
+
"armed_home",
|
|
8758
|
+
"armed_away",
|
|
8759
|
+
"armed_night",
|
|
8760
|
+
"armed_vacation",
|
|
8761
|
+
"armed_custom_bypass",
|
|
8762
|
+
"arming",
|
|
8763
|
+
"disarming",
|
|
8764
|
+
"pending",
|
|
8765
|
+
"triggered"
|
|
8766
|
+
]
|
|
8767
|
+
},
|
|
8768
|
+
{
|
|
8769
|
+
"path": "targetMode",
|
|
8770
|
+
"valueType": "enum",
|
|
8771
|
+
"enumValues": [
|
|
8772
|
+
"home",
|
|
8773
|
+
"away",
|
|
8774
|
+
"night",
|
|
8775
|
+
"vacation",
|
|
8776
|
+
"custom_bypass"
|
|
8777
|
+
]
|
|
8778
|
+
},
|
|
8779
|
+
{
|
|
8780
|
+
"path": "requiresCode",
|
|
8781
|
+
"valueType": "boolean"
|
|
8782
|
+
}
|
|
8783
|
+
],
|
|
8784
|
+
"ambient-light-sensor": [
|
|
8785
|
+
{
|
|
8786
|
+
"path": "lux",
|
|
8787
|
+
"valueType": "number"
|
|
8788
|
+
},
|
|
8789
|
+
{
|
|
8790
|
+
"path": "unit",
|
|
8791
|
+
"valueType": "string"
|
|
8792
|
+
},
|
|
8793
|
+
{
|
|
8794
|
+
"path": "precision",
|
|
8795
|
+
"valueType": "number"
|
|
8796
|
+
}
|
|
8797
|
+
],
|
|
8798
|
+
"audio-metrics": [
|
|
8799
|
+
{
|
|
8800
|
+
"path": "ts",
|
|
8801
|
+
"valueType": "number"
|
|
8802
|
+
},
|
|
8803
|
+
{
|
|
8804
|
+
"path": "windowSec",
|
|
8805
|
+
"valueType": "number"
|
|
8806
|
+
},
|
|
8807
|
+
{
|
|
8808
|
+
"path": "level.rms",
|
|
8809
|
+
"valueType": "number"
|
|
8810
|
+
},
|
|
8811
|
+
{
|
|
8812
|
+
"path": "level.dbfs",
|
|
8813
|
+
"valueType": "number"
|
|
8814
|
+
},
|
|
8815
|
+
{
|
|
8816
|
+
"path": "peakDbfs",
|
|
8817
|
+
"valueType": "number"
|
|
8818
|
+
},
|
|
8819
|
+
{
|
|
8820
|
+
"path": "avgDbfs",
|
|
8821
|
+
"valueType": "number"
|
|
8822
|
+
},
|
|
8823
|
+
{
|
|
8824
|
+
"path": "current.className",
|
|
8825
|
+
"valueType": "string"
|
|
8826
|
+
},
|
|
8827
|
+
{
|
|
8828
|
+
"path": "current.score",
|
|
8829
|
+
"valueType": "number"
|
|
8830
|
+
},
|
|
8831
|
+
{
|
|
8832
|
+
"path": "current.timestamp",
|
|
8833
|
+
"valueType": "number"
|
|
8834
|
+
}
|
|
8835
|
+
],
|
|
8836
|
+
"automation-control": [
|
|
8837
|
+
{
|
|
8838
|
+
"path": "enabled",
|
|
8839
|
+
"valueType": "boolean"
|
|
8840
|
+
},
|
|
8841
|
+
{
|
|
8842
|
+
"path": "isRunning",
|
|
8843
|
+
"valueType": "boolean"
|
|
8844
|
+
},
|
|
8845
|
+
{
|
|
8846
|
+
"path": "lastTriggeredAt",
|
|
8847
|
+
"valueType": "number"
|
|
8848
|
+
},
|
|
8849
|
+
{
|
|
8850
|
+
"path": "lastError",
|
|
8851
|
+
"valueType": "string"
|
|
8852
|
+
}
|
|
8853
|
+
],
|
|
8854
|
+
"battery": [
|
|
8855
|
+
{
|
|
8856
|
+
"path": "percentage",
|
|
8857
|
+
"valueType": "number"
|
|
8858
|
+
},
|
|
8859
|
+
{
|
|
8860
|
+
"path": "charging",
|
|
8861
|
+
"valueType": "enum",
|
|
8862
|
+
"enumValues": [
|
|
8863
|
+
"dc",
|
|
8864
|
+
"solar",
|
|
8865
|
+
"none",
|
|
8866
|
+
"unknown"
|
|
8867
|
+
]
|
|
8868
|
+
},
|
|
8869
|
+
{
|
|
8870
|
+
"path": "sleeping",
|
|
8871
|
+
"valueType": "boolean"
|
|
8872
|
+
},
|
|
8873
|
+
{
|
|
8874
|
+
"path": "lastUpdated",
|
|
8875
|
+
"valueType": "number"
|
|
8876
|
+
},
|
|
8877
|
+
{
|
|
8878
|
+
"path": "lastContactAt",
|
|
8879
|
+
"valueType": "number"
|
|
8880
|
+
},
|
|
8881
|
+
{
|
|
8882
|
+
"path": "lastFullRefreshAt",
|
|
8883
|
+
"valueType": "number"
|
|
8884
|
+
},
|
|
8885
|
+
{
|
|
8886
|
+
"path": "binary",
|
|
8887
|
+
"valueType": "boolean"
|
|
8888
|
+
}
|
|
8889
|
+
],
|
|
8890
|
+
"binary": [{
|
|
8891
|
+
"path": "on",
|
|
8892
|
+
"valueType": "boolean"
|
|
8893
|
+
}],
|
|
8894
|
+
"brightness": [{
|
|
8895
|
+
"path": "percentage",
|
|
8896
|
+
"valueType": "number"
|
|
8897
|
+
}],
|
|
8898
|
+
"broker": [{
|
|
8899
|
+
"path": "brokerCount",
|
|
8900
|
+
"valueType": "number"
|
|
8901
|
+
}, {
|
|
8902
|
+
"path": "connectedCount",
|
|
8903
|
+
"valueType": "number"
|
|
8904
|
+
}],
|
|
8905
|
+
"camera-credentials": [
|
|
8906
|
+
{
|
|
8907
|
+
"path": "host",
|
|
8908
|
+
"valueType": "string"
|
|
8909
|
+
},
|
|
8910
|
+
{
|
|
8911
|
+
"path": "port",
|
|
8912
|
+
"valueType": "number"
|
|
8913
|
+
},
|
|
8914
|
+
{
|
|
8915
|
+
"path": "onvifPort",
|
|
8916
|
+
"valueType": "number"
|
|
8917
|
+
},
|
|
8918
|
+
{
|
|
8919
|
+
"path": "rtspPort",
|
|
8920
|
+
"valueType": "number"
|
|
8921
|
+
},
|
|
8922
|
+
{
|
|
8923
|
+
"path": "https",
|
|
8924
|
+
"valueType": "boolean"
|
|
8925
|
+
},
|
|
8926
|
+
{
|
|
8927
|
+
"path": "hasUsername",
|
|
8928
|
+
"valueType": "boolean"
|
|
8929
|
+
},
|
|
8930
|
+
{
|
|
8931
|
+
"path": "hasPassword",
|
|
8932
|
+
"valueType": "boolean"
|
|
8933
|
+
},
|
|
8934
|
+
{
|
|
8935
|
+
"path": "onvifProfile",
|
|
8936
|
+
"valueType": "string"
|
|
8937
|
+
}
|
|
8938
|
+
],
|
|
8939
|
+
"camera-streams": [
|
|
8940
|
+
{
|
|
8941
|
+
"path": "online",
|
|
8942
|
+
"valueType": "boolean"
|
|
8943
|
+
},
|
|
8944
|
+
{
|
|
8945
|
+
"path": "slotStatuses.high",
|
|
8946
|
+
"valueType": "enum",
|
|
8947
|
+
"enumValues": [
|
|
8948
|
+
"unassigned",
|
|
8949
|
+
"idle",
|
|
8950
|
+
"connecting",
|
|
8951
|
+
"streaming",
|
|
8952
|
+
"error"
|
|
8953
|
+
]
|
|
8954
|
+
},
|
|
8955
|
+
{
|
|
8956
|
+
"path": "slotStatuses.mid",
|
|
8957
|
+
"valueType": "enum",
|
|
8958
|
+
"enumValues": [
|
|
8959
|
+
"unassigned",
|
|
8960
|
+
"idle",
|
|
8961
|
+
"connecting",
|
|
8962
|
+
"streaming",
|
|
8963
|
+
"error"
|
|
8964
|
+
]
|
|
8965
|
+
},
|
|
8966
|
+
{
|
|
8967
|
+
"path": "slotStatuses.low",
|
|
8968
|
+
"valueType": "enum",
|
|
8969
|
+
"enumValues": [
|
|
8970
|
+
"unassigned",
|
|
8971
|
+
"idle",
|
|
8972
|
+
"connecting",
|
|
8973
|
+
"streaming",
|
|
8974
|
+
"error"
|
|
8975
|
+
]
|
|
8976
|
+
},
|
|
8977
|
+
{
|
|
8978
|
+
"path": "slotErrors.high",
|
|
8979
|
+
"valueType": "string"
|
|
8980
|
+
},
|
|
8981
|
+
{
|
|
8982
|
+
"path": "slotErrors.mid",
|
|
8983
|
+
"valueType": "string"
|
|
8984
|
+
},
|
|
8985
|
+
{
|
|
8986
|
+
"path": "slotErrors.low",
|
|
8987
|
+
"valueType": "string"
|
|
8988
|
+
}
|
|
8989
|
+
],
|
|
8990
|
+
"carbon-monoxide": [{
|
|
8991
|
+
"path": "detected",
|
|
8992
|
+
"valueType": "boolean"
|
|
8993
|
+
}],
|
|
8994
|
+
"climate-control": [
|
|
8995
|
+
{
|
|
8996
|
+
"path": "mode",
|
|
8997
|
+
"valueType": "enum",
|
|
8998
|
+
"enumValues": [
|
|
8999
|
+
"off",
|
|
9000
|
+
"heat",
|
|
9001
|
+
"cool",
|
|
9002
|
+
"auto",
|
|
9003
|
+
"heat_cool",
|
|
9004
|
+
"fan_only",
|
|
9005
|
+
"dry"
|
|
9006
|
+
]
|
|
9007
|
+
},
|
|
9008
|
+
{
|
|
9009
|
+
"path": "fanMode",
|
|
9010
|
+
"valueType": "string"
|
|
9011
|
+
},
|
|
9012
|
+
{
|
|
9013
|
+
"path": "preset",
|
|
9014
|
+
"valueType": "string"
|
|
9015
|
+
},
|
|
9016
|
+
{
|
|
9017
|
+
"path": "target",
|
|
9018
|
+
"valueType": "number"
|
|
9019
|
+
},
|
|
9020
|
+
{
|
|
9021
|
+
"path": "targetHigh",
|
|
9022
|
+
"valueType": "number"
|
|
9023
|
+
},
|
|
9024
|
+
{
|
|
9025
|
+
"path": "targetLow",
|
|
9026
|
+
"valueType": "number"
|
|
9027
|
+
},
|
|
9028
|
+
{
|
|
9029
|
+
"path": "targetHumidity",
|
|
9030
|
+
"valueType": "number"
|
|
9031
|
+
},
|
|
9032
|
+
{
|
|
9033
|
+
"path": "currentTemp",
|
|
9034
|
+
"valueType": "number"
|
|
9035
|
+
},
|
|
9036
|
+
{
|
|
9037
|
+
"path": "currentHumidity",
|
|
9038
|
+
"valueType": "number"
|
|
9039
|
+
},
|
|
9040
|
+
{
|
|
9041
|
+
"path": "swingVertical",
|
|
9042
|
+
"valueType": "boolean"
|
|
9043
|
+
},
|
|
9044
|
+
{
|
|
9045
|
+
"path": "swingHorizontal",
|
|
9046
|
+
"valueType": "boolean"
|
|
9047
|
+
},
|
|
9048
|
+
{
|
|
9049
|
+
"path": "minTemp",
|
|
9050
|
+
"valueType": "number"
|
|
9051
|
+
},
|
|
9052
|
+
{
|
|
9053
|
+
"path": "maxTemp",
|
|
9054
|
+
"valueType": "number"
|
|
9055
|
+
},
|
|
9056
|
+
{
|
|
9057
|
+
"path": "tempStep",
|
|
9058
|
+
"valueType": "number"
|
|
9059
|
+
}
|
|
9060
|
+
],
|
|
9061
|
+
"color": [
|
|
9062
|
+
{
|
|
9063
|
+
"path": "mode",
|
|
9064
|
+
"valueType": "enum",
|
|
9065
|
+
"enumValues": [
|
|
9066
|
+
"rgb",
|
|
9067
|
+
"hsv",
|
|
9068
|
+
"mired"
|
|
9069
|
+
]
|
|
9070
|
+
},
|
|
9071
|
+
{
|
|
9072
|
+
"path": "rgb.r",
|
|
9073
|
+
"valueType": "number"
|
|
9074
|
+
},
|
|
9075
|
+
{
|
|
9076
|
+
"path": "rgb.g",
|
|
9077
|
+
"valueType": "number"
|
|
9078
|
+
},
|
|
9079
|
+
{
|
|
9080
|
+
"path": "rgb.b",
|
|
9081
|
+
"valueType": "number"
|
|
9082
|
+
},
|
|
9083
|
+
{
|
|
9084
|
+
"path": "hsv.h",
|
|
9085
|
+
"valueType": "number"
|
|
9086
|
+
},
|
|
9087
|
+
{
|
|
9088
|
+
"path": "hsv.s",
|
|
9089
|
+
"valueType": "number"
|
|
9090
|
+
},
|
|
9091
|
+
{
|
|
9092
|
+
"path": "hsv.v",
|
|
9093
|
+
"valueType": "number"
|
|
9094
|
+
},
|
|
9095
|
+
{
|
|
9096
|
+
"path": "mireds",
|
|
9097
|
+
"valueType": "number"
|
|
9098
|
+
}
|
|
9099
|
+
],
|
|
9100
|
+
"connectivity": [{
|
|
9101
|
+
"path": "connected",
|
|
9102
|
+
"valueType": "boolean"
|
|
9103
|
+
}],
|
|
9104
|
+
"contact": [{
|
|
9105
|
+
"path": "entryOpen",
|
|
9106
|
+
"valueType": "boolean"
|
|
9107
|
+
}],
|
|
9108
|
+
"control": [
|
|
9109
|
+
{
|
|
9110
|
+
"path": "kind",
|
|
9111
|
+
"valueType": "enum",
|
|
9112
|
+
"enumValues": [
|
|
9113
|
+
"numeric",
|
|
9114
|
+
"select",
|
|
9115
|
+
"text",
|
|
9116
|
+
"datetime"
|
|
9117
|
+
]
|
|
9118
|
+
},
|
|
9119
|
+
{
|
|
9120
|
+
"path": "unit",
|
|
9121
|
+
"valueType": "string"
|
|
9122
|
+
},
|
|
9123
|
+
{
|
|
9124
|
+
"path": "min",
|
|
9125
|
+
"valueType": "number"
|
|
9126
|
+
},
|
|
9127
|
+
{
|
|
9128
|
+
"path": "max",
|
|
9129
|
+
"valueType": "number"
|
|
9130
|
+
},
|
|
9131
|
+
{
|
|
9132
|
+
"path": "step",
|
|
9133
|
+
"valueType": "number"
|
|
9134
|
+
},
|
|
9135
|
+
{
|
|
9136
|
+
"path": "precision",
|
|
9137
|
+
"valueType": "number"
|
|
9138
|
+
},
|
|
9139
|
+
{
|
|
9140
|
+
"path": "format",
|
|
9141
|
+
"valueType": "enum",
|
|
9142
|
+
"enumValues": [
|
|
9143
|
+
"date",
|
|
9144
|
+
"time",
|
|
9145
|
+
"datetime"
|
|
9146
|
+
]
|
|
9147
|
+
}
|
|
9148
|
+
],
|
|
9149
|
+
"cover": [
|
|
9150
|
+
{
|
|
9151
|
+
"path": "state",
|
|
9152
|
+
"valueType": "enum",
|
|
9153
|
+
"enumValues": [
|
|
9154
|
+
"open",
|
|
9155
|
+
"opening",
|
|
9156
|
+
"closing",
|
|
9157
|
+
"closed",
|
|
9158
|
+
"stopped"
|
|
9159
|
+
]
|
|
9160
|
+
},
|
|
9161
|
+
{
|
|
9162
|
+
"path": "position",
|
|
9163
|
+
"valueType": "number"
|
|
9164
|
+
},
|
|
9165
|
+
{
|
|
9166
|
+
"path": "tiltPosition",
|
|
9167
|
+
"valueType": "number"
|
|
9168
|
+
}
|
|
9169
|
+
],
|
|
9170
|
+
"day-night": [
|
|
9171
|
+
{
|
|
9172
|
+
"path": "mode",
|
|
9173
|
+
"valueType": "enum",
|
|
9174
|
+
"enumValues": [
|
|
9175
|
+
"auto",
|
|
9176
|
+
"day",
|
|
9177
|
+
"night",
|
|
9178
|
+
"schedule"
|
|
9179
|
+
]
|
|
9180
|
+
},
|
|
9181
|
+
{
|
|
9182
|
+
"path": "sensitivity",
|
|
9183
|
+
"valueType": "number"
|
|
9184
|
+
},
|
|
9185
|
+
{
|
|
9186
|
+
"path": "switchDelaySec",
|
|
9187
|
+
"valueType": "number"
|
|
9188
|
+
}
|
|
9189
|
+
],
|
|
9190
|
+
"device-adoption": [
|
|
9191
|
+
{
|
|
9192
|
+
"path": "lastDiscoveryAt",
|
|
9193
|
+
"valueType": "number"
|
|
9194
|
+
},
|
|
9195
|
+
{
|
|
9196
|
+
"path": "candidateCount",
|
|
9197
|
+
"valueType": "number"
|
|
9198
|
+
},
|
|
9199
|
+
{
|
|
9200
|
+
"path": "adoptedCount",
|
|
9201
|
+
"valueType": "number"
|
|
9202
|
+
},
|
|
9203
|
+
{
|
|
9204
|
+
"path": "lastError",
|
|
9205
|
+
"valueType": "string"
|
|
9206
|
+
}
|
|
9207
|
+
],
|
|
9208
|
+
"device-discovery": [{
|
|
9209
|
+
"path": "lastDiscoveryAt",
|
|
9210
|
+
"valueType": "number"
|
|
9211
|
+
}, {
|
|
9212
|
+
"path": "lastError",
|
|
9213
|
+
"valueType": "string"
|
|
9214
|
+
}],
|
|
9215
|
+
"device-export": [
|
|
9216
|
+
{
|
|
9217
|
+
"path": "linkState",
|
|
9218
|
+
"valueType": "enum",
|
|
9219
|
+
"enumValues": [
|
|
9220
|
+
"unlinked",
|
|
9221
|
+
"linked",
|
|
9222
|
+
"error"
|
|
9223
|
+
]
|
|
9224
|
+
},
|
|
9225
|
+
{
|
|
9226
|
+
"path": "exposedDeviceCount",
|
|
9227
|
+
"valueType": "number"
|
|
9228
|
+
},
|
|
9229
|
+
{
|
|
9230
|
+
"path": "error",
|
|
9231
|
+
"valueType": "string"
|
|
9232
|
+
},
|
|
9233
|
+
{
|
|
9234
|
+
"path": "setup.qr",
|
|
9235
|
+
"valueType": "string"
|
|
9236
|
+
},
|
|
9237
|
+
{
|
|
9238
|
+
"path": "setup.note",
|
|
9239
|
+
"valueType": "string"
|
|
9240
|
+
}
|
|
9241
|
+
],
|
|
9242
|
+
"device-status": [{
|
|
9243
|
+
"path": "online",
|
|
9244
|
+
"valueType": "boolean"
|
|
9245
|
+
}],
|
|
9246
|
+
"dishwasher": [
|
|
9247
|
+
{
|
|
9248
|
+
"path": "availability",
|
|
9249
|
+
"valueType": "enum",
|
|
9250
|
+
"enumValues": [
|
|
9251
|
+
"available",
|
|
9252
|
+
"offline",
|
|
9253
|
+
"description-missing"
|
|
9254
|
+
]
|
|
9255
|
+
},
|
|
9256
|
+
{
|
|
9257
|
+
"path": "state",
|
|
9258
|
+
"valueType": "enum",
|
|
9259
|
+
"enumValues": [
|
|
9260
|
+
"idle",
|
|
9261
|
+
"running",
|
|
9262
|
+
"paused",
|
|
9263
|
+
"finished",
|
|
9264
|
+
"error",
|
|
9265
|
+
"unavailable"
|
|
9266
|
+
]
|
|
9267
|
+
},
|
|
9268
|
+
{
|
|
9269
|
+
"path": "operationState",
|
|
9270
|
+
"valueType": "enum",
|
|
9271
|
+
"enumValues": [
|
|
9272
|
+
"Inactive",
|
|
9273
|
+
"Ready",
|
|
9274
|
+
"DelayedStart",
|
|
9275
|
+
"Run",
|
|
9276
|
+
"Pause",
|
|
9277
|
+
"ActionRequired",
|
|
9278
|
+
"Finished",
|
|
9279
|
+
"Error",
|
|
9280
|
+
"Aborting"
|
|
9281
|
+
]
|
|
9282
|
+
},
|
|
9283
|
+
{
|
|
9284
|
+
"path": "program",
|
|
9285
|
+
"valueType": "string"
|
|
9286
|
+
},
|
|
9287
|
+
{
|
|
9288
|
+
"path": "selectedProgram",
|
|
9289
|
+
"valueType": "string"
|
|
9290
|
+
},
|
|
9291
|
+
{
|
|
9292
|
+
"path": "remainingSeconds",
|
|
9293
|
+
"valueType": "number"
|
|
9294
|
+
},
|
|
9295
|
+
{
|
|
9296
|
+
"path": "delayedStartSeconds",
|
|
9297
|
+
"valueType": "number"
|
|
9298
|
+
},
|
|
9299
|
+
{
|
|
9300
|
+
"path": "progressPercent",
|
|
9301
|
+
"valueType": "number"
|
|
9302
|
+
},
|
|
9303
|
+
{
|
|
9304
|
+
"path": "doorOpen",
|
|
9305
|
+
"valueType": "boolean"
|
|
9306
|
+
},
|
|
9307
|
+
{
|
|
9308
|
+
"path": "doorLocked",
|
|
9309
|
+
"valueType": "boolean"
|
|
9310
|
+
},
|
|
9311
|
+
{
|
|
9312
|
+
"path": "remoteStartAllowed",
|
|
9313
|
+
"valueType": "boolean"
|
|
9314
|
+
},
|
|
9315
|
+
{
|
|
9316
|
+
"path": "remoteControlActive",
|
|
9317
|
+
"valueType": "boolean"
|
|
9318
|
+
},
|
|
9319
|
+
{
|
|
9320
|
+
"path": "localControlActive",
|
|
9321
|
+
"valueType": "boolean"
|
|
9322
|
+
},
|
|
9323
|
+
{
|
|
9324
|
+
"path": "powerOn",
|
|
9325
|
+
"valueType": "boolean"
|
|
9326
|
+
},
|
|
9327
|
+
{
|
|
9328
|
+
"path": "powerState",
|
|
9329
|
+
"valueType": "string"
|
|
9330
|
+
},
|
|
9331
|
+
{
|
|
9332
|
+
"path": "filterCleaningDue",
|
|
9333
|
+
"valueType": "boolean"
|
|
9334
|
+
},
|
|
9335
|
+
{
|
|
9336
|
+
"path": "machineCareDue",
|
|
9337
|
+
"valueType": "boolean"
|
|
9338
|
+
},
|
|
9339
|
+
{
|
|
9340
|
+
"path": "machineCareRemainingRuns",
|
|
9341
|
+
"valueType": "number"
|
|
9342
|
+
},
|
|
9343
|
+
{
|
|
9344
|
+
"path": "halfLoad",
|
|
9345
|
+
"valueType": "boolean"
|
|
9346
|
+
},
|
|
9347
|
+
{
|
|
9348
|
+
"path": "hygienePlus",
|
|
9349
|
+
"valueType": "boolean"
|
|
9350
|
+
},
|
|
9351
|
+
{
|
|
9352
|
+
"path": "extraDry",
|
|
9353
|
+
"valueType": "boolean"
|
|
9354
|
+
},
|
|
9355
|
+
{
|
|
9356
|
+
"path": "intensiveZone",
|
|
9357
|
+
"valueType": "boolean"
|
|
9358
|
+
},
|
|
9359
|
+
{
|
|
9360
|
+
"path": "varioSpeedPlus",
|
|
9361
|
+
"valueType": "boolean"
|
|
9362
|
+
},
|
|
9363
|
+
{
|
|
9364
|
+
"path": "childLock",
|
|
9365
|
+
"valueType": "boolean"
|
|
9366
|
+
},
|
|
9367
|
+
{
|
|
9368
|
+
"path": "errorCode",
|
|
9369
|
+
"valueType": "number"
|
|
9370
|
+
},
|
|
9371
|
+
{
|
|
9372
|
+
"path": "errorLabel",
|
|
9373
|
+
"valueType": "string"
|
|
9374
|
+
}
|
|
9375
|
+
],
|
|
9376
|
+
"doorbell": [{
|
|
9377
|
+
"path": "lastPressedAt",
|
|
9378
|
+
"valueType": "number"
|
|
9379
|
+
}, {
|
|
9380
|
+
"path": "pressCountSinceStart",
|
|
9381
|
+
"valueType": "number"
|
|
9382
|
+
}],
|
|
9383
|
+
"enum-sensor": [{
|
|
9384
|
+
"path": "value",
|
|
9385
|
+
"valueType": "string"
|
|
9386
|
+
}, {
|
|
9387
|
+
"path": "format",
|
|
9388
|
+
"valueType": "enum",
|
|
9389
|
+
"enumValues": [
|
|
9390
|
+
"date",
|
|
9391
|
+
"time",
|
|
9392
|
+
"datetime"
|
|
9393
|
+
]
|
|
9394
|
+
}],
|
|
9395
|
+
"event-emitter": [
|
|
9396
|
+
{
|
|
9397
|
+
"path": "lastEvent.deviceId",
|
|
9398
|
+
"valueType": "number"
|
|
9399
|
+
},
|
|
9400
|
+
{
|
|
9401
|
+
"path": "lastEvent.eventType",
|
|
9402
|
+
"valueType": "string"
|
|
9403
|
+
},
|
|
9404
|
+
{
|
|
9405
|
+
"path": "lastEvent.timestamp",
|
|
9406
|
+
"valueType": "number"
|
|
9407
|
+
},
|
|
9408
|
+
{
|
|
9409
|
+
"path": "lastEvent.seq",
|
|
9410
|
+
"valueType": "number"
|
|
9411
|
+
},
|
|
9412
|
+
{
|
|
9413
|
+
"path": "eventCountSinceStart",
|
|
9414
|
+
"valueType": "number"
|
|
9415
|
+
}
|
|
9416
|
+
],
|
|
9417
|
+
"fan-control": [
|
|
9418
|
+
{
|
|
9419
|
+
"path": "percentage",
|
|
9420
|
+
"valueType": "number"
|
|
9421
|
+
},
|
|
9422
|
+
{
|
|
9423
|
+
"path": "percentageStep",
|
|
9424
|
+
"valueType": "number"
|
|
9425
|
+
},
|
|
9426
|
+
{
|
|
9427
|
+
"path": "preset",
|
|
9428
|
+
"valueType": "string"
|
|
9429
|
+
},
|
|
9430
|
+
{
|
|
9431
|
+
"path": "direction",
|
|
9432
|
+
"valueType": "enum",
|
|
9433
|
+
"enumValues": ["forward", "reverse"]
|
|
9434
|
+
},
|
|
9435
|
+
{
|
|
9436
|
+
"path": "oscillating",
|
|
9437
|
+
"valueType": "boolean"
|
|
9438
|
+
}
|
|
9439
|
+
],
|
|
9440
|
+
"feature-probe": [
|
|
9441
|
+
{
|
|
9442
|
+
"path": "deviceType",
|
|
9443
|
+
"valueType": "string"
|
|
9444
|
+
},
|
|
9445
|
+
{
|
|
9446
|
+
"path": "model",
|
|
9447
|
+
"valueType": "string"
|
|
9448
|
+
},
|
|
9449
|
+
{
|
|
9450
|
+
"path": "channelCount",
|
|
9451
|
+
"valueType": "number"
|
|
9452
|
+
},
|
|
9453
|
+
{
|
|
9454
|
+
"path": "lastProbedAt",
|
|
9455
|
+
"valueType": "number"
|
|
9456
|
+
}
|
|
9457
|
+
],
|
|
9458
|
+
"flood": [{
|
|
9459
|
+
"path": "flooded",
|
|
9460
|
+
"valueType": "boolean"
|
|
9461
|
+
}],
|
|
9462
|
+
"gas": [{
|
|
9463
|
+
"path": "detected",
|
|
9464
|
+
"valueType": "boolean"
|
|
9465
|
+
}],
|
|
9466
|
+
"heating-valve": [{
|
|
9467
|
+
"path": "position",
|
|
9468
|
+
"valueType": "number"
|
|
9469
|
+
}],
|
|
9470
|
+
"humidifier": [
|
|
9471
|
+
{
|
|
9472
|
+
"path": "on",
|
|
9473
|
+
"valueType": "boolean"
|
|
9474
|
+
},
|
|
9475
|
+
{
|
|
9476
|
+
"path": "currentHumidity",
|
|
9477
|
+
"valueType": "number"
|
|
9478
|
+
},
|
|
9479
|
+
{
|
|
9480
|
+
"path": "targetHumidity",
|
|
9481
|
+
"valueType": "number"
|
|
9482
|
+
},
|
|
9483
|
+
{
|
|
9484
|
+
"path": "mode",
|
|
9485
|
+
"valueType": "string"
|
|
9486
|
+
},
|
|
9487
|
+
{
|
|
9488
|
+
"path": "action",
|
|
9489
|
+
"valueType": "string"
|
|
9490
|
+
},
|
|
9491
|
+
{
|
|
9492
|
+
"path": "minHumidity",
|
|
9493
|
+
"valueType": "number"
|
|
9494
|
+
},
|
|
9495
|
+
{
|
|
9496
|
+
"path": "maxHumidity",
|
|
9497
|
+
"valueType": "number"
|
|
9498
|
+
}
|
|
9499
|
+
],
|
|
9500
|
+
"humidity-sensor": [
|
|
9501
|
+
{
|
|
9502
|
+
"path": "percent",
|
|
9503
|
+
"valueType": "number"
|
|
9504
|
+
},
|
|
9505
|
+
{
|
|
9506
|
+
"path": "unit",
|
|
9507
|
+
"valueType": "string"
|
|
9508
|
+
},
|
|
9509
|
+
{
|
|
9510
|
+
"path": "precision",
|
|
9511
|
+
"valueType": "number"
|
|
9512
|
+
}
|
|
9513
|
+
],
|
|
9514
|
+
"image": [{
|
|
9515
|
+
"path": "url",
|
|
9516
|
+
"valueType": "string"
|
|
9517
|
+
}, {
|
|
9518
|
+
"path": "lastUpdated",
|
|
9519
|
+
"valueType": "number"
|
|
9520
|
+
}],
|
|
9521
|
+
"image-settings": [
|
|
9522
|
+
{
|
|
9523
|
+
"path": "brightness",
|
|
9524
|
+
"valueType": "number"
|
|
9525
|
+
},
|
|
9526
|
+
{
|
|
9527
|
+
"path": "contrast",
|
|
9528
|
+
"valueType": "number"
|
|
9529
|
+
},
|
|
9530
|
+
{
|
|
9531
|
+
"path": "saturation",
|
|
9532
|
+
"valueType": "number"
|
|
9533
|
+
},
|
|
9534
|
+
{
|
|
9535
|
+
"path": "sharpness",
|
|
9536
|
+
"valueType": "number"
|
|
9537
|
+
},
|
|
9538
|
+
{
|
|
9539
|
+
"path": "mirror",
|
|
9540
|
+
"valueType": "boolean"
|
|
9541
|
+
},
|
|
9542
|
+
{
|
|
9543
|
+
"path": "flip",
|
|
9544
|
+
"valueType": "boolean"
|
|
9545
|
+
},
|
|
9546
|
+
{
|
|
9547
|
+
"path": "rotate",
|
|
9548
|
+
"valueType": "enum",
|
|
9549
|
+
"enumValues": [
|
|
9550
|
+
"0",
|
|
9551
|
+
"90",
|
|
9552
|
+
"180",
|
|
9553
|
+
"270"
|
|
9554
|
+
]
|
|
9555
|
+
},
|
|
9556
|
+
{
|
|
9557
|
+
"path": "whiteBalance",
|
|
9558
|
+
"valueType": "enum",
|
|
9559
|
+
"enumValues": ["auto", "manual"]
|
|
9560
|
+
},
|
|
9561
|
+
{
|
|
9562
|
+
"path": "warmth",
|
|
9563
|
+
"valueType": "number"
|
|
9564
|
+
},
|
|
9565
|
+
{
|
|
9566
|
+
"path": "exposureMode",
|
|
9567
|
+
"valueType": "enum",
|
|
9568
|
+
"enumValues": ["auto", "manual"]
|
|
9569
|
+
},
|
|
9570
|
+
{
|
|
9571
|
+
"path": "backlightMode",
|
|
9572
|
+
"valueType": "enum",
|
|
9573
|
+
"enumValues": [
|
|
9574
|
+
"off",
|
|
9575
|
+
"blc",
|
|
9576
|
+
"wdr",
|
|
9577
|
+
"hlc"
|
|
9578
|
+
]
|
|
9579
|
+
}
|
|
9580
|
+
],
|
|
9581
|
+
"intercom": [
|
|
9582
|
+
{
|
|
9583
|
+
"path": "talking",
|
|
9584
|
+
"valueType": "boolean"
|
|
9585
|
+
},
|
|
9586
|
+
{
|
|
9587
|
+
"path": "lastSessionAt",
|
|
9588
|
+
"valueType": "number"
|
|
9589
|
+
},
|
|
9590
|
+
{
|
|
9591
|
+
"path": "ability.sampleRate",
|
|
9592
|
+
"valueType": "number"
|
|
9593
|
+
},
|
|
9594
|
+
{
|
|
9595
|
+
"path": "ability.duplex",
|
|
9596
|
+
"valueType": "enum",
|
|
9597
|
+
"enumValues": ["half", "full"]
|
|
9598
|
+
},
|
|
9599
|
+
{
|
|
9600
|
+
"path": "ability.maxBacklogMs",
|
|
9601
|
+
"valueType": "number"
|
|
9602
|
+
}
|
|
9603
|
+
],
|
|
9604
|
+
"lawn-mower-control": [
|
|
9605
|
+
{
|
|
9606
|
+
"path": "activity",
|
|
9607
|
+
"valueType": "enum",
|
|
9608
|
+
"enumValues": [
|
|
9609
|
+
"idle",
|
|
9610
|
+
"mowing",
|
|
9611
|
+
"paused",
|
|
9612
|
+
"docked",
|
|
9613
|
+
"error"
|
|
9614
|
+
]
|
|
9615
|
+
},
|
|
9616
|
+
{
|
|
9617
|
+
"path": "batteryLevel",
|
|
9618
|
+
"valueType": "number"
|
|
9619
|
+
},
|
|
9620
|
+
{
|
|
9621
|
+
"path": "progressPercent",
|
|
9622
|
+
"valueType": "number"
|
|
9623
|
+
},
|
|
9624
|
+
{
|
|
9625
|
+
"path": "currentCode",
|
|
9626
|
+
"valueType": "number"
|
|
9627
|
+
},
|
|
9628
|
+
{
|
|
9629
|
+
"path": "currentCodeLabel",
|
|
9630
|
+
"valueType": "string"
|
|
9631
|
+
},
|
|
9632
|
+
{
|
|
9633
|
+
"path": "severity",
|
|
9634
|
+
"valueType": "enum",
|
|
9635
|
+
"enumValues": [
|
|
9636
|
+
"info",
|
|
9637
|
+
"warning",
|
|
9638
|
+
"error"
|
|
9639
|
+
]
|
|
9640
|
+
}
|
|
9641
|
+
],
|
|
9642
|
+
"lock-control": [{
|
|
9643
|
+
"path": "state",
|
|
9644
|
+
"valueType": "enum",
|
|
9645
|
+
"enumValues": [
|
|
9646
|
+
"locked",
|
|
9647
|
+
"unlocked",
|
|
9648
|
+
"locking",
|
|
9649
|
+
"unlocking",
|
|
9650
|
+
"jammed"
|
|
9651
|
+
]
|
|
9652
|
+
}],
|
|
9653
|
+
"media-player": [
|
|
9654
|
+
{
|
|
9655
|
+
"path": "state",
|
|
9656
|
+
"valueType": "enum",
|
|
9657
|
+
"enumValues": [
|
|
9658
|
+
"off",
|
|
9659
|
+
"on",
|
|
9660
|
+
"idle",
|
|
9661
|
+
"playing",
|
|
9662
|
+
"paused",
|
|
9663
|
+
"buffering",
|
|
9664
|
+
"standby"
|
|
9665
|
+
]
|
|
9666
|
+
},
|
|
9667
|
+
{
|
|
9668
|
+
"path": "volumeLevel",
|
|
9669
|
+
"valueType": "number"
|
|
9670
|
+
},
|
|
9671
|
+
{
|
|
9672
|
+
"path": "isMuted",
|
|
9673
|
+
"valueType": "boolean"
|
|
9674
|
+
},
|
|
9675
|
+
{
|
|
9676
|
+
"path": "source",
|
|
9677
|
+
"valueType": "string"
|
|
9678
|
+
},
|
|
9679
|
+
{
|
|
9680
|
+
"path": "currentMedia.type",
|
|
9681
|
+
"valueType": "string"
|
|
9682
|
+
},
|
|
9683
|
+
{
|
|
9684
|
+
"path": "currentMedia.title",
|
|
9685
|
+
"valueType": "string"
|
|
9686
|
+
},
|
|
9687
|
+
{
|
|
9688
|
+
"path": "currentMedia.artist",
|
|
9689
|
+
"valueType": "string"
|
|
9690
|
+
},
|
|
9691
|
+
{
|
|
9692
|
+
"path": "currentMedia.album",
|
|
9693
|
+
"valueType": "string"
|
|
9694
|
+
},
|
|
9695
|
+
{
|
|
9696
|
+
"path": "currentMedia.imageUrl",
|
|
9697
|
+
"valueType": "string"
|
|
9698
|
+
},
|
|
9699
|
+
{
|
|
9700
|
+
"path": "positionMs",
|
|
9701
|
+
"valueType": "number"
|
|
9702
|
+
},
|
|
9703
|
+
{
|
|
9704
|
+
"path": "durationMs",
|
|
9705
|
+
"valueType": "number"
|
|
9706
|
+
},
|
|
9707
|
+
{
|
|
9708
|
+
"path": "shuffle",
|
|
9709
|
+
"valueType": "boolean"
|
|
9710
|
+
},
|
|
9711
|
+
{
|
|
9712
|
+
"path": "repeat",
|
|
9713
|
+
"valueType": "enum",
|
|
9714
|
+
"enumValues": [
|
|
9715
|
+
"off",
|
|
9716
|
+
"all",
|
|
9717
|
+
"one"
|
|
9718
|
+
]
|
|
9719
|
+
}
|
|
9720
|
+
],
|
|
9721
|
+
"motion": [
|
|
9722
|
+
{
|
|
9723
|
+
"path": "detected",
|
|
9724
|
+
"valueType": "boolean"
|
|
9725
|
+
},
|
|
9726
|
+
{
|
|
9727
|
+
"path": "lastDetectedAt",
|
|
9728
|
+
"valueType": "number"
|
|
9729
|
+
},
|
|
9730
|
+
{
|
|
9731
|
+
"path": "autoClearAfterMs",
|
|
9732
|
+
"valueType": "number"
|
|
9733
|
+
}
|
|
9734
|
+
],
|
|
9735
|
+
"motion-trigger": [{
|
|
9736
|
+
"path": "enabled",
|
|
9737
|
+
"valueType": "boolean"
|
|
9738
|
+
}],
|
|
9739
|
+
"motion-zones": [{
|
|
9740
|
+
"path": "enabled",
|
|
9741
|
+
"valueType": "boolean"
|
|
9742
|
+
}, {
|
|
9743
|
+
"path": "sensitivity",
|
|
9744
|
+
"valueType": "number"
|
|
9745
|
+
}],
|
|
9746
|
+
"mqtt-broker": [{
|
|
9747
|
+
"path": "brokerCount",
|
|
9748
|
+
"valueType": "number"
|
|
9749
|
+
}, {
|
|
9750
|
+
"path": "embeddedRunning",
|
|
9751
|
+
"valueType": "boolean"
|
|
9752
|
+
}],
|
|
9753
|
+
"native-object-detection": [{
|
|
9754
|
+
"path": "enabled",
|
|
9755
|
+
"valueType": "boolean"
|
|
9756
|
+
}],
|
|
9757
|
+
"navigation": [
|
|
9758
|
+
{
|
|
9759
|
+
"path": "mode",
|
|
9760
|
+
"valueType": "enum",
|
|
9761
|
+
"enumValues": [
|
|
9762
|
+
"idle",
|
|
9763
|
+
"cleaning",
|
|
9764
|
+
"spot",
|
|
9765
|
+
"following",
|
|
9766
|
+
"goto",
|
|
9767
|
+
"returning",
|
|
9768
|
+
"paused",
|
|
9769
|
+
"unknown"
|
|
9770
|
+
]
|
|
9771
|
+
},
|
|
9772
|
+
{
|
|
9773
|
+
"path": "following",
|
|
9774
|
+
"valueType": "boolean"
|
|
9775
|
+
},
|
|
9776
|
+
{
|
|
9777
|
+
"path": "flash",
|
|
9778
|
+
"valueType": "boolean"
|
|
9779
|
+
},
|
|
9780
|
+
{
|
|
9781
|
+
"path": "lightMode",
|
|
9782
|
+
"valueType": "enum",
|
|
9783
|
+
"enumValues": ["auto", "manual"]
|
|
9784
|
+
},
|
|
9785
|
+
{
|
|
9786
|
+
"path": "lightLevel",
|
|
9787
|
+
"valueType": "number"
|
|
9788
|
+
}
|
|
9789
|
+
],
|
|
9790
|
+
"network-link": [
|
|
9791
|
+
{
|
|
9792
|
+
"path": "type",
|
|
9793
|
+
"valueType": "enum",
|
|
9794
|
+
"enumValues": [
|
|
9795
|
+
"wifi",
|
|
9796
|
+
"ethernet",
|
|
9797
|
+
"cellular",
|
|
9798
|
+
"unknown"
|
|
9799
|
+
]
|
|
9800
|
+
},
|
|
9801
|
+
{
|
|
9802
|
+
"path": "signalPercent",
|
|
9803
|
+
"valueType": "number"
|
|
9804
|
+
},
|
|
9805
|
+
{
|
|
9806
|
+
"path": "rssiDbm",
|
|
9807
|
+
"valueType": "number"
|
|
9808
|
+
},
|
|
9809
|
+
{
|
|
9810
|
+
"path": "ssid",
|
|
9811
|
+
"valueType": "string"
|
|
9812
|
+
},
|
|
9813
|
+
{
|
|
9814
|
+
"path": "lastUpdated",
|
|
9815
|
+
"valueType": "number"
|
|
9816
|
+
}
|
|
9817
|
+
],
|
|
9818
|
+
"notifier": [
|
|
9819
|
+
{
|
|
9820
|
+
"path": "lastSentAt",
|
|
9821
|
+
"valueType": "number"
|
|
9822
|
+
},
|
|
9823
|
+
{
|
|
9824
|
+
"path": "lastError",
|
|
9825
|
+
"valueType": "string"
|
|
9826
|
+
},
|
|
9827
|
+
{
|
|
9828
|
+
"path": "queueDepth",
|
|
9829
|
+
"valueType": "number"
|
|
9830
|
+
},
|
|
9831
|
+
{
|
|
9832
|
+
"path": "supports.image",
|
|
9833
|
+
"valueType": "boolean"
|
|
9834
|
+
},
|
|
9835
|
+
{
|
|
9836
|
+
"path": "supports.priority",
|
|
9837
|
+
"valueType": "boolean"
|
|
9838
|
+
},
|
|
9839
|
+
{
|
|
9840
|
+
"path": "supports.data",
|
|
9841
|
+
"valueType": "boolean"
|
|
9842
|
+
},
|
|
9843
|
+
{
|
|
9844
|
+
"path": "supports.actions",
|
|
9845
|
+
"valueType": "boolean"
|
|
9846
|
+
},
|
|
9847
|
+
{
|
|
9848
|
+
"path": "supports.recipients",
|
|
9849
|
+
"valueType": "boolean"
|
|
9850
|
+
}
|
|
9851
|
+
],
|
|
9852
|
+
"numeric-sensor": [
|
|
9853
|
+
{
|
|
9854
|
+
"path": "value",
|
|
9855
|
+
"valueType": "number"
|
|
9856
|
+
},
|
|
9857
|
+
{
|
|
9858
|
+
"path": "unit",
|
|
9859
|
+
"valueType": "string"
|
|
9860
|
+
},
|
|
9861
|
+
{
|
|
9862
|
+
"path": "precision",
|
|
9863
|
+
"valueType": "number"
|
|
9864
|
+
}
|
|
9865
|
+
],
|
|
9866
|
+
"pet-feeder": [
|
|
9867
|
+
{
|
|
9868
|
+
"path": "foodLevel",
|
|
9869
|
+
"valueType": "number"
|
|
9870
|
+
},
|
|
9871
|
+
{
|
|
9872
|
+
"path": "food1",
|
|
9873
|
+
"valueType": "number"
|
|
9874
|
+
},
|
|
9875
|
+
{
|
|
9876
|
+
"path": "food2",
|
|
9877
|
+
"valueType": "number"
|
|
9878
|
+
},
|
|
9879
|
+
{
|
|
9880
|
+
"path": "lowFood",
|
|
9881
|
+
"valueType": "boolean"
|
|
9882
|
+
},
|
|
9883
|
+
{
|
|
9884
|
+
"path": "batteryPower",
|
|
9885
|
+
"valueType": "number"
|
|
9886
|
+
},
|
|
9887
|
+
{
|
|
9888
|
+
"path": "desiccantLeftDays",
|
|
9889
|
+
"valueType": "number"
|
|
9890
|
+
},
|
|
9891
|
+
{
|
|
9892
|
+
"path": "feeding",
|
|
9893
|
+
"valueType": "boolean"
|
|
9894
|
+
},
|
|
9895
|
+
{
|
|
9896
|
+
"path": "status",
|
|
9897
|
+
"valueType": "enum",
|
|
9898
|
+
"enumValues": [
|
|
9899
|
+
"normal",
|
|
9900
|
+
"offline",
|
|
9901
|
+
"on_batteries"
|
|
9902
|
+
]
|
|
9903
|
+
},
|
|
9904
|
+
{
|
|
9905
|
+
"path": "error",
|
|
9906
|
+
"valueType": "string"
|
|
9907
|
+
},
|
|
9908
|
+
{
|
|
9909
|
+
"path": "errorCode",
|
|
9910
|
+
"valueType": "number"
|
|
9911
|
+
},
|
|
9912
|
+
{
|
|
9913
|
+
"path": "isDualHopper",
|
|
9914
|
+
"valueType": "boolean"
|
|
9915
|
+
},
|
|
9916
|
+
{
|
|
9917
|
+
"path": "childLock",
|
|
9918
|
+
"valueType": "boolean"
|
|
9919
|
+
},
|
|
9920
|
+
{
|
|
9921
|
+
"path": "indicatorLight",
|
|
9922
|
+
"valueType": "boolean"
|
|
9923
|
+
},
|
|
9924
|
+
{
|
|
9925
|
+
"path": "feedSound",
|
|
9926
|
+
"valueType": "boolean"
|
|
9927
|
+
},
|
|
9928
|
+
{
|
|
9929
|
+
"path": "volume",
|
|
9930
|
+
"valueType": "number"
|
|
9931
|
+
}
|
|
9932
|
+
],
|
|
9933
|
+
"power-meter": [
|
|
9934
|
+
{
|
|
9935
|
+
"path": "watts",
|
|
9936
|
+
"valueType": "number"
|
|
9937
|
+
},
|
|
9938
|
+
{
|
|
9939
|
+
"path": "kwhTotal",
|
|
9940
|
+
"valueType": "number"
|
|
9941
|
+
},
|
|
9942
|
+
{
|
|
9943
|
+
"path": "volts",
|
|
9944
|
+
"valueType": "number"
|
|
9945
|
+
},
|
|
9946
|
+
{
|
|
9947
|
+
"path": "amps",
|
|
9948
|
+
"valueType": "number"
|
|
9949
|
+
},
|
|
9950
|
+
{
|
|
9951
|
+
"path": "va",
|
|
9952
|
+
"valueType": "number"
|
|
9953
|
+
},
|
|
9954
|
+
{
|
|
9955
|
+
"path": "powerFactor",
|
|
9956
|
+
"valueType": "number"
|
|
9957
|
+
},
|
|
9958
|
+
{
|
|
9959
|
+
"path": "unit",
|
|
9960
|
+
"valueType": "string"
|
|
9961
|
+
},
|
|
9962
|
+
{
|
|
9963
|
+
"path": "precision",
|
|
9964
|
+
"valueType": "number"
|
|
9965
|
+
}
|
|
9966
|
+
],
|
|
9967
|
+
"presence": [
|
|
9968
|
+
{
|
|
9969
|
+
"path": "state",
|
|
9970
|
+
"valueType": "string"
|
|
9971
|
+
},
|
|
9972
|
+
{
|
|
9973
|
+
"path": "location",
|
|
9974
|
+
"valueType": "string"
|
|
9975
|
+
},
|
|
9976
|
+
{
|
|
9977
|
+
"path": "gps.latitude",
|
|
9978
|
+
"valueType": "number"
|
|
9979
|
+
},
|
|
9980
|
+
{
|
|
9981
|
+
"path": "gps.longitude",
|
|
9982
|
+
"valueType": "number"
|
|
9983
|
+
},
|
|
9984
|
+
{
|
|
9985
|
+
"path": "gps.accuracyMeters",
|
|
9986
|
+
"valueType": "number"
|
|
9987
|
+
},
|
|
9988
|
+
{
|
|
9989
|
+
"path": "batteryPercent",
|
|
9990
|
+
"valueType": "number"
|
|
9991
|
+
}
|
|
9992
|
+
],
|
|
9993
|
+
"pressure-sensor": [
|
|
9994
|
+
{
|
|
9995
|
+
"path": "hpa",
|
|
9996
|
+
"valueType": "number"
|
|
9997
|
+
},
|
|
9998
|
+
{
|
|
9999
|
+
"path": "unit",
|
|
10000
|
+
"valueType": "string"
|
|
10001
|
+
},
|
|
10002
|
+
{
|
|
10003
|
+
"path": "precision",
|
|
10004
|
+
"valueType": "number"
|
|
10005
|
+
}
|
|
10006
|
+
],
|
|
10007
|
+
"privacy-mask": [{
|
|
10008
|
+
"path": "enabled",
|
|
10009
|
+
"valueType": "boolean"
|
|
10010
|
+
}, {
|
|
10011
|
+
"path": "audioEnabled",
|
|
10012
|
+
"valueType": "boolean"
|
|
10013
|
+
}],
|
|
10014
|
+
"ptz": [
|
|
10015
|
+
{
|
|
10016
|
+
"path": "pan",
|
|
10017
|
+
"valueType": "number"
|
|
10018
|
+
},
|
|
10019
|
+
{
|
|
10020
|
+
"path": "tilt",
|
|
10021
|
+
"valueType": "number"
|
|
10022
|
+
},
|
|
10023
|
+
{
|
|
10024
|
+
"path": "zoom",
|
|
10025
|
+
"valueType": "number"
|
|
10026
|
+
},
|
|
10027
|
+
{
|
|
10028
|
+
"path": "autofocus",
|
|
10029
|
+
"valueType": "boolean"
|
|
10030
|
+
}
|
|
10031
|
+
],
|
|
10032
|
+
"ptz-autotrack": [
|
|
10033
|
+
{
|
|
10034
|
+
"path": "enabled",
|
|
10035
|
+
"valueType": "boolean"
|
|
10036
|
+
},
|
|
10037
|
+
{
|
|
10038
|
+
"path": "currentSettings.targetType",
|
|
10039
|
+
"valueType": "string"
|
|
10040
|
+
},
|
|
10041
|
+
{
|
|
10042
|
+
"path": "currentSettings.stopDelaySeconds",
|
|
10043
|
+
"valueType": "number"
|
|
10044
|
+
},
|
|
10045
|
+
{
|
|
10046
|
+
"path": "currentSettings.disappearDelaySeconds",
|
|
10047
|
+
"valueType": "number"
|
|
10048
|
+
}
|
|
10049
|
+
],
|
|
10050
|
+
"recording-archive": [
|
|
10051
|
+
{
|
|
10052
|
+
"path": "deviceId",
|
|
10053
|
+
"valueType": "number"
|
|
10054
|
+
},
|
|
10055
|
+
{
|
|
10056
|
+
"path": "enabled",
|
|
10057
|
+
"valueType": "boolean"
|
|
10058
|
+
},
|
|
10059
|
+
{
|
|
10060
|
+
"path": "activeMode",
|
|
10061
|
+
"valueType": "enum",
|
|
10062
|
+
"enumValues": [
|
|
10063
|
+
"off",
|
|
10064
|
+
"events",
|
|
10065
|
+
"continuous",
|
|
10066
|
+
"on-device-decision"
|
|
10067
|
+
]
|
|
10068
|
+
},
|
|
10069
|
+
{
|
|
10070
|
+
"path": "nodeId",
|
|
10071
|
+
"valueType": "string"
|
|
10072
|
+
},
|
|
10073
|
+
{
|
|
10074
|
+
"path": "storageBytes",
|
|
10075
|
+
"valueType": "number"
|
|
10076
|
+
}
|
|
10077
|
+
],
|
|
10078
|
+
"recording-onboard": [
|
|
10079
|
+
{
|
|
10080
|
+
"path": "primaryTrackId",
|
|
10081
|
+
"valueType": "string"
|
|
10082
|
+
},
|
|
10083
|
+
{
|
|
10084
|
+
"path": "enabled",
|
|
10085
|
+
"valueType": "boolean"
|
|
10086
|
+
},
|
|
10087
|
+
{
|
|
10088
|
+
"path": "overwriteWhenFull",
|
|
10089
|
+
"valueType": "boolean"
|
|
10090
|
+
},
|
|
10091
|
+
{
|
|
10092
|
+
"path": "preRecordSec",
|
|
10093
|
+
"valueType": "number"
|
|
10094
|
+
},
|
|
10095
|
+
{
|
|
10096
|
+
"path": "postRecordSec",
|
|
10097
|
+
"valueType": "number"
|
|
10098
|
+
},
|
|
10099
|
+
{
|
|
10100
|
+
"path": "segmentMinutes",
|
|
10101
|
+
"valueType": "number"
|
|
10102
|
+
},
|
|
10103
|
+
{
|
|
10104
|
+
"path": "unreadableWindows",
|
|
10105
|
+
"valueType": "number"
|
|
10106
|
+
},
|
|
10107
|
+
{
|
|
10108
|
+
"path": "recordingToNowhere",
|
|
10109
|
+
"valueType": "boolean"
|
|
10110
|
+
}
|
|
10111
|
+
],
|
|
10112
|
+
"recording-signal": [{
|
|
10113
|
+
"path": "active",
|
|
10114
|
+
"valueType": "boolean"
|
|
10115
|
+
}, {
|
|
10116
|
+
"path": "reason",
|
|
10117
|
+
"valueType": "string"
|
|
10118
|
+
}],
|
|
10119
|
+
"running-state": [
|
|
10120
|
+
{
|
|
10121
|
+
"path": "running",
|
|
10122
|
+
"valueType": "boolean"
|
|
10123
|
+
},
|
|
10124
|
+
{
|
|
10125
|
+
"path": "since",
|
|
10126
|
+
"valueType": "number"
|
|
10127
|
+
},
|
|
10128
|
+
{
|
|
10129
|
+
"path": "source",
|
|
10130
|
+
"valueType": "enum",
|
|
10131
|
+
"enumValues": ["native", "assigned"]
|
|
10132
|
+
},
|
|
10133
|
+
{
|
|
10134
|
+
"path": "phase",
|
|
10135
|
+
"valueType": "string"
|
|
10136
|
+
}
|
|
10137
|
+
],
|
|
10138
|
+
"script-runner": [
|
|
10139
|
+
{
|
|
10140
|
+
"path": "isRunning",
|
|
10141
|
+
"valueType": "boolean"
|
|
10142
|
+
},
|
|
10143
|
+
{
|
|
10144
|
+
"path": "lastRunAt",
|
|
10145
|
+
"valueType": "number"
|
|
10146
|
+
},
|
|
10147
|
+
{
|
|
10148
|
+
"path": "lastRunSuccess",
|
|
10149
|
+
"valueType": "boolean"
|
|
10150
|
+
},
|
|
10151
|
+
{
|
|
10152
|
+
"path": "lastError",
|
|
10153
|
+
"valueType": "string"
|
|
10154
|
+
}
|
|
10155
|
+
],
|
|
10156
|
+
"smoke": [{
|
|
10157
|
+
"path": "detected",
|
|
10158
|
+
"valueType": "boolean"
|
|
10159
|
+
}],
|
|
10160
|
+
"snapshot": [
|
|
10161
|
+
{
|
|
10162
|
+
"path": "lastCapturedAt",
|
|
10163
|
+
"valueType": "number"
|
|
10164
|
+
},
|
|
10165
|
+
{
|
|
10166
|
+
"path": "cacheAgeMs",
|
|
10167
|
+
"valueType": "number"
|
|
10168
|
+
},
|
|
10169
|
+
{
|
|
10170
|
+
"path": "lastBytes",
|
|
10171
|
+
"valueType": "number"
|
|
10172
|
+
},
|
|
10173
|
+
{
|
|
10174
|
+
"path": "lastStreamId",
|
|
10175
|
+
"valueType": "string"
|
|
10176
|
+
}
|
|
10177
|
+
],
|
|
10178
|
+
"stream-params": [
|
|
10179
|
+
{
|
|
10180
|
+
"path": "main.width",
|
|
10181
|
+
"valueType": "number"
|
|
10182
|
+
},
|
|
10183
|
+
{
|
|
10184
|
+
"path": "main.height",
|
|
10185
|
+
"valueType": "number"
|
|
10186
|
+
},
|
|
10187
|
+
{
|
|
10188
|
+
"path": "main.codec",
|
|
10189
|
+
"valueType": "enum",
|
|
10190
|
+
"enumValues": ["h264", "h265"]
|
|
10191
|
+
},
|
|
10192
|
+
{
|
|
10193
|
+
"path": "main.framerate",
|
|
10194
|
+
"valueType": "number"
|
|
10195
|
+
},
|
|
10196
|
+
{
|
|
10197
|
+
"path": "main.bitrate",
|
|
10198
|
+
"valueType": "number"
|
|
10199
|
+
},
|
|
10200
|
+
{
|
|
10201
|
+
"path": "main.bitrateMode",
|
|
10202
|
+
"valueType": "enum",
|
|
10203
|
+
"enumValues": ["vbr", "cbr"]
|
|
10204
|
+
},
|
|
10205
|
+
{
|
|
10206
|
+
"path": "main.encoderProfile",
|
|
10207
|
+
"valueType": "enum",
|
|
10208
|
+
"enumValues": [
|
|
10209
|
+
"high",
|
|
10210
|
+
"main",
|
|
10211
|
+
"baseline"
|
|
10212
|
+
]
|
|
10213
|
+
},
|
|
10214
|
+
{
|
|
10215
|
+
"path": "main.gop",
|
|
10216
|
+
"valueType": "number"
|
|
10217
|
+
},
|
|
10218
|
+
{
|
|
10219
|
+
"path": "main.audio",
|
|
10220
|
+
"valueType": "boolean"
|
|
10221
|
+
},
|
|
10222
|
+
{
|
|
10223
|
+
"path": "sub.width",
|
|
10224
|
+
"valueType": "number"
|
|
10225
|
+
},
|
|
10226
|
+
{
|
|
10227
|
+
"path": "sub.height",
|
|
10228
|
+
"valueType": "number"
|
|
10229
|
+
},
|
|
10230
|
+
{
|
|
10231
|
+
"path": "sub.codec",
|
|
10232
|
+
"valueType": "enum",
|
|
10233
|
+
"enumValues": ["h264", "h265"]
|
|
10234
|
+
},
|
|
10235
|
+
{
|
|
10236
|
+
"path": "sub.framerate",
|
|
10237
|
+
"valueType": "number"
|
|
10238
|
+
},
|
|
10239
|
+
{
|
|
10240
|
+
"path": "sub.bitrate",
|
|
10241
|
+
"valueType": "number"
|
|
10242
|
+
},
|
|
10243
|
+
{
|
|
10244
|
+
"path": "sub.bitrateMode",
|
|
10245
|
+
"valueType": "enum",
|
|
10246
|
+
"enumValues": ["vbr", "cbr"]
|
|
10247
|
+
},
|
|
10248
|
+
{
|
|
10249
|
+
"path": "sub.encoderProfile",
|
|
10250
|
+
"valueType": "enum",
|
|
10251
|
+
"enumValues": [
|
|
10252
|
+
"high",
|
|
10253
|
+
"main",
|
|
10254
|
+
"baseline"
|
|
10255
|
+
]
|
|
10256
|
+
},
|
|
10257
|
+
{
|
|
10258
|
+
"path": "sub.gop",
|
|
10259
|
+
"valueType": "number"
|
|
10260
|
+
},
|
|
10261
|
+
{
|
|
10262
|
+
"path": "sub.audio",
|
|
10263
|
+
"valueType": "boolean"
|
|
10264
|
+
},
|
|
10265
|
+
{
|
|
10266
|
+
"path": "ext.width",
|
|
10267
|
+
"valueType": "number"
|
|
10268
|
+
},
|
|
10269
|
+
{
|
|
10270
|
+
"path": "ext.height",
|
|
10271
|
+
"valueType": "number"
|
|
10272
|
+
},
|
|
10273
|
+
{
|
|
10274
|
+
"path": "ext.codec",
|
|
10275
|
+
"valueType": "enum",
|
|
10276
|
+
"enumValues": ["h264", "h265"]
|
|
10277
|
+
},
|
|
10278
|
+
{
|
|
10279
|
+
"path": "ext.framerate",
|
|
10280
|
+
"valueType": "number"
|
|
10281
|
+
},
|
|
10282
|
+
{
|
|
10283
|
+
"path": "ext.bitrate",
|
|
10284
|
+
"valueType": "number"
|
|
10285
|
+
},
|
|
10286
|
+
{
|
|
10287
|
+
"path": "ext.bitrateMode",
|
|
10288
|
+
"valueType": "enum",
|
|
10289
|
+
"enumValues": ["vbr", "cbr"]
|
|
10290
|
+
},
|
|
10291
|
+
{
|
|
10292
|
+
"path": "ext.encoderProfile",
|
|
10293
|
+
"valueType": "enum",
|
|
10294
|
+
"enumValues": [
|
|
10295
|
+
"high",
|
|
10296
|
+
"main",
|
|
10297
|
+
"baseline"
|
|
10298
|
+
]
|
|
10299
|
+
},
|
|
10300
|
+
{
|
|
10301
|
+
"path": "ext.gop",
|
|
10302
|
+
"valueType": "number"
|
|
10303
|
+
},
|
|
10304
|
+
{
|
|
10305
|
+
"path": "ext.audio",
|
|
10306
|
+
"valueType": "boolean"
|
|
10307
|
+
}
|
|
10308
|
+
],
|
|
10309
|
+
"switch": [{
|
|
10310
|
+
"path": "on",
|
|
10311
|
+
"valueType": "boolean"
|
|
10312
|
+
}],
|
|
10313
|
+
"tamper": [{
|
|
10314
|
+
"path": "tampered",
|
|
10315
|
+
"valueType": "boolean"
|
|
10316
|
+
}],
|
|
10317
|
+
"temperature-sensor": [
|
|
10318
|
+
{
|
|
10319
|
+
"path": "celsius",
|
|
10320
|
+
"valueType": "number"
|
|
10321
|
+
},
|
|
10322
|
+
{
|
|
10323
|
+
"path": "unit",
|
|
10324
|
+
"valueType": "string"
|
|
10325
|
+
},
|
|
10326
|
+
{
|
|
10327
|
+
"path": "precision",
|
|
10328
|
+
"valueType": "number"
|
|
10329
|
+
}
|
|
10330
|
+
],
|
|
10331
|
+
"update": [
|
|
10332
|
+
{
|
|
10333
|
+
"path": "currentVersion",
|
|
10334
|
+
"valueType": "string"
|
|
10335
|
+
},
|
|
10336
|
+
{
|
|
10337
|
+
"path": "availableVersion",
|
|
10338
|
+
"valueType": "string"
|
|
10339
|
+
},
|
|
10340
|
+
{
|
|
10341
|
+
"path": "updatable",
|
|
10342
|
+
"valueType": "boolean"
|
|
10343
|
+
},
|
|
10344
|
+
{
|
|
10345
|
+
"path": "state",
|
|
10346
|
+
"valueType": "string"
|
|
10347
|
+
},
|
|
10348
|
+
{
|
|
10349
|
+
"path": "inProgress",
|
|
10350
|
+
"valueType": "boolean"
|
|
10351
|
+
}
|
|
10352
|
+
],
|
|
10353
|
+
"vacuum-control": [
|
|
10354
|
+
{
|
|
10355
|
+
"path": "state",
|
|
10356
|
+
"valueType": "enum",
|
|
10357
|
+
"enumValues": [
|
|
10358
|
+
"idle",
|
|
10359
|
+
"cleaning",
|
|
10360
|
+
"paused",
|
|
10361
|
+
"returning",
|
|
10362
|
+
"docked",
|
|
10363
|
+
"drying",
|
|
10364
|
+
"error"
|
|
10365
|
+
]
|
|
10366
|
+
},
|
|
10367
|
+
{
|
|
10368
|
+
"path": "batteryLevel",
|
|
10369
|
+
"valueType": "number"
|
|
10370
|
+
},
|
|
10371
|
+
{
|
|
10372
|
+
"path": "fanSpeed",
|
|
10373
|
+
"valueType": "string"
|
|
10374
|
+
},
|
|
10375
|
+
{
|
|
10376
|
+
"path": "progressPercent",
|
|
10377
|
+
"valueType": "number"
|
|
10378
|
+
},
|
|
10379
|
+
{
|
|
10380
|
+
"path": "errorCode",
|
|
10381
|
+
"valueType": "number"
|
|
10382
|
+
},
|
|
10383
|
+
{
|
|
10384
|
+
"path": "errorLabel",
|
|
10385
|
+
"valueType": "string"
|
|
10386
|
+
}
|
|
10387
|
+
],
|
|
10388
|
+
"valve": [{
|
|
10389
|
+
"path": "state",
|
|
10390
|
+
"valueType": "enum",
|
|
10391
|
+
"enumValues": [
|
|
10392
|
+
"open",
|
|
10393
|
+
"opening",
|
|
10394
|
+
"closing",
|
|
10395
|
+
"closed",
|
|
10396
|
+
"stopped"
|
|
10397
|
+
]
|
|
10398
|
+
}, {
|
|
10399
|
+
"path": "position",
|
|
10400
|
+
"valueType": "number"
|
|
10401
|
+
}],
|
|
10402
|
+
"vibration": [{
|
|
10403
|
+
"path": "detected",
|
|
10404
|
+
"valueType": "boolean"
|
|
10405
|
+
}],
|
|
10406
|
+
"water-heater": [
|
|
10407
|
+
{
|
|
10408
|
+
"path": "currentTemp",
|
|
10409
|
+
"valueType": "number"
|
|
10410
|
+
},
|
|
10411
|
+
{
|
|
10412
|
+
"path": "targetTemp",
|
|
10413
|
+
"valueType": "number"
|
|
10414
|
+
},
|
|
10415
|
+
{
|
|
10416
|
+
"path": "operationMode",
|
|
10417
|
+
"valueType": "string"
|
|
10418
|
+
},
|
|
10419
|
+
{
|
|
10420
|
+
"path": "away",
|
|
10421
|
+
"valueType": "boolean"
|
|
10422
|
+
},
|
|
10423
|
+
{
|
|
10424
|
+
"path": "minTemp",
|
|
10425
|
+
"valueType": "number"
|
|
10426
|
+
},
|
|
10427
|
+
{
|
|
10428
|
+
"path": "maxTemp",
|
|
10429
|
+
"valueType": "number"
|
|
10430
|
+
}
|
|
10431
|
+
],
|
|
10432
|
+
"weather": [
|
|
10433
|
+
{
|
|
10434
|
+
"path": "condition",
|
|
10435
|
+
"valueType": "string"
|
|
10436
|
+
},
|
|
10437
|
+
{
|
|
10438
|
+
"path": "temperature",
|
|
10439
|
+
"valueType": "number"
|
|
10440
|
+
},
|
|
10441
|
+
{
|
|
10442
|
+
"path": "temperatureUnit",
|
|
10443
|
+
"valueType": "string"
|
|
10444
|
+
},
|
|
10445
|
+
{
|
|
10446
|
+
"path": "humidity",
|
|
10447
|
+
"valueType": "number"
|
|
10448
|
+
},
|
|
10449
|
+
{
|
|
10450
|
+
"path": "pressure",
|
|
10451
|
+
"valueType": "number"
|
|
10452
|
+
},
|
|
10453
|
+
{
|
|
10454
|
+
"path": "pressureUnit",
|
|
10455
|
+
"valueType": "string"
|
|
10456
|
+
},
|
|
10457
|
+
{
|
|
10458
|
+
"path": "windSpeed",
|
|
10459
|
+
"valueType": "number"
|
|
10460
|
+
},
|
|
10461
|
+
{
|
|
10462
|
+
"path": "windSpeedUnit",
|
|
10463
|
+
"valueType": "string"
|
|
10464
|
+
},
|
|
10465
|
+
{
|
|
10466
|
+
"path": "windBearing",
|
|
10467
|
+
"valueType": "number"
|
|
10468
|
+
}
|
|
10469
|
+
],
|
|
10470
|
+
"zone-analytics": [
|
|
10471
|
+
{
|
|
10472
|
+
"path": "ts",
|
|
10473
|
+
"valueType": "number"
|
|
10474
|
+
},
|
|
10475
|
+
{
|
|
10476
|
+
"path": "frameWidth",
|
|
10477
|
+
"valueType": "number"
|
|
10478
|
+
},
|
|
10479
|
+
{
|
|
10480
|
+
"path": "frameHeight",
|
|
10481
|
+
"valueType": "number"
|
|
10482
|
+
},
|
|
10483
|
+
{
|
|
10484
|
+
"path": "frame.totalObjects",
|
|
10485
|
+
"valueType": "number"
|
|
10486
|
+
},
|
|
10487
|
+
{
|
|
10488
|
+
"path": "frame.standingObjects",
|
|
10489
|
+
"valueType": "number"
|
|
10490
|
+
},
|
|
10491
|
+
{
|
|
10492
|
+
"path": "frame.transientObjects",
|
|
10493
|
+
"valueType": "number"
|
|
10494
|
+
},
|
|
10495
|
+
{
|
|
10496
|
+
"path": "unzoned.totalObjects",
|
|
10497
|
+
"valueType": "number"
|
|
10498
|
+
},
|
|
10499
|
+
{
|
|
10500
|
+
"path": "unzoned.standingObjects",
|
|
10501
|
+
"valueType": "number"
|
|
10502
|
+
},
|
|
10503
|
+
{
|
|
10504
|
+
"path": "unzoned.transientObjects",
|
|
10505
|
+
"valueType": "number"
|
|
10506
|
+
}
|
|
10507
|
+
]
|
|
10508
|
+
});
|
|
8535
10509
|
object({
|
|
8536
10510
|
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
8537
10511
|
params: record(string(), union([string(), number()])).optional()
|
|
@@ -8918,7 +10892,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8918
10892
|
return DeviceRole;
|
|
8919
10893
|
}({});
|
|
8920
10894
|
//#endregion
|
|
8921
|
-
//#region ../types/dist/composition-
|
|
10895
|
+
//#region ../types/dist/composition-kEl9mevu.mjs
|
|
8922
10896
|
/**
|
|
8923
10897
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8924
10898
|
*
|
|
@@ -12346,7 +14320,7 @@ var LogChannelDescriptorSchema = object({
|
|
|
12346
14320
|
* `true` is a PROMISE with two halves, and both must hold: the gate is
|
|
12347
14321
|
* consulted with the numeric device id, AND every line the channel admits
|
|
12348
14322
|
* carries `tags: { deviceId }` with that same numeric id. The second half is
|
|
12349
|
-
* what makes `| json | deviceId="
|
|
14323
|
+
* what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
|
|
12350
14324
|
* keeps `deviceId` out of the stream labels for cardinality, so the tag in
|
|
12351
14325
|
* the body is the only way to filter.
|
|
12352
14326
|
*
|
|
@@ -12891,7 +14865,7 @@ var ModelVariantGroupSchema = object({
|
|
|
12891
14865
|
precision: _enum(["fp32", "int8"]).optional(),
|
|
12892
14866
|
/**
|
|
12893
14867
|
* Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
|
|
12894
|
-
* an alternate training of the same family (
|
|
14868
|
+
* an alternate training of the same family (plugin catalog `relu_test`); chip
|
|
12895
14869
|
* label is "Test".
|
|
12896
14870
|
*/
|
|
12897
14871
|
optimization: _enum(["standard", "test"]).optional(),
|
|
@@ -13143,8 +15117,8 @@ var ModelCatalogEntrySchema = object({
|
|
|
13143
15117
|
provider: ModelProviderIdSchema.optional(),
|
|
13144
15118
|
/**
|
|
13145
15119
|
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
13146
|
-
* applies (
|
|
13147
|
-
* labels already ARE the CamStack macros (
|
|
15120
|
+
* applies (plus catalog / COCO public catalog). Set on a custom model whose raw
|
|
15121
|
+
* labels already ARE the CamStack macros (plugin catalog identity map).
|
|
13148
15122
|
*/
|
|
13149
15123
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
13150
15124
|
/**
|
|
@@ -16113,7 +18087,7 @@ method(object({
|
|
|
16113
18087
|
* `1` is real time and is the ONLY value that allows the copy branch —
|
|
16114
18088
|
* anything else forces `libx264` over the window. That was priced
|
|
16115
18089
|
* before it was chosen: a per-event burst measured at 0.23 s and 254 KB
|
|
16116
|
-
* on a real
|
|
18090
|
+
* on a real 101 720p cut, against 922 KB for the copy it replaces. A
|
|
16117
18091
|
* re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
|
|
16118
18092
|
* once the decode is forced the width stops being free.
|
|
16119
18093
|
*/
|
|
@@ -16639,6 +18613,7 @@ var CompositionRunStatusSchema = _enum([
|
|
|
16639
18613
|
"starting",
|
|
16640
18614
|
"running",
|
|
16641
18615
|
"degraded",
|
|
18616
|
+
"incomplete",
|
|
16642
18617
|
"failed"
|
|
16643
18618
|
]);
|
|
16644
18619
|
var CompositionFieldStateKindSchema = _enum([
|
|
@@ -16852,6 +18827,7 @@ var CoreBlockStatusSchema = _enum([
|
|
|
16852
18827
|
"starting",
|
|
16853
18828
|
"running",
|
|
16854
18829
|
"degraded",
|
|
18830
|
+
"incomplete",
|
|
16855
18831
|
"failed"
|
|
16856
18832
|
]);
|
|
16857
18833
|
/** path → TypeScript source for a multi-file block. */
|
|
@@ -38999,7 +40975,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
|
|
|
38999
40975
|
* `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
|
|
39000
40976
|
* operator's casing. The registry matches labels trimmed + case-insensitively
|
|
39001
40977
|
* everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
|
|
39002
|
-
* case-only rename (`
|
|
40978
|
+
* case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
|
|
39003
40979
|
* map keyed on the displayed casing would orphan its entry on exactly that
|
|
39004
40980
|
* edit. Consumers join by keying their own label through `locationIconKey`.
|
|
39005
40981
|
*/
|
|
@@ -39024,7 +41000,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39024
41000
|
/**
|
|
39025
41001
|
* A SITE ZONE — a named part of the property that several locations belong to.
|
|
39026
41002
|
*
|
|
39027
|
-
* "
|
|
41003
|
+
* "Night zone" holds every bedroom; "Zona giorno" the living room and the
|
|
39028
41004
|
* kitchen. A camera belongs to exactly one location, and a location to at most
|
|
39029
41005
|
* one zone, so a camera's zone is derived and never stored on the device: the
|
|
39030
41006
|
* whole point of this entity is that grouping rooms touches no device row.
|
|
@@ -39053,7 +41029,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39053
41029
|
* the locations inside it.
|
|
39054
41030
|
*
|
|
39055
41031
|
* The LABEL is carried alongside the key because the key is lossy on purpose —
|
|
39056
|
-
* a surface must show "
|
|
41032
|
+
* a surface must show "Night zone", not "night zone". Locations are carried
|
|
39057
41033
|
* here, rather than left to a second call, because every consumer wants both
|
|
39058
41034
|
* at once and a viewer that asked twice could render a zone whose membership
|
|
39059
41035
|
* it has not fetched yet.
|
|
@@ -41266,8 +43242,8 @@ var LoadContributionSchema = object({
|
|
|
41266
43242
|
"unattributable"
|
|
41267
43243
|
]),
|
|
41268
43244
|
/**
|
|
41269
|
-
* What ONE entry is, in the contributor's own words — `
|
|
41270
|
-
* `
|
|
43245
|
+
* What ONE entry is, in the contributor's own words — `101/high`,
|
|
43246
|
+
* `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
|
|
41271
43247
|
* family and inventing a common one would lose the only information that
|
|
41272
43248
|
* makes two entries for the same camera distinguishable.
|
|
41273
43249
|
*/
|
|
@@ -44292,7 +46268,7 @@ var NcConditionsSchema = object({
|
|
|
44292
46268
|
* with the list under it is worse than no switch (D62).
|
|
44293
46269
|
*
|
|
44294
46270
|
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
44295
|
-
* renameable, and a rule authored on "
|
|
46271
|
+
* renameable, and a rule authored on "Alice" went silently dark the moment
|
|
44296
46272
|
* the operator fixed the spelling. The id reaches the record on
|
|
44297
46273
|
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
44298
46274
|
* `{{label}}` renders.
|
|
@@ -44843,7 +46819,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
44843
46819
|
* A rule scoped to one camera and one zone silently became a rule that
|
|
44844
46820
|
* matches EVERY event on EVERY camera, and lost its `media` policy
|
|
44845
46821
|
* (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
|
|
44846
|
-
* live on 2026-08-12: a rule scoped to device
|
|
46822
|
+
* live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
|
|
44847
46823
|
* within a minute of a two-field patch.
|
|
44848
46824
|
*
|
|
44849
46825
|
* So every defaulted field is re-declared here WITHOUT its default. The
|
|
@@ -46656,7 +48632,7 @@ var LabelAttributionSchema = object({
|
|
|
46656
48632
|
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
46657
48633
|
*
|
|
46658
48634
|
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
46659
|
-
* notification rule authored on "
|
|
48635
|
+
* notification rule authored on "Alice" stopped matching the moment the
|
|
46660
48636
|
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
46661
48637
|
* the thing that does not move, so it is what a rule matches on
|
|
46662
48638
|
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
@@ -49195,7 +51171,7 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
49195
51171
|
/**
|
|
49196
51172
|
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
49197
51173
|
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
49198
|
-
* step (a
|
|
51174
|
+
* step (a plus catalog `license_plate` for `plate-detection`): the step is
|
|
49199
51175
|
* NOT inferred, these boxes are its output, and its children (the plate
|
|
49200
51176
|
* reader) run on them through their own crop policy. Boxes are in the
|
|
49201
51177
|
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
@@ -50872,7 +52848,7 @@ var RunnerCameraConfigSchema = object({
|
|
|
50872
52848
|
* detection session that asks for history. What shipped was a last-moment
|
|
50873
52849
|
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
50874
52850
|
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
50875
|
-
* worth. Device
|
|
52851
|
+
* worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
|
|
50876
52852
|
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
50877
52853
|
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
50878
52854
|
* was decoded, and was freed.
|
|
@@ -53006,7 +54982,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
|
|
|
53006
54982
|
* The signals a device can emit to WAKE its own stream.
|
|
53007
54983
|
*
|
|
53008
54984
|
* A camera whose stream is built on demand sleeps until something asks for it,
|
|
53009
|
-
* and "something" cannot be a consumer that is merely attached — a
|
|
54985
|
+
* and "something" cannot be a consumer that is merely attached — a external-catalog
|
|
53010
54986
|
* puller holds a session open for ever, and treating that as demand would keep
|
|
53011
54987
|
* a battery camera awake for ever, which is the whole thing the battery is for
|
|
53012
54988
|
* (D173). So the wake has to come from the CAMERA: an event it noticed by
|
|
@@ -53774,7 +55750,7 @@ var ClipSchema = object({
|
|
|
53774
55750
|
* {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
|
|
53775
55751
|
*
|
|
53776
55752
|
* Bounded because it is not a payload the surface pages through: one visit on
|
|
53777
|
-
* device
|
|
55753
|
+
* device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
|
|
53778
55754
|
* camera-day. Read {@link eventCount} for the true total.
|
|
53779
55755
|
*/
|
|
53780
55756
|
eventIds: array(string()).optional(),
|
|
@@ -53919,7 +55895,7 @@ var ClipPlaybackSchema = object({
|
|
|
53919
55895
|
* camera has no recordings", which is the defect this whole line of work is
|
|
53920
55896
|
* about: a battery camera nobody woke (`sleeping`), a camera that could not be
|
|
53921
55897
|
* reached at all (`unreachable`, also what a provider that THREW reports), a
|
|
53922
|
-
* camera whose SD card is not mounted (`no-storage`, measured on
|
|
55898
|
+
* camera whose SD card is not mounted (`no-storage`, measured on 106 —
|
|
53923
55899
|
* `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
|
|
53924
55900
|
* camera whose OWN index disagrees with its OWN calendar (`index-empty`,
|
|
53925
55901
|
* measured on 618: the calendar marks 3–20 September, days 6–20 list zero
|
|
@@ -54380,7 +56356,7 @@ var videoclipsCapability = {
|
|
|
54380
56356
|
*
|
|
54381
56357
|
* It was optional, documented as "absent means the device's BOUND
|
|
54382
56358
|
* provider, which is CamStack on every camera". No code implemented
|
|
54383
|
-
* that. Measured on the live hub 2026-09-20 — device
|
|
56359
|
+
* that. Measured on the live hub 2026-09-20 — device 107, bound to
|
|
54384
56360
|
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
54385
56361
|
* answered SIX rows, three from each source, merged newest-first:
|
|
54386
56362
|
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
@@ -55697,7 +57673,10 @@ var airQualitySensorCapability = {
|
|
|
55697
57673
|
*/
|
|
55698
57674
|
var AmbientLightSensorStatusSchema = object({
|
|
55699
57675
|
/** Current illuminance in lux (lx). */
|
|
55700
|
-
lux: number().min(0)
|
|
57676
|
+
lux: number().min(0).meta({
|
|
57677
|
+
unit: "lx",
|
|
57678
|
+
label: "Illuminance"
|
|
57679
|
+
}),
|
|
55701
57680
|
/** Ms epoch when the slice was last updated. */
|
|
55702
57681
|
lastFetchedAt: number(),
|
|
55703
57682
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -55740,7 +57719,12 @@ var ambientLightSensorCapability = {
|
|
|
55740
57719
|
} } },
|
|
55741
57720
|
/** Clock fields: written, but excluded from the compare that decides
|
|
55742
57721
|
* whether persisting is worth a SQLite commit. */
|
|
55743
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
57722
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
57723
|
+
customize: {
|
|
57724
|
+
version: 1,
|
|
57725
|
+
advanced: "derive",
|
|
57726
|
+
targets: []
|
|
57727
|
+
}
|
|
55744
57728
|
};
|
|
55745
57729
|
/**
|
|
55746
57730
|
* Per-class audio metrics aggregated over a sliding window.
|
|
@@ -55967,7 +57951,10 @@ var BatteryStatusSchema = object({
|
|
|
55967
57951
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
55968
57952
|
* declines to band a non-finite reading, which is the correct shape.
|
|
55969
57953
|
*/
|
|
55970
|
-
percentage: number().min(0).max(100).nullable()
|
|
57954
|
+
percentage: number().min(0).max(100).nullable().meta({
|
|
57955
|
+
unit: "%",
|
|
57956
|
+
label: "Charge"
|
|
57957
|
+
}),
|
|
55971
57958
|
/**
|
|
55972
57959
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
55973
57960
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -55986,13 +57973,13 @@ var BatteryStatusSchema = object({
|
|
|
55986
57973
|
"solar",
|
|
55987
57974
|
"none",
|
|
55988
57975
|
"unknown"
|
|
55989
|
-
]),
|
|
57976
|
+
]).meta({ label: "Charging source" }),
|
|
55990
57977
|
/**
|
|
55991
57978
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
55992
57979
|
* providers MUST avoid polling during sleep — reading the battery
|
|
55993
57980
|
* wakes the camera up and drains charge.
|
|
55994
57981
|
*/
|
|
55995
|
-
sleeping: boolean(),
|
|
57982
|
+
sleeping: boolean().meta({ label: "Sleeping" }),
|
|
55996
57983
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
55997
57984
|
lastUpdated: number(),
|
|
55998
57985
|
/**
|
|
@@ -56032,7 +58019,7 @@ var BatteryStatusSchema = object({
|
|
|
56032
58019
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
56033
58020
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
56034
58021
|
*/
|
|
56035
|
-
binary: boolean().optional()
|
|
58022
|
+
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
56036
58023
|
});
|
|
56037
58024
|
var BATTERY_DEVICE_TYPES = [
|
|
56038
58025
|
DeviceType.Camera,
|
|
@@ -56046,6 +58033,7 @@ var BATTERY_DEVICE_TYPES = [
|
|
|
56046
58033
|
/** Generic Customize target for the percentage reading (D936). */
|
|
56047
58034
|
var batteryCustomize = {
|
|
56048
58035
|
version: 1,
|
|
58036
|
+
advanced: "derive",
|
|
56049
58037
|
targets: [{
|
|
56050
58038
|
id: "percentage",
|
|
56051
58039
|
cardinality: "scalar",
|
|
@@ -56196,7 +58184,7 @@ onStatusChanged: { data: object({
|
|
|
56196
58184
|
* with the right HomeKit / Alexa display category.
|
|
56197
58185
|
*/
|
|
56198
58186
|
var BinaryStatusSchema = object({
|
|
56199
|
-
on: boolean(),
|
|
58187
|
+
on: boolean().meta({ label: "On" }),
|
|
56200
58188
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
56201
58189
|
lastChangedAt: number()
|
|
56202
58190
|
});
|
|
@@ -56225,7 +58213,12 @@ var binaryCapability = {
|
|
|
56225
58213
|
history: { fields: { on: { kind: "boolean" } } },
|
|
56226
58214
|
/** Clock fields: written, but excluded from the compare that decides
|
|
56227
58215
|
* whether persisting is worth a SQLite commit. */
|
|
56228
|
-
volatileStateFields: ["lastChangedAt"]
|
|
58216
|
+
volatileStateFields: ["lastChangedAt"],
|
|
58217
|
+
customize: {
|
|
58218
|
+
version: 1,
|
|
58219
|
+
advanced: "derive",
|
|
58220
|
+
targets: []
|
|
58221
|
+
}
|
|
56229
58222
|
};
|
|
56230
58223
|
/**
|
|
56231
58224
|
* Dimmable-light brightness control. Co-exists with `switch` on the
|
|
@@ -56531,7 +58524,7 @@ var GridLayoutCellSchema = object({
|
|
|
56531
58524
|
*
|
|
56532
58525
|
* A grid's `high` composes its sources' `high` and its `low` their `low`, so a
|
|
56533
58526
|
* profile is on offer only when EVERY source can serve it. The refusal NAMES
|
|
56534
|
-
* the sources, because "this grid has no low" is not a finding — "
|
|
58527
|
+
* the sources, because "this grid has no low" is not a finding — "101 has no
|
|
56535
58528
|
* low" is, and it is the one an operator can act on.
|
|
56536
58529
|
*/
|
|
56537
58530
|
var GridProfileOfferSchema = object({
|
|
@@ -58096,6 +60089,7 @@ var doorbellCustomize = {
|
|
|
58096
60089
|
applyAuthority: { kind: "composition-claim" },
|
|
58097
60090
|
eventName: "onPressed",
|
|
58098
60091
|
edges: ["rising"],
|
|
60092
|
+
defaultEdge: "rising",
|
|
58099
60093
|
timestampPath: "lastPressedAt",
|
|
58100
60094
|
counterPath: "pressCountSinceStart",
|
|
58101
60095
|
highWater: "composer-advance",
|
|
@@ -59049,7 +61043,10 @@ var humidifierCapability = {
|
|
|
59049
61043
|
*/
|
|
59050
61044
|
var HumiditySensorStatusSchema = object({
|
|
59051
61045
|
/** Current relative humidity, 0..100. */
|
|
59052
|
-
percent: number().min(0).max(100)
|
|
61046
|
+
percent: number().min(0).max(100).meta({
|
|
61047
|
+
unit: "%",
|
|
61048
|
+
label: "Humidity"
|
|
61049
|
+
}),
|
|
59053
61050
|
/** Ms epoch when the slice was last updated. */
|
|
59054
61051
|
lastFetchedAt: number(),
|
|
59055
61052
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -59091,7 +61088,12 @@ var humiditySensorCapability = {
|
|
|
59091
61088
|
} } },
|
|
59092
61089
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59093
61090
|
* whether persisting is worth a SQLite commit. */
|
|
59094
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
61091
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
61092
|
+
customize: {
|
|
61093
|
+
version: 1,
|
|
61094
|
+
advanced: "derive",
|
|
61095
|
+
targets: []
|
|
61096
|
+
}
|
|
59095
61097
|
};
|
|
59096
61098
|
/**
|
|
59097
61099
|
* Image display cap. Models a single still image exposed by an integration —
|
|
@@ -62790,9 +64792,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62790
64792
|
*/
|
|
62791
64793
|
var PowerMeterStatusSchema = object({
|
|
62792
64794
|
/** Instantaneous power draw in watts. */
|
|
62793
|
-
watts: number().optional()
|
|
64795
|
+
watts: number().optional().meta({
|
|
64796
|
+
unit: "W",
|
|
64797
|
+
label: "Power"
|
|
64798
|
+
}),
|
|
62794
64799
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62795
|
-
kwhTotal: number().optional()
|
|
64800
|
+
kwhTotal: number().optional().meta({
|
|
64801
|
+
unit: "kWh",
|
|
64802
|
+
label: "Energy"
|
|
64803
|
+
}),
|
|
62796
64804
|
/** Voltage in volts. */
|
|
62797
64805
|
volts: number().optional(),
|
|
62798
64806
|
/** Current in amperes. */
|
|
@@ -62877,7 +64885,12 @@ var powerMeterCapability = {
|
|
|
62877
64885
|
} },
|
|
62878
64886
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62879
64887
|
* whether persisting is worth a SQLite commit. */
|
|
62880
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
64888
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
64889
|
+
customize: {
|
|
64890
|
+
version: 1,
|
|
64891
|
+
advanced: "derive",
|
|
64892
|
+
targets: []
|
|
64893
|
+
}
|
|
62881
64894
|
};
|
|
62882
64895
|
/**
|
|
62883
64896
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
@@ -63322,9 +65335,9 @@ var PtzOptionsSchema = object({
|
|
|
63322
65335
|
* Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
|
|
63323
65336
|
* not one of the three cameras honours its own:
|
|
63324
65337
|
*
|
|
63325
|
-
*
|
|
63326
|
-
* 1438
|
|
63327
|
-
* 3836
|
|
65338
|
+
* 107 Camera camera Carol (reolink) preset 0 holds "stanza"
|
|
65339
|
+
* 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
|
|
65340
|
+
* 3836 Camera studio (amcrest) preset 1 holds "Preset1"
|
|
63328
65341
|
*
|
|
63329
65342
|
* So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
|
|
63330
65343
|
* and two of the three swallowed the failure in a bare `catch`. For autotrack
|
|
@@ -63657,7 +65670,7 @@ var RunningStateStatusSchema = object({
|
|
|
63657
65670
|
running: boolean().nullable(),
|
|
63658
65671
|
/** Epoch ms the current boolean began; null while `running` is null. */
|
|
63659
65672
|
since: number().nullable(),
|
|
63660
|
-
source: RunningStateSourceSchema,
|
|
65673
|
+
source: RunningStateSourceSchema.meta({ label: "Source" }),
|
|
63661
65674
|
phase: string().nullable(),
|
|
63662
65675
|
/** null until a reading has been published (D393). */
|
|
63663
65676
|
lastFetchedAt: number().nullable()
|
|
@@ -63671,6 +65684,7 @@ var RUNNING_DEVICE_TYPES = Object.values(DeviceType);
|
|
|
63671
65684
|
/** Generic Customize target for the running boolean (D936). */
|
|
63672
65685
|
var runningCustomize = {
|
|
63673
65686
|
version: 1,
|
|
65687
|
+
advanced: "derive",
|
|
63674
65688
|
targets: [{
|
|
63675
65689
|
id: "running",
|
|
63676
65690
|
cardinality: "scalar",
|
|
@@ -63706,6 +65720,7 @@ var runningCustomize = {
|
|
|
63706
65720
|
requiredUnit: "W",
|
|
63707
65721
|
transforms: [{
|
|
63708
65722
|
kind: "threshold",
|
|
65723
|
+
comparisons: ["gte", "lte"],
|
|
63709
65724
|
comparison: "gte",
|
|
63710
65725
|
defaultThreshold: 5,
|
|
63711
65726
|
defaultStartDwellMs: RUNNING_POWER_START_DELAY_MS,
|
|
@@ -63834,7 +65849,7 @@ var RecordingAvailabilitySchema = object({
|
|
|
63834
65849
|
* would look identical. But the answer used to say nothing about that, so a
|
|
63835
65850
|
* caller asking "what can I export?" read the single preferred profile as
|
|
63836
65851
|
* the only one that exists — on this deployment every camera records `high`
|
|
63837
|
-
* AND `low`, the low tree holding 14 GB for camera
|
|
65852
|
+
* AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
|
|
63838
65853
|
* UI could not see it.
|
|
63839
65854
|
*
|
|
63840
65855
|
* Cheap: it is the same shallow directory read the profile CHOICE already
|
|
@@ -63933,7 +65948,7 @@ var RecordingSourceOptionsSchema = object({
|
|
|
63933
65948
|
* `sparse` = gaps are the absence of one, and must be drawn as such.
|
|
63934
65949
|
*
|
|
63935
65950
|
* Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
|
|
63936
|
-
* of
|
|
65951
|
+
* of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
|
|
63937
65952
|
* pair, and ours answers it per camera from `deriveRecordingMode`. */
|
|
63938
65953
|
coverage: _enum(["continuous", "sparse"]),
|
|
63939
65954
|
/** Where the playhead may be put.
|
|
@@ -64009,7 +66024,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
|
|
|
64009
66024
|
* merely discouraged (D554 amended).
|
|
64010
66025
|
*
|
|
64011
66026
|
* It was learned the expensive way on `videoclips.listClips`: measured
|
|
64012
|
-
* on the live hub 2026-09-20, device
|
|
66027
|
+
* on the live hub 2026-09-20, device 107 bound to `recorder` AND
|
|
64013
66028
|
* `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
|
|
64014
66029
|
* three from each source, merged — `device-collection-dispatch.ts`
|
|
64015
66030
|
* leaves an unpinned fan-out un-narrowed, so absence buys the union the
|
|
@@ -64610,7 +66625,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
|
|
|
64610
66625
|
* on a 10 h window holding 29,393 s of footage every range landed late by the
|
|
64611
66626
|
* gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
|
|
64612
66627
|
* the video was a uniform timelapse, and the log line reported the five ranges
|
|
64613
|
-
* that had been ASKED for (2026-08-13, export `57d14363`, camera
|
|
66628
|
+
* that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
|
|
64614
66629
|
*
|
|
64615
66630
|
* Relative and not absolute epoch, because an absolute epoch would make every
|
|
64616
66631
|
* call site responsible for the same subtraction.
|
|
@@ -65490,7 +67505,7 @@ getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) }
|
|
|
65490
67505
|
* which put a "Scenes" tab on one camera's detail page. That is the wrong shape
|
|
65491
67506
|
* for the thing: a scene is a standing question about the property ("is the bin
|
|
65492
67507
|
* still out"), and the operator's question is "which of my scenes have tripped",
|
|
65493
|
-
* across every camera at once — not "what does camera
|
|
67508
|
+
* across every camera at once — not "what does camera 102 think". Buried one
|
|
65494
67509
|
* camera deep it also could not be found. The surface is now a top-level admin
|
|
65495
67510
|
* page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
|
|
65496
67511
|
* picks the camera inside the create flow, the same shape Events and Faces have.
|
|
@@ -66547,7 +68562,7 @@ function buildStreamParamsConfigSchema(options, status) {
|
|
|
66547
68562
|
* `getSettingsUISchema()` surface.
|
|
66548
68563
|
*/
|
|
66549
68564
|
var SwitchStatusSchema = object({
|
|
66550
|
-
on: boolean(),
|
|
68565
|
+
on: boolean().meta({ label: "On" }),
|
|
66551
68566
|
/** Ms epoch of the last state change. Useful for UI "X minutes ago". */
|
|
66552
68567
|
lastChangedAt: number()
|
|
66553
68568
|
});
|
|
@@ -66606,7 +68621,12 @@ var switchCapability = {
|
|
|
66606
68621
|
label: "On",
|
|
66607
68622
|
kind: "boolean"
|
|
66608
68623
|
}
|
|
66609
|
-
}] }
|
|
68624
|
+
}] },
|
|
68625
|
+
customize: {
|
|
68626
|
+
version: 1,
|
|
68627
|
+
advanced: "derive",
|
|
68628
|
+
targets: []
|
|
68629
|
+
}
|
|
66610
68630
|
};
|
|
66611
68631
|
/** C0 controls, DEL and the C1 range: none of them belongs in a name. */
|
|
66612
68632
|
function hasControlCharacter(value) {
|
|
@@ -67202,7 +69222,10 @@ var tamperCapability = {
|
|
|
67202
69222
|
*/
|
|
67203
69223
|
var TemperatureSensorStatusSchema = object({
|
|
67204
69224
|
/** Current temperature in Celsius. */
|
|
67205
|
-
celsius: number()
|
|
69225
|
+
celsius: number().meta({
|
|
69226
|
+
unit: "°C",
|
|
69227
|
+
label: "Temperature"
|
|
69228
|
+
}),
|
|
67206
69229
|
/** Ms epoch when the slice was last updated (push or poll). */
|
|
67207
69230
|
lastFetchedAt: number(),
|
|
67208
69231
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -67245,7 +69268,12 @@ var temperatureSensorCapability = {
|
|
|
67245
69268
|
} } },
|
|
67246
69269
|
/** Clock fields: written, but excluded from the compare that decides
|
|
67247
69270
|
* whether persisting is worth a SQLite commit. */
|
|
67248
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
69271
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
69272
|
+
customize: {
|
|
69273
|
+
version: 1,
|
|
69274
|
+
advanced: "derive",
|
|
69275
|
+
targets: []
|
|
69276
|
+
}
|
|
67249
69277
|
};
|
|
67250
69278
|
/**
|
|
67251
69279
|
* toast — system-scoped singleton capability that streams toast
|
|
@@ -68924,6 +70952,10 @@ function withClipEventLabels(provider, deps) {
|
|
|
68924
70952
|
};
|
|
68925
70953
|
}
|
|
68926
70954
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
70955
|
+
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;
|
|
70956
|
+
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
70957
|
+
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
70958
|
+
new Set(CAP_NAMES);
|
|
68927
70959
|
Object.freeze({
|
|
68928
70960
|
person: .5,
|
|
68929
70961
|
vehicle: .5,
|
|
@@ -70172,7 +72204,7 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
70172
72204
|
* A top-level persisted row with NO configuration is a leftover, not a
|
|
70173
72205
|
* device — quarantine it instead of dialling it.
|
|
70174
72206
|
*
|
|
70175
|
-
* Device
|
|
72207
|
+
* Device 105 was deleted, resurrected as a config-less shell by a write
|
|
70176
72208
|
* already in flight (D376), and then dialled at every single boot: eight
|
|
70177
72209
|
* `Failed to restore device — bounded retry scheduled` lines in one day,
|
|
70178
72210
|
* each one the same Zod refusal on `host` and `password`. The bound was
|
|
@@ -83420,7 +85452,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
83420
85452
|
state: [{
|
|
83421
85453
|
kind: "boolean",
|
|
83422
85454
|
field: "on",
|
|
83423
|
-
label: t("
|
|
85455
|
+
label: t("On", "Acceso"),
|
|
83424
85456
|
whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
|
|
83425
85457
|
whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
|
|
83426
85458
|
icon: "toggle-right"
|
|
@@ -86996,7 +89028,6 @@ Object.freeze({
|
|
|
86996
89028
|
"smtp-provider": "email"
|
|
86997
89029
|
});
|
|
86998
89030
|
DeviceType.Camera;
|
|
86999
|
-
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;
|
|
87000
89031
|
/**
|
|
87001
89032
|
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
87002
89033
|
* `z.infer`, they do not restate the shape.
|
|
@@ -87053,6 +89084,11 @@ var PulseOverrideDraftSchema = object({
|
|
|
87053
89084
|
targetId: string().min(1),
|
|
87054
89085
|
enabled: boolean(),
|
|
87055
89086
|
debounceMs: number().nonnegative(),
|
|
89087
|
+
edges: array(_enum([
|
|
89088
|
+
"rising",
|
|
89089
|
+
"button",
|
|
89090
|
+
"native-event"
|
|
89091
|
+
])).min(1).optional(),
|
|
87056
89092
|
sources: array(OverrideSourceSchema).min(1)
|
|
87057
89093
|
});
|
|
87058
89094
|
var SpanSourceDraftSchema = OverrideSourceSchema.extend({ mode: _enum([
|
|
@@ -87085,7 +89121,6 @@ object({
|
|
|
87085
89121
|
]),
|
|
87086
89122
|
reason: string().nullable()
|
|
87087
89123
|
});
|
|
87088
|
-
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
87089
89124
|
var G711_SCALE_CORRECTION_DB = {
|
|
87090
89125
|
PCMU: 20 * Math.log10(4),
|
|
87091
89126
|
PCMA: 20 * Math.log10(8)
|
|
@@ -87458,7 +89493,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
87458
89493
|
{
|
|
87459
89494
|
name: "summaryStreams",
|
|
87460
89495
|
label: "Summary: streams offline",
|
|
87461
|
-
example: "
|
|
89496
|
+
example: "Front door (high) — since 06:40",
|
|
87462
89497
|
kinds: ["stream-offline", "stream-online"]
|
|
87463
89498
|
},
|
|
87464
89499
|
{
|
|
@@ -87476,13 +89511,13 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
87476
89511
|
{
|
|
87477
89512
|
name: "summaryDetection",
|
|
87478
89513
|
label: "Summary: cameras detecting nothing",
|
|
87479
|
-
example: "
|
|
89514
|
+
example: "Front door — since 05:10",
|
|
87480
89515
|
kinds: ["detection-blind"]
|
|
87481
89516
|
},
|
|
87482
89517
|
{
|
|
87483
89518
|
name: "summaryNodes",
|
|
87484
89519
|
label: "Summary: nodes",
|
|
87485
|
-
example: "
|
|
89520
|
+
example: "agent-a — offline since 03:00",
|
|
87486
89521
|
kinds: [
|
|
87487
89522
|
"node-offline",
|
|
87488
89523
|
"node-online",
|
|
@@ -189378,7 +191413,7 @@ var REOLINK_ADDON_ID = "provider-reolink";
|
|
|
189378
191413
|
* TWO vocabularies arrive here and both must be keyed. The simple-event push
|
|
189379
191414
|
* (cmd 33 `<AItype>`) says `animal`; the capability probe (cmd 299
|
|
189380
191415
|
* `getAiDetectTypes`) says `dog_cat` for the same class. Keying only the first
|
|
189381
|
-
* made `buildSupportedClasses` drop it, so camera
|
|
191416
|
+
* made `buildSupportedClasses` drop it, so camera 108 reported
|
|
189382
191417
|
* `supportedClasses: ["person","vehicle"]` while its own `lastByClass` held a
|
|
189383
191418
|
* live `animal` detection — the camera detected a class the system said it
|
|
189384
191419
|
* could not. The two key-spaces do not collide, so one map serves both.
|
|
@@ -189463,7 +191498,7 @@ var reolinkCameraSchema = object({
|
|
|
189463
191498
|
*
|
|
189464
191499
|
* Empty = nothing configured, and `goHome` then REFUSES. It used to go to a
|
|
189465
191500
|
* hardcoded slot on a vendor "convention" this fleet contradicts: reolink
|
|
189466
|
-
* went to preset 0, which on device
|
|
191501
|
+
* went to preset 0, which on device 107 holds "stanza"; amcrest went to
|
|
189467
191502
|
* preset 1, which on device 3836 holds "Preset1". Both swallowed the failure
|
|
189468
191503
|
* in a bare catch, so a head that never moved was indistinguishable from a
|
|
189469
191504
|
* head that went home.
|
|
@@ -190382,7 +192417,7 @@ var UID_MISSING_REASON = "uid-missing: the hub selects a child by uid, and this
|
|
|
190382
192417
|
*
|
|
190383
192418
|
* - a **closed day** cannot gain or lose a recording, so its listing is
|
|
190384
192419
|
* immutable for {@link CLOSED_DAY_TTL_MS}. Re-listing yesterday on every
|
|
190385
|
-
* scroll would cost 2.0 s of camera time (measured: 546 clips on
|
|
192420
|
+
* scroll would cost 2.0 s of camera time (measured: 546 clips on 107) for an
|
|
190386
192421
|
* answer that cannot have changed;
|
|
190387
192422
|
* - **today** is `serve-and-revalidate` under `OPERATOR_WRITTEN_STALE_MS` —
|
|
190388
192423
|
* the same discipline every other Reolink read uses (D224), for the same
|
|
@@ -195132,7 +197167,7 @@ function buildClipRefreshDeviceSection(input) {
|
|
|
195132
197167
|
*
|
|
195133
197168
|
* `failure-contribution` keeps `variant` for a second dimension WITHIN a
|
|
195134
197169
|
* family, and here the useful one is the format the caller pushed: an operator
|
|
195135
|
-
* asking "why is
|
|
197170
|
+
* asking "why is 102 silent" needs to know whether HomeKit's Opus or Alexa's
|
|
195136
197171
|
* raw PCM is the half that is failing. The provider is handed that value on
|
|
195137
197172
|
* every call, so it is reported rather than guessed — absent, never invented.
|
|
195138
197173
|
*
|
|
@@ -196476,7 +198511,7 @@ async function refreshSnapshotCacheOnce(input) {
|
|
|
196476
198511
|
* `logger.child(stableId).withTags({ deviceId })` with the NUMERIC id
|
|
196477
198512
|
* (`device-cap-proxy.ts`), and `ScopedLogger` merges its bound tags into every
|
|
196478
198513
|
* line. So every line these channels admit carries `tags.deviceId`, and
|
|
196479
|
-
* `| json | deviceId="
|
|
198514
|
+
* `| json | deviceId="102"` selects exactly one camera. That is the repo rule
|
|
196480
198515
|
* from `CLAUDE.md` — paid for with a 22% thumbnail gap and a 3-hour media
|
|
196481
198516
|
* blackout diagnosed by hand — finally paying out.
|
|
196482
198517
|
*
|
|
@@ -196580,7 +198615,7 @@ function capDayNightModeToReolink(mode) {
|
|
|
196580
198615
|
* `battery-operated` is derived from the probe flag **OR** the driver's own
|
|
196581
198616
|
* `isBattery` discriminator — never the probe alone. The probe slice is
|
|
196582
198617
|
* written only by a SUCCESSFUL `feature-probe` round-trip, and a battery
|
|
196583
|
-
* camera that is asleep (or flat, or off-LAN) never answers one: device
|
|
198618
|
+
* camera that is asleep (or flat, or off-LAN) never answers one: device 106
|
|
196584
198619
|
* "Baby monitor" held `deviceCache.deviceType === 'battery-cam'`, a
|
|
196585
198620
|
* `battery` runtime slice reporting `sleeping: true`, and STILL published
|
|
196586
198621
|
* `features = ['native-snapshot','rebootable']` because the `feature-probe`
|
|
@@ -196591,7 +198626,7 @@ function capDayNightModeToReolink(mode) {
|
|
|
196591
198626
|
* map) — without it the camera is drawn as an ordinary awake camera;
|
|
196592
198627
|
* - the snapshot wrapper's sleep gate (`snapshot.addon.ts`
|
|
196593
198628
|
* `lookupDeviceMeta().isBattery`) — without it every thumbnail refresh
|
|
196594
|
-
* issues a Baichuan login and WAKES the camera (observed hourly on
|
|
198629
|
+
* issues a Baichuan login and WAKES the camera (observed hourly on 106
|
|
196595
198630
|
* while it sat at 14%);
|
|
196596
198631
|
* - the broker's `preBufferSec = 0` battery rule and its relaxed stall
|
|
196597
198632
|
* watchdog.
|
|
@@ -199654,7 +201689,7 @@ function isNativeObjectForwardingEnabled(capState) {
|
|
|
199654
201689
|
* closure inside `registerNativeObjectDetectionCap` had a test that
|
|
199655
201690
|
* RE-IMPLEMENTED it — and the copy encoded the `dog_cat` gap as intent
|
|
199656
201691
|
* ("skips unknown Baichuan type names"), so the suite stayed green while
|
|
199657
|
-
* camera
|
|
201692
|
+
* camera 108 reported it could not detect a class it was detecting. One
|
|
199658
201693
|
* function, one test, no copy.
|
|
199659
201694
|
*
|
|
199660
201695
|
* An absent probe is not an empty answer: it means nobody has asked the camera
|
|
@@ -200516,7 +202551,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200516
202551
|
* dispatched N times on the camstack side, and `offSimpleEvent`
|
|
200517
202552
|
* couldn't remove the old one without the original ref. Net
|
|
200518
202553
|
* effect was that subscriptions drifted out of sync with the
|
|
200519
|
-
* camera's TCP push channel: device 15 (
|
|
202554
|
+
* camera's TCP push channel: device 15 (Carol) went silent for
|
|
200520
202555
|
* 2+ hours while device 8 (battery doorbell) kept pushing
|
|
200521
202556
|
* normally because its short connection lifecycle naturally
|
|
200522
202557
|
* reset the listener set.
|
|
@@ -201536,7 +203571,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
201536
203571
|
}
|
|
201537
203572
|
/**
|
|
201538
203573
|
* Arm Baichuan HaCfg (cmd 807) so this battery camera POSTs wake/sleep
|
|
201539
|
-
* events to the provider's HTTP intake. Mirrors
|
|
203574
|
+
* events to the provider's HTTP intake. Mirrors plugin catalog's
|
|
201540
203575
|
* `autoConfigureBaichuanWebhook` — never called from init.
|
|
201541
203576
|
*/
|
|
201542
203577
|
async autoConfigureBaichuanWebhook() {
|
|
@@ -204993,7 +207028,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
204993
207028
|
/**
|
|
204994
207029
|
* Synthesize the HTTP-FLV pull URL for a (channel, profile) pair. FLV is
|
|
204995
207030
|
* served off the Reolink Baichuan media port (default 1935, app `bcs`) as
|
|
204996
|
-
* `channel<channel>_<profile>.bcs` — the same shape
|
|
207031
|
+
* `channel<channel>_<profile>.bcs` — the same shape restreamer uses. The
|
|
204997
207032
|
* lib does NOT surface this URL, so we build it from the SAME connection
|
|
204998
207033
|
* creds the RTSP/native paths use (`host`/`username`/`password` on the
|
|
204999
207034
|
* device config), URL-encoding the credentials.
|