@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.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import { URL as URL$1 } from "url";
|
|
|
28
28
|
import { spawn as spawn$1 } from "node:child_process";
|
|
29
29
|
import os, { tmpdir } from "node:os";
|
|
30
30
|
import { createReadStream } from "node:fs";
|
|
31
|
-
//#region ../types/dist/event-category-
|
|
31
|
+
//#region ../types/dist/event-category-DHXxB8t9.mjs
|
|
32
32
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
33
33
|
EventCategory["SystemBoot"] = "system.boot";
|
|
34
34
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -324,7 +324,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
324
324
|
* TRANSITION into that state (never per dispatch), and the node is dropped
|
|
325
325
|
* from the placement candidate set for as long as it holds.
|
|
326
326
|
*
|
|
327
|
-
* This exists because the state was previously invisible:
|
|
327
|
+
* This exists because the state was previously invisible: agent-a
|
|
328
328
|
* absorbed 283k inference errors in a day while still being handed cameras,
|
|
329
329
|
* and nothing in the system said so.
|
|
330
330
|
*
|
|
@@ -5463,7 +5463,7 @@ var ZodIssueCode = {
|
|
|
5463
5463
|
var ZodFirstPartyTypeKind;
|
|
5464
5464
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5465
5465
|
//#endregion
|
|
5466
|
-
//#region ../types/dist/sleep-
|
|
5466
|
+
//#region ../types/dist/sleep-BErAxhul.mjs
|
|
5467
5467
|
/**
|
|
5468
5468
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5469
5469
|
* window to float samples (D455).
|
|
@@ -8524,6 +8524,1980 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
8524
8524
|
kind: "mutation",
|
|
8525
8525
|
auth: "admin"
|
|
8526
8526
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
8527
|
+
Object.freeze({ "doorbell": "lastPressedAt" });
|
|
8528
|
+
/** Every capability name, so addon code can check a name without the schema graph. */
|
|
8529
|
+
var CAP_NAMES = Object.freeze([
|
|
8530
|
+
"accessories",
|
|
8531
|
+
"addon-pages",
|
|
8532
|
+
"addon-pages-source",
|
|
8533
|
+
"addon-routes",
|
|
8534
|
+
"addon-settings",
|
|
8535
|
+
"addon-widgets",
|
|
8536
|
+
"addon-widgets-source",
|
|
8537
|
+
"addons",
|
|
8538
|
+
"admin-ui",
|
|
8539
|
+
"air-quality-sensor",
|
|
8540
|
+
"alarm-panel",
|
|
8541
|
+
"alerts",
|
|
8542
|
+
"ambient-light-sensor",
|
|
8543
|
+
"audio-analysis",
|
|
8544
|
+
"audio-analyzer",
|
|
8545
|
+
"audio-codec",
|
|
8546
|
+
"audio-metrics",
|
|
8547
|
+
"auth-provider",
|
|
8548
|
+
"automation-control",
|
|
8549
|
+
"backup",
|
|
8550
|
+
"battery",
|
|
8551
|
+
"binary",
|
|
8552
|
+
"brightness",
|
|
8553
|
+
"broker",
|
|
8554
|
+
"button",
|
|
8555
|
+
"calendar-source",
|
|
8556
|
+
"calendars",
|
|
8557
|
+
"camera-credentials",
|
|
8558
|
+
"camera-grid-layout",
|
|
8559
|
+
"camera-pipeline-config",
|
|
8560
|
+
"camera-streams",
|
|
8561
|
+
"carbon-monoxide",
|
|
8562
|
+
"climate-control",
|
|
8563
|
+
"color",
|
|
8564
|
+
"composer",
|
|
8565
|
+
"connection-test",
|
|
8566
|
+
"connectivity",
|
|
8567
|
+
"consumables",
|
|
8568
|
+
"contact",
|
|
8569
|
+
"control",
|
|
8570
|
+
"core-blocks",
|
|
8571
|
+
"cover",
|
|
8572
|
+
"custom-model-registry",
|
|
8573
|
+
"data-store-provider",
|
|
8574
|
+
"database-snapshot",
|
|
8575
|
+
"day-night",
|
|
8576
|
+
"decoder",
|
|
8577
|
+
"detection-pipeline",
|
|
8578
|
+
"device-admin-link",
|
|
8579
|
+
"device-adoption",
|
|
8580
|
+
"device-credentials",
|
|
8581
|
+
"device-discovery",
|
|
8582
|
+
"device-export",
|
|
8583
|
+
"device-extension",
|
|
8584
|
+
"device-history",
|
|
8585
|
+
"device-manager",
|
|
8586
|
+
"device-ops",
|
|
8587
|
+
"device-provider",
|
|
8588
|
+
"device-removal-hook",
|
|
8589
|
+
"device-state",
|
|
8590
|
+
"device-status",
|
|
8591
|
+
"dishwasher",
|
|
8592
|
+
"display-palette",
|
|
8593
|
+
"doorbell",
|
|
8594
|
+
"embedding-encoder",
|
|
8595
|
+
"enum-sensor",
|
|
8596
|
+
"event-emitter",
|
|
8597
|
+
"face-gallery",
|
|
8598
|
+
"failure-contribution",
|
|
8599
|
+
"fan-control",
|
|
8600
|
+
"feature-probe",
|
|
8601
|
+
"filesystem-browse",
|
|
8602
|
+
"flood",
|
|
8603
|
+
"gas",
|
|
8604
|
+
"heating-valve",
|
|
8605
|
+
"humidifier",
|
|
8606
|
+
"humidity-sensor",
|
|
8607
|
+
"image",
|
|
8608
|
+
"image-settings",
|
|
8609
|
+
"integrations",
|
|
8610
|
+
"intercom",
|
|
8611
|
+
"keychain",
|
|
8612
|
+
"keychain-admin",
|
|
8613
|
+
"lawn-mower-control",
|
|
8614
|
+
"llm",
|
|
8615
|
+
"llm-runtime",
|
|
8616
|
+
"load-contribution",
|
|
8617
|
+
"local-network",
|
|
8618
|
+
"lock-control",
|
|
8619
|
+
"log-channels",
|
|
8620
|
+
"log-destination",
|
|
8621
|
+
"login-method",
|
|
8622
|
+
"media-player",
|
|
8623
|
+
"mesh-network",
|
|
8624
|
+
"metrics-provider",
|
|
8625
|
+
"model-convert",
|
|
8626
|
+
"model-distributor",
|
|
8627
|
+
"motion",
|
|
8628
|
+
"motion-detection",
|
|
8629
|
+
"motion-trigger",
|
|
8630
|
+
"motion-zones",
|
|
8631
|
+
"mqtt-broker",
|
|
8632
|
+
"native-object-detection",
|
|
8633
|
+
"navigation",
|
|
8634
|
+
"network-access",
|
|
8635
|
+
"network-link",
|
|
8636
|
+
"network-quality",
|
|
8637
|
+
"node-certificates",
|
|
8638
|
+
"nodes",
|
|
8639
|
+
"notification-output",
|
|
8640
|
+
"notification-rules",
|
|
8641
|
+
"notifier",
|
|
8642
|
+
"numeric-sensor",
|
|
8643
|
+
"oauth-integration",
|
|
8644
|
+
"oidc-connections",
|
|
8645
|
+
"osd",
|
|
8646
|
+
"osd-manager",
|
|
8647
|
+
"pet-feeder",
|
|
8648
|
+
"pipeline-analytics",
|
|
8649
|
+
"pipeline-executor",
|
|
8650
|
+
"pipeline-orchestrator",
|
|
8651
|
+
"pipeline-runner",
|
|
8652
|
+
"plate-gallery",
|
|
8653
|
+
"platform-probe",
|
|
8654
|
+
"power-meter",
|
|
8655
|
+
"presence",
|
|
8656
|
+
"pressure-sensor",
|
|
8657
|
+
"privacy-mask",
|
|
8658
|
+
"ptz",
|
|
8659
|
+
"ptz-autotrack",
|
|
8660
|
+
"reboot",
|
|
8661
|
+
"record-entries",
|
|
8662
|
+
"recording",
|
|
8663
|
+
"recording-archive",
|
|
8664
|
+
"recording-export",
|
|
8665
|
+
"recording-onboard",
|
|
8666
|
+
"recording-signal",
|
|
8667
|
+
"records",
|
|
8668
|
+
"running-state",
|
|
8669
|
+
"scene-monitor",
|
|
8670
|
+
"script-runner",
|
|
8671
|
+
"server-management",
|
|
8672
|
+
"settings-store",
|
|
8673
|
+
"smoke",
|
|
8674
|
+
"smtp-provider",
|
|
8675
|
+
"snapshot",
|
|
8676
|
+
"sso-bridge",
|
|
8677
|
+
"storage",
|
|
8678
|
+
"storage-admin",
|
|
8679
|
+
"storage-evictable",
|
|
8680
|
+
"storage-migration",
|
|
8681
|
+
"storage-occupancy",
|
|
8682
|
+
"storage-provider",
|
|
8683
|
+
"stream-broker",
|
|
8684
|
+
"stream-catalog",
|
|
8685
|
+
"stream-params",
|
|
8686
|
+
"stream-signals",
|
|
8687
|
+
"switch",
|
|
8688
|
+
"system",
|
|
8689
|
+
"tamper",
|
|
8690
|
+
"temperature-sensor",
|
|
8691
|
+
"terminal-session",
|
|
8692
|
+
"toast",
|
|
8693
|
+
"training",
|
|
8694
|
+
"training-provider",
|
|
8695
|
+
"turn-provider",
|
|
8696
|
+
"update",
|
|
8697
|
+
"user-management",
|
|
8698
|
+
"user-passkeys",
|
|
8699
|
+
"vacuum-control",
|
|
8700
|
+
"valve",
|
|
8701
|
+
"vector-store",
|
|
8702
|
+
"vibration",
|
|
8703
|
+
"videoclips",
|
|
8704
|
+
"viewer-ui",
|
|
8705
|
+
"water-heater",
|
|
8706
|
+
"weather",
|
|
8707
|
+
"webrtc-session",
|
|
8708
|
+
"zone-analytics",
|
|
8709
|
+
"zone-rules",
|
|
8710
|
+
"zones"
|
|
8711
|
+
]);
|
|
8712
|
+
Object.freeze({
|
|
8713
|
+
"air-quality-sensor": [
|
|
8714
|
+
{
|
|
8715
|
+
"path": "co2Ppm",
|
|
8716
|
+
"valueType": "number"
|
|
8717
|
+
},
|
|
8718
|
+
{
|
|
8719
|
+
"path": "vocPpb",
|
|
8720
|
+
"valueType": "number"
|
|
8721
|
+
},
|
|
8722
|
+
{
|
|
8723
|
+
"path": "pm25",
|
|
8724
|
+
"valueType": "number"
|
|
8725
|
+
},
|
|
8726
|
+
{
|
|
8727
|
+
"path": "pm10",
|
|
8728
|
+
"valueType": "number"
|
|
8729
|
+
},
|
|
8730
|
+
{
|
|
8731
|
+
"path": "aqi",
|
|
8732
|
+
"valueType": "number"
|
|
8733
|
+
},
|
|
8734
|
+
{
|
|
8735
|
+
"path": "unit",
|
|
8736
|
+
"valueType": "string"
|
|
8737
|
+
},
|
|
8738
|
+
{
|
|
8739
|
+
"path": "precision",
|
|
8740
|
+
"valueType": "number"
|
|
8741
|
+
}
|
|
8742
|
+
],
|
|
8743
|
+
"alarm-panel": [
|
|
8744
|
+
{
|
|
8745
|
+
"path": "state",
|
|
8746
|
+
"valueType": "enum",
|
|
8747
|
+
"enumValues": [
|
|
8748
|
+
"disarmed",
|
|
8749
|
+
"armed_home",
|
|
8750
|
+
"armed_away",
|
|
8751
|
+
"armed_night",
|
|
8752
|
+
"armed_vacation",
|
|
8753
|
+
"armed_custom_bypass",
|
|
8754
|
+
"arming",
|
|
8755
|
+
"disarming",
|
|
8756
|
+
"pending",
|
|
8757
|
+
"triggered"
|
|
8758
|
+
]
|
|
8759
|
+
},
|
|
8760
|
+
{
|
|
8761
|
+
"path": "targetMode",
|
|
8762
|
+
"valueType": "enum",
|
|
8763
|
+
"enumValues": [
|
|
8764
|
+
"home",
|
|
8765
|
+
"away",
|
|
8766
|
+
"night",
|
|
8767
|
+
"vacation",
|
|
8768
|
+
"custom_bypass"
|
|
8769
|
+
]
|
|
8770
|
+
},
|
|
8771
|
+
{
|
|
8772
|
+
"path": "requiresCode",
|
|
8773
|
+
"valueType": "boolean"
|
|
8774
|
+
}
|
|
8775
|
+
],
|
|
8776
|
+
"ambient-light-sensor": [
|
|
8777
|
+
{
|
|
8778
|
+
"path": "lux",
|
|
8779
|
+
"valueType": "number"
|
|
8780
|
+
},
|
|
8781
|
+
{
|
|
8782
|
+
"path": "unit",
|
|
8783
|
+
"valueType": "string"
|
|
8784
|
+
},
|
|
8785
|
+
{
|
|
8786
|
+
"path": "precision",
|
|
8787
|
+
"valueType": "number"
|
|
8788
|
+
}
|
|
8789
|
+
],
|
|
8790
|
+
"audio-metrics": [
|
|
8791
|
+
{
|
|
8792
|
+
"path": "ts",
|
|
8793
|
+
"valueType": "number"
|
|
8794
|
+
},
|
|
8795
|
+
{
|
|
8796
|
+
"path": "windowSec",
|
|
8797
|
+
"valueType": "number"
|
|
8798
|
+
},
|
|
8799
|
+
{
|
|
8800
|
+
"path": "level.rms",
|
|
8801
|
+
"valueType": "number"
|
|
8802
|
+
},
|
|
8803
|
+
{
|
|
8804
|
+
"path": "level.dbfs",
|
|
8805
|
+
"valueType": "number"
|
|
8806
|
+
},
|
|
8807
|
+
{
|
|
8808
|
+
"path": "peakDbfs",
|
|
8809
|
+
"valueType": "number"
|
|
8810
|
+
},
|
|
8811
|
+
{
|
|
8812
|
+
"path": "avgDbfs",
|
|
8813
|
+
"valueType": "number"
|
|
8814
|
+
},
|
|
8815
|
+
{
|
|
8816
|
+
"path": "current.className",
|
|
8817
|
+
"valueType": "string"
|
|
8818
|
+
},
|
|
8819
|
+
{
|
|
8820
|
+
"path": "current.score",
|
|
8821
|
+
"valueType": "number"
|
|
8822
|
+
},
|
|
8823
|
+
{
|
|
8824
|
+
"path": "current.timestamp",
|
|
8825
|
+
"valueType": "number"
|
|
8826
|
+
}
|
|
8827
|
+
],
|
|
8828
|
+
"automation-control": [
|
|
8829
|
+
{
|
|
8830
|
+
"path": "enabled",
|
|
8831
|
+
"valueType": "boolean"
|
|
8832
|
+
},
|
|
8833
|
+
{
|
|
8834
|
+
"path": "isRunning",
|
|
8835
|
+
"valueType": "boolean"
|
|
8836
|
+
},
|
|
8837
|
+
{
|
|
8838
|
+
"path": "lastTriggeredAt",
|
|
8839
|
+
"valueType": "number"
|
|
8840
|
+
},
|
|
8841
|
+
{
|
|
8842
|
+
"path": "lastError",
|
|
8843
|
+
"valueType": "string"
|
|
8844
|
+
}
|
|
8845
|
+
],
|
|
8846
|
+
"battery": [
|
|
8847
|
+
{
|
|
8848
|
+
"path": "percentage",
|
|
8849
|
+
"valueType": "number"
|
|
8850
|
+
},
|
|
8851
|
+
{
|
|
8852
|
+
"path": "charging",
|
|
8853
|
+
"valueType": "enum",
|
|
8854
|
+
"enumValues": [
|
|
8855
|
+
"dc",
|
|
8856
|
+
"solar",
|
|
8857
|
+
"none",
|
|
8858
|
+
"unknown"
|
|
8859
|
+
]
|
|
8860
|
+
},
|
|
8861
|
+
{
|
|
8862
|
+
"path": "sleeping",
|
|
8863
|
+
"valueType": "boolean"
|
|
8864
|
+
},
|
|
8865
|
+
{
|
|
8866
|
+
"path": "lastUpdated",
|
|
8867
|
+
"valueType": "number"
|
|
8868
|
+
},
|
|
8869
|
+
{
|
|
8870
|
+
"path": "lastContactAt",
|
|
8871
|
+
"valueType": "number"
|
|
8872
|
+
},
|
|
8873
|
+
{
|
|
8874
|
+
"path": "lastFullRefreshAt",
|
|
8875
|
+
"valueType": "number"
|
|
8876
|
+
},
|
|
8877
|
+
{
|
|
8878
|
+
"path": "binary",
|
|
8879
|
+
"valueType": "boolean"
|
|
8880
|
+
}
|
|
8881
|
+
],
|
|
8882
|
+
"binary": [{
|
|
8883
|
+
"path": "on",
|
|
8884
|
+
"valueType": "boolean"
|
|
8885
|
+
}],
|
|
8886
|
+
"brightness": [{
|
|
8887
|
+
"path": "percentage",
|
|
8888
|
+
"valueType": "number"
|
|
8889
|
+
}],
|
|
8890
|
+
"broker": [{
|
|
8891
|
+
"path": "brokerCount",
|
|
8892
|
+
"valueType": "number"
|
|
8893
|
+
}, {
|
|
8894
|
+
"path": "connectedCount",
|
|
8895
|
+
"valueType": "number"
|
|
8896
|
+
}],
|
|
8897
|
+
"camera-credentials": [
|
|
8898
|
+
{
|
|
8899
|
+
"path": "host",
|
|
8900
|
+
"valueType": "string"
|
|
8901
|
+
},
|
|
8902
|
+
{
|
|
8903
|
+
"path": "port",
|
|
8904
|
+
"valueType": "number"
|
|
8905
|
+
},
|
|
8906
|
+
{
|
|
8907
|
+
"path": "onvifPort",
|
|
8908
|
+
"valueType": "number"
|
|
8909
|
+
},
|
|
8910
|
+
{
|
|
8911
|
+
"path": "rtspPort",
|
|
8912
|
+
"valueType": "number"
|
|
8913
|
+
},
|
|
8914
|
+
{
|
|
8915
|
+
"path": "https",
|
|
8916
|
+
"valueType": "boolean"
|
|
8917
|
+
},
|
|
8918
|
+
{
|
|
8919
|
+
"path": "hasUsername",
|
|
8920
|
+
"valueType": "boolean"
|
|
8921
|
+
},
|
|
8922
|
+
{
|
|
8923
|
+
"path": "hasPassword",
|
|
8924
|
+
"valueType": "boolean"
|
|
8925
|
+
},
|
|
8926
|
+
{
|
|
8927
|
+
"path": "onvifProfile",
|
|
8928
|
+
"valueType": "string"
|
|
8929
|
+
}
|
|
8930
|
+
],
|
|
8931
|
+
"camera-streams": [
|
|
8932
|
+
{
|
|
8933
|
+
"path": "online",
|
|
8934
|
+
"valueType": "boolean"
|
|
8935
|
+
},
|
|
8936
|
+
{
|
|
8937
|
+
"path": "slotStatuses.high",
|
|
8938
|
+
"valueType": "enum",
|
|
8939
|
+
"enumValues": [
|
|
8940
|
+
"unassigned",
|
|
8941
|
+
"idle",
|
|
8942
|
+
"connecting",
|
|
8943
|
+
"streaming",
|
|
8944
|
+
"error"
|
|
8945
|
+
]
|
|
8946
|
+
},
|
|
8947
|
+
{
|
|
8948
|
+
"path": "slotStatuses.mid",
|
|
8949
|
+
"valueType": "enum",
|
|
8950
|
+
"enumValues": [
|
|
8951
|
+
"unassigned",
|
|
8952
|
+
"idle",
|
|
8953
|
+
"connecting",
|
|
8954
|
+
"streaming",
|
|
8955
|
+
"error"
|
|
8956
|
+
]
|
|
8957
|
+
},
|
|
8958
|
+
{
|
|
8959
|
+
"path": "slotStatuses.low",
|
|
8960
|
+
"valueType": "enum",
|
|
8961
|
+
"enumValues": [
|
|
8962
|
+
"unassigned",
|
|
8963
|
+
"idle",
|
|
8964
|
+
"connecting",
|
|
8965
|
+
"streaming",
|
|
8966
|
+
"error"
|
|
8967
|
+
]
|
|
8968
|
+
},
|
|
8969
|
+
{
|
|
8970
|
+
"path": "slotErrors.high",
|
|
8971
|
+
"valueType": "string"
|
|
8972
|
+
},
|
|
8973
|
+
{
|
|
8974
|
+
"path": "slotErrors.mid",
|
|
8975
|
+
"valueType": "string"
|
|
8976
|
+
},
|
|
8977
|
+
{
|
|
8978
|
+
"path": "slotErrors.low",
|
|
8979
|
+
"valueType": "string"
|
|
8980
|
+
}
|
|
8981
|
+
],
|
|
8982
|
+
"carbon-monoxide": [{
|
|
8983
|
+
"path": "detected",
|
|
8984
|
+
"valueType": "boolean"
|
|
8985
|
+
}],
|
|
8986
|
+
"climate-control": [
|
|
8987
|
+
{
|
|
8988
|
+
"path": "mode",
|
|
8989
|
+
"valueType": "enum",
|
|
8990
|
+
"enumValues": [
|
|
8991
|
+
"off",
|
|
8992
|
+
"heat",
|
|
8993
|
+
"cool",
|
|
8994
|
+
"auto",
|
|
8995
|
+
"heat_cool",
|
|
8996
|
+
"fan_only",
|
|
8997
|
+
"dry"
|
|
8998
|
+
]
|
|
8999
|
+
},
|
|
9000
|
+
{
|
|
9001
|
+
"path": "fanMode",
|
|
9002
|
+
"valueType": "string"
|
|
9003
|
+
},
|
|
9004
|
+
{
|
|
9005
|
+
"path": "preset",
|
|
9006
|
+
"valueType": "string"
|
|
9007
|
+
},
|
|
9008
|
+
{
|
|
9009
|
+
"path": "target",
|
|
9010
|
+
"valueType": "number"
|
|
9011
|
+
},
|
|
9012
|
+
{
|
|
9013
|
+
"path": "targetHigh",
|
|
9014
|
+
"valueType": "number"
|
|
9015
|
+
},
|
|
9016
|
+
{
|
|
9017
|
+
"path": "targetLow",
|
|
9018
|
+
"valueType": "number"
|
|
9019
|
+
},
|
|
9020
|
+
{
|
|
9021
|
+
"path": "targetHumidity",
|
|
9022
|
+
"valueType": "number"
|
|
9023
|
+
},
|
|
9024
|
+
{
|
|
9025
|
+
"path": "currentTemp",
|
|
9026
|
+
"valueType": "number"
|
|
9027
|
+
},
|
|
9028
|
+
{
|
|
9029
|
+
"path": "currentHumidity",
|
|
9030
|
+
"valueType": "number"
|
|
9031
|
+
},
|
|
9032
|
+
{
|
|
9033
|
+
"path": "swingVertical",
|
|
9034
|
+
"valueType": "boolean"
|
|
9035
|
+
},
|
|
9036
|
+
{
|
|
9037
|
+
"path": "swingHorizontal",
|
|
9038
|
+
"valueType": "boolean"
|
|
9039
|
+
},
|
|
9040
|
+
{
|
|
9041
|
+
"path": "minTemp",
|
|
9042
|
+
"valueType": "number"
|
|
9043
|
+
},
|
|
9044
|
+
{
|
|
9045
|
+
"path": "maxTemp",
|
|
9046
|
+
"valueType": "number"
|
|
9047
|
+
},
|
|
9048
|
+
{
|
|
9049
|
+
"path": "tempStep",
|
|
9050
|
+
"valueType": "number"
|
|
9051
|
+
}
|
|
9052
|
+
],
|
|
9053
|
+
"color": [
|
|
9054
|
+
{
|
|
9055
|
+
"path": "mode",
|
|
9056
|
+
"valueType": "enum",
|
|
9057
|
+
"enumValues": [
|
|
9058
|
+
"rgb",
|
|
9059
|
+
"hsv",
|
|
9060
|
+
"mired"
|
|
9061
|
+
]
|
|
9062
|
+
},
|
|
9063
|
+
{
|
|
9064
|
+
"path": "rgb.r",
|
|
9065
|
+
"valueType": "number"
|
|
9066
|
+
},
|
|
9067
|
+
{
|
|
9068
|
+
"path": "rgb.g",
|
|
9069
|
+
"valueType": "number"
|
|
9070
|
+
},
|
|
9071
|
+
{
|
|
9072
|
+
"path": "rgb.b",
|
|
9073
|
+
"valueType": "number"
|
|
9074
|
+
},
|
|
9075
|
+
{
|
|
9076
|
+
"path": "hsv.h",
|
|
9077
|
+
"valueType": "number"
|
|
9078
|
+
},
|
|
9079
|
+
{
|
|
9080
|
+
"path": "hsv.s",
|
|
9081
|
+
"valueType": "number"
|
|
9082
|
+
},
|
|
9083
|
+
{
|
|
9084
|
+
"path": "hsv.v",
|
|
9085
|
+
"valueType": "number"
|
|
9086
|
+
},
|
|
9087
|
+
{
|
|
9088
|
+
"path": "mireds",
|
|
9089
|
+
"valueType": "number"
|
|
9090
|
+
}
|
|
9091
|
+
],
|
|
9092
|
+
"connectivity": [{
|
|
9093
|
+
"path": "connected",
|
|
9094
|
+
"valueType": "boolean"
|
|
9095
|
+
}],
|
|
9096
|
+
"contact": [{
|
|
9097
|
+
"path": "entryOpen",
|
|
9098
|
+
"valueType": "boolean"
|
|
9099
|
+
}],
|
|
9100
|
+
"control": [
|
|
9101
|
+
{
|
|
9102
|
+
"path": "kind",
|
|
9103
|
+
"valueType": "enum",
|
|
9104
|
+
"enumValues": [
|
|
9105
|
+
"numeric",
|
|
9106
|
+
"select",
|
|
9107
|
+
"text",
|
|
9108
|
+
"datetime"
|
|
9109
|
+
]
|
|
9110
|
+
},
|
|
9111
|
+
{
|
|
9112
|
+
"path": "unit",
|
|
9113
|
+
"valueType": "string"
|
|
9114
|
+
},
|
|
9115
|
+
{
|
|
9116
|
+
"path": "min",
|
|
9117
|
+
"valueType": "number"
|
|
9118
|
+
},
|
|
9119
|
+
{
|
|
9120
|
+
"path": "max",
|
|
9121
|
+
"valueType": "number"
|
|
9122
|
+
},
|
|
9123
|
+
{
|
|
9124
|
+
"path": "step",
|
|
9125
|
+
"valueType": "number"
|
|
9126
|
+
},
|
|
9127
|
+
{
|
|
9128
|
+
"path": "precision",
|
|
9129
|
+
"valueType": "number"
|
|
9130
|
+
},
|
|
9131
|
+
{
|
|
9132
|
+
"path": "format",
|
|
9133
|
+
"valueType": "enum",
|
|
9134
|
+
"enumValues": [
|
|
9135
|
+
"date",
|
|
9136
|
+
"time",
|
|
9137
|
+
"datetime"
|
|
9138
|
+
]
|
|
9139
|
+
}
|
|
9140
|
+
],
|
|
9141
|
+
"cover": [
|
|
9142
|
+
{
|
|
9143
|
+
"path": "state",
|
|
9144
|
+
"valueType": "enum",
|
|
9145
|
+
"enumValues": [
|
|
9146
|
+
"open",
|
|
9147
|
+
"opening",
|
|
9148
|
+
"closing",
|
|
9149
|
+
"closed",
|
|
9150
|
+
"stopped"
|
|
9151
|
+
]
|
|
9152
|
+
},
|
|
9153
|
+
{
|
|
9154
|
+
"path": "position",
|
|
9155
|
+
"valueType": "number"
|
|
9156
|
+
},
|
|
9157
|
+
{
|
|
9158
|
+
"path": "tiltPosition",
|
|
9159
|
+
"valueType": "number"
|
|
9160
|
+
}
|
|
9161
|
+
],
|
|
9162
|
+
"day-night": [
|
|
9163
|
+
{
|
|
9164
|
+
"path": "mode",
|
|
9165
|
+
"valueType": "enum",
|
|
9166
|
+
"enumValues": [
|
|
9167
|
+
"auto",
|
|
9168
|
+
"day",
|
|
9169
|
+
"night",
|
|
9170
|
+
"schedule"
|
|
9171
|
+
]
|
|
9172
|
+
},
|
|
9173
|
+
{
|
|
9174
|
+
"path": "sensitivity",
|
|
9175
|
+
"valueType": "number"
|
|
9176
|
+
},
|
|
9177
|
+
{
|
|
9178
|
+
"path": "switchDelaySec",
|
|
9179
|
+
"valueType": "number"
|
|
9180
|
+
}
|
|
9181
|
+
],
|
|
9182
|
+
"device-adoption": [
|
|
9183
|
+
{
|
|
9184
|
+
"path": "lastDiscoveryAt",
|
|
9185
|
+
"valueType": "number"
|
|
9186
|
+
},
|
|
9187
|
+
{
|
|
9188
|
+
"path": "candidateCount",
|
|
9189
|
+
"valueType": "number"
|
|
9190
|
+
},
|
|
9191
|
+
{
|
|
9192
|
+
"path": "adoptedCount",
|
|
9193
|
+
"valueType": "number"
|
|
9194
|
+
},
|
|
9195
|
+
{
|
|
9196
|
+
"path": "lastError",
|
|
9197
|
+
"valueType": "string"
|
|
9198
|
+
}
|
|
9199
|
+
],
|
|
9200
|
+
"device-discovery": [{
|
|
9201
|
+
"path": "lastDiscoveryAt",
|
|
9202
|
+
"valueType": "number"
|
|
9203
|
+
}, {
|
|
9204
|
+
"path": "lastError",
|
|
9205
|
+
"valueType": "string"
|
|
9206
|
+
}],
|
|
9207
|
+
"device-export": [
|
|
9208
|
+
{
|
|
9209
|
+
"path": "linkState",
|
|
9210
|
+
"valueType": "enum",
|
|
9211
|
+
"enumValues": [
|
|
9212
|
+
"unlinked",
|
|
9213
|
+
"linked",
|
|
9214
|
+
"error"
|
|
9215
|
+
]
|
|
9216
|
+
},
|
|
9217
|
+
{
|
|
9218
|
+
"path": "exposedDeviceCount",
|
|
9219
|
+
"valueType": "number"
|
|
9220
|
+
},
|
|
9221
|
+
{
|
|
9222
|
+
"path": "error",
|
|
9223
|
+
"valueType": "string"
|
|
9224
|
+
},
|
|
9225
|
+
{
|
|
9226
|
+
"path": "setup.qr",
|
|
9227
|
+
"valueType": "string"
|
|
9228
|
+
},
|
|
9229
|
+
{
|
|
9230
|
+
"path": "setup.note",
|
|
9231
|
+
"valueType": "string"
|
|
9232
|
+
}
|
|
9233
|
+
],
|
|
9234
|
+
"device-status": [{
|
|
9235
|
+
"path": "online",
|
|
9236
|
+
"valueType": "boolean"
|
|
9237
|
+
}],
|
|
9238
|
+
"dishwasher": [
|
|
9239
|
+
{
|
|
9240
|
+
"path": "availability",
|
|
9241
|
+
"valueType": "enum",
|
|
9242
|
+
"enumValues": [
|
|
9243
|
+
"available",
|
|
9244
|
+
"offline",
|
|
9245
|
+
"description-missing"
|
|
9246
|
+
]
|
|
9247
|
+
},
|
|
9248
|
+
{
|
|
9249
|
+
"path": "state",
|
|
9250
|
+
"valueType": "enum",
|
|
9251
|
+
"enumValues": [
|
|
9252
|
+
"idle",
|
|
9253
|
+
"running",
|
|
9254
|
+
"paused",
|
|
9255
|
+
"finished",
|
|
9256
|
+
"error",
|
|
9257
|
+
"unavailable"
|
|
9258
|
+
]
|
|
9259
|
+
},
|
|
9260
|
+
{
|
|
9261
|
+
"path": "operationState",
|
|
9262
|
+
"valueType": "enum",
|
|
9263
|
+
"enumValues": [
|
|
9264
|
+
"Inactive",
|
|
9265
|
+
"Ready",
|
|
9266
|
+
"DelayedStart",
|
|
9267
|
+
"Run",
|
|
9268
|
+
"Pause",
|
|
9269
|
+
"ActionRequired",
|
|
9270
|
+
"Finished",
|
|
9271
|
+
"Error",
|
|
9272
|
+
"Aborting"
|
|
9273
|
+
]
|
|
9274
|
+
},
|
|
9275
|
+
{
|
|
9276
|
+
"path": "program",
|
|
9277
|
+
"valueType": "string"
|
|
9278
|
+
},
|
|
9279
|
+
{
|
|
9280
|
+
"path": "selectedProgram",
|
|
9281
|
+
"valueType": "string"
|
|
9282
|
+
},
|
|
9283
|
+
{
|
|
9284
|
+
"path": "remainingSeconds",
|
|
9285
|
+
"valueType": "number"
|
|
9286
|
+
},
|
|
9287
|
+
{
|
|
9288
|
+
"path": "delayedStartSeconds",
|
|
9289
|
+
"valueType": "number"
|
|
9290
|
+
},
|
|
9291
|
+
{
|
|
9292
|
+
"path": "progressPercent",
|
|
9293
|
+
"valueType": "number"
|
|
9294
|
+
},
|
|
9295
|
+
{
|
|
9296
|
+
"path": "doorOpen",
|
|
9297
|
+
"valueType": "boolean"
|
|
9298
|
+
},
|
|
9299
|
+
{
|
|
9300
|
+
"path": "doorLocked",
|
|
9301
|
+
"valueType": "boolean"
|
|
9302
|
+
},
|
|
9303
|
+
{
|
|
9304
|
+
"path": "remoteStartAllowed",
|
|
9305
|
+
"valueType": "boolean"
|
|
9306
|
+
},
|
|
9307
|
+
{
|
|
9308
|
+
"path": "remoteControlActive",
|
|
9309
|
+
"valueType": "boolean"
|
|
9310
|
+
},
|
|
9311
|
+
{
|
|
9312
|
+
"path": "localControlActive",
|
|
9313
|
+
"valueType": "boolean"
|
|
9314
|
+
},
|
|
9315
|
+
{
|
|
9316
|
+
"path": "powerOn",
|
|
9317
|
+
"valueType": "boolean"
|
|
9318
|
+
},
|
|
9319
|
+
{
|
|
9320
|
+
"path": "powerState",
|
|
9321
|
+
"valueType": "string"
|
|
9322
|
+
},
|
|
9323
|
+
{
|
|
9324
|
+
"path": "filterCleaningDue",
|
|
9325
|
+
"valueType": "boolean"
|
|
9326
|
+
},
|
|
9327
|
+
{
|
|
9328
|
+
"path": "machineCareDue",
|
|
9329
|
+
"valueType": "boolean"
|
|
9330
|
+
},
|
|
9331
|
+
{
|
|
9332
|
+
"path": "machineCareRemainingRuns",
|
|
9333
|
+
"valueType": "number"
|
|
9334
|
+
},
|
|
9335
|
+
{
|
|
9336
|
+
"path": "halfLoad",
|
|
9337
|
+
"valueType": "boolean"
|
|
9338
|
+
},
|
|
9339
|
+
{
|
|
9340
|
+
"path": "hygienePlus",
|
|
9341
|
+
"valueType": "boolean"
|
|
9342
|
+
},
|
|
9343
|
+
{
|
|
9344
|
+
"path": "extraDry",
|
|
9345
|
+
"valueType": "boolean"
|
|
9346
|
+
},
|
|
9347
|
+
{
|
|
9348
|
+
"path": "intensiveZone",
|
|
9349
|
+
"valueType": "boolean"
|
|
9350
|
+
},
|
|
9351
|
+
{
|
|
9352
|
+
"path": "varioSpeedPlus",
|
|
9353
|
+
"valueType": "boolean"
|
|
9354
|
+
},
|
|
9355
|
+
{
|
|
9356
|
+
"path": "childLock",
|
|
9357
|
+
"valueType": "boolean"
|
|
9358
|
+
},
|
|
9359
|
+
{
|
|
9360
|
+
"path": "errorCode",
|
|
9361
|
+
"valueType": "number"
|
|
9362
|
+
},
|
|
9363
|
+
{
|
|
9364
|
+
"path": "errorLabel",
|
|
9365
|
+
"valueType": "string"
|
|
9366
|
+
}
|
|
9367
|
+
],
|
|
9368
|
+
"doorbell": [{
|
|
9369
|
+
"path": "lastPressedAt",
|
|
9370
|
+
"valueType": "number"
|
|
9371
|
+
}, {
|
|
9372
|
+
"path": "pressCountSinceStart",
|
|
9373
|
+
"valueType": "number"
|
|
9374
|
+
}],
|
|
9375
|
+
"enum-sensor": [{
|
|
9376
|
+
"path": "value",
|
|
9377
|
+
"valueType": "string"
|
|
9378
|
+
}, {
|
|
9379
|
+
"path": "format",
|
|
9380
|
+
"valueType": "enum",
|
|
9381
|
+
"enumValues": [
|
|
9382
|
+
"date",
|
|
9383
|
+
"time",
|
|
9384
|
+
"datetime"
|
|
9385
|
+
]
|
|
9386
|
+
}],
|
|
9387
|
+
"event-emitter": [
|
|
9388
|
+
{
|
|
9389
|
+
"path": "lastEvent.deviceId",
|
|
9390
|
+
"valueType": "number"
|
|
9391
|
+
},
|
|
9392
|
+
{
|
|
9393
|
+
"path": "lastEvent.eventType",
|
|
9394
|
+
"valueType": "string"
|
|
9395
|
+
},
|
|
9396
|
+
{
|
|
9397
|
+
"path": "lastEvent.timestamp",
|
|
9398
|
+
"valueType": "number"
|
|
9399
|
+
},
|
|
9400
|
+
{
|
|
9401
|
+
"path": "lastEvent.seq",
|
|
9402
|
+
"valueType": "number"
|
|
9403
|
+
},
|
|
9404
|
+
{
|
|
9405
|
+
"path": "eventCountSinceStart",
|
|
9406
|
+
"valueType": "number"
|
|
9407
|
+
}
|
|
9408
|
+
],
|
|
9409
|
+
"fan-control": [
|
|
9410
|
+
{
|
|
9411
|
+
"path": "percentage",
|
|
9412
|
+
"valueType": "number"
|
|
9413
|
+
},
|
|
9414
|
+
{
|
|
9415
|
+
"path": "percentageStep",
|
|
9416
|
+
"valueType": "number"
|
|
9417
|
+
},
|
|
9418
|
+
{
|
|
9419
|
+
"path": "preset",
|
|
9420
|
+
"valueType": "string"
|
|
9421
|
+
},
|
|
9422
|
+
{
|
|
9423
|
+
"path": "direction",
|
|
9424
|
+
"valueType": "enum",
|
|
9425
|
+
"enumValues": ["forward", "reverse"]
|
|
9426
|
+
},
|
|
9427
|
+
{
|
|
9428
|
+
"path": "oscillating",
|
|
9429
|
+
"valueType": "boolean"
|
|
9430
|
+
}
|
|
9431
|
+
],
|
|
9432
|
+
"feature-probe": [
|
|
9433
|
+
{
|
|
9434
|
+
"path": "deviceType",
|
|
9435
|
+
"valueType": "string"
|
|
9436
|
+
},
|
|
9437
|
+
{
|
|
9438
|
+
"path": "model",
|
|
9439
|
+
"valueType": "string"
|
|
9440
|
+
},
|
|
9441
|
+
{
|
|
9442
|
+
"path": "channelCount",
|
|
9443
|
+
"valueType": "number"
|
|
9444
|
+
},
|
|
9445
|
+
{
|
|
9446
|
+
"path": "lastProbedAt",
|
|
9447
|
+
"valueType": "number"
|
|
9448
|
+
}
|
|
9449
|
+
],
|
|
9450
|
+
"flood": [{
|
|
9451
|
+
"path": "flooded",
|
|
9452
|
+
"valueType": "boolean"
|
|
9453
|
+
}],
|
|
9454
|
+
"gas": [{
|
|
9455
|
+
"path": "detected",
|
|
9456
|
+
"valueType": "boolean"
|
|
9457
|
+
}],
|
|
9458
|
+
"heating-valve": [{
|
|
9459
|
+
"path": "position",
|
|
9460
|
+
"valueType": "number"
|
|
9461
|
+
}],
|
|
9462
|
+
"humidifier": [
|
|
9463
|
+
{
|
|
9464
|
+
"path": "on",
|
|
9465
|
+
"valueType": "boolean"
|
|
9466
|
+
},
|
|
9467
|
+
{
|
|
9468
|
+
"path": "currentHumidity",
|
|
9469
|
+
"valueType": "number"
|
|
9470
|
+
},
|
|
9471
|
+
{
|
|
9472
|
+
"path": "targetHumidity",
|
|
9473
|
+
"valueType": "number"
|
|
9474
|
+
},
|
|
9475
|
+
{
|
|
9476
|
+
"path": "mode",
|
|
9477
|
+
"valueType": "string"
|
|
9478
|
+
},
|
|
9479
|
+
{
|
|
9480
|
+
"path": "action",
|
|
9481
|
+
"valueType": "string"
|
|
9482
|
+
},
|
|
9483
|
+
{
|
|
9484
|
+
"path": "minHumidity",
|
|
9485
|
+
"valueType": "number"
|
|
9486
|
+
},
|
|
9487
|
+
{
|
|
9488
|
+
"path": "maxHumidity",
|
|
9489
|
+
"valueType": "number"
|
|
9490
|
+
}
|
|
9491
|
+
],
|
|
9492
|
+
"humidity-sensor": [
|
|
9493
|
+
{
|
|
9494
|
+
"path": "percent",
|
|
9495
|
+
"valueType": "number"
|
|
9496
|
+
},
|
|
9497
|
+
{
|
|
9498
|
+
"path": "unit",
|
|
9499
|
+
"valueType": "string"
|
|
9500
|
+
},
|
|
9501
|
+
{
|
|
9502
|
+
"path": "precision",
|
|
9503
|
+
"valueType": "number"
|
|
9504
|
+
}
|
|
9505
|
+
],
|
|
9506
|
+
"image": [{
|
|
9507
|
+
"path": "url",
|
|
9508
|
+
"valueType": "string"
|
|
9509
|
+
}, {
|
|
9510
|
+
"path": "lastUpdated",
|
|
9511
|
+
"valueType": "number"
|
|
9512
|
+
}],
|
|
9513
|
+
"image-settings": [
|
|
9514
|
+
{
|
|
9515
|
+
"path": "brightness",
|
|
9516
|
+
"valueType": "number"
|
|
9517
|
+
},
|
|
9518
|
+
{
|
|
9519
|
+
"path": "contrast",
|
|
9520
|
+
"valueType": "number"
|
|
9521
|
+
},
|
|
9522
|
+
{
|
|
9523
|
+
"path": "saturation",
|
|
9524
|
+
"valueType": "number"
|
|
9525
|
+
},
|
|
9526
|
+
{
|
|
9527
|
+
"path": "sharpness",
|
|
9528
|
+
"valueType": "number"
|
|
9529
|
+
},
|
|
9530
|
+
{
|
|
9531
|
+
"path": "mirror",
|
|
9532
|
+
"valueType": "boolean"
|
|
9533
|
+
},
|
|
9534
|
+
{
|
|
9535
|
+
"path": "flip",
|
|
9536
|
+
"valueType": "boolean"
|
|
9537
|
+
},
|
|
9538
|
+
{
|
|
9539
|
+
"path": "rotate",
|
|
9540
|
+
"valueType": "enum",
|
|
9541
|
+
"enumValues": [
|
|
9542
|
+
"0",
|
|
9543
|
+
"90",
|
|
9544
|
+
"180",
|
|
9545
|
+
"270"
|
|
9546
|
+
]
|
|
9547
|
+
},
|
|
9548
|
+
{
|
|
9549
|
+
"path": "whiteBalance",
|
|
9550
|
+
"valueType": "enum",
|
|
9551
|
+
"enumValues": ["auto", "manual"]
|
|
9552
|
+
},
|
|
9553
|
+
{
|
|
9554
|
+
"path": "warmth",
|
|
9555
|
+
"valueType": "number"
|
|
9556
|
+
},
|
|
9557
|
+
{
|
|
9558
|
+
"path": "exposureMode",
|
|
9559
|
+
"valueType": "enum",
|
|
9560
|
+
"enumValues": ["auto", "manual"]
|
|
9561
|
+
},
|
|
9562
|
+
{
|
|
9563
|
+
"path": "backlightMode",
|
|
9564
|
+
"valueType": "enum",
|
|
9565
|
+
"enumValues": [
|
|
9566
|
+
"off",
|
|
9567
|
+
"blc",
|
|
9568
|
+
"wdr",
|
|
9569
|
+
"hlc"
|
|
9570
|
+
]
|
|
9571
|
+
}
|
|
9572
|
+
],
|
|
9573
|
+
"intercom": [
|
|
9574
|
+
{
|
|
9575
|
+
"path": "talking",
|
|
9576
|
+
"valueType": "boolean"
|
|
9577
|
+
},
|
|
9578
|
+
{
|
|
9579
|
+
"path": "lastSessionAt",
|
|
9580
|
+
"valueType": "number"
|
|
9581
|
+
},
|
|
9582
|
+
{
|
|
9583
|
+
"path": "ability.sampleRate",
|
|
9584
|
+
"valueType": "number"
|
|
9585
|
+
},
|
|
9586
|
+
{
|
|
9587
|
+
"path": "ability.duplex",
|
|
9588
|
+
"valueType": "enum",
|
|
9589
|
+
"enumValues": ["half", "full"]
|
|
9590
|
+
},
|
|
9591
|
+
{
|
|
9592
|
+
"path": "ability.maxBacklogMs",
|
|
9593
|
+
"valueType": "number"
|
|
9594
|
+
}
|
|
9595
|
+
],
|
|
9596
|
+
"lawn-mower-control": [
|
|
9597
|
+
{
|
|
9598
|
+
"path": "activity",
|
|
9599
|
+
"valueType": "enum",
|
|
9600
|
+
"enumValues": [
|
|
9601
|
+
"idle",
|
|
9602
|
+
"mowing",
|
|
9603
|
+
"paused",
|
|
9604
|
+
"docked",
|
|
9605
|
+
"error"
|
|
9606
|
+
]
|
|
9607
|
+
},
|
|
9608
|
+
{
|
|
9609
|
+
"path": "batteryLevel",
|
|
9610
|
+
"valueType": "number"
|
|
9611
|
+
},
|
|
9612
|
+
{
|
|
9613
|
+
"path": "progressPercent",
|
|
9614
|
+
"valueType": "number"
|
|
9615
|
+
},
|
|
9616
|
+
{
|
|
9617
|
+
"path": "currentCode",
|
|
9618
|
+
"valueType": "number"
|
|
9619
|
+
},
|
|
9620
|
+
{
|
|
9621
|
+
"path": "currentCodeLabel",
|
|
9622
|
+
"valueType": "string"
|
|
9623
|
+
},
|
|
9624
|
+
{
|
|
9625
|
+
"path": "severity",
|
|
9626
|
+
"valueType": "enum",
|
|
9627
|
+
"enumValues": [
|
|
9628
|
+
"info",
|
|
9629
|
+
"warning",
|
|
9630
|
+
"error"
|
|
9631
|
+
]
|
|
9632
|
+
}
|
|
9633
|
+
],
|
|
9634
|
+
"lock-control": [{
|
|
9635
|
+
"path": "state",
|
|
9636
|
+
"valueType": "enum",
|
|
9637
|
+
"enumValues": [
|
|
9638
|
+
"locked",
|
|
9639
|
+
"unlocked",
|
|
9640
|
+
"locking",
|
|
9641
|
+
"unlocking",
|
|
9642
|
+
"jammed"
|
|
9643
|
+
]
|
|
9644
|
+
}],
|
|
9645
|
+
"media-player": [
|
|
9646
|
+
{
|
|
9647
|
+
"path": "state",
|
|
9648
|
+
"valueType": "enum",
|
|
9649
|
+
"enumValues": [
|
|
9650
|
+
"off",
|
|
9651
|
+
"on",
|
|
9652
|
+
"idle",
|
|
9653
|
+
"playing",
|
|
9654
|
+
"paused",
|
|
9655
|
+
"buffering",
|
|
9656
|
+
"standby"
|
|
9657
|
+
]
|
|
9658
|
+
},
|
|
9659
|
+
{
|
|
9660
|
+
"path": "volumeLevel",
|
|
9661
|
+
"valueType": "number"
|
|
9662
|
+
},
|
|
9663
|
+
{
|
|
9664
|
+
"path": "isMuted",
|
|
9665
|
+
"valueType": "boolean"
|
|
9666
|
+
},
|
|
9667
|
+
{
|
|
9668
|
+
"path": "source",
|
|
9669
|
+
"valueType": "string"
|
|
9670
|
+
},
|
|
9671
|
+
{
|
|
9672
|
+
"path": "currentMedia.type",
|
|
9673
|
+
"valueType": "string"
|
|
9674
|
+
},
|
|
9675
|
+
{
|
|
9676
|
+
"path": "currentMedia.title",
|
|
9677
|
+
"valueType": "string"
|
|
9678
|
+
},
|
|
9679
|
+
{
|
|
9680
|
+
"path": "currentMedia.artist",
|
|
9681
|
+
"valueType": "string"
|
|
9682
|
+
},
|
|
9683
|
+
{
|
|
9684
|
+
"path": "currentMedia.album",
|
|
9685
|
+
"valueType": "string"
|
|
9686
|
+
},
|
|
9687
|
+
{
|
|
9688
|
+
"path": "currentMedia.imageUrl",
|
|
9689
|
+
"valueType": "string"
|
|
9690
|
+
},
|
|
9691
|
+
{
|
|
9692
|
+
"path": "positionMs",
|
|
9693
|
+
"valueType": "number"
|
|
9694
|
+
},
|
|
9695
|
+
{
|
|
9696
|
+
"path": "durationMs",
|
|
9697
|
+
"valueType": "number"
|
|
9698
|
+
},
|
|
9699
|
+
{
|
|
9700
|
+
"path": "shuffle",
|
|
9701
|
+
"valueType": "boolean"
|
|
9702
|
+
},
|
|
9703
|
+
{
|
|
9704
|
+
"path": "repeat",
|
|
9705
|
+
"valueType": "enum",
|
|
9706
|
+
"enumValues": [
|
|
9707
|
+
"off",
|
|
9708
|
+
"all",
|
|
9709
|
+
"one"
|
|
9710
|
+
]
|
|
9711
|
+
}
|
|
9712
|
+
],
|
|
9713
|
+
"motion": [
|
|
9714
|
+
{
|
|
9715
|
+
"path": "detected",
|
|
9716
|
+
"valueType": "boolean"
|
|
9717
|
+
},
|
|
9718
|
+
{
|
|
9719
|
+
"path": "lastDetectedAt",
|
|
9720
|
+
"valueType": "number"
|
|
9721
|
+
},
|
|
9722
|
+
{
|
|
9723
|
+
"path": "autoClearAfterMs",
|
|
9724
|
+
"valueType": "number"
|
|
9725
|
+
}
|
|
9726
|
+
],
|
|
9727
|
+
"motion-trigger": [{
|
|
9728
|
+
"path": "enabled",
|
|
9729
|
+
"valueType": "boolean"
|
|
9730
|
+
}],
|
|
9731
|
+
"motion-zones": [{
|
|
9732
|
+
"path": "enabled",
|
|
9733
|
+
"valueType": "boolean"
|
|
9734
|
+
}, {
|
|
9735
|
+
"path": "sensitivity",
|
|
9736
|
+
"valueType": "number"
|
|
9737
|
+
}],
|
|
9738
|
+
"mqtt-broker": [{
|
|
9739
|
+
"path": "brokerCount",
|
|
9740
|
+
"valueType": "number"
|
|
9741
|
+
}, {
|
|
9742
|
+
"path": "embeddedRunning",
|
|
9743
|
+
"valueType": "boolean"
|
|
9744
|
+
}],
|
|
9745
|
+
"native-object-detection": [{
|
|
9746
|
+
"path": "enabled",
|
|
9747
|
+
"valueType": "boolean"
|
|
9748
|
+
}],
|
|
9749
|
+
"navigation": [
|
|
9750
|
+
{
|
|
9751
|
+
"path": "mode",
|
|
9752
|
+
"valueType": "enum",
|
|
9753
|
+
"enumValues": [
|
|
9754
|
+
"idle",
|
|
9755
|
+
"cleaning",
|
|
9756
|
+
"spot",
|
|
9757
|
+
"following",
|
|
9758
|
+
"goto",
|
|
9759
|
+
"returning",
|
|
9760
|
+
"paused",
|
|
9761
|
+
"unknown"
|
|
9762
|
+
]
|
|
9763
|
+
},
|
|
9764
|
+
{
|
|
9765
|
+
"path": "following",
|
|
9766
|
+
"valueType": "boolean"
|
|
9767
|
+
},
|
|
9768
|
+
{
|
|
9769
|
+
"path": "flash",
|
|
9770
|
+
"valueType": "boolean"
|
|
9771
|
+
},
|
|
9772
|
+
{
|
|
9773
|
+
"path": "lightMode",
|
|
9774
|
+
"valueType": "enum",
|
|
9775
|
+
"enumValues": ["auto", "manual"]
|
|
9776
|
+
},
|
|
9777
|
+
{
|
|
9778
|
+
"path": "lightLevel",
|
|
9779
|
+
"valueType": "number"
|
|
9780
|
+
}
|
|
9781
|
+
],
|
|
9782
|
+
"network-link": [
|
|
9783
|
+
{
|
|
9784
|
+
"path": "type",
|
|
9785
|
+
"valueType": "enum",
|
|
9786
|
+
"enumValues": [
|
|
9787
|
+
"wifi",
|
|
9788
|
+
"ethernet",
|
|
9789
|
+
"cellular",
|
|
9790
|
+
"unknown"
|
|
9791
|
+
]
|
|
9792
|
+
},
|
|
9793
|
+
{
|
|
9794
|
+
"path": "signalPercent",
|
|
9795
|
+
"valueType": "number"
|
|
9796
|
+
},
|
|
9797
|
+
{
|
|
9798
|
+
"path": "rssiDbm",
|
|
9799
|
+
"valueType": "number"
|
|
9800
|
+
},
|
|
9801
|
+
{
|
|
9802
|
+
"path": "ssid",
|
|
9803
|
+
"valueType": "string"
|
|
9804
|
+
},
|
|
9805
|
+
{
|
|
9806
|
+
"path": "lastUpdated",
|
|
9807
|
+
"valueType": "number"
|
|
9808
|
+
}
|
|
9809
|
+
],
|
|
9810
|
+
"notifier": [
|
|
9811
|
+
{
|
|
9812
|
+
"path": "lastSentAt",
|
|
9813
|
+
"valueType": "number"
|
|
9814
|
+
},
|
|
9815
|
+
{
|
|
9816
|
+
"path": "lastError",
|
|
9817
|
+
"valueType": "string"
|
|
9818
|
+
},
|
|
9819
|
+
{
|
|
9820
|
+
"path": "queueDepth",
|
|
9821
|
+
"valueType": "number"
|
|
9822
|
+
},
|
|
9823
|
+
{
|
|
9824
|
+
"path": "supports.image",
|
|
9825
|
+
"valueType": "boolean"
|
|
9826
|
+
},
|
|
9827
|
+
{
|
|
9828
|
+
"path": "supports.priority",
|
|
9829
|
+
"valueType": "boolean"
|
|
9830
|
+
},
|
|
9831
|
+
{
|
|
9832
|
+
"path": "supports.data",
|
|
9833
|
+
"valueType": "boolean"
|
|
9834
|
+
},
|
|
9835
|
+
{
|
|
9836
|
+
"path": "supports.actions",
|
|
9837
|
+
"valueType": "boolean"
|
|
9838
|
+
},
|
|
9839
|
+
{
|
|
9840
|
+
"path": "supports.recipients",
|
|
9841
|
+
"valueType": "boolean"
|
|
9842
|
+
}
|
|
9843
|
+
],
|
|
9844
|
+
"numeric-sensor": [
|
|
9845
|
+
{
|
|
9846
|
+
"path": "value",
|
|
9847
|
+
"valueType": "number"
|
|
9848
|
+
},
|
|
9849
|
+
{
|
|
9850
|
+
"path": "unit",
|
|
9851
|
+
"valueType": "string"
|
|
9852
|
+
},
|
|
9853
|
+
{
|
|
9854
|
+
"path": "precision",
|
|
9855
|
+
"valueType": "number"
|
|
9856
|
+
}
|
|
9857
|
+
],
|
|
9858
|
+
"pet-feeder": [
|
|
9859
|
+
{
|
|
9860
|
+
"path": "foodLevel",
|
|
9861
|
+
"valueType": "number"
|
|
9862
|
+
},
|
|
9863
|
+
{
|
|
9864
|
+
"path": "food1",
|
|
9865
|
+
"valueType": "number"
|
|
9866
|
+
},
|
|
9867
|
+
{
|
|
9868
|
+
"path": "food2",
|
|
9869
|
+
"valueType": "number"
|
|
9870
|
+
},
|
|
9871
|
+
{
|
|
9872
|
+
"path": "lowFood",
|
|
9873
|
+
"valueType": "boolean"
|
|
9874
|
+
},
|
|
9875
|
+
{
|
|
9876
|
+
"path": "batteryPower",
|
|
9877
|
+
"valueType": "number"
|
|
9878
|
+
},
|
|
9879
|
+
{
|
|
9880
|
+
"path": "desiccantLeftDays",
|
|
9881
|
+
"valueType": "number"
|
|
9882
|
+
},
|
|
9883
|
+
{
|
|
9884
|
+
"path": "feeding",
|
|
9885
|
+
"valueType": "boolean"
|
|
9886
|
+
},
|
|
9887
|
+
{
|
|
9888
|
+
"path": "status",
|
|
9889
|
+
"valueType": "enum",
|
|
9890
|
+
"enumValues": [
|
|
9891
|
+
"normal",
|
|
9892
|
+
"offline",
|
|
9893
|
+
"on_batteries"
|
|
9894
|
+
]
|
|
9895
|
+
},
|
|
9896
|
+
{
|
|
9897
|
+
"path": "error",
|
|
9898
|
+
"valueType": "string"
|
|
9899
|
+
},
|
|
9900
|
+
{
|
|
9901
|
+
"path": "errorCode",
|
|
9902
|
+
"valueType": "number"
|
|
9903
|
+
},
|
|
9904
|
+
{
|
|
9905
|
+
"path": "isDualHopper",
|
|
9906
|
+
"valueType": "boolean"
|
|
9907
|
+
},
|
|
9908
|
+
{
|
|
9909
|
+
"path": "childLock",
|
|
9910
|
+
"valueType": "boolean"
|
|
9911
|
+
},
|
|
9912
|
+
{
|
|
9913
|
+
"path": "indicatorLight",
|
|
9914
|
+
"valueType": "boolean"
|
|
9915
|
+
},
|
|
9916
|
+
{
|
|
9917
|
+
"path": "feedSound",
|
|
9918
|
+
"valueType": "boolean"
|
|
9919
|
+
},
|
|
9920
|
+
{
|
|
9921
|
+
"path": "volume",
|
|
9922
|
+
"valueType": "number"
|
|
9923
|
+
}
|
|
9924
|
+
],
|
|
9925
|
+
"power-meter": [
|
|
9926
|
+
{
|
|
9927
|
+
"path": "watts",
|
|
9928
|
+
"valueType": "number"
|
|
9929
|
+
},
|
|
9930
|
+
{
|
|
9931
|
+
"path": "kwhTotal",
|
|
9932
|
+
"valueType": "number"
|
|
9933
|
+
},
|
|
9934
|
+
{
|
|
9935
|
+
"path": "volts",
|
|
9936
|
+
"valueType": "number"
|
|
9937
|
+
},
|
|
9938
|
+
{
|
|
9939
|
+
"path": "amps",
|
|
9940
|
+
"valueType": "number"
|
|
9941
|
+
},
|
|
9942
|
+
{
|
|
9943
|
+
"path": "va",
|
|
9944
|
+
"valueType": "number"
|
|
9945
|
+
},
|
|
9946
|
+
{
|
|
9947
|
+
"path": "powerFactor",
|
|
9948
|
+
"valueType": "number"
|
|
9949
|
+
},
|
|
9950
|
+
{
|
|
9951
|
+
"path": "unit",
|
|
9952
|
+
"valueType": "string"
|
|
9953
|
+
},
|
|
9954
|
+
{
|
|
9955
|
+
"path": "precision",
|
|
9956
|
+
"valueType": "number"
|
|
9957
|
+
}
|
|
9958
|
+
],
|
|
9959
|
+
"presence": [
|
|
9960
|
+
{
|
|
9961
|
+
"path": "state",
|
|
9962
|
+
"valueType": "string"
|
|
9963
|
+
},
|
|
9964
|
+
{
|
|
9965
|
+
"path": "location",
|
|
9966
|
+
"valueType": "string"
|
|
9967
|
+
},
|
|
9968
|
+
{
|
|
9969
|
+
"path": "gps.latitude",
|
|
9970
|
+
"valueType": "number"
|
|
9971
|
+
},
|
|
9972
|
+
{
|
|
9973
|
+
"path": "gps.longitude",
|
|
9974
|
+
"valueType": "number"
|
|
9975
|
+
},
|
|
9976
|
+
{
|
|
9977
|
+
"path": "gps.accuracyMeters",
|
|
9978
|
+
"valueType": "number"
|
|
9979
|
+
},
|
|
9980
|
+
{
|
|
9981
|
+
"path": "batteryPercent",
|
|
9982
|
+
"valueType": "number"
|
|
9983
|
+
}
|
|
9984
|
+
],
|
|
9985
|
+
"pressure-sensor": [
|
|
9986
|
+
{
|
|
9987
|
+
"path": "hpa",
|
|
9988
|
+
"valueType": "number"
|
|
9989
|
+
},
|
|
9990
|
+
{
|
|
9991
|
+
"path": "unit",
|
|
9992
|
+
"valueType": "string"
|
|
9993
|
+
},
|
|
9994
|
+
{
|
|
9995
|
+
"path": "precision",
|
|
9996
|
+
"valueType": "number"
|
|
9997
|
+
}
|
|
9998
|
+
],
|
|
9999
|
+
"privacy-mask": [{
|
|
10000
|
+
"path": "enabled",
|
|
10001
|
+
"valueType": "boolean"
|
|
10002
|
+
}, {
|
|
10003
|
+
"path": "audioEnabled",
|
|
10004
|
+
"valueType": "boolean"
|
|
10005
|
+
}],
|
|
10006
|
+
"ptz": [
|
|
10007
|
+
{
|
|
10008
|
+
"path": "pan",
|
|
10009
|
+
"valueType": "number"
|
|
10010
|
+
},
|
|
10011
|
+
{
|
|
10012
|
+
"path": "tilt",
|
|
10013
|
+
"valueType": "number"
|
|
10014
|
+
},
|
|
10015
|
+
{
|
|
10016
|
+
"path": "zoom",
|
|
10017
|
+
"valueType": "number"
|
|
10018
|
+
},
|
|
10019
|
+
{
|
|
10020
|
+
"path": "autofocus",
|
|
10021
|
+
"valueType": "boolean"
|
|
10022
|
+
}
|
|
10023
|
+
],
|
|
10024
|
+
"ptz-autotrack": [
|
|
10025
|
+
{
|
|
10026
|
+
"path": "enabled",
|
|
10027
|
+
"valueType": "boolean"
|
|
10028
|
+
},
|
|
10029
|
+
{
|
|
10030
|
+
"path": "currentSettings.targetType",
|
|
10031
|
+
"valueType": "string"
|
|
10032
|
+
},
|
|
10033
|
+
{
|
|
10034
|
+
"path": "currentSettings.stopDelaySeconds",
|
|
10035
|
+
"valueType": "number"
|
|
10036
|
+
},
|
|
10037
|
+
{
|
|
10038
|
+
"path": "currentSettings.disappearDelaySeconds",
|
|
10039
|
+
"valueType": "number"
|
|
10040
|
+
}
|
|
10041
|
+
],
|
|
10042
|
+
"recording-archive": [
|
|
10043
|
+
{
|
|
10044
|
+
"path": "deviceId",
|
|
10045
|
+
"valueType": "number"
|
|
10046
|
+
},
|
|
10047
|
+
{
|
|
10048
|
+
"path": "enabled",
|
|
10049
|
+
"valueType": "boolean"
|
|
10050
|
+
},
|
|
10051
|
+
{
|
|
10052
|
+
"path": "activeMode",
|
|
10053
|
+
"valueType": "enum",
|
|
10054
|
+
"enumValues": [
|
|
10055
|
+
"off",
|
|
10056
|
+
"events",
|
|
10057
|
+
"continuous",
|
|
10058
|
+
"on-device-decision"
|
|
10059
|
+
]
|
|
10060
|
+
},
|
|
10061
|
+
{
|
|
10062
|
+
"path": "nodeId",
|
|
10063
|
+
"valueType": "string"
|
|
10064
|
+
},
|
|
10065
|
+
{
|
|
10066
|
+
"path": "storageBytes",
|
|
10067
|
+
"valueType": "number"
|
|
10068
|
+
}
|
|
10069
|
+
],
|
|
10070
|
+
"recording-onboard": [
|
|
10071
|
+
{
|
|
10072
|
+
"path": "primaryTrackId",
|
|
10073
|
+
"valueType": "string"
|
|
10074
|
+
},
|
|
10075
|
+
{
|
|
10076
|
+
"path": "enabled",
|
|
10077
|
+
"valueType": "boolean"
|
|
10078
|
+
},
|
|
10079
|
+
{
|
|
10080
|
+
"path": "overwriteWhenFull",
|
|
10081
|
+
"valueType": "boolean"
|
|
10082
|
+
},
|
|
10083
|
+
{
|
|
10084
|
+
"path": "preRecordSec",
|
|
10085
|
+
"valueType": "number"
|
|
10086
|
+
},
|
|
10087
|
+
{
|
|
10088
|
+
"path": "postRecordSec",
|
|
10089
|
+
"valueType": "number"
|
|
10090
|
+
},
|
|
10091
|
+
{
|
|
10092
|
+
"path": "segmentMinutes",
|
|
10093
|
+
"valueType": "number"
|
|
10094
|
+
},
|
|
10095
|
+
{
|
|
10096
|
+
"path": "unreadableWindows",
|
|
10097
|
+
"valueType": "number"
|
|
10098
|
+
},
|
|
10099
|
+
{
|
|
10100
|
+
"path": "recordingToNowhere",
|
|
10101
|
+
"valueType": "boolean"
|
|
10102
|
+
}
|
|
10103
|
+
],
|
|
10104
|
+
"recording-signal": [{
|
|
10105
|
+
"path": "active",
|
|
10106
|
+
"valueType": "boolean"
|
|
10107
|
+
}, {
|
|
10108
|
+
"path": "reason",
|
|
10109
|
+
"valueType": "string"
|
|
10110
|
+
}],
|
|
10111
|
+
"running-state": [
|
|
10112
|
+
{
|
|
10113
|
+
"path": "running",
|
|
10114
|
+
"valueType": "boolean"
|
|
10115
|
+
},
|
|
10116
|
+
{
|
|
10117
|
+
"path": "since",
|
|
10118
|
+
"valueType": "number"
|
|
10119
|
+
},
|
|
10120
|
+
{
|
|
10121
|
+
"path": "source",
|
|
10122
|
+
"valueType": "enum",
|
|
10123
|
+
"enumValues": ["native", "assigned"]
|
|
10124
|
+
},
|
|
10125
|
+
{
|
|
10126
|
+
"path": "phase",
|
|
10127
|
+
"valueType": "string"
|
|
10128
|
+
}
|
|
10129
|
+
],
|
|
10130
|
+
"script-runner": [
|
|
10131
|
+
{
|
|
10132
|
+
"path": "isRunning",
|
|
10133
|
+
"valueType": "boolean"
|
|
10134
|
+
},
|
|
10135
|
+
{
|
|
10136
|
+
"path": "lastRunAt",
|
|
10137
|
+
"valueType": "number"
|
|
10138
|
+
},
|
|
10139
|
+
{
|
|
10140
|
+
"path": "lastRunSuccess",
|
|
10141
|
+
"valueType": "boolean"
|
|
10142
|
+
},
|
|
10143
|
+
{
|
|
10144
|
+
"path": "lastError",
|
|
10145
|
+
"valueType": "string"
|
|
10146
|
+
}
|
|
10147
|
+
],
|
|
10148
|
+
"smoke": [{
|
|
10149
|
+
"path": "detected",
|
|
10150
|
+
"valueType": "boolean"
|
|
10151
|
+
}],
|
|
10152
|
+
"snapshot": [
|
|
10153
|
+
{
|
|
10154
|
+
"path": "lastCapturedAt",
|
|
10155
|
+
"valueType": "number"
|
|
10156
|
+
},
|
|
10157
|
+
{
|
|
10158
|
+
"path": "cacheAgeMs",
|
|
10159
|
+
"valueType": "number"
|
|
10160
|
+
},
|
|
10161
|
+
{
|
|
10162
|
+
"path": "lastBytes",
|
|
10163
|
+
"valueType": "number"
|
|
10164
|
+
},
|
|
10165
|
+
{
|
|
10166
|
+
"path": "lastStreamId",
|
|
10167
|
+
"valueType": "string"
|
|
10168
|
+
}
|
|
10169
|
+
],
|
|
10170
|
+
"stream-params": [
|
|
10171
|
+
{
|
|
10172
|
+
"path": "main.width",
|
|
10173
|
+
"valueType": "number"
|
|
10174
|
+
},
|
|
10175
|
+
{
|
|
10176
|
+
"path": "main.height",
|
|
10177
|
+
"valueType": "number"
|
|
10178
|
+
},
|
|
10179
|
+
{
|
|
10180
|
+
"path": "main.codec",
|
|
10181
|
+
"valueType": "enum",
|
|
10182
|
+
"enumValues": ["h264", "h265"]
|
|
10183
|
+
},
|
|
10184
|
+
{
|
|
10185
|
+
"path": "main.framerate",
|
|
10186
|
+
"valueType": "number"
|
|
10187
|
+
},
|
|
10188
|
+
{
|
|
10189
|
+
"path": "main.bitrate",
|
|
10190
|
+
"valueType": "number"
|
|
10191
|
+
},
|
|
10192
|
+
{
|
|
10193
|
+
"path": "main.bitrateMode",
|
|
10194
|
+
"valueType": "enum",
|
|
10195
|
+
"enumValues": ["vbr", "cbr"]
|
|
10196
|
+
},
|
|
10197
|
+
{
|
|
10198
|
+
"path": "main.encoderProfile",
|
|
10199
|
+
"valueType": "enum",
|
|
10200
|
+
"enumValues": [
|
|
10201
|
+
"high",
|
|
10202
|
+
"main",
|
|
10203
|
+
"baseline"
|
|
10204
|
+
]
|
|
10205
|
+
},
|
|
10206
|
+
{
|
|
10207
|
+
"path": "main.gop",
|
|
10208
|
+
"valueType": "number"
|
|
10209
|
+
},
|
|
10210
|
+
{
|
|
10211
|
+
"path": "main.audio",
|
|
10212
|
+
"valueType": "boolean"
|
|
10213
|
+
},
|
|
10214
|
+
{
|
|
10215
|
+
"path": "sub.width",
|
|
10216
|
+
"valueType": "number"
|
|
10217
|
+
},
|
|
10218
|
+
{
|
|
10219
|
+
"path": "sub.height",
|
|
10220
|
+
"valueType": "number"
|
|
10221
|
+
},
|
|
10222
|
+
{
|
|
10223
|
+
"path": "sub.codec",
|
|
10224
|
+
"valueType": "enum",
|
|
10225
|
+
"enumValues": ["h264", "h265"]
|
|
10226
|
+
},
|
|
10227
|
+
{
|
|
10228
|
+
"path": "sub.framerate",
|
|
10229
|
+
"valueType": "number"
|
|
10230
|
+
},
|
|
10231
|
+
{
|
|
10232
|
+
"path": "sub.bitrate",
|
|
10233
|
+
"valueType": "number"
|
|
10234
|
+
},
|
|
10235
|
+
{
|
|
10236
|
+
"path": "sub.bitrateMode",
|
|
10237
|
+
"valueType": "enum",
|
|
10238
|
+
"enumValues": ["vbr", "cbr"]
|
|
10239
|
+
},
|
|
10240
|
+
{
|
|
10241
|
+
"path": "sub.encoderProfile",
|
|
10242
|
+
"valueType": "enum",
|
|
10243
|
+
"enumValues": [
|
|
10244
|
+
"high",
|
|
10245
|
+
"main",
|
|
10246
|
+
"baseline"
|
|
10247
|
+
]
|
|
10248
|
+
},
|
|
10249
|
+
{
|
|
10250
|
+
"path": "sub.gop",
|
|
10251
|
+
"valueType": "number"
|
|
10252
|
+
},
|
|
10253
|
+
{
|
|
10254
|
+
"path": "sub.audio",
|
|
10255
|
+
"valueType": "boolean"
|
|
10256
|
+
},
|
|
10257
|
+
{
|
|
10258
|
+
"path": "ext.width",
|
|
10259
|
+
"valueType": "number"
|
|
10260
|
+
},
|
|
10261
|
+
{
|
|
10262
|
+
"path": "ext.height",
|
|
10263
|
+
"valueType": "number"
|
|
10264
|
+
},
|
|
10265
|
+
{
|
|
10266
|
+
"path": "ext.codec",
|
|
10267
|
+
"valueType": "enum",
|
|
10268
|
+
"enumValues": ["h264", "h265"]
|
|
10269
|
+
},
|
|
10270
|
+
{
|
|
10271
|
+
"path": "ext.framerate",
|
|
10272
|
+
"valueType": "number"
|
|
10273
|
+
},
|
|
10274
|
+
{
|
|
10275
|
+
"path": "ext.bitrate",
|
|
10276
|
+
"valueType": "number"
|
|
10277
|
+
},
|
|
10278
|
+
{
|
|
10279
|
+
"path": "ext.bitrateMode",
|
|
10280
|
+
"valueType": "enum",
|
|
10281
|
+
"enumValues": ["vbr", "cbr"]
|
|
10282
|
+
},
|
|
10283
|
+
{
|
|
10284
|
+
"path": "ext.encoderProfile",
|
|
10285
|
+
"valueType": "enum",
|
|
10286
|
+
"enumValues": [
|
|
10287
|
+
"high",
|
|
10288
|
+
"main",
|
|
10289
|
+
"baseline"
|
|
10290
|
+
]
|
|
10291
|
+
},
|
|
10292
|
+
{
|
|
10293
|
+
"path": "ext.gop",
|
|
10294
|
+
"valueType": "number"
|
|
10295
|
+
},
|
|
10296
|
+
{
|
|
10297
|
+
"path": "ext.audio",
|
|
10298
|
+
"valueType": "boolean"
|
|
10299
|
+
}
|
|
10300
|
+
],
|
|
10301
|
+
"switch": [{
|
|
10302
|
+
"path": "on",
|
|
10303
|
+
"valueType": "boolean"
|
|
10304
|
+
}],
|
|
10305
|
+
"tamper": [{
|
|
10306
|
+
"path": "tampered",
|
|
10307
|
+
"valueType": "boolean"
|
|
10308
|
+
}],
|
|
10309
|
+
"temperature-sensor": [
|
|
10310
|
+
{
|
|
10311
|
+
"path": "celsius",
|
|
10312
|
+
"valueType": "number"
|
|
10313
|
+
},
|
|
10314
|
+
{
|
|
10315
|
+
"path": "unit",
|
|
10316
|
+
"valueType": "string"
|
|
10317
|
+
},
|
|
10318
|
+
{
|
|
10319
|
+
"path": "precision",
|
|
10320
|
+
"valueType": "number"
|
|
10321
|
+
}
|
|
10322
|
+
],
|
|
10323
|
+
"update": [
|
|
10324
|
+
{
|
|
10325
|
+
"path": "currentVersion",
|
|
10326
|
+
"valueType": "string"
|
|
10327
|
+
},
|
|
10328
|
+
{
|
|
10329
|
+
"path": "availableVersion",
|
|
10330
|
+
"valueType": "string"
|
|
10331
|
+
},
|
|
10332
|
+
{
|
|
10333
|
+
"path": "updatable",
|
|
10334
|
+
"valueType": "boolean"
|
|
10335
|
+
},
|
|
10336
|
+
{
|
|
10337
|
+
"path": "state",
|
|
10338
|
+
"valueType": "string"
|
|
10339
|
+
},
|
|
10340
|
+
{
|
|
10341
|
+
"path": "inProgress",
|
|
10342
|
+
"valueType": "boolean"
|
|
10343
|
+
}
|
|
10344
|
+
],
|
|
10345
|
+
"vacuum-control": [
|
|
10346
|
+
{
|
|
10347
|
+
"path": "state",
|
|
10348
|
+
"valueType": "enum",
|
|
10349
|
+
"enumValues": [
|
|
10350
|
+
"idle",
|
|
10351
|
+
"cleaning",
|
|
10352
|
+
"paused",
|
|
10353
|
+
"returning",
|
|
10354
|
+
"docked",
|
|
10355
|
+
"drying",
|
|
10356
|
+
"error"
|
|
10357
|
+
]
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"path": "batteryLevel",
|
|
10361
|
+
"valueType": "number"
|
|
10362
|
+
},
|
|
10363
|
+
{
|
|
10364
|
+
"path": "fanSpeed",
|
|
10365
|
+
"valueType": "string"
|
|
10366
|
+
},
|
|
10367
|
+
{
|
|
10368
|
+
"path": "progressPercent",
|
|
10369
|
+
"valueType": "number"
|
|
10370
|
+
},
|
|
10371
|
+
{
|
|
10372
|
+
"path": "errorCode",
|
|
10373
|
+
"valueType": "number"
|
|
10374
|
+
},
|
|
10375
|
+
{
|
|
10376
|
+
"path": "errorLabel",
|
|
10377
|
+
"valueType": "string"
|
|
10378
|
+
}
|
|
10379
|
+
],
|
|
10380
|
+
"valve": [{
|
|
10381
|
+
"path": "state",
|
|
10382
|
+
"valueType": "enum",
|
|
10383
|
+
"enumValues": [
|
|
10384
|
+
"open",
|
|
10385
|
+
"opening",
|
|
10386
|
+
"closing",
|
|
10387
|
+
"closed",
|
|
10388
|
+
"stopped"
|
|
10389
|
+
]
|
|
10390
|
+
}, {
|
|
10391
|
+
"path": "position",
|
|
10392
|
+
"valueType": "number"
|
|
10393
|
+
}],
|
|
10394
|
+
"vibration": [{
|
|
10395
|
+
"path": "detected",
|
|
10396
|
+
"valueType": "boolean"
|
|
10397
|
+
}],
|
|
10398
|
+
"water-heater": [
|
|
10399
|
+
{
|
|
10400
|
+
"path": "currentTemp",
|
|
10401
|
+
"valueType": "number"
|
|
10402
|
+
},
|
|
10403
|
+
{
|
|
10404
|
+
"path": "targetTemp",
|
|
10405
|
+
"valueType": "number"
|
|
10406
|
+
},
|
|
10407
|
+
{
|
|
10408
|
+
"path": "operationMode",
|
|
10409
|
+
"valueType": "string"
|
|
10410
|
+
},
|
|
10411
|
+
{
|
|
10412
|
+
"path": "away",
|
|
10413
|
+
"valueType": "boolean"
|
|
10414
|
+
},
|
|
10415
|
+
{
|
|
10416
|
+
"path": "minTemp",
|
|
10417
|
+
"valueType": "number"
|
|
10418
|
+
},
|
|
10419
|
+
{
|
|
10420
|
+
"path": "maxTemp",
|
|
10421
|
+
"valueType": "number"
|
|
10422
|
+
}
|
|
10423
|
+
],
|
|
10424
|
+
"weather": [
|
|
10425
|
+
{
|
|
10426
|
+
"path": "condition",
|
|
10427
|
+
"valueType": "string"
|
|
10428
|
+
},
|
|
10429
|
+
{
|
|
10430
|
+
"path": "temperature",
|
|
10431
|
+
"valueType": "number"
|
|
10432
|
+
},
|
|
10433
|
+
{
|
|
10434
|
+
"path": "temperatureUnit",
|
|
10435
|
+
"valueType": "string"
|
|
10436
|
+
},
|
|
10437
|
+
{
|
|
10438
|
+
"path": "humidity",
|
|
10439
|
+
"valueType": "number"
|
|
10440
|
+
},
|
|
10441
|
+
{
|
|
10442
|
+
"path": "pressure",
|
|
10443
|
+
"valueType": "number"
|
|
10444
|
+
},
|
|
10445
|
+
{
|
|
10446
|
+
"path": "pressureUnit",
|
|
10447
|
+
"valueType": "string"
|
|
10448
|
+
},
|
|
10449
|
+
{
|
|
10450
|
+
"path": "windSpeed",
|
|
10451
|
+
"valueType": "number"
|
|
10452
|
+
},
|
|
10453
|
+
{
|
|
10454
|
+
"path": "windSpeedUnit",
|
|
10455
|
+
"valueType": "string"
|
|
10456
|
+
},
|
|
10457
|
+
{
|
|
10458
|
+
"path": "windBearing",
|
|
10459
|
+
"valueType": "number"
|
|
10460
|
+
}
|
|
10461
|
+
],
|
|
10462
|
+
"zone-analytics": [
|
|
10463
|
+
{
|
|
10464
|
+
"path": "ts",
|
|
10465
|
+
"valueType": "number"
|
|
10466
|
+
},
|
|
10467
|
+
{
|
|
10468
|
+
"path": "frameWidth",
|
|
10469
|
+
"valueType": "number"
|
|
10470
|
+
},
|
|
10471
|
+
{
|
|
10472
|
+
"path": "frameHeight",
|
|
10473
|
+
"valueType": "number"
|
|
10474
|
+
},
|
|
10475
|
+
{
|
|
10476
|
+
"path": "frame.totalObjects",
|
|
10477
|
+
"valueType": "number"
|
|
10478
|
+
},
|
|
10479
|
+
{
|
|
10480
|
+
"path": "frame.standingObjects",
|
|
10481
|
+
"valueType": "number"
|
|
10482
|
+
},
|
|
10483
|
+
{
|
|
10484
|
+
"path": "frame.transientObjects",
|
|
10485
|
+
"valueType": "number"
|
|
10486
|
+
},
|
|
10487
|
+
{
|
|
10488
|
+
"path": "unzoned.totalObjects",
|
|
10489
|
+
"valueType": "number"
|
|
10490
|
+
},
|
|
10491
|
+
{
|
|
10492
|
+
"path": "unzoned.standingObjects",
|
|
10493
|
+
"valueType": "number"
|
|
10494
|
+
},
|
|
10495
|
+
{
|
|
10496
|
+
"path": "unzoned.transientObjects",
|
|
10497
|
+
"valueType": "number"
|
|
10498
|
+
}
|
|
10499
|
+
]
|
|
10500
|
+
});
|
|
8527
10501
|
object({
|
|
8528
10502
|
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
8529
10503
|
params: record(string(), union([string(), number()])).optional()
|
|
@@ -8910,7 +10884,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8910
10884
|
return DeviceRole;
|
|
8911
10885
|
}({});
|
|
8912
10886
|
//#endregion
|
|
8913
|
-
//#region ../types/dist/composition-
|
|
10887
|
+
//#region ../types/dist/composition-kEl9mevu.mjs
|
|
8914
10888
|
/**
|
|
8915
10889
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8916
10890
|
*
|
|
@@ -12338,7 +14312,7 @@ var LogChannelDescriptorSchema = object({
|
|
|
12338
14312
|
* `true` is a PROMISE with two halves, and both must hold: the gate is
|
|
12339
14313
|
* consulted with the numeric device id, AND every line the channel admits
|
|
12340
14314
|
* carries `tags: { deviceId }` with that same numeric id. The second half is
|
|
12341
|
-
* what makes `| json | deviceId="
|
|
14315
|
+
* what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
|
|
12342
14316
|
* keeps `deviceId` out of the stream labels for cardinality, so the tag in
|
|
12343
14317
|
* the body is the only way to filter.
|
|
12344
14318
|
*
|
|
@@ -12883,7 +14857,7 @@ var ModelVariantGroupSchema = object({
|
|
|
12883
14857
|
precision: _enum(["fp32", "int8"]).optional(),
|
|
12884
14858
|
/**
|
|
12885
14859
|
* Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
|
|
12886
|
-
* an alternate training of the same family (
|
|
14860
|
+
* an alternate training of the same family (plugin catalog `relu_test`); chip
|
|
12887
14861
|
* label is "Test".
|
|
12888
14862
|
*/
|
|
12889
14863
|
optimization: _enum(["standard", "test"]).optional(),
|
|
@@ -13135,8 +15109,8 @@ var ModelCatalogEntrySchema = object({
|
|
|
13135
15109
|
provider: ModelProviderIdSchema.optional(),
|
|
13136
15110
|
/**
|
|
13137
15111
|
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
13138
|
-
* applies (
|
|
13139
|
-
* labels already ARE the CamStack macros (
|
|
15112
|
+
* applies (plus catalog / COCO public catalog). Set on a custom model whose raw
|
|
15113
|
+
* labels already ARE the CamStack macros (plugin catalog identity map).
|
|
13140
15114
|
*/
|
|
13141
15115
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
13142
15116
|
/**
|
|
@@ -16105,7 +18079,7 @@ method(object({
|
|
|
16105
18079
|
* `1` is real time and is the ONLY value that allows the copy branch —
|
|
16106
18080
|
* anything else forces `libx264` over the window. That was priced
|
|
16107
18081
|
* before it was chosen: a per-event burst measured at 0.23 s and 254 KB
|
|
16108
|
-
* on a real
|
|
18082
|
+
* on a real 101 720p cut, against 922 KB for the copy it replaces. A
|
|
16109
18083
|
* re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
|
|
16110
18084
|
* once the decode is forced the width stops being free.
|
|
16111
18085
|
*/
|
|
@@ -16631,6 +18605,7 @@ var CompositionRunStatusSchema = _enum([
|
|
|
16631
18605
|
"starting",
|
|
16632
18606
|
"running",
|
|
16633
18607
|
"degraded",
|
|
18608
|
+
"incomplete",
|
|
16634
18609
|
"failed"
|
|
16635
18610
|
]);
|
|
16636
18611
|
var CompositionFieldStateKindSchema = _enum([
|
|
@@ -16844,6 +18819,7 @@ var CoreBlockStatusSchema = _enum([
|
|
|
16844
18819
|
"starting",
|
|
16845
18820
|
"running",
|
|
16846
18821
|
"degraded",
|
|
18822
|
+
"incomplete",
|
|
16847
18823
|
"failed"
|
|
16848
18824
|
]);
|
|
16849
18825
|
/** path → TypeScript source for a multi-file block. */
|
|
@@ -38991,7 +40967,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
|
|
|
38991
40967
|
* `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
|
|
38992
40968
|
* operator's casing. The registry matches labels trimmed + case-insensitively
|
|
38993
40969
|
* everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
|
|
38994
|
-
* case-only rename (`
|
|
40970
|
+
* case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
|
|
38995
40971
|
* map keyed on the displayed casing would orphan its entry on exactly that
|
|
38996
40972
|
* edit. Consumers join by keying their own label through `locationIconKey`.
|
|
38997
40973
|
*/
|
|
@@ -39016,7 +40992,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39016
40992
|
/**
|
|
39017
40993
|
* A SITE ZONE — a named part of the property that several locations belong to.
|
|
39018
40994
|
*
|
|
39019
|
-
* "
|
|
40995
|
+
* "Night zone" holds every bedroom; "Zona giorno" the living room and the
|
|
39020
40996
|
* kitchen. A camera belongs to exactly one location, and a location to at most
|
|
39021
40997
|
* one zone, so a camera's zone is derived and never stored on the device: the
|
|
39022
40998
|
* whole point of this entity is that grouping rooms touches no device row.
|
|
@@ -39045,7 +41021,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39045
41021
|
* the locations inside it.
|
|
39046
41022
|
*
|
|
39047
41023
|
* The LABEL is carried alongside the key because the key is lossy on purpose —
|
|
39048
|
-
* a surface must show "
|
|
41024
|
+
* a surface must show "Night zone", not "night zone". Locations are carried
|
|
39049
41025
|
* here, rather than left to a second call, because every consumer wants both
|
|
39050
41026
|
* at once and a viewer that asked twice could render a zone whose membership
|
|
39051
41027
|
* it has not fetched yet.
|
|
@@ -41258,8 +43234,8 @@ var LoadContributionSchema = object({
|
|
|
41258
43234
|
"unattributable"
|
|
41259
43235
|
]),
|
|
41260
43236
|
/**
|
|
41261
|
-
* What ONE entry is, in the contributor's own words — `
|
|
41262
|
-
* `
|
|
43237
|
+
* What ONE entry is, in the contributor's own words — `101/high`,
|
|
43238
|
+
* `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
|
|
41263
43239
|
* family and inventing a common one would lose the only information that
|
|
41264
43240
|
* makes two entries for the same camera distinguishable.
|
|
41265
43241
|
*/
|
|
@@ -44284,7 +46260,7 @@ var NcConditionsSchema = object({
|
|
|
44284
46260
|
* with the list under it is worse than no switch (D62).
|
|
44285
46261
|
*
|
|
44286
46262
|
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
44287
|
-
* renameable, and a rule authored on "
|
|
46263
|
+
* renameable, and a rule authored on "Alice" went silently dark the moment
|
|
44288
46264
|
* the operator fixed the spelling. The id reaches the record on
|
|
44289
46265
|
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
44290
46266
|
* `{{label}}` renders.
|
|
@@ -44835,7 +46811,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
44835
46811
|
* A rule scoped to one camera and one zone silently became a rule that
|
|
44836
46812
|
* matches EVERY event on EVERY camera, and lost its `media` policy
|
|
44837
46813
|
* (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
|
|
44838
|
-
* live on 2026-08-12: a rule scoped to device
|
|
46814
|
+
* live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
|
|
44839
46815
|
* within a minute of a two-field patch.
|
|
44840
46816
|
*
|
|
44841
46817
|
* So every defaulted field is re-declared here WITHOUT its default. The
|
|
@@ -46648,7 +48624,7 @@ var LabelAttributionSchema = object({
|
|
|
46648
48624
|
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
46649
48625
|
*
|
|
46650
48626
|
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
46651
|
-
* notification rule authored on "
|
|
48627
|
+
* notification rule authored on "Alice" stopped matching the moment the
|
|
46652
48628
|
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
46653
48629
|
* the thing that does not move, so it is what a rule matches on
|
|
46654
48630
|
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
@@ -49187,7 +51163,7 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
49187
51163
|
/**
|
|
49188
51164
|
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
49189
51165
|
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
49190
|
-
* step (a
|
|
51166
|
+
* step (a plus catalog `license_plate` for `plate-detection`): the step is
|
|
49191
51167
|
* NOT inferred, these boxes are its output, and its children (the plate
|
|
49192
51168
|
* reader) run on them through their own crop policy. Boxes are in the
|
|
49193
51169
|
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
@@ -50864,7 +52840,7 @@ var RunnerCameraConfigSchema = object({
|
|
|
50864
52840
|
* detection session that asks for history. What shipped was a last-moment
|
|
50865
52841
|
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
50866
52842
|
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
50867
|
-
* worth. Device
|
|
52843
|
+
* worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
|
|
50868
52844
|
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
50869
52845
|
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
50870
52846
|
* was decoded, and was freed.
|
|
@@ -52998,7 +54974,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
|
|
|
52998
54974
|
* The signals a device can emit to WAKE its own stream.
|
|
52999
54975
|
*
|
|
53000
54976
|
* A camera whose stream is built on demand sleeps until something asks for it,
|
|
53001
|
-
* and "something" cannot be a consumer that is merely attached — a
|
|
54977
|
+
* and "something" cannot be a consumer that is merely attached — a external-catalog
|
|
53002
54978
|
* puller holds a session open for ever, and treating that as demand would keep
|
|
53003
54979
|
* a battery camera awake for ever, which is the whole thing the battery is for
|
|
53004
54980
|
* (D173). So the wake has to come from the CAMERA: an event it noticed by
|
|
@@ -53766,7 +55742,7 @@ var ClipSchema = object({
|
|
|
53766
55742
|
* {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
|
|
53767
55743
|
*
|
|
53768
55744
|
* Bounded because it is not a payload the surface pages through: one visit on
|
|
53769
|
-
* device
|
|
55745
|
+
* device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
|
|
53770
55746
|
* camera-day. Read {@link eventCount} for the true total.
|
|
53771
55747
|
*/
|
|
53772
55748
|
eventIds: array(string()).optional(),
|
|
@@ -53911,7 +55887,7 @@ var ClipPlaybackSchema = object({
|
|
|
53911
55887
|
* camera has no recordings", which is the defect this whole line of work is
|
|
53912
55888
|
* about: a battery camera nobody woke (`sleeping`), a camera that could not be
|
|
53913
55889
|
* reached at all (`unreachable`, also what a provider that THREW reports), a
|
|
53914
|
-
* camera whose SD card is not mounted (`no-storage`, measured on
|
|
55890
|
+
* camera whose SD card is not mounted (`no-storage`, measured on 106 —
|
|
53915
55891
|
* `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
|
|
53916
55892
|
* camera whose OWN index disagrees with its OWN calendar (`index-empty`,
|
|
53917
55893
|
* measured on 618: the calendar marks 3–20 September, days 6–20 list zero
|
|
@@ -54372,7 +56348,7 @@ var videoclipsCapability = {
|
|
|
54372
56348
|
*
|
|
54373
56349
|
* It was optional, documented as "absent means the device's BOUND
|
|
54374
56350
|
* provider, which is CamStack on every camera". No code implemented
|
|
54375
|
-
* that. Measured on the live hub 2026-09-20 — device
|
|
56351
|
+
* that. Measured on the live hub 2026-09-20 — device 107, bound to
|
|
54376
56352
|
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
54377
56353
|
* answered SIX rows, three from each source, merged newest-first:
|
|
54378
56354
|
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
@@ -55689,7 +57665,10 @@ var airQualitySensorCapability = {
|
|
|
55689
57665
|
*/
|
|
55690
57666
|
var AmbientLightSensorStatusSchema = object({
|
|
55691
57667
|
/** Current illuminance in lux (lx). */
|
|
55692
|
-
lux: number().min(0)
|
|
57668
|
+
lux: number().min(0).meta({
|
|
57669
|
+
unit: "lx",
|
|
57670
|
+
label: "Illuminance"
|
|
57671
|
+
}),
|
|
55693
57672
|
/** Ms epoch when the slice was last updated. */
|
|
55694
57673
|
lastFetchedAt: number(),
|
|
55695
57674
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -55732,7 +57711,12 @@ var ambientLightSensorCapability = {
|
|
|
55732
57711
|
} } },
|
|
55733
57712
|
/** Clock fields: written, but excluded from the compare that decides
|
|
55734
57713
|
* whether persisting is worth a SQLite commit. */
|
|
55735
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
57714
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
57715
|
+
customize: {
|
|
57716
|
+
version: 1,
|
|
57717
|
+
advanced: "derive",
|
|
57718
|
+
targets: []
|
|
57719
|
+
}
|
|
55736
57720
|
};
|
|
55737
57721
|
/**
|
|
55738
57722
|
* Per-class audio metrics aggregated over a sliding window.
|
|
@@ -55959,7 +57943,10 @@ var BatteryStatusSchema = object({
|
|
|
55959
57943
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
55960
57944
|
* declines to band a non-finite reading, which is the correct shape.
|
|
55961
57945
|
*/
|
|
55962
|
-
percentage: number().min(0).max(100).nullable()
|
|
57946
|
+
percentage: number().min(0).max(100).nullable().meta({
|
|
57947
|
+
unit: "%",
|
|
57948
|
+
label: "Charge"
|
|
57949
|
+
}),
|
|
55963
57950
|
/**
|
|
55964
57951
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
55965
57952
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -55978,13 +57965,13 @@ var BatteryStatusSchema = object({
|
|
|
55978
57965
|
"solar",
|
|
55979
57966
|
"none",
|
|
55980
57967
|
"unknown"
|
|
55981
|
-
]),
|
|
57968
|
+
]).meta({ label: "Charging source" }),
|
|
55982
57969
|
/**
|
|
55983
57970
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
55984
57971
|
* providers MUST avoid polling during sleep — reading the battery
|
|
55985
57972
|
* wakes the camera up and drains charge.
|
|
55986
57973
|
*/
|
|
55987
|
-
sleeping: boolean(),
|
|
57974
|
+
sleeping: boolean().meta({ label: "Sleeping" }),
|
|
55988
57975
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
55989
57976
|
lastUpdated: number(),
|
|
55990
57977
|
/**
|
|
@@ -56024,7 +58011,7 @@ var BatteryStatusSchema = object({
|
|
|
56024
58011
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
56025
58012
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
56026
58013
|
*/
|
|
56027
|
-
binary: boolean().optional()
|
|
58014
|
+
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
56028
58015
|
});
|
|
56029
58016
|
var BATTERY_DEVICE_TYPES = [
|
|
56030
58017
|
DeviceType.Camera,
|
|
@@ -56038,6 +58025,7 @@ var BATTERY_DEVICE_TYPES = [
|
|
|
56038
58025
|
/** Generic Customize target for the percentage reading (D936). */
|
|
56039
58026
|
var batteryCustomize = {
|
|
56040
58027
|
version: 1,
|
|
58028
|
+
advanced: "derive",
|
|
56041
58029
|
targets: [{
|
|
56042
58030
|
id: "percentage",
|
|
56043
58031
|
cardinality: "scalar",
|
|
@@ -56188,7 +58176,7 @@ onStatusChanged: { data: object({
|
|
|
56188
58176
|
* with the right HomeKit / Alexa display category.
|
|
56189
58177
|
*/
|
|
56190
58178
|
var BinaryStatusSchema = object({
|
|
56191
|
-
on: boolean(),
|
|
58179
|
+
on: boolean().meta({ label: "On" }),
|
|
56192
58180
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
56193
58181
|
lastChangedAt: number()
|
|
56194
58182
|
});
|
|
@@ -56217,7 +58205,12 @@ var binaryCapability = {
|
|
|
56217
58205
|
history: { fields: { on: { kind: "boolean" } } },
|
|
56218
58206
|
/** Clock fields: written, but excluded from the compare that decides
|
|
56219
58207
|
* whether persisting is worth a SQLite commit. */
|
|
56220
|
-
volatileStateFields: ["lastChangedAt"]
|
|
58208
|
+
volatileStateFields: ["lastChangedAt"],
|
|
58209
|
+
customize: {
|
|
58210
|
+
version: 1,
|
|
58211
|
+
advanced: "derive",
|
|
58212
|
+
targets: []
|
|
58213
|
+
}
|
|
56221
58214
|
};
|
|
56222
58215
|
/**
|
|
56223
58216
|
* Dimmable-light brightness control. Co-exists with `switch` on the
|
|
@@ -56523,7 +58516,7 @@ var GridLayoutCellSchema = object({
|
|
|
56523
58516
|
*
|
|
56524
58517
|
* A grid's `high` composes its sources' `high` and its `low` their `low`, so a
|
|
56525
58518
|
* profile is on offer only when EVERY source can serve it. The refusal NAMES
|
|
56526
|
-
* the sources, because "this grid has no low" is not a finding — "
|
|
58519
|
+
* the sources, because "this grid has no low" is not a finding — "101 has no
|
|
56527
58520
|
* low" is, and it is the one an operator can act on.
|
|
56528
58521
|
*/
|
|
56529
58522
|
var GridProfileOfferSchema = object({
|
|
@@ -58088,6 +60081,7 @@ var doorbellCustomize = {
|
|
|
58088
60081
|
applyAuthority: { kind: "composition-claim" },
|
|
58089
60082
|
eventName: "onPressed",
|
|
58090
60083
|
edges: ["rising"],
|
|
60084
|
+
defaultEdge: "rising",
|
|
58091
60085
|
timestampPath: "lastPressedAt",
|
|
58092
60086
|
counterPath: "pressCountSinceStart",
|
|
58093
60087
|
highWater: "composer-advance",
|
|
@@ -59041,7 +61035,10 @@ var humidifierCapability = {
|
|
|
59041
61035
|
*/
|
|
59042
61036
|
var HumiditySensorStatusSchema = object({
|
|
59043
61037
|
/** Current relative humidity, 0..100. */
|
|
59044
|
-
percent: number().min(0).max(100)
|
|
61038
|
+
percent: number().min(0).max(100).meta({
|
|
61039
|
+
unit: "%",
|
|
61040
|
+
label: "Humidity"
|
|
61041
|
+
}),
|
|
59045
61042
|
/** Ms epoch when the slice was last updated. */
|
|
59046
61043
|
lastFetchedAt: number(),
|
|
59047
61044
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -59083,7 +61080,12 @@ var humiditySensorCapability = {
|
|
|
59083
61080
|
} } },
|
|
59084
61081
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59085
61082
|
* whether persisting is worth a SQLite commit. */
|
|
59086
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
61083
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
61084
|
+
customize: {
|
|
61085
|
+
version: 1,
|
|
61086
|
+
advanced: "derive",
|
|
61087
|
+
targets: []
|
|
61088
|
+
}
|
|
59087
61089
|
};
|
|
59088
61090
|
/**
|
|
59089
61091
|
* Image display cap. Models a single still image exposed by an integration —
|
|
@@ -62782,9 +64784,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62782
64784
|
*/
|
|
62783
64785
|
var PowerMeterStatusSchema = object({
|
|
62784
64786
|
/** Instantaneous power draw in watts. */
|
|
62785
|
-
watts: number().optional()
|
|
64787
|
+
watts: number().optional().meta({
|
|
64788
|
+
unit: "W",
|
|
64789
|
+
label: "Power"
|
|
64790
|
+
}),
|
|
62786
64791
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62787
|
-
kwhTotal: number().optional()
|
|
64792
|
+
kwhTotal: number().optional().meta({
|
|
64793
|
+
unit: "kWh",
|
|
64794
|
+
label: "Energy"
|
|
64795
|
+
}),
|
|
62788
64796
|
/** Voltage in volts. */
|
|
62789
64797
|
volts: number().optional(),
|
|
62790
64798
|
/** Current in amperes. */
|
|
@@ -62869,7 +64877,12 @@ var powerMeterCapability = {
|
|
|
62869
64877
|
} },
|
|
62870
64878
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62871
64879
|
* whether persisting is worth a SQLite commit. */
|
|
62872
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
64880
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
64881
|
+
customize: {
|
|
64882
|
+
version: 1,
|
|
64883
|
+
advanced: "derive",
|
|
64884
|
+
targets: []
|
|
64885
|
+
}
|
|
62873
64886
|
};
|
|
62874
64887
|
/**
|
|
62875
64888
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
@@ -63314,9 +65327,9 @@ var PtzOptionsSchema = object({
|
|
|
63314
65327
|
* Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
|
|
63315
65328
|
* not one of the three cameras honours its own:
|
|
63316
65329
|
*
|
|
63317
|
-
*
|
|
63318
|
-
* 1438
|
|
63319
|
-
* 3836
|
|
65330
|
+
* 107 Camera camera Carol (reolink) preset 0 holds "stanza"
|
|
65331
|
+
* 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
|
|
65332
|
+
* 3836 Camera studio (amcrest) preset 1 holds "Preset1"
|
|
63320
65333
|
*
|
|
63321
65334
|
* So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
|
|
63322
65335
|
* and two of the three swallowed the failure in a bare `catch`. For autotrack
|
|
@@ -63649,7 +65662,7 @@ var RunningStateStatusSchema = object({
|
|
|
63649
65662
|
running: boolean().nullable(),
|
|
63650
65663
|
/** Epoch ms the current boolean began; null while `running` is null. */
|
|
63651
65664
|
since: number().nullable(),
|
|
63652
|
-
source: RunningStateSourceSchema,
|
|
65665
|
+
source: RunningStateSourceSchema.meta({ label: "Source" }),
|
|
63653
65666
|
phase: string().nullable(),
|
|
63654
65667
|
/** null until a reading has been published (D393). */
|
|
63655
65668
|
lastFetchedAt: number().nullable()
|
|
@@ -63663,6 +65676,7 @@ var RUNNING_DEVICE_TYPES = Object.values(DeviceType);
|
|
|
63663
65676
|
/** Generic Customize target for the running boolean (D936). */
|
|
63664
65677
|
var runningCustomize = {
|
|
63665
65678
|
version: 1,
|
|
65679
|
+
advanced: "derive",
|
|
63666
65680
|
targets: [{
|
|
63667
65681
|
id: "running",
|
|
63668
65682
|
cardinality: "scalar",
|
|
@@ -63698,6 +65712,7 @@ var runningCustomize = {
|
|
|
63698
65712
|
requiredUnit: "W",
|
|
63699
65713
|
transforms: [{
|
|
63700
65714
|
kind: "threshold",
|
|
65715
|
+
comparisons: ["gte", "lte"],
|
|
63701
65716
|
comparison: "gte",
|
|
63702
65717
|
defaultThreshold: 5,
|
|
63703
65718
|
defaultStartDwellMs: RUNNING_POWER_START_DELAY_MS,
|
|
@@ -63826,7 +65841,7 @@ var RecordingAvailabilitySchema = object({
|
|
|
63826
65841
|
* would look identical. But the answer used to say nothing about that, so a
|
|
63827
65842
|
* caller asking "what can I export?" read the single preferred profile as
|
|
63828
65843
|
* the only one that exists — on this deployment every camera records `high`
|
|
63829
|
-
* AND `low`, the low tree holding 14 GB for camera
|
|
65844
|
+
* AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
|
|
63830
65845
|
* UI could not see it.
|
|
63831
65846
|
*
|
|
63832
65847
|
* Cheap: it is the same shallow directory read the profile CHOICE already
|
|
@@ -63925,7 +65940,7 @@ var RecordingSourceOptionsSchema = object({
|
|
|
63925
65940
|
* `sparse` = gaps are the absence of one, and must be drawn as such.
|
|
63926
65941
|
*
|
|
63927
65942
|
* Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
|
|
63928
|
-
* of
|
|
65943
|
+
* of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
|
|
63929
65944
|
* pair, and ours answers it per camera from `deriveRecordingMode`. */
|
|
63930
65945
|
coverage: _enum(["continuous", "sparse"]),
|
|
63931
65946
|
/** Where the playhead may be put.
|
|
@@ -64001,7 +66016,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
|
|
|
64001
66016
|
* merely discouraged (D554 amended).
|
|
64002
66017
|
*
|
|
64003
66018
|
* It was learned the expensive way on `videoclips.listClips`: measured
|
|
64004
|
-
* on the live hub 2026-09-20, device
|
|
66019
|
+
* on the live hub 2026-09-20, device 107 bound to `recorder` AND
|
|
64005
66020
|
* `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
|
|
64006
66021
|
* three from each source, merged — `device-collection-dispatch.ts`
|
|
64007
66022
|
* leaves an unpinned fan-out un-narrowed, so absence buys the union the
|
|
@@ -64602,7 +66617,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
|
|
|
64602
66617
|
* on a 10 h window holding 29,393 s of footage every range landed late by the
|
|
64603
66618
|
* gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
|
|
64604
66619
|
* the video was a uniform timelapse, and the log line reported the five ranges
|
|
64605
|
-
* that had been ASKED for (2026-08-13, export `57d14363`, camera
|
|
66620
|
+
* that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
|
|
64606
66621
|
*
|
|
64607
66622
|
* Relative and not absolute epoch, because an absolute epoch would make every
|
|
64608
66623
|
* call site responsible for the same subtraction.
|
|
@@ -65482,7 +67497,7 @@ getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) }
|
|
|
65482
67497
|
* which put a "Scenes" tab on one camera's detail page. That is the wrong shape
|
|
65483
67498
|
* for the thing: a scene is a standing question about the property ("is the bin
|
|
65484
67499
|
* still out"), and the operator's question is "which of my scenes have tripped",
|
|
65485
|
-
* across every camera at once — not "what does camera
|
|
67500
|
+
* across every camera at once — not "what does camera 102 think". Buried one
|
|
65486
67501
|
* camera deep it also could not be found. The surface is now a top-level admin
|
|
65487
67502
|
* page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
|
|
65488
67503
|
* picks the camera inside the create flow, the same shape Events and Faces have.
|
|
@@ -66539,7 +68554,7 @@ function buildStreamParamsConfigSchema(options, status) {
|
|
|
66539
68554
|
* `getSettingsUISchema()` surface.
|
|
66540
68555
|
*/
|
|
66541
68556
|
var SwitchStatusSchema = object({
|
|
66542
|
-
on: boolean(),
|
|
68557
|
+
on: boolean().meta({ label: "On" }),
|
|
66543
68558
|
/** Ms epoch of the last state change. Useful for UI "X minutes ago". */
|
|
66544
68559
|
lastChangedAt: number()
|
|
66545
68560
|
});
|
|
@@ -66598,7 +68613,12 @@ var switchCapability = {
|
|
|
66598
68613
|
label: "On",
|
|
66599
68614
|
kind: "boolean"
|
|
66600
68615
|
}
|
|
66601
|
-
}] }
|
|
68616
|
+
}] },
|
|
68617
|
+
customize: {
|
|
68618
|
+
version: 1,
|
|
68619
|
+
advanced: "derive",
|
|
68620
|
+
targets: []
|
|
68621
|
+
}
|
|
66602
68622
|
};
|
|
66603
68623
|
/** C0 controls, DEL and the C1 range: none of them belongs in a name. */
|
|
66604
68624
|
function hasControlCharacter(value) {
|
|
@@ -67194,7 +69214,10 @@ var tamperCapability = {
|
|
|
67194
69214
|
*/
|
|
67195
69215
|
var TemperatureSensorStatusSchema = object({
|
|
67196
69216
|
/** Current temperature in Celsius. */
|
|
67197
|
-
celsius: number()
|
|
69217
|
+
celsius: number().meta({
|
|
69218
|
+
unit: "°C",
|
|
69219
|
+
label: "Temperature"
|
|
69220
|
+
}),
|
|
67198
69221
|
/** Ms epoch when the slice was last updated (push or poll). */
|
|
67199
69222
|
lastFetchedAt: number(),
|
|
67200
69223
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -67237,7 +69260,12 @@ var temperatureSensorCapability = {
|
|
|
67237
69260
|
} } },
|
|
67238
69261
|
/** Clock fields: written, but excluded from the compare that decides
|
|
67239
69262
|
* whether persisting is worth a SQLite commit. */
|
|
67240
|
-
volatileStateFields: ["lastFetchedAt"]
|
|
69263
|
+
volatileStateFields: ["lastFetchedAt"],
|
|
69264
|
+
customize: {
|
|
69265
|
+
version: 1,
|
|
69266
|
+
advanced: "derive",
|
|
69267
|
+
targets: []
|
|
69268
|
+
}
|
|
67241
69269
|
};
|
|
67242
69270
|
/**
|
|
67243
69271
|
* toast — system-scoped singleton capability that streams toast
|
|
@@ -68916,6 +70944,10 @@ function withClipEventLabels(provider, deps) {
|
|
|
68916
70944
|
};
|
|
68917
70945
|
}
|
|
68918
70946
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
70947
|
+
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;
|
|
70948
|
+
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
70949
|
+
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
70950
|
+
new Set(CAP_NAMES);
|
|
68919
70951
|
Object.freeze({
|
|
68920
70952
|
person: .5,
|
|
68921
70953
|
vehicle: .5,
|
|
@@ -70164,7 +72196,7 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
70164
72196
|
* A top-level persisted row with NO configuration is a leftover, not a
|
|
70165
72197
|
* device — quarantine it instead of dialling it.
|
|
70166
72198
|
*
|
|
70167
|
-
* Device
|
|
72199
|
+
* Device 105 was deleted, resurrected as a config-less shell by a write
|
|
70168
72200
|
* already in flight (D376), and then dialled at every single boot: eight
|
|
70169
72201
|
* `Failed to restore device — bounded retry scheduled` lines in one day,
|
|
70170
72202
|
* each one the same Zod refusal on `host` and `password`. The bound was
|
|
@@ -83412,7 +85444,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
83412
85444
|
state: [{
|
|
83413
85445
|
kind: "boolean",
|
|
83414
85446
|
field: "on",
|
|
83415
|
-
label: t("
|
|
85447
|
+
label: t("On", "Acceso"),
|
|
83416
85448
|
whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
|
|
83417
85449
|
whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
|
|
83418
85450
|
icon: "toggle-right"
|
|
@@ -86988,7 +89020,6 @@ Object.freeze({
|
|
|
86988
89020
|
"smtp-provider": "email"
|
|
86989
89021
|
});
|
|
86990
89022
|
DeviceType.Camera;
|
|
86991
|
-
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;
|
|
86992
89023
|
/**
|
|
86993
89024
|
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
86994
89025
|
* `z.infer`, they do not restate the shape.
|
|
@@ -87045,6 +89076,11 @@ var PulseOverrideDraftSchema = object({
|
|
|
87045
89076
|
targetId: string().min(1),
|
|
87046
89077
|
enabled: boolean(),
|
|
87047
89078
|
debounceMs: number().nonnegative(),
|
|
89079
|
+
edges: array(_enum([
|
|
89080
|
+
"rising",
|
|
89081
|
+
"button",
|
|
89082
|
+
"native-event"
|
|
89083
|
+
])).min(1).optional(),
|
|
87048
89084
|
sources: array(OverrideSourceSchema).min(1)
|
|
87049
89085
|
});
|
|
87050
89086
|
var SpanSourceDraftSchema = OverrideSourceSchema.extend({ mode: _enum([
|
|
@@ -87077,7 +89113,6 @@ object({
|
|
|
87077
89113
|
]),
|
|
87078
89114
|
reason: string().nullable()
|
|
87079
89115
|
});
|
|
87080
|
-
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
87081
89116
|
var G711_SCALE_CORRECTION_DB = {
|
|
87082
89117
|
PCMU: 20 * Math.log10(4),
|
|
87083
89118
|
PCMA: 20 * Math.log10(8)
|
|
@@ -87450,7 +89485,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
87450
89485
|
{
|
|
87451
89486
|
name: "summaryStreams",
|
|
87452
89487
|
label: "Summary: streams offline",
|
|
87453
|
-
example: "
|
|
89488
|
+
example: "Front door (high) — since 06:40",
|
|
87454
89489
|
kinds: ["stream-offline", "stream-online"]
|
|
87455
89490
|
},
|
|
87456
89491
|
{
|
|
@@ -87468,13 +89503,13 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
87468
89503
|
{
|
|
87469
89504
|
name: "summaryDetection",
|
|
87470
89505
|
label: "Summary: cameras detecting nothing",
|
|
87471
|
-
example: "
|
|
89506
|
+
example: "Front door — since 05:10",
|
|
87472
89507
|
kinds: ["detection-blind"]
|
|
87473
89508
|
},
|
|
87474
89509
|
{
|
|
87475
89510
|
name: "summaryNodes",
|
|
87476
89511
|
label: "Summary: nodes",
|
|
87477
|
-
example: "
|
|
89512
|
+
example: "agent-a — offline since 03:00",
|
|
87478
89513
|
kinds: [
|
|
87479
89514
|
"node-offline",
|
|
87480
89515
|
"node-online",
|
|
@@ -189370,7 +191405,7 @@ var REOLINK_ADDON_ID = "provider-reolink";
|
|
|
189370
191405
|
* TWO vocabularies arrive here and both must be keyed. The simple-event push
|
|
189371
191406
|
* (cmd 33 `<AItype>`) says `animal`; the capability probe (cmd 299
|
|
189372
191407
|
* `getAiDetectTypes`) says `dog_cat` for the same class. Keying only the first
|
|
189373
|
-
* made `buildSupportedClasses` drop it, so camera
|
|
191408
|
+
* made `buildSupportedClasses` drop it, so camera 108 reported
|
|
189374
191409
|
* `supportedClasses: ["person","vehicle"]` while its own `lastByClass` held a
|
|
189375
191410
|
* live `animal` detection — the camera detected a class the system said it
|
|
189376
191411
|
* could not. The two key-spaces do not collide, so one map serves both.
|
|
@@ -189455,7 +191490,7 @@ var reolinkCameraSchema = object({
|
|
|
189455
191490
|
*
|
|
189456
191491
|
* Empty = nothing configured, and `goHome` then REFUSES. It used to go to a
|
|
189457
191492
|
* hardcoded slot on a vendor "convention" this fleet contradicts: reolink
|
|
189458
|
-
* went to preset 0, which on device
|
|
191493
|
+
* went to preset 0, which on device 107 holds "stanza"; amcrest went to
|
|
189459
191494
|
* preset 1, which on device 3836 holds "Preset1". Both swallowed the failure
|
|
189460
191495
|
* in a bare catch, so a head that never moved was indistinguishable from a
|
|
189461
191496
|
* head that went home.
|
|
@@ -190374,7 +192409,7 @@ var UID_MISSING_REASON = "uid-missing: the hub selects a child by uid, and this
|
|
|
190374
192409
|
*
|
|
190375
192410
|
* - a **closed day** cannot gain or lose a recording, so its listing is
|
|
190376
192411
|
* immutable for {@link CLOSED_DAY_TTL_MS}. Re-listing yesterday on every
|
|
190377
|
-
* scroll would cost 2.0 s of camera time (measured: 546 clips on
|
|
192412
|
+
* scroll would cost 2.0 s of camera time (measured: 546 clips on 107) for an
|
|
190378
192413
|
* answer that cannot have changed;
|
|
190379
192414
|
* - **today** is `serve-and-revalidate` under `OPERATOR_WRITTEN_STALE_MS` —
|
|
190380
192415
|
* the same discipline every other Reolink read uses (D224), for the same
|
|
@@ -195124,7 +197159,7 @@ function buildClipRefreshDeviceSection(input) {
|
|
|
195124
197159
|
*
|
|
195125
197160
|
* `failure-contribution` keeps `variant` for a second dimension WITHIN a
|
|
195126
197161
|
* family, and here the useful one is the format the caller pushed: an operator
|
|
195127
|
-
* asking "why is
|
|
197162
|
+
* asking "why is 102 silent" needs to know whether HomeKit's Opus or Alexa's
|
|
195128
197163
|
* raw PCM is the half that is failing. The provider is handed that value on
|
|
195129
197164
|
* every call, so it is reported rather than guessed — absent, never invented.
|
|
195130
197165
|
*
|
|
@@ -196468,7 +198503,7 @@ async function refreshSnapshotCacheOnce(input) {
|
|
|
196468
198503
|
* `logger.child(stableId).withTags({ deviceId })` with the NUMERIC id
|
|
196469
198504
|
* (`device-cap-proxy.ts`), and `ScopedLogger` merges its bound tags into every
|
|
196470
198505
|
* line. So every line these channels admit carries `tags.deviceId`, and
|
|
196471
|
-
* `| json | deviceId="
|
|
198506
|
+
* `| json | deviceId="102"` selects exactly one camera. That is the repo rule
|
|
196472
198507
|
* from `CLAUDE.md` — paid for with a 22% thumbnail gap and a 3-hour media
|
|
196473
198508
|
* blackout diagnosed by hand — finally paying out.
|
|
196474
198509
|
*
|
|
@@ -196572,7 +198607,7 @@ function capDayNightModeToReolink(mode) {
|
|
|
196572
198607
|
* `battery-operated` is derived from the probe flag **OR** the driver's own
|
|
196573
198608
|
* `isBattery` discriminator — never the probe alone. The probe slice is
|
|
196574
198609
|
* written only by a SUCCESSFUL `feature-probe` round-trip, and a battery
|
|
196575
|
-
* camera that is asleep (or flat, or off-LAN) never answers one: device
|
|
198610
|
+
* camera that is asleep (or flat, or off-LAN) never answers one: device 106
|
|
196576
198611
|
* "Baby monitor" held `deviceCache.deviceType === 'battery-cam'`, a
|
|
196577
198612
|
* `battery` runtime slice reporting `sleeping: true`, and STILL published
|
|
196578
198613
|
* `features = ['native-snapshot','rebootable']` because the `feature-probe`
|
|
@@ -196583,7 +198618,7 @@ function capDayNightModeToReolink(mode) {
|
|
|
196583
198618
|
* map) — without it the camera is drawn as an ordinary awake camera;
|
|
196584
198619
|
* - the snapshot wrapper's sleep gate (`snapshot.addon.ts`
|
|
196585
198620
|
* `lookupDeviceMeta().isBattery`) — without it every thumbnail refresh
|
|
196586
|
-
* issues a Baichuan login and WAKES the camera (observed hourly on
|
|
198621
|
+
* issues a Baichuan login and WAKES the camera (observed hourly on 106
|
|
196587
198622
|
* while it sat at 14%);
|
|
196588
198623
|
* - the broker's `preBufferSec = 0` battery rule and its relaxed stall
|
|
196589
198624
|
* watchdog.
|
|
@@ -199646,7 +201681,7 @@ function isNativeObjectForwardingEnabled(capState) {
|
|
|
199646
201681
|
* closure inside `registerNativeObjectDetectionCap` had a test that
|
|
199647
201682
|
* RE-IMPLEMENTED it — and the copy encoded the `dog_cat` gap as intent
|
|
199648
201683
|
* ("skips unknown Baichuan type names"), so the suite stayed green while
|
|
199649
|
-
* camera
|
|
201684
|
+
* camera 108 reported it could not detect a class it was detecting. One
|
|
199650
201685
|
* function, one test, no copy.
|
|
199651
201686
|
*
|
|
199652
201687
|
* An absent probe is not an empty answer: it means nobody has asked the camera
|
|
@@ -200508,7 +202543,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200508
202543
|
* dispatched N times on the camstack side, and `offSimpleEvent`
|
|
200509
202544
|
* couldn't remove the old one without the original ref. Net
|
|
200510
202545
|
* effect was that subscriptions drifted out of sync with the
|
|
200511
|
-
* camera's TCP push channel: device 15 (
|
|
202546
|
+
* camera's TCP push channel: device 15 (Carol) went silent for
|
|
200512
202547
|
* 2+ hours while device 8 (battery doorbell) kept pushing
|
|
200513
202548
|
* normally because its short connection lifecycle naturally
|
|
200514
202549
|
* reset the listener set.
|
|
@@ -201528,7 +203563,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
201528
203563
|
}
|
|
201529
203564
|
/**
|
|
201530
203565
|
* Arm Baichuan HaCfg (cmd 807) so this battery camera POSTs wake/sleep
|
|
201531
|
-
* events to the provider's HTTP intake. Mirrors
|
|
203566
|
+
* events to the provider's HTTP intake. Mirrors plugin catalog's
|
|
201532
203567
|
* `autoConfigureBaichuanWebhook` — never called from init.
|
|
201533
203568
|
*/
|
|
201534
203569
|
async autoConfigureBaichuanWebhook() {
|
|
@@ -204985,7 +207020,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
204985
207020
|
/**
|
|
204986
207021
|
* Synthesize the HTTP-FLV pull URL for a (channel, profile) pair. FLV is
|
|
204987
207022
|
* served off the Reolink Baichuan media port (default 1935, app `bcs`) as
|
|
204988
|
-
* `channel<channel>_<profile>.bcs` — the same shape
|
|
207023
|
+
* `channel<channel>_<profile>.bcs` — the same shape restreamer uses. The
|
|
204989
207024
|
* lib does NOT surface this URL, so we build it from the SAME connection
|
|
204990
207025
|
* creds the RTSP/native paths use (`host`/`username`/`password` on the
|
|
204991
207026
|
* device config), URL-encoding the credentials.
|