@camstack/addon-pipeline-orchestrator 1.2.627 → 1.2.628
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/assets/viewer/_expo/static/js/web/__common-163c8c9d580e1ed65a82e210e457d9e4.js +4 -4
- package/assets/viewer/_expo/static/js/web/__common-a465d4a66f5773164f88445ca3126ea7.js +4 -4
- package/assets/viewer/embed/assets/index-DqLzhEZ4.js +2 -2
- package/dist/_stub.js +1 -1
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-CLv7RbnD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-D80kWqs3.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BKwlDxqb.mjs +26 -0
- package/dist/{hostInit-D0Zvi-g4.mjs → hostInit-C__mhGsK.mjs} +3 -3
- package/dist/index.js +2065 -69
- package/dist/index.mjs +2065 -69
- package/dist/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Pf0lQiLL.mjs +0 -26
package/dist/index.js
CHANGED
|
@@ -30,7 +30,7 @@ node_fs = __toESM(node_fs);
|
|
|
30
30
|
let node_path = require("node:path");
|
|
31
31
|
node_path = __toESM(node_path);
|
|
32
32
|
let node_url = require("node:url");
|
|
33
|
-
//#region ../types/dist/event-category-
|
|
33
|
+
//#region ../types/dist/event-category-DHXxB8t9.mjs
|
|
34
34
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
35
35
|
EventCategory["SystemBoot"] = "system.boot";
|
|
36
36
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -326,7 +326,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
326
326
|
* TRANSITION into that state (never per dispatch), and the node is dropped
|
|
327
327
|
* from the placement candidate set for as long as it holds.
|
|
328
328
|
*
|
|
329
|
-
* This exists because the state was previously invisible:
|
|
329
|
+
* This exists because the state was previously invisible: agent-a
|
|
330
330
|
* absorbed 283k inference errors in a day while still being handed cameras,
|
|
331
331
|
* and nothing in the system said so.
|
|
332
332
|
*
|
|
@@ -5598,7 +5598,7 @@ var ZodIssueCode = {
|
|
|
5598
5598
|
var ZodFirstPartyTypeKind;
|
|
5599
5599
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5600
5600
|
//#endregion
|
|
5601
|
-
//#region ../types/dist/sleep-
|
|
5601
|
+
//#region ../types/dist/sleep-BErAxhul.mjs
|
|
5602
5602
|
/**
|
|
5603
5603
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5604
5604
|
* window to float samples (D455).
|
|
@@ -9260,7 +9260,7 @@ var viewerUiCapability = {
|
|
|
9260
9260
|
* `getStaticDir` leaks a hub filesystem path.
|
|
9261
9261
|
*
|
|
9262
9262
|
* ⚠ Checked before gating: the VIEWER app IS used by a non-admin user
|
|
9263
|
-
* (`
|
|
9263
|
+
* (`bob`), but it never calls `viewerUi.*` over tRPC. The static SPA
|
|
9264
9264
|
* it loads is served by the plain `GET /viewer/*` Fastify route in
|
|
9265
9265
|
* `main.ts`, which reads `staticDir`/`indexPath` from a module-level
|
|
9266
9266
|
* cache populated ONCE at boot via `capRegistry.getSingletonForNode`
|
|
@@ -9335,6 +9335,1980 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
|
|
|
9335
9335
|
kind: "mutation",
|
|
9336
9336
|
auth: "admin"
|
|
9337
9337
|
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
9338
|
+
Object.freeze({ "doorbell": "lastPressedAt" });
|
|
9339
|
+
/** Every capability name, so addon code can check a name without the schema graph. */
|
|
9340
|
+
var CAP_NAMES = Object.freeze([
|
|
9341
|
+
"accessories",
|
|
9342
|
+
"addon-pages",
|
|
9343
|
+
"addon-pages-source",
|
|
9344
|
+
"addon-routes",
|
|
9345
|
+
"addon-settings",
|
|
9346
|
+
"addon-widgets",
|
|
9347
|
+
"addon-widgets-source",
|
|
9348
|
+
"addons",
|
|
9349
|
+
"admin-ui",
|
|
9350
|
+
"air-quality-sensor",
|
|
9351
|
+
"alarm-panel",
|
|
9352
|
+
"alerts",
|
|
9353
|
+
"ambient-light-sensor",
|
|
9354
|
+
"audio-analysis",
|
|
9355
|
+
"audio-analyzer",
|
|
9356
|
+
"audio-codec",
|
|
9357
|
+
"audio-metrics",
|
|
9358
|
+
"auth-provider",
|
|
9359
|
+
"automation-control",
|
|
9360
|
+
"backup",
|
|
9361
|
+
"battery",
|
|
9362
|
+
"binary",
|
|
9363
|
+
"brightness",
|
|
9364
|
+
"broker",
|
|
9365
|
+
"button",
|
|
9366
|
+
"calendar-source",
|
|
9367
|
+
"calendars",
|
|
9368
|
+
"camera-credentials",
|
|
9369
|
+
"camera-grid-layout",
|
|
9370
|
+
"camera-pipeline-config",
|
|
9371
|
+
"camera-streams",
|
|
9372
|
+
"carbon-monoxide",
|
|
9373
|
+
"climate-control",
|
|
9374
|
+
"color",
|
|
9375
|
+
"composer",
|
|
9376
|
+
"connection-test",
|
|
9377
|
+
"connectivity",
|
|
9378
|
+
"consumables",
|
|
9379
|
+
"contact",
|
|
9380
|
+
"control",
|
|
9381
|
+
"core-blocks",
|
|
9382
|
+
"cover",
|
|
9383
|
+
"custom-model-registry",
|
|
9384
|
+
"data-store-provider",
|
|
9385
|
+
"database-snapshot",
|
|
9386
|
+
"day-night",
|
|
9387
|
+
"decoder",
|
|
9388
|
+
"detection-pipeline",
|
|
9389
|
+
"device-admin-link",
|
|
9390
|
+
"device-adoption",
|
|
9391
|
+
"device-credentials",
|
|
9392
|
+
"device-discovery",
|
|
9393
|
+
"device-export",
|
|
9394
|
+
"device-extension",
|
|
9395
|
+
"device-history",
|
|
9396
|
+
"device-manager",
|
|
9397
|
+
"device-ops",
|
|
9398
|
+
"device-provider",
|
|
9399
|
+
"device-removal-hook",
|
|
9400
|
+
"device-state",
|
|
9401
|
+
"device-status",
|
|
9402
|
+
"dishwasher",
|
|
9403
|
+
"display-palette",
|
|
9404
|
+
"doorbell",
|
|
9405
|
+
"embedding-encoder",
|
|
9406
|
+
"enum-sensor",
|
|
9407
|
+
"event-emitter",
|
|
9408
|
+
"face-gallery",
|
|
9409
|
+
"failure-contribution",
|
|
9410
|
+
"fan-control",
|
|
9411
|
+
"feature-probe",
|
|
9412
|
+
"filesystem-browse",
|
|
9413
|
+
"flood",
|
|
9414
|
+
"gas",
|
|
9415
|
+
"heating-valve",
|
|
9416
|
+
"humidifier",
|
|
9417
|
+
"humidity-sensor",
|
|
9418
|
+
"image",
|
|
9419
|
+
"image-settings",
|
|
9420
|
+
"integrations",
|
|
9421
|
+
"intercom",
|
|
9422
|
+
"keychain",
|
|
9423
|
+
"keychain-admin",
|
|
9424
|
+
"lawn-mower-control",
|
|
9425
|
+
"llm",
|
|
9426
|
+
"llm-runtime",
|
|
9427
|
+
"load-contribution",
|
|
9428
|
+
"local-network",
|
|
9429
|
+
"lock-control",
|
|
9430
|
+
"log-channels",
|
|
9431
|
+
"log-destination",
|
|
9432
|
+
"login-method",
|
|
9433
|
+
"media-player",
|
|
9434
|
+
"mesh-network",
|
|
9435
|
+
"metrics-provider",
|
|
9436
|
+
"model-convert",
|
|
9437
|
+
"model-distributor",
|
|
9438
|
+
"motion",
|
|
9439
|
+
"motion-detection",
|
|
9440
|
+
"motion-trigger",
|
|
9441
|
+
"motion-zones",
|
|
9442
|
+
"mqtt-broker",
|
|
9443
|
+
"native-object-detection",
|
|
9444
|
+
"navigation",
|
|
9445
|
+
"network-access",
|
|
9446
|
+
"network-link",
|
|
9447
|
+
"network-quality",
|
|
9448
|
+
"node-certificates",
|
|
9449
|
+
"nodes",
|
|
9450
|
+
"notification-output",
|
|
9451
|
+
"notification-rules",
|
|
9452
|
+
"notifier",
|
|
9453
|
+
"numeric-sensor",
|
|
9454
|
+
"oauth-integration",
|
|
9455
|
+
"oidc-connections",
|
|
9456
|
+
"osd",
|
|
9457
|
+
"osd-manager",
|
|
9458
|
+
"pet-feeder",
|
|
9459
|
+
"pipeline-analytics",
|
|
9460
|
+
"pipeline-executor",
|
|
9461
|
+
"pipeline-orchestrator",
|
|
9462
|
+
"pipeline-runner",
|
|
9463
|
+
"plate-gallery",
|
|
9464
|
+
"platform-probe",
|
|
9465
|
+
"power-meter",
|
|
9466
|
+
"presence",
|
|
9467
|
+
"pressure-sensor",
|
|
9468
|
+
"privacy-mask",
|
|
9469
|
+
"ptz",
|
|
9470
|
+
"ptz-autotrack",
|
|
9471
|
+
"reboot",
|
|
9472
|
+
"record-entries",
|
|
9473
|
+
"recording",
|
|
9474
|
+
"recording-archive",
|
|
9475
|
+
"recording-export",
|
|
9476
|
+
"recording-onboard",
|
|
9477
|
+
"recording-signal",
|
|
9478
|
+
"records",
|
|
9479
|
+
"running-state",
|
|
9480
|
+
"scene-monitor",
|
|
9481
|
+
"script-runner",
|
|
9482
|
+
"server-management",
|
|
9483
|
+
"settings-store",
|
|
9484
|
+
"smoke",
|
|
9485
|
+
"smtp-provider",
|
|
9486
|
+
"snapshot",
|
|
9487
|
+
"sso-bridge",
|
|
9488
|
+
"storage",
|
|
9489
|
+
"storage-admin",
|
|
9490
|
+
"storage-evictable",
|
|
9491
|
+
"storage-migration",
|
|
9492
|
+
"storage-occupancy",
|
|
9493
|
+
"storage-provider",
|
|
9494
|
+
"stream-broker",
|
|
9495
|
+
"stream-catalog",
|
|
9496
|
+
"stream-params",
|
|
9497
|
+
"stream-signals",
|
|
9498
|
+
"switch",
|
|
9499
|
+
"system",
|
|
9500
|
+
"tamper",
|
|
9501
|
+
"temperature-sensor",
|
|
9502
|
+
"terminal-session",
|
|
9503
|
+
"toast",
|
|
9504
|
+
"training",
|
|
9505
|
+
"training-provider",
|
|
9506
|
+
"turn-provider",
|
|
9507
|
+
"update",
|
|
9508
|
+
"user-management",
|
|
9509
|
+
"user-passkeys",
|
|
9510
|
+
"vacuum-control",
|
|
9511
|
+
"valve",
|
|
9512
|
+
"vector-store",
|
|
9513
|
+
"vibration",
|
|
9514
|
+
"videoclips",
|
|
9515
|
+
"viewer-ui",
|
|
9516
|
+
"water-heater",
|
|
9517
|
+
"weather",
|
|
9518
|
+
"webrtc-session",
|
|
9519
|
+
"zone-analytics",
|
|
9520
|
+
"zone-rules",
|
|
9521
|
+
"zones"
|
|
9522
|
+
]);
|
|
9523
|
+
Object.freeze({
|
|
9524
|
+
"air-quality-sensor": [
|
|
9525
|
+
{
|
|
9526
|
+
"path": "co2Ppm",
|
|
9527
|
+
"valueType": "number"
|
|
9528
|
+
},
|
|
9529
|
+
{
|
|
9530
|
+
"path": "vocPpb",
|
|
9531
|
+
"valueType": "number"
|
|
9532
|
+
},
|
|
9533
|
+
{
|
|
9534
|
+
"path": "pm25",
|
|
9535
|
+
"valueType": "number"
|
|
9536
|
+
},
|
|
9537
|
+
{
|
|
9538
|
+
"path": "pm10",
|
|
9539
|
+
"valueType": "number"
|
|
9540
|
+
},
|
|
9541
|
+
{
|
|
9542
|
+
"path": "aqi",
|
|
9543
|
+
"valueType": "number"
|
|
9544
|
+
},
|
|
9545
|
+
{
|
|
9546
|
+
"path": "unit",
|
|
9547
|
+
"valueType": "string"
|
|
9548
|
+
},
|
|
9549
|
+
{
|
|
9550
|
+
"path": "precision",
|
|
9551
|
+
"valueType": "number"
|
|
9552
|
+
}
|
|
9553
|
+
],
|
|
9554
|
+
"alarm-panel": [
|
|
9555
|
+
{
|
|
9556
|
+
"path": "state",
|
|
9557
|
+
"valueType": "enum",
|
|
9558
|
+
"enumValues": [
|
|
9559
|
+
"disarmed",
|
|
9560
|
+
"armed_home",
|
|
9561
|
+
"armed_away",
|
|
9562
|
+
"armed_night",
|
|
9563
|
+
"armed_vacation",
|
|
9564
|
+
"armed_custom_bypass",
|
|
9565
|
+
"arming",
|
|
9566
|
+
"disarming",
|
|
9567
|
+
"pending",
|
|
9568
|
+
"triggered"
|
|
9569
|
+
]
|
|
9570
|
+
},
|
|
9571
|
+
{
|
|
9572
|
+
"path": "targetMode",
|
|
9573
|
+
"valueType": "enum",
|
|
9574
|
+
"enumValues": [
|
|
9575
|
+
"home",
|
|
9576
|
+
"away",
|
|
9577
|
+
"night",
|
|
9578
|
+
"vacation",
|
|
9579
|
+
"custom_bypass"
|
|
9580
|
+
]
|
|
9581
|
+
},
|
|
9582
|
+
{
|
|
9583
|
+
"path": "requiresCode",
|
|
9584
|
+
"valueType": "boolean"
|
|
9585
|
+
}
|
|
9586
|
+
],
|
|
9587
|
+
"ambient-light-sensor": [
|
|
9588
|
+
{
|
|
9589
|
+
"path": "lux",
|
|
9590
|
+
"valueType": "number"
|
|
9591
|
+
},
|
|
9592
|
+
{
|
|
9593
|
+
"path": "unit",
|
|
9594
|
+
"valueType": "string"
|
|
9595
|
+
},
|
|
9596
|
+
{
|
|
9597
|
+
"path": "precision",
|
|
9598
|
+
"valueType": "number"
|
|
9599
|
+
}
|
|
9600
|
+
],
|
|
9601
|
+
"audio-metrics": [
|
|
9602
|
+
{
|
|
9603
|
+
"path": "ts",
|
|
9604
|
+
"valueType": "number"
|
|
9605
|
+
},
|
|
9606
|
+
{
|
|
9607
|
+
"path": "windowSec",
|
|
9608
|
+
"valueType": "number"
|
|
9609
|
+
},
|
|
9610
|
+
{
|
|
9611
|
+
"path": "level.rms",
|
|
9612
|
+
"valueType": "number"
|
|
9613
|
+
},
|
|
9614
|
+
{
|
|
9615
|
+
"path": "level.dbfs",
|
|
9616
|
+
"valueType": "number"
|
|
9617
|
+
},
|
|
9618
|
+
{
|
|
9619
|
+
"path": "peakDbfs",
|
|
9620
|
+
"valueType": "number"
|
|
9621
|
+
},
|
|
9622
|
+
{
|
|
9623
|
+
"path": "avgDbfs",
|
|
9624
|
+
"valueType": "number"
|
|
9625
|
+
},
|
|
9626
|
+
{
|
|
9627
|
+
"path": "current.className",
|
|
9628
|
+
"valueType": "string"
|
|
9629
|
+
},
|
|
9630
|
+
{
|
|
9631
|
+
"path": "current.score",
|
|
9632
|
+
"valueType": "number"
|
|
9633
|
+
},
|
|
9634
|
+
{
|
|
9635
|
+
"path": "current.timestamp",
|
|
9636
|
+
"valueType": "number"
|
|
9637
|
+
}
|
|
9638
|
+
],
|
|
9639
|
+
"automation-control": [
|
|
9640
|
+
{
|
|
9641
|
+
"path": "enabled",
|
|
9642
|
+
"valueType": "boolean"
|
|
9643
|
+
},
|
|
9644
|
+
{
|
|
9645
|
+
"path": "isRunning",
|
|
9646
|
+
"valueType": "boolean"
|
|
9647
|
+
},
|
|
9648
|
+
{
|
|
9649
|
+
"path": "lastTriggeredAt",
|
|
9650
|
+
"valueType": "number"
|
|
9651
|
+
},
|
|
9652
|
+
{
|
|
9653
|
+
"path": "lastError",
|
|
9654
|
+
"valueType": "string"
|
|
9655
|
+
}
|
|
9656
|
+
],
|
|
9657
|
+
"battery": [
|
|
9658
|
+
{
|
|
9659
|
+
"path": "percentage",
|
|
9660
|
+
"valueType": "number"
|
|
9661
|
+
},
|
|
9662
|
+
{
|
|
9663
|
+
"path": "charging",
|
|
9664
|
+
"valueType": "enum",
|
|
9665
|
+
"enumValues": [
|
|
9666
|
+
"dc",
|
|
9667
|
+
"solar",
|
|
9668
|
+
"none",
|
|
9669
|
+
"unknown"
|
|
9670
|
+
]
|
|
9671
|
+
},
|
|
9672
|
+
{
|
|
9673
|
+
"path": "sleeping",
|
|
9674
|
+
"valueType": "boolean"
|
|
9675
|
+
},
|
|
9676
|
+
{
|
|
9677
|
+
"path": "lastUpdated",
|
|
9678
|
+
"valueType": "number"
|
|
9679
|
+
},
|
|
9680
|
+
{
|
|
9681
|
+
"path": "lastContactAt",
|
|
9682
|
+
"valueType": "number"
|
|
9683
|
+
},
|
|
9684
|
+
{
|
|
9685
|
+
"path": "lastFullRefreshAt",
|
|
9686
|
+
"valueType": "number"
|
|
9687
|
+
},
|
|
9688
|
+
{
|
|
9689
|
+
"path": "binary",
|
|
9690
|
+
"valueType": "boolean"
|
|
9691
|
+
}
|
|
9692
|
+
],
|
|
9693
|
+
"binary": [{
|
|
9694
|
+
"path": "on",
|
|
9695
|
+
"valueType": "boolean"
|
|
9696
|
+
}],
|
|
9697
|
+
"brightness": [{
|
|
9698
|
+
"path": "percentage",
|
|
9699
|
+
"valueType": "number"
|
|
9700
|
+
}],
|
|
9701
|
+
"broker": [{
|
|
9702
|
+
"path": "brokerCount",
|
|
9703
|
+
"valueType": "number"
|
|
9704
|
+
}, {
|
|
9705
|
+
"path": "connectedCount",
|
|
9706
|
+
"valueType": "number"
|
|
9707
|
+
}],
|
|
9708
|
+
"camera-credentials": [
|
|
9709
|
+
{
|
|
9710
|
+
"path": "host",
|
|
9711
|
+
"valueType": "string"
|
|
9712
|
+
},
|
|
9713
|
+
{
|
|
9714
|
+
"path": "port",
|
|
9715
|
+
"valueType": "number"
|
|
9716
|
+
},
|
|
9717
|
+
{
|
|
9718
|
+
"path": "onvifPort",
|
|
9719
|
+
"valueType": "number"
|
|
9720
|
+
},
|
|
9721
|
+
{
|
|
9722
|
+
"path": "rtspPort",
|
|
9723
|
+
"valueType": "number"
|
|
9724
|
+
},
|
|
9725
|
+
{
|
|
9726
|
+
"path": "https",
|
|
9727
|
+
"valueType": "boolean"
|
|
9728
|
+
},
|
|
9729
|
+
{
|
|
9730
|
+
"path": "hasUsername",
|
|
9731
|
+
"valueType": "boolean"
|
|
9732
|
+
},
|
|
9733
|
+
{
|
|
9734
|
+
"path": "hasPassword",
|
|
9735
|
+
"valueType": "boolean"
|
|
9736
|
+
},
|
|
9737
|
+
{
|
|
9738
|
+
"path": "onvifProfile",
|
|
9739
|
+
"valueType": "string"
|
|
9740
|
+
}
|
|
9741
|
+
],
|
|
9742
|
+
"camera-streams": [
|
|
9743
|
+
{
|
|
9744
|
+
"path": "online",
|
|
9745
|
+
"valueType": "boolean"
|
|
9746
|
+
},
|
|
9747
|
+
{
|
|
9748
|
+
"path": "slotStatuses.high",
|
|
9749
|
+
"valueType": "enum",
|
|
9750
|
+
"enumValues": [
|
|
9751
|
+
"unassigned",
|
|
9752
|
+
"idle",
|
|
9753
|
+
"connecting",
|
|
9754
|
+
"streaming",
|
|
9755
|
+
"error"
|
|
9756
|
+
]
|
|
9757
|
+
},
|
|
9758
|
+
{
|
|
9759
|
+
"path": "slotStatuses.mid",
|
|
9760
|
+
"valueType": "enum",
|
|
9761
|
+
"enumValues": [
|
|
9762
|
+
"unassigned",
|
|
9763
|
+
"idle",
|
|
9764
|
+
"connecting",
|
|
9765
|
+
"streaming",
|
|
9766
|
+
"error"
|
|
9767
|
+
]
|
|
9768
|
+
},
|
|
9769
|
+
{
|
|
9770
|
+
"path": "slotStatuses.low",
|
|
9771
|
+
"valueType": "enum",
|
|
9772
|
+
"enumValues": [
|
|
9773
|
+
"unassigned",
|
|
9774
|
+
"idle",
|
|
9775
|
+
"connecting",
|
|
9776
|
+
"streaming",
|
|
9777
|
+
"error"
|
|
9778
|
+
]
|
|
9779
|
+
},
|
|
9780
|
+
{
|
|
9781
|
+
"path": "slotErrors.high",
|
|
9782
|
+
"valueType": "string"
|
|
9783
|
+
},
|
|
9784
|
+
{
|
|
9785
|
+
"path": "slotErrors.mid",
|
|
9786
|
+
"valueType": "string"
|
|
9787
|
+
},
|
|
9788
|
+
{
|
|
9789
|
+
"path": "slotErrors.low",
|
|
9790
|
+
"valueType": "string"
|
|
9791
|
+
}
|
|
9792
|
+
],
|
|
9793
|
+
"carbon-monoxide": [{
|
|
9794
|
+
"path": "detected",
|
|
9795
|
+
"valueType": "boolean"
|
|
9796
|
+
}],
|
|
9797
|
+
"climate-control": [
|
|
9798
|
+
{
|
|
9799
|
+
"path": "mode",
|
|
9800
|
+
"valueType": "enum",
|
|
9801
|
+
"enumValues": [
|
|
9802
|
+
"off",
|
|
9803
|
+
"heat",
|
|
9804
|
+
"cool",
|
|
9805
|
+
"auto",
|
|
9806
|
+
"heat_cool",
|
|
9807
|
+
"fan_only",
|
|
9808
|
+
"dry"
|
|
9809
|
+
]
|
|
9810
|
+
},
|
|
9811
|
+
{
|
|
9812
|
+
"path": "fanMode",
|
|
9813
|
+
"valueType": "string"
|
|
9814
|
+
},
|
|
9815
|
+
{
|
|
9816
|
+
"path": "preset",
|
|
9817
|
+
"valueType": "string"
|
|
9818
|
+
},
|
|
9819
|
+
{
|
|
9820
|
+
"path": "target",
|
|
9821
|
+
"valueType": "number"
|
|
9822
|
+
},
|
|
9823
|
+
{
|
|
9824
|
+
"path": "targetHigh",
|
|
9825
|
+
"valueType": "number"
|
|
9826
|
+
},
|
|
9827
|
+
{
|
|
9828
|
+
"path": "targetLow",
|
|
9829
|
+
"valueType": "number"
|
|
9830
|
+
},
|
|
9831
|
+
{
|
|
9832
|
+
"path": "targetHumidity",
|
|
9833
|
+
"valueType": "number"
|
|
9834
|
+
},
|
|
9835
|
+
{
|
|
9836
|
+
"path": "currentTemp",
|
|
9837
|
+
"valueType": "number"
|
|
9838
|
+
},
|
|
9839
|
+
{
|
|
9840
|
+
"path": "currentHumidity",
|
|
9841
|
+
"valueType": "number"
|
|
9842
|
+
},
|
|
9843
|
+
{
|
|
9844
|
+
"path": "swingVertical",
|
|
9845
|
+
"valueType": "boolean"
|
|
9846
|
+
},
|
|
9847
|
+
{
|
|
9848
|
+
"path": "swingHorizontal",
|
|
9849
|
+
"valueType": "boolean"
|
|
9850
|
+
},
|
|
9851
|
+
{
|
|
9852
|
+
"path": "minTemp",
|
|
9853
|
+
"valueType": "number"
|
|
9854
|
+
},
|
|
9855
|
+
{
|
|
9856
|
+
"path": "maxTemp",
|
|
9857
|
+
"valueType": "number"
|
|
9858
|
+
},
|
|
9859
|
+
{
|
|
9860
|
+
"path": "tempStep",
|
|
9861
|
+
"valueType": "number"
|
|
9862
|
+
}
|
|
9863
|
+
],
|
|
9864
|
+
"color": [
|
|
9865
|
+
{
|
|
9866
|
+
"path": "mode",
|
|
9867
|
+
"valueType": "enum",
|
|
9868
|
+
"enumValues": [
|
|
9869
|
+
"rgb",
|
|
9870
|
+
"hsv",
|
|
9871
|
+
"mired"
|
|
9872
|
+
]
|
|
9873
|
+
},
|
|
9874
|
+
{
|
|
9875
|
+
"path": "rgb.r",
|
|
9876
|
+
"valueType": "number"
|
|
9877
|
+
},
|
|
9878
|
+
{
|
|
9879
|
+
"path": "rgb.g",
|
|
9880
|
+
"valueType": "number"
|
|
9881
|
+
},
|
|
9882
|
+
{
|
|
9883
|
+
"path": "rgb.b",
|
|
9884
|
+
"valueType": "number"
|
|
9885
|
+
},
|
|
9886
|
+
{
|
|
9887
|
+
"path": "hsv.h",
|
|
9888
|
+
"valueType": "number"
|
|
9889
|
+
},
|
|
9890
|
+
{
|
|
9891
|
+
"path": "hsv.s",
|
|
9892
|
+
"valueType": "number"
|
|
9893
|
+
},
|
|
9894
|
+
{
|
|
9895
|
+
"path": "hsv.v",
|
|
9896
|
+
"valueType": "number"
|
|
9897
|
+
},
|
|
9898
|
+
{
|
|
9899
|
+
"path": "mireds",
|
|
9900
|
+
"valueType": "number"
|
|
9901
|
+
}
|
|
9902
|
+
],
|
|
9903
|
+
"connectivity": [{
|
|
9904
|
+
"path": "connected",
|
|
9905
|
+
"valueType": "boolean"
|
|
9906
|
+
}],
|
|
9907
|
+
"contact": [{
|
|
9908
|
+
"path": "entryOpen",
|
|
9909
|
+
"valueType": "boolean"
|
|
9910
|
+
}],
|
|
9911
|
+
"control": [
|
|
9912
|
+
{
|
|
9913
|
+
"path": "kind",
|
|
9914
|
+
"valueType": "enum",
|
|
9915
|
+
"enumValues": [
|
|
9916
|
+
"numeric",
|
|
9917
|
+
"select",
|
|
9918
|
+
"text",
|
|
9919
|
+
"datetime"
|
|
9920
|
+
]
|
|
9921
|
+
},
|
|
9922
|
+
{
|
|
9923
|
+
"path": "unit",
|
|
9924
|
+
"valueType": "string"
|
|
9925
|
+
},
|
|
9926
|
+
{
|
|
9927
|
+
"path": "min",
|
|
9928
|
+
"valueType": "number"
|
|
9929
|
+
},
|
|
9930
|
+
{
|
|
9931
|
+
"path": "max",
|
|
9932
|
+
"valueType": "number"
|
|
9933
|
+
},
|
|
9934
|
+
{
|
|
9935
|
+
"path": "step",
|
|
9936
|
+
"valueType": "number"
|
|
9937
|
+
},
|
|
9938
|
+
{
|
|
9939
|
+
"path": "precision",
|
|
9940
|
+
"valueType": "number"
|
|
9941
|
+
},
|
|
9942
|
+
{
|
|
9943
|
+
"path": "format",
|
|
9944
|
+
"valueType": "enum",
|
|
9945
|
+
"enumValues": [
|
|
9946
|
+
"date",
|
|
9947
|
+
"time",
|
|
9948
|
+
"datetime"
|
|
9949
|
+
]
|
|
9950
|
+
}
|
|
9951
|
+
],
|
|
9952
|
+
"cover": [
|
|
9953
|
+
{
|
|
9954
|
+
"path": "state",
|
|
9955
|
+
"valueType": "enum",
|
|
9956
|
+
"enumValues": [
|
|
9957
|
+
"open",
|
|
9958
|
+
"opening",
|
|
9959
|
+
"closing",
|
|
9960
|
+
"closed",
|
|
9961
|
+
"stopped"
|
|
9962
|
+
]
|
|
9963
|
+
},
|
|
9964
|
+
{
|
|
9965
|
+
"path": "position",
|
|
9966
|
+
"valueType": "number"
|
|
9967
|
+
},
|
|
9968
|
+
{
|
|
9969
|
+
"path": "tiltPosition",
|
|
9970
|
+
"valueType": "number"
|
|
9971
|
+
}
|
|
9972
|
+
],
|
|
9973
|
+
"day-night": [
|
|
9974
|
+
{
|
|
9975
|
+
"path": "mode",
|
|
9976
|
+
"valueType": "enum",
|
|
9977
|
+
"enumValues": [
|
|
9978
|
+
"auto",
|
|
9979
|
+
"day",
|
|
9980
|
+
"night",
|
|
9981
|
+
"schedule"
|
|
9982
|
+
]
|
|
9983
|
+
},
|
|
9984
|
+
{
|
|
9985
|
+
"path": "sensitivity",
|
|
9986
|
+
"valueType": "number"
|
|
9987
|
+
},
|
|
9988
|
+
{
|
|
9989
|
+
"path": "switchDelaySec",
|
|
9990
|
+
"valueType": "number"
|
|
9991
|
+
}
|
|
9992
|
+
],
|
|
9993
|
+
"device-adoption": [
|
|
9994
|
+
{
|
|
9995
|
+
"path": "lastDiscoveryAt",
|
|
9996
|
+
"valueType": "number"
|
|
9997
|
+
},
|
|
9998
|
+
{
|
|
9999
|
+
"path": "candidateCount",
|
|
10000
|
+
"valueType": "number"
|
|
10001
|
+
},
|
|
10002
|
+
{
|
|
10003
|
+
"path": "adoptedCount",
|
|
10004
|
+
"valueType": "number"
|
|
10005
|
+
},
|
|
10006
|
+
{
|
|
10007
|
+
"path": "lastError",
|
|
10008
|
+
"valueType": "string"
|
|
10009
|
+
}
|
|
10010
|
+
],
|
|
10011
|
+
"device-discovery": [{
|
|
10012
|
+
"path": "lastDiscoveryAt",
|
|
10013
|
+
"valueType": "number"
|
|
10014
|
+
}, {
|
|
10015
|
+
"path": "lastError",
|
|
10016
|
+
"valueType": "string"
|
|
10017
|
+
}],
|
|
10018
|
+
"device-export": [
|
|
10019
|
+
{
|
|
10020
|
+
"path": "linkState",
|
|
10021
|
+
"valueType": "enum",
|
|
10022
|
+
"enumValues": [
|
|
10023
|
+
"unlinked",
|
|
10024
|
+
"linked",
|
|
10025
|
+
"error"
|
|
10026
|
+
]
|
|
10027
|
+
},
|
|
10028
|
+
{
|
|
10029
|
+
"path": "exposedDeviceCount",
|
|
10030
|
+
"valueType": "number"
|
|
10031
|
+
},
|
|
10032
|
+
{
|
|
10033
|
+
"path": "error",
|
|
10034
|
+
"valueType": "string"
|
|
10035
|
+
},
|
|
10036
|
+
{
|
|
10037
|
+
"path": "setup.qr",
|
|
10038
|
+
"valueType": "string"
|
|
10039
|
+
},
|
|
10040
|
+
{
|
|
10041
|
+
"path": "setup.note",
|
|
10042
|
+
"valueType": "string"
|
|
10043
|
+
}
|
|
10044
|
+
],
|
|
10045
|
+
"device-status": [{
|
|
10046
|
+
"path": "online",
|
|
10047
|
+
"valueType": "boolean"
|
|
10048
|
+
}],
|
|
10049
|
+
"dishwasher": [
|
|
10050
|
+
{
|
|
10051
|
+
"path": "availability",
|
|
10052
|
+
"valueType": "enum",
|
|
10053
|
+
"enumValues": [
|
|
10054
|
+
"available",
|
|
10055
|
+
"offline",
|
|
10056
|
+
"description-missing"
|
|
10057
|
+
]
|
|
10058
|
+
},
|
|
10059
|
+
{
|
|
10060
|
+
"path": "state",
|
|
10061
|
+
"valueType": "enum",
|
|
10062
|
+
"enumValues": [
|
|
10063
|
+
"idle",
|
|
10064
|
+
"running",
|
|
10065
|
+
"paused",
|
|
10066
|
+
"finished",
|
|
10067
|
+
"error",
|
|
10068
|
+
"unavailable"
|
|
10069
|
+
]
|
|
10070
|
+
},
|
|
10071
|
+
{
|
|
10072
|
+
"path": "operationState",
|
|
10073
|
+
"valueType": "enum",
|
|
10074
|
+
"enumValues": [
|
|
10075
|
+
"Inactive",
|
|
10076
|
+
"Ready",
|
|
10077
|
+
"DelayedStart",
|
|
10078
|
+
"Run",
|
|
10079
|
+
"Pause",
|
|
10080
|
+
"ActionRequired",
|
|
10081
|
+
"Finished",
|
|
10082
|
+
"Error",
|
|
10083
|
+
"Aborting"
|
|
10084
|
+
]
|
|
10085
|
+
},
|
|
10086
|
+
{
|
|
10087
|
+
"path": "program",
|
|
10088
|
+
"valueType": "string"
|
|
10089
|
+
},
|
|
10090
|
+
{
|
|
10091
|
+
"path": "selectedProgram",
|
|
10092
|
+
"valueType": "string"
|
|
10093
|
+
},
|
|
10094
|
+
{
|
|
10095
|
+
"path": "remainingSeconds",
|
|
10096
|
+
"valueType": "number"
|
|
10097
|
+
},
|
|
10098
|
+
{
|
|
10099
|
+
"path": "delayedStartSeconds",
|
|
10100
|
+
"valueType": "number"
|
|
10101
|
+
},
|
|
10102
|
+
{
|
|
10103
|
+
"path": "progressPercent",
|
|
10104
|
+
"valueType": "number"
|
|
10105
|
+
},
|
|
10106
|
+
{
|
|
10107
|
+
"path": "doorOpen",
|
|
10108
|
+
"valueType": "boolean"
|
|
10109
|
+
},
|
|
10110
|
+
{
|
|
10111
|
+
"path": "doorLocked",
|
|
10112
|
+
"valueType": "boolean"
|
|
10113
|
+
},
|
|
10114
|
+
{
|
|
10115
|
+
"path": "remoteStartAllowed",
|
|
10116
|
+
"valueType": "boolean"
|
|
10117
|
+
},
|
|
10118
|
+
{
|
|
10119
|
+
"path": "remoteControlActive",
|
|
10120
|
+
"valueType": "boolean"
|
|
10121
|
+
},
|
|
10122
|
+
{
|
|
10123
|
+
"path": "localControlActive",
|
|
10124
|
+
"valueType": "boolean"
|
|
10125
|
+
},
|
|
10126
|
+
{
|
|
10127
|
+
"path": "powerOn",
|
|
10128
|
+
"valueType": "boolean"
|
|
10129
|
+
},
|
|
10130
|
+
{
|
|
10131
|
+
"path": "powerState",
|
|
10132
|
+
"valueType": "string"
|
|
10133
|
+
},
|
|
10134
|
+
{
|
|
10135
|
+
"path": "filterCleaningDue",
|
|
10136
|
+
"valueType": "boolean"
|
|
10137
|
+
},
|
|
10138
|
+
{
|
|
10139
|
+
"path": "machineCareDue",
|
|
10140
|
+
"valueType": "boolean"
|
|
10141
|
+
},
|
|
10142
|
+
{
|
|
10143
|
+
"path": "machineCareRemainingRuns",
|
|
10144
|
+
"valueType": "number"
|
|
10145
|
+
},
|
|
10146
|
+
{
|
|
10147
|
+
"path": "halfLoad",
|
|
10148
|
+
"valueType": "boolean"
|
|
10149
|
+
},
|
|
10150
|
+
{
|
|
10151
|
+
"path": "hygienePlus",
|
|
10152
|
+
"valueType": "boolean"
|
|
10153
|
+
},
|
|
10154
|
+
{
|
|
10155
|
+
"path": "extraDry",
|
|
10156
|
+
"valueType": "boolean"
|
|
10157
|
+
},
|
|
10158
|
+
{
|
|
10159
|
+
"path": "intensiveZone",
|
|
10160
|
+
"valueType": "boolean"
|
|
10161
|
+
},
|
|
10162
|
+
{
|
|
10163
|
+
"path": "varioSpeedPlus",
|
|
10164
|
+
"valueType": "boolean"
|
|
10165
|
+
},
|
|
10166
|
+
{
|
|
10167
|
+
"path": "childLock",
|
|
10168
|
+
"valueType": "boolean"
|
|
10169
|
+
},
|
|
10170
|
+
{
|
|
10171
|
+
"path": "errorCode",
|
|
10172
|
+
"valueType": "number"
|
|
10173
|
+
},
|
|
10174
|
+
{
|
|
10175
|
+
"path": "errorLabel",
|
|
10176
|
+
"valueType": "string"
|
|
10177
|
+
}
|
|
10178
|
+
],
|
|
10179
|
+
"doorbell": [{
|
|
10180
|
+
"path": "lastPressedAt",
|
|
10181
|
+
"valueType": "number"
|
|
10182
|
+
}, {
|
|
10183
|
+
"path": "pressCountSinceStart",
|
|
10184
|
+
"valueType": "number"
|
|
10185
|
+
}],
|
|
10186
|
+
"enum-sensor": [{
|
|
10187
|
+
"path": "value",
|
|
10188
|
+
"valueType": "string"
|
|
10189
|
+
}, {
|
|
10190
|
+
"path": "format",
|
|
10191
|
+
"valueType": "enum",
|
|
10192
|
+
"enumValues": [
|
|
10193
|
+
"date",
|
|
10194
|
+
"time",
|
|
10195
|
+
"datetime"
|
|
10196
|
+
]
|
|
10197
|
+
}],
|
|
10198
|
+
"event-emitter": [
|
|
10199
|
+
{
|
|
10200
|
+
"path": "lastEvent.deviceId",
|
|
10201
|
+
"valueType": "number"
|
|
10202
|
+
},
|
|
10203
|
+
{
|
|
10204
|
+
"path": "lastEvent.eventType",
|
|
10205
|
+
"valueType": "string"
|
|
10206
|
+
},
|
|
10207
|
+
{
|
|
10208
|
+
"path": "lastEvent.timestamp",
|
|
10209
|
+
"valueType": "number"
|
|
10210
|
+
},
|
|
10211
|
+
{
|
|
10212
|
+
"path": "lastEvent.seq",
|
|
10213
|
+
"valueType": "number"
|
|
10214
|
+
},
|
|
10215
|
+
{
|
|
10216
|
+
"path": "eventCountSinceStart",
|
|
10217
|
+
"valueType": "number"
|
|
10218
|
+
}
|
|
10219
|
+
],
|
|
10220
|
+
"fan-control": [
|
|
10221
|
+
{
|
|
10222
|
+
"path": "percentage",
|
|
10223
|
+
"valueType": "number"
|
|
10224
|
+
},
|
|
10225
|
+
{
|
|
10226
|
+
"path": "percentageStep",
|
|
10227
|
+
"valueType": "number"
|
|
10228
|
+
},
|
|
10229
|
+
{
|
|
10230
|
+
"path": "preset",
|
|
10231
|
+
"valueType": "string"
|
|
10232
|
+
},
|
|
10233
|
+
{
|
|
10234
|
+
"path": "direction",
|
|
10235
|
+
"valueType": "enum",
|
|
10236
|
+
"enumValues": ["forward", "reverse"]
|
|
10237
|
+
},
|
|
10238
|
+
{
|
|
10239
|
+
"path": "oscillating",
|
|
10240
|
+
"valueType": "boolean"
|
|
10241
|
+
}
|
|
10242
|
+
],
|
|
10243
|
+
"feature-probe": [
|
|
10244
|
+
{
|
|
10245
|
+
"path": "deviceType",
|
|
10246
|
+
"valueType": "string"
|
|
10247
|
+
},
|
|
10248
|
+
{
|
|
10249
|
+
"path": "model",
|
|
10250
|
+
"valueType": "string"
|
|
10251
|
+
},
|
|
10252
|
+
{
|
|
10253
|
+
"path": "channelCount",
|
|
10254
|
+
"valueType": "number"
|
|
10255
|
+
},
|
|
10256
|
+
{
|
|
10257
|
+
"path": "lastProbedAt",
|
|
10258
|
+
"valueType": "number"
|
|
10259
|
+
}
|
|
10260
|
+
],
|
|
10261
|
+
"flood": [{
|
|
10262
|
+
"path": "flooded",
|
|
10263
|
+
"valueType": "boolean"
|
|
10264
|
+
}],
|
|
10265
|
+
"gas": [{
|
|
10266
|
+
"path": "detected",
|
|
10267
|
+
"valueType": "boolean"
|
|
10268
|
+
}],
|
|
10269
|
+
"heating-valve": [{
|
|
10270
|
+
"path": "position",
|
|
10271
|
+
"valueType": "number"
|
|
10272
|
+
}],
|
|
10273
|
+
"humidifier": [
|
|
10274
|
+
{
|
|
10275
|
+
"path": "on",
|
|
10276
|
+
"valueType": "boolean"
|
|
10277
|
+
},
|
|
10278
|
+
{
|
|
10279
|
+
"path": "currentHumidity",
|
|
10280
|
+
"valueType": "number"
|
|
10281
|
+
},
|
|
10282
|
+
{
|
|
10283
|
+
"path": "targetHumidity",
|
|
10284
|
+
"valueType": "number"
|
|
10285
|
+
},
|
|
10286
|
+
{
|
|
10287
|
+
"path": "mode",
|
|
10288
|
+
"valueType": "string"
|
|
10289
|
+
},
|
|
10290
|
+
{
|
|
10291
|
+
"path": "action",
|
|
10292
|
+
"valueType": "string"
|
|
10293
|
+
},
|
|
10294
|
+
{
|
|
10295
|
+
"path": "minHumidity",
|
|
10296
|
+
"valueType": "number"
|
|
10297
|
+
},
|
|
10298
|
+
{
|
|
10299
|
+
"path": "maxHumidity",
|
|
10300
|
+
"valueType": "number"
|
|
10301
|
+
}
|
|
10302
|
+
],
|
|
10303
|
+
"humidity-sensor": [
|
|
10304
|
+
{
|
|
10305
|
+
"path": "percent",
|
|
10306
|
+
"valueType": "number"
|
|
10307
|
+
},
|
|
10308
|
+
{
|
|
10309
|
+
"path": "unit",
|
|
10310
|
+
"valueType": "string"
|
|
10311
|
+
},
|
|
10312
|
+
{
|
|
10313
|
+
"path": "precision",
|
|
10314
|
+
"valueType": "number"
|
|
10315
|
+
}
|
|
10316
|
+
],
|
|
10317
|
+
"image": [{
|
|
10318
|
+
"path": "url",
|
|
10319
|
+
"valueType": "string"
|
|
10320
|
+
}, {
|
|
10321
|
+
"path": "lastUpdated",
|
|
10322
|
+
"valueType": "number"
|
|
10323
|
+
}],
|
|
10324
|
+
"image-settings": [
|
|
10325
|
+
{
|
|
10326
|
+
"path": "brightness",
|
|
10327
|
+
"valueType": "number"
|
|
10328
|
+
},
|
|
10329
|
+
{
|
|
10330
|
+
"path": "contrast",
|
|
10331
|
+
"valueType": "number"
|
|
10332
|
+
},
|
|
10333
|
+
{
|
|
10334
|
+
"path": "saturation",
|
|
10335
|
+
"valueType": "number"
|
|
10336
|
+
},
|
|
10337
|
+
{
|
|
10338
|
+
"path": "sharpness",
|
|
10339
|
+
"valueType": "number"
|
|
10340
|
+
},
|
|
10341
|
+
{
|
|
10342
|
+
"path": "mirror",
|
|
10343
|
+
"valueType": "boolean"
|
|
10344
|
+
},
|
|
10345
|
+
{
|
|
10346
|
+
"path": "flip",
|
|
10347
|
+
"valueType": "boolean"
|
|
10348
|
+
},
|
|
10349
|
+
{
|
|
10350
|
+
"path": "rotate",
|
|
10351
|
+
"valueType": "enum",
|
|
10352
|
+
"enumValues": [
|
|
10353
|
+
"0",
|
|
10354
|
+
"90",
|
|
10355
|
+
"180",
|
|
10356
|
+
"270"
|
|
10357
|
+
]
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"path": "whiteBalance",
|
|
10361
|
+
"valueType": "enum",
|
|
10362
|
+
"enumValues": ["auto", "manual"]
|
|
10363
|
+
},
|
|
10364
|
+
{
|
|
10365
|
+
"path": "warmth",
|
|
10366
|
+
"valueType": "number"
|
|
10367
|
+
},
|
|
10368
|
+
{
|
|
10369
|
+
"path": "exposureMode",
|
|
10370
|
+
"valueType": "enum",
|
|
10371
|
+
"enumValues": ["auto", "manual"]
|
|
10372
|
+
},
|
|
10373
|
+
{
|
|
10374
|
+
"path": "backlightMode",
|
|
10375
|
+
"valueType": "enum",
|
|
10376
|
+
"enumValues": [
|
|
10377
|
+
"off",
|
|
10378
|
+
"blc",
|
|
10379
|
+
"wdr",
|
|
10380
|
+
"hlc"
|
|
10381
|
+
]
|
|
10382
|
+
}
|
|
10383
|
+
],
|
|
10384
|
+
"intercom": [
|
|
10385
|
+
{
|
|
10386
|
+
"path": "talking",
|
|
10387
|
+
"valueType": "boolean"
|
|
10388
|
+
},
|
|
10389
|
+
{
|
|
10390
|
+
"path": "lastSessionAt",
|
|
10391
|
+
"valueType": "number"
|
|
10392
|
+
},
|
|
10393
|
+
{
|
|
10394
|
+
"path": "ability.sampleRate",
|
|
10395
|
+
"valueType": "number"
|
|
10396
|
+
},
|
|
10397
|
+
{
|
|
10398
|
+
"path": "ability.duplex",
|
|
10399
|
+
"valueType": "enum",
|
|
10400
|
+
"enumValues": ["half", "full"]
|
|
10401
|
+
},
|
|
10402
|
+
{
|
|
10403
|
+
"path": "ability.maxBacklogMs",
|
|
10404
|
+
"valueType": "number"
|
|
10405
|
+
}
|
|
10406
|
+
],
|
|
10407
|
+
"lawn-mower-control": [
|
|
10408
|
+
{
|
|
10409
|
+
"path": "activity",
|
|
10410
|
+
"valueType": "enum",
|
|
10411
|
+
"enumValues": [
|
|
10412
|
+
"idle",
|
|
10413
|
+
"mowing",
|
|
10414
|
+
"paused",
|
|
10415
|
+
"docked",
|
|
10416
|
+
"error"
|
|
10417
|
+
]
|
|
10418
|
+
},
|
|
10419
|
+
{
|
|
10420
|
+
"path": "batteryLevel",
|
|
10421
|
+
"valueType": "number"
|
|
10422
|
+
},
|
|
10423
|
+
{
|
|
10424
|
+
"path": "progressPercent",
|
|
10425
|
+
"valueType": "number"
|
|
10426
|
+
},
|
|
10427
|
+
{
|
|
10428
|
+
"path": "currentCode",
|
|
10429
|
+
"valueType": "number"
|
|
10430
|
+
},
|
|
10431
|
+
{
|
|
10432
|
+
"path": "currentCodeLabel",
|
|
10433
|
+
"valueType": "string"
|
|
10434
|
+
},
|
|
10435
|
+
{
|
|
10436
|
+
"path": "severity",
|
|
10437
|
+
"valueType": "enum",
|
|
10438
|
+
"enumValues": [
|
|
10439
|
+
"info",
|
|
10440
|
+
"warning",
|
|
10441
|
+
"error"
|
|
10442
|
+
]
|
|
10443
|
+
}
|
|
10444
|
+
],
|
|
10445
|
+
"lock-control": [{
|
|
10446
|
+
"path": "state",
|
|
10447
|
+
"valueType": "enum",
|
|
10448
|
+
"enumValues": [
|
|
10449
|
+
"locked",
|
|
10450
|
+
"unlocked",
|
|
10451
|
+
"locking",
|
|
10452
|
+
"unlocking",
|
|
10453
|
+
"jammed"
|
|
10454
|
+
]
|
|
10455
|
+
}],
|
|
10456
|
+
"media-player": [
|
|
10457
|
+
{
|
|
10458
|
+
"path": "state",
|
|
10459
|
+
"valueType": "enum",
|
|
10460
|
+
"enumValues": [
|
|
10461
|
+
"off",
|
|
10462
|
+
"on",
|
|
10463
|
+
"idle",
|
|
10464
|
+
"playing",
|
|
10465
|
+
"paused",
|
|
10466
|
+
"buffering",
|
|
10467
|
+
"standby"
|
|
10468
|
+
]
|
|
10469
|
+
},
|
|
10470
|
+
{
|
|
10471
|
+
"path": "volumeLevel",
|
|
10472
|
+
"valueType": "number"
|
|
10473
|
+
},
|
|
10474
|
+
{
|
|
10475
|
+
"path": "isMuted",
|
|
10476
|
+
"valueType": "boolean"
|
|
10477
|
+
},
|
|
10478
|
+
{
|
|
10479
|
+
"path": "source",
|
|
10480
|
+
"valueType": "string"
|
|
10481
|
+
},
|
|
10482
|
+
{
|
|
10483
|
+
"path": "currentMedia.type",
|
|
10484
|
+
"valueType": "string"
|
|
10485
|
+
},
|
|
10486
|
+
{
|
|
10487
|
+
"path": "currentMedia.title",
|
|
10488
|
+
"valueType": "string"
|
|
10489
|
+
},
|
|
10490
|
+
{
|
|
10491
|
+
"path": "currentMedia.artist",
|
|
10492
|
+
"valueType": "string"
|
|
10493
|
+
},
|
|
10494
|
+
{
|
|
10495
|
+
"path": "currentMedia.album",
|
|
10496
|
+
"valueType": "string"
|
|
10497
|
+
},
|
|
10498
|
+
{
|
|
10499
|
+
"path": "currentMedia.imageUrl",
|
|
10500
|
+
"valueType": "string"
|
|
10501
|
+
},
|
|
10502
|
+
{
|
|
10503
|
+
"path": "positionMs",
|
|
10504
|
+
"valueType": "number"
|
|
10505
|
+
},
|
|
10506
|
+
{
|
|
10507
|
+
"path": "durationMs",
|
|
10508
|
+
"valueType": "number"
|
|
10509
|
+
},
|
|
10510
|
+
{
|
|
10511
|
+
"path": "shuffle",
|
|
10512
|
+
"valueType": "boolean"
|
|
10513
|
+
},
|
|
10514
|
+
{
|
|
10515
|
+
"path": "repeat",
|
|
10516
|
+
"valueType": "enum",
|
|
10517
|
+
"enumValues": [
|
|
10518
|
+
"off",
|
|
10519
|
+
"all",
|
|
10520
|
+
"one"
|
|
10521
|
+
]
|
|
10522
|
+
}
|
|
10523
|
+
],
|
|
10524
|
+
"motion": [
|
|
10525
|
+
{
|
|
10526
|
+
"path": "detected",
|
|
10527
|
+
"valueType": "boolean"
|
|
10528
|
+
},
|
|
10529
|
+
{
|
|
10530
|
+
"path": "lastDetectedAt",
|
|
10531
|
+
"valueType": "number"
|
|
10532
|
+
},
|
|
10533
|
+
{
|
|
10534
|
+
"path": "autoClearAfterMs",
|
|
10535
|
+
"valueType": "number"
|
|
10536
|
+
}
|
|
10537
|
+
],
|
|
10538
|
+
"motion-trigger": [{
|
|
10539
|
+
"path": "enabled",
|
|
10540
|
+
"valueType": "boolean"
|
|
10541
|
+
}],
|
|
10542
|
+
"motion-zones": [{
|
|
10543
|
+
"path": "enabled",
|
|
10544
|
+
"valueType": "boolean"
|
|
10545
|
+
}, {
|
|
10546
|
+
"path": "sensitivity",
|
|
10547
|
+
"valueType": "number"
|
|
10548
|
+
}],
|
|
10549
|
+
"mqtt-broker": [{
|
|
10550
|
+
"path": "brokerCount",
|
|
10551
|
+
"valueType": "number"
|
|
10552
|
+
}, {
|
|
10553
|
+
"path": "embeddedRunning",
|
|
10554
|
+
"valueType": "boolean"
|
|
10555
|
+
}],
|
|
10556
|
+
"native-object-detection": [{
|
|
10557
|
+
"path": "enabled",
|
|
10558
|
+
"valueType": "boolean"
|
|
10559
|
+
}],
|
|
10560
|
+
"navigation": [
|
|
10561
|
+
{
|
|
10562
|
+
"path": "mode",
|
|
10563
|
+
"valueType": "enum",
|
|
10564
|
+
"enumValues": [
|
|
10565
|
+
"idle",
|
|
10566
|
+
"cleaning",
|
|
10567
|
+
"spot",
|
|
10568
|
+
"following",
|
|
10569
|
+
"goto",
|
|
10570
|
+
"returning",
|
|
10571
|
+
"paused",
|
|
10572
|
+
"unknown"
|
|
10573
|
+
]
|
|
10574
|
+
},
|
|
10575
|
+
{
|
|
10576
|
+
"path": "following",
|
|
10577
|
+
"valueType": "boolean"
|
|
10578
|
+
},
|
|
10579
|
+
{
|
|
10580
|
+
"path": "flash",
|
|
10581
|
+
"valueType": "boolean"
|
|
10582
|
+
},
|
|
10583
|
+
{
|
|
10584
|
+
"path": "lightMode",
|
|
10585
|
+
"valueType": "enum",
|
|
10586
|
+
"enumValues": ["auto", "manual"]
|
|
10587
|
+
},
|
|
10588
|
+
{
|
|
10589
|
+
"path": "lightLevel",
|
|
10590
|
+
"valueType": "number"
|
|
10591
|
+
}
|
|
10592
|
+
],
|
|
10593
|
+
"network-link": [
|
|
10594
|
+
{
|
|
10595
|
+
"path": "type",
|
|
10596
|
+
"valueType": "enum",
|
|
10597
|
+
"enumValues": [
|
|
10598
|
+
"wifi",
|
|
10599
|
+
"ethernet",
|
|
10600
|
+
"cellular",
|
|
10601
|
+
"unknown"
|
|
10602
|
+
]
|
|
10603
|
+
},
|
|
10604
|
+
{
|
|
10605
|
+
"path": "signalPercent",
|
|
10606
|
+
"valueType": "number"
|
|
10607
|
+
},
|
|
10608
|
+
{
|
|
10609
|
+
"path": "rssiDbm",
|
|
10610
|
+
"valueType": "number"
|
|
10611
|
+
},
|
|
10612
|
+
{
|
|
10613
|
+
"path": "ssid",
|
|
10614
|
+
"valueType": "string"
|
|
10615
|
+
},
|
|
10616
|
+
{
|
|
10617
|
+
"path": "lastUpdated",
|
|
10618
|
+
"valueType": "number"
|
|
10619
|
+
}
|
|
10620
|
+
],
|
|
10621
|
+
"notifier": [
|
|
10622
|
+
{
|
|
10623
|
+
"path": "lastSentAt",
|
|
10624
|
+
"valueType": "number"
|
|
10625
|
+
},
|
|
10626
|
+
{
|
|
10627
|
+
"path": "lastError",
|
|
10628
|
+
"valueType": "string"
|
|
10629
|
+
},
|
|
10630
|
+
{
|
|
10631
|
+
"path": "queueDepth",
|
|
10632
|
+
"valueType": "number"
|
|
10633
|
+
},
|
|
10634
|
+
{
|
|
10635
|
+
"path": "supports.image",
|
|
10636
|
+
"valueType": "boolean"
|
|
10637
|
+
},
|
|
10638
|
+
{
|
|
10639
|
+
"path": "supports.priority",
|
|
10640
|
+
"valueType": "boolean"
|
|
10641
|
+
},
|
|
10642
|
+
{
|
|
10643
|
+
"path": "supports.data",
|
|
10644
|
+
"valueType": "boolean"
|
|
10645
|
+
},
|
|
10646
|
+
{
|
|
10647
|
+
"path": "supports.actions",
|
|
10648
|
+
"valueType": "boolean"
|
|
10649
|
+
},
|
|
10650
|
+
{
|
|
10651
|
+
"path": "supports.recipients",
|
|
10652
|
+
"valueType": "boolean"
|
|
10653
|
+
}
|
|
10654
|
+
],
|
|
10655
|
+
"numeric-sensor": [
|
|
10656
|
+
{
|
|
10657
|
+
"path": "value",
|
|
10658
|
+
"valueType": "number"
|
|
10659
|
+
},
|
|
10660
|
+
{
|
|
10661
|
+
"path": "unit",
|
|
10662
|
+
"valueType": "string"
|
|
10663
|
+
},
|
|
10664
|
+
{
|
|
10665
|
+
"path": "precision",
|
|
10666
|
+
"valueType": "number"
|
|
10667
|
+
}
|
|
10668
|
+
],
|
|
10669
|
+
"pet-feeder": [
|
|
10670
|
+
{
|
|
10671
|
+
"path": "foodLevel",
|
|
10672
|
+
"valueType": "number"
|
|
10673
|
+
},
|
|
10674
|
+
{
|
|
10675
|
+
"path": "food1",
|
|
10676
|
+
"valueType": "number"
|
|
10677
|
+
},
|
|
10678
|
+
{
|
|
10679
|
+
"path": "food2",
|
|
10680
|
+
"valueType": "number"
|
|
10681
|
+
},
|
|
10682
|
+
{
|
|
10683
|
+
"path": "lowFood",
|
|
10684
|
+
"valueType": "boolean"
|
|
10685
|
+
},
|
|
10686
|
+
{
|
|
10687
|
+
"path": "batteryPower",
|
|
10688
|
+
"valueType": "number"
|
|
10689
|
+
},
|
|
10690
|
+
{
|
|
10691
|
+
"path": "desiccantLeftDays",
|
|
10692
|
+
"valueType": "number"
|
|
10693
|
+
},
|
|
10694
|
+
{
|
|
10695
|
+
"path": "feeding",
|
|
10696
|
+
"valueType": "boolean"
|
|
10697
|
+
},
|
|
10698
|
+
{
|
|
10699
|
+
"path": "status",
|
|
10700
|
+
"valueType": "enum",
|
|
10701
|
+
"enumValues": [
|
|
10702
|
+
"normal",
|
|
10703
|
+
"offline",
|
|
10704
|
+
"on_batteries"
|
|
10705
|
+
]
|
|
10706
|
+
},
|
|
10707
|
+
{
|
|
10708
|
+
"path": "error",
|
|
10709
|
+
"valueType": "string"
|
|
10710
|
+
},
|
|
10711
|
+
{
|
|
10712
|
+
"path": "errorCode",
|
|
10713
|
+
"valueType": "number"
|
|
10714
|
+
},
|
|
10715
|
+
{
|
|
10716
|
+
"path": "isDualHopper",
|
|
10717
|
+
"valueType": "boolean"
|
|
10718
|
+
},
|
|
10719
|
+
{
|
|
10720
|
+
"path": "childLock",
|
|
10721
|
+
"valueType": "boolean"
|
|
10722
|
+
},
|
|
10723
|
+
{
|
|
10724
|
+
"path": "indicatorLight",
|
|
10725
|
+
"valueType": "boolean"
|
|
10726
|
+
},
|
|
10727
|
+
{
|
|
10728
|
+
"path": "feedSound",
|
|
10729
|
+
"valueType": "boolean"
|
|
10730
|
+
},
|
|
10731
|
+
{
|
|
10732
|
+
"path": "volume",
|
|
10733
|
+
"valueType": "number"
|
|
10734
|
+
}
|
|
10735
|
+
],
|
|
10736
|
+
"power-meter": [
|
|
10737
|
+
{
|
|
10738
|
+
"path": "watts",
|
|
10739
|
+
"valueType": "number"
|
|
10740
|
+
},
|
|
10741
|
+
{
|
|
10742
|
+
"path": "kwhTotal",
|
|
10743
|
+
"valueType": "number"
|
|
10744
|
+
},
|
|
10745
|
+
{
|
|
10746
|
+
"path": "volts",
|
|
10747
|
+
"valueType": "number"
|
|
10748
|
+
},
|
|
10749
|
+
{
|
|
10750
|
+
"path": "amps",
|
|
10751
|
+
"valueType": "number"
|
|
10752
|
+
},
|
|
10753
|
+
{
|
|
10754
|
+
"path": "va",
|
|
10755
|
+
"valueType": "number"
|
|
10756
|
+
},
|
|
10757
|
+
{
|
|
10758
|
+
"path": "powerFactor",
|
|
10759
|
+
"valueType": "number"
|
|
10760
|
+
},
|
|
10761
|
+
{
|
|
10762
|
+
"path": "unit",
|
|
10763
|
+
"valueType": "string"
|
|
10764
|
+
},
|
|
10765
|
+
{
|
|
10766
|
+
"path": "precision",
|
|
10767
|
+
"valueType": "number"
|
|
10768
|
+
}
|
|
10769
|
+
],
|
|
10770
|
+
"presence": [
|
|
10771
|
+
{
|
|
10772
|
+
"path": "state",
|
|
10773
|
+
"valueType": "string"
|
|
10774
|
+
},
|
|
10775
|
+
{
|
|
10776
|
+
"path": "location",
|
|
10777
|
+
"valueType": "string"
|
|
10778
|
+
},
|
|
10779
|
+
{
|
|
10780
|
+
"path": "gps.latitude",
|
|
10781
|
+
"valueType": "number"
|
|
10782
|
+
},
|
|
10783
|
+
{
|
|
10784
|
+
"path": "gps.longitude",
|
|
10785
|
+
"valueType": "number"
|
|
10786
|
+
},
|
|
10787
|
+
{
|
|
10788
|
+
"path": "gps.accuracyMeters",
|
|
10789
|
+
"valueType": "number"
|
|
10790
|
+
},
|
|
10791
|
+
{
|
|
10792
|
+
"path": "batteryPercent",
|
|
10793
|
+
"valueType": "number"
|
|
10794
|
+
}
|
|
10795
|
+
],
|
|
10796
|
+
"pressure-sensor": [
|
|
10797
|
+
{
|
|
10798
|
+
"path": "hpa",
|
|
10799
|
+
"valueType": "number"
|
|
10800
|
+
},
|
|
10801
|
+
{
|
|
10802
|
+
"path": "unit",
|
|
10803
|
+
"valueType": "string"
|
|
10804
|
+
},
|
|
10805
|
+
{
|
|
10806
|
+
"path": "precision",
|
|
10807
|
+
"valueType": "number"
|
|
10808
|
+
}
|
|
10809
|
+
],
|
|
10810
|
+
"privacy-mask": [{
|
|
10811
|
+
"path": "enabled",
|
|
10812
|
+
"valueType": "boolean"
|
|
10813
|
+
}, {
|
|
10814
|
+
"path": "audioEnabled",
|
|
10815
|
+
"valueType": "boolean"
|
|
10816
|
+
}],
|
|
10817
|
+
"ptz": [
|
|
10818
|
+
{
|
|
10819
|
+
"path": "pan",
|
|
10820
|
+
"valueType": "number"
|
|
10821
|
+
},
|
|
10822
|
+
{
|
|
10823
|
+
"path": "tilt",
|
|
10824
|
+
"valueType": "number"
|
|
10825
|
+
},
|
|
10826
|
+
{
|
|
10827
|
+
"path": "zoom",
|
|
10828
|
+
"valueType": "number"
|
|
10829
|
+
},
|
|
10830
|
+
{
|
|
10831
|
+
"path": "autofocus",
|
|
10832
|
+
"valueType": "boolean"
|
|
10833
|
+
}
|
|
10834
|
+
],
|
|
10835
|
+
"ptz-autotrack": [
|
|
10836
|
+
{
|
|
10837
|
+
"path": "enabled",
|
|
10838
|
+
"valueType": "boolean"
|
|
10839
|
+
},
|
|
10840
|
+
{
|
|
10841
|
+
"path": "currentSettings.targetType",
|
|
10842
|
+
"valueType": "string"
|
|
10843
|
+
},
|
|
10844
|
+
{
|
|
10845
|
+
"path": "currentSettings.stopDelaySeconds",
|
|
10846
|
+
"valueType": "number"
|
|
10847
|
+
},
|
|
10848
|
+
{
|
|
10849
|
+
"path": "currentSettings.disappearDelaySeconds",
|
|
10850
|
+
"valueType": "number"
|
|
10851
|
+
}
|
|
10852
|
+
],
|
|
10853
|
+
"recording-archive": [
|
|
10854
|
+
{
|
|
10855
|
+
"path": "deviceId",
|
|
10856
|
+
"valueType": "number"
|
|
10857
|
+
},
|
|
10858
|
+
{
|
|
10859
|
+
"path": "enabled",
|
|
10860
|
+
"valueType": "boolean"
|
|
10861
|
+
},
|
|
10862
|
+
{
|
|
10863
|
+
"path": "activeMode",
|
|
10864
|
+
"valueType": "enum",
|
|
10865
|
+
"enumValues": [
|
|
10866
|
+
"off",
|
|
10867
|
+
"events",
|
|
10868
|
+
"continuous",
|
|
10869
|
+
"on-device-decision"
|
|
10870
|
+
]
|
|
10871
|
+
},
|
|
10872
|
+
{
|
|
10873
|
+
"path": "nodeId",
|
|
10874
|
+
"valueType": "string"
|
|
10875
|
+
},
|
|
10876
|
+
{
|
|
10877
|
+
"path": "storageBytes",
|
|
10878
|
+
"valueType": "number"
|
|
10879
|
+
}
|
|
10880
|
+
],
|
|
10881
|
+
"recording-onboard": [
|
|
10882
|
+
{
|
|
10883
|
+
"path": "primaryTrackId",
|
|
10884
|
+
"valueType": "string"
|
|
10885
|
+
},
|
|
10886
|
+
{
|
|
10887
|
+
"path": "enabled",
|
|
10888
|
+
"valueType": "boolean"
|
|
10889
|
+
},
|
|
10890
|
+
{
|
|
10891
|
+
"path": "overwriteWhenFull",
|
|
10892
|
+
"valueType": "boolean"
|
|
10893
|
+
},
|
|
10894
|
+
{
|
|
10895
|
+
"path": "preRecordSec",
|
|
10896
|
+
"valueType": "number"
|
|
10897
|
+
},
|
|
10898
|
+
{
|
|
10899
|
+
"path": "postRecordSec",
|
|
10900
|
+
"valueType": "number"
|
|
10901
|
+
},
|
|
10902
|
+
{
|
|
10903
|
+
"path": "segmentMinutes",
|
|
10904
|
+
"valueType": "number"
|
|
10905
|
+
},
|
|
10906
|
+
{
|
|
10907
|
+
"path": "unreadableWindows",
|
|
10908
|
+
"valueType": "number"
|
|
10909
|
+
},
|
|
10910
|
+
{
|
|
10911
|
+
"path": "recordingToNowhere",
|
|
10912
|
+
"valueType": "boolean"
|
|
10913
|
+
}
|
|
10914
|
+
],
|
|
10915
|
+
"recording-signal": [{
|
|
10916
|
+
"path": "active",
|
|
10917
|
+
"valueType": "boolean"
|
|
10918
|
+
}, {
|
|
10919
|
+
"path": "reason",
|
|
10920
|
+
"valueType": "string"
|
|
10921
|
+
}],
|
|
10922
|
+
"running-state": [
|
|
10923
|
+
{
|
|
10924
|
+
"path": "running",
|
|
10925
|
+
"valueType": "boolean"
|
|
10926
|
+
},
|
|
10927
|
+
{
|
|
10928
|
+
"path": "since",
|
|
10929
|
+
"valueType": "number"
|
|
10930
|
+
},
|
|
10931
|
+
{
|
|
10932
|
+
"path": "source",
|
|
10933
|
+
"valueType": "enum",
|
|
10934
|
+
"enumValues": ["native", "assigned"]
|
|
10935
|
+
},
|
|
10936
|
+
{
|
|
10937
|
+
"path": "phase",
|
|
10938
|
+
"valueType": "string"
|
|
10939
|
+
}
|
|
10940
|
+
],
|
|
10941
|
+
"script-runner": [
|
|
10942
|
+
{
|
|
10943
|
+
"path": "isRunning",
|
|
10944
|
+
"valueType": "boolean"
|
|
10945
|
+
},
|
|
10946
|
+
{
|
|
10947
|
+
"path": "lastRunAt",
|
|
10948
|
+
"valueType": "number"
|
|
10949
|
+
},
|
|
10950
|
+
{
|
|
10951
|
+
"path": "lastRunSuccess",
|
|
10952
|
+
"valueType": "boolean"
|
|
10953
|
+
},
|
|
10954
|
+
{
|
|
10955
|
+
"path": "lastError",
|
|
10956
|
+
"valueType": "string"
|
|
10957
|
+
}
|
|
10958
|
+
],
|
|
10959
|
+
"smoke": [{
|
|
10960
|
+
"path": "detected",
|
|
10961
|
+
"valueType": "boolean"
|
|
10962
|
+
}],
|
|
10963
|
+
"snapshot": [
|
|
10964
|
+
{
|
|
10965
|
+
"path": "lastCapturedAt",
|
|
10966
|
+
"valueType": "number"
|
|
10967
|
+
},
|
|
10968
|
+
{
|
|
10969
|
+
"path": "cacheAgeMs",
|
|
10970
|
+
"valueType": "number"
|
|
10971
|
+
},
|
|
10972
|
+
{
|
|
10973
|
+
"path": "lastBytes",
|
|
10974
|
+
"valueType": "number"
|
|
10975
|
+
},
|
|
10976
|
+
{
|
|
10977
|
+
"path": "lastStreamId",
|
|
10978
|
+
"valueType": "string"
|
|
10979
|
+
}
|
|
10980
|
+
],
|
|
10981
|
+
"stream-params": [
|
|
10982
|
+
{
|
|
10983
|
+
"path": "main.width",
|
|
10984
|
+
"valueType": "number"
|
|
10985
|
+
},
|
|
10986
|
+
{
|
|
10987
|
+
"path": "main.height",
|
|
10988
|
+
"valueType": "number"
|
|
10989
|
+
},
|
|
10990
|
+
{
|
|
10991
|
+
"path": "main.codec",
|
|
10992
|
+
"valueType": "enum",
|
|
10993
|
+
"enumValues": ["h264", "h265"]
|
|
10994
|
+
},
|
|
10995
|
+
{
|
|
10996
|
+
"path": "main.framerate",
|
|
10997
|
+
"valueType": "number"
|
|
10998
|
+
},
|
|
10999
|
+
{
|
|
11000
|
+
"path": "main.bitrate",
|
|
11001
|
+
"valueType": "number"
|
|
11002
|
+
},
|
|
11003
|
+
{
|
|
11004
|
+
"path": "main.bitrateMode",
|
|
11005
|
+
"valueType": "enum",
|
|
11006
|
+
"enumValues": ["vbr", "cbr"]
|
|
11007
|
+
},
|
|
11008
|
+
{
|
|
11009
|
+
"path": "main.encoderProfile",
|
|
11010
|
+
"valueType": "enum",
|
|
11011
|
+
"enumValues": [
|
|
11012
|
+
"high",
|
|
11013
|
+
"main",
|
|
11014
|
+
"baseline"
|
|
11015
|
+
]
|
|
11016
|
+
},
|
|
11017
|
+
{
|
|
11018
|
+
"path": "main.gop",
|
|
11019
|
+
"valueType": "number"
|
|
11020
|
+
},
|
|
11021
|
+
{
|
|
11022
|
+
"path": "main.audio",
|
|
11023
|
+
"valueType": "boolean"
|
|
11024
|
+
},
|
|
11025
|
+
{
|
|
11026
|
+
"path": "sub.width",
|
|
11027
|
+
"valueType": "number"
|
|
11028
|
+
},
|
|
11029
|
+
{
|
|
11030
|
+
"path": "sub.height",
|
|
11031
|
+
"valueType": "number"
|
|
11032
|
+
},
|
|
11033
|
+
{
|
|
11034
|
+
"path": "sub.codec",
|
|
11035
|
+
"valueType": "enum",
|
|
11036
|
+
"enumValues": ["h264", "h265"]
|
|
11037
|
+
},
|
|
11038
|
+
{
|
|
11039
|
+
"path": "sub.framerate",
|
|
11040
|
+
"valueType": "number"
|
|
11041
|
+
},
|
|
11042
|
+
{
|
|
11043
|
+
"path": "sub.bitrate",
|
|
11044
|
+
"valueType": "number"
|
|
11045
|
+
},
|
|
11046
|
+
{
|
|
11047
|
+
"path": "sub.bitrateMode",
|
|
11048
|
+
"valueType": "enum",
|
|
11049
|
+
"enumValues": ["vbr", "cbr"]
|
|
11050
|
+
},
|
|
11051
|
+
{
|
|
11052
|
+
"path": "sub.encoderProfile",
|
|
11053
|
+
"valueType": "enum",
|
|
11054
|
+
"enumValues": [
|
|
11055
|
+
"high",
|
|
11056
|
+
"main",
|
|
11057
|
+
"baseline"
|
|
11058
|
+
]
|
|
11059
|
+
},
|
|
11060
|
+
{
|
|
11061
|
+
"path": "sub.gop",
|
|
11062
|
+
"valueType": "number"
|
|
11063
|
+
},
|
|
11064
|
+
{
|
|
11065
|
+
"path": "sub.audio",
|
|
11066
|
+
"valueType": "boolean"
|
|
11067
|
+
},
|
|
11068
|
+
{
|
|
11069
|
+
"path": "ext.width",
|
|
11070
|
+
"valueType": "number"
|
|
11071
|
+
},
|
|
11072
|
+
{
|
|
11073
|
+
"path": "ext.height",
|
|
11074
|
+
"valueType": "number"
|
|
11075
|
+
},
|
|
11076
|
+
{
|
|
11077
|
+
"path": "ext.codec",
|
|
11078
|
+
"valueType": "enum",
|
|
11079
|
+
"enumValues": ["h264", "h265"]
|
|
11080
|
+
},
|
|
11081
|
+
{
|
|
11082
|
+
"path": "ext.framerate",
|
|
11083
|
+
"valueType": "number"
|
|
11084
|
+
},
|
|
11085
|
+
{
|
|
11086
|
+
"path": "ext.bitrate",
|
|
11087
|
+
"valueType": "number"
|
|
11088
|
+
},
|
|
11089
|
+
{
|
|
11090
|
+
"path": "ext.bitrateMode",
|
|
11091
|
+
"valueType": "enum",
|
|
11092
|
+
"enumValues": ["vbr", "cbr"]
|
|
11093
|
+
},
|
|
11094
|
+
{
|
|
11095
|
+
"path": "ext.encoderProfile",
|
|
11096
|
+
"valueType": "enum",
|
|
11097
|
+
"enumValues": [
|
|
11098
|
+
"high",
|
|
11099
|
+
"main",
|
|
11100
|
+
"baseline"
|
|
11101
|
+
]
|
|
11102
|
+
},
|
|
11103
|
+
{
|
|
11104
|
+
"path": "ext.gop",
|
|
11105
|
+
"valueType": "number"
|
|
11106
|
+
},
|
|
11107
|
+
{
|
|
11108
|
+
"path": "ext.audio",
|
|
11109
|
+
"valueType": "boolean"
|
|
11110
|
+
}
|
|
11111
|
+
],
|
|
11112
|
+
"switch": [{
|
|
11113
|
+
"path": "on",
|
|
11114
|
+
"valueType": "boolean"
|
|
11115
|
+
}],
|
|
11116
|
+
"tamper": [{
|
|
11117
|
+
"path": "tampered",
|
|
11118
|
+
"valueType": "boolean"
|
|
11119
|
+
}],
|
|
11120
|
+
"temperature-sensor": [
|
|
11121
|
+
{
|
|
11122
|
+
"path": "celsius",
|
|
11123
|
+
"valueType": "number"
|
|
11124
|
+
},
|
|
11125
|
+
{
|
|
11126
|
+
"path": "unit",
|
|
11127
|
+
"valueType": "string"
|
|
11128
|
+
},
|
|
11129
|
+
{
|
|
11130
|
+
"path": "precision",
|
|
11131
|
+
"valueType": "number"
|
|
11132
|
+
}
|
|
11133
|
+
],
|
|
11134
|
+
"update": [
|
|
11135
|
+
{
|
|
11136
|
+
"path": "currentVersion",
|
|
11137
|
+
"valueType": "string"
|
|
11138
|
+
},
|
|
11139
|
+
{
|
|
11140
|
+
"path": "availableVersion",
|
|
11141
|
+
"valueType": "string"
|
|
11142
|
+
},
|
|
11143
|
+
{
|
|
11144
|
+
"path": "updatable",
|
|
11145
|
+
"valueType": "boolean"
|
|
11146
|
+
},
|
|
11147
|
+
{
|
|
11148
|
+
"path": "state",
|
|
11149
|
+
"valueType": "string"
|
|
11150
|
+
},
|
|
11151
|
+
{
|
|
11152
|
+
"path": "inProgress",
|
|
11153
|
+
"valueType": "boolean"
|
|
11154
|
+
}
|
|
11155
|
+
],
|
|
11156
|
+
"vacuum-control": [
|
|
11157
|
+
{
|
|
11158
|
+
"path": "state",
|
|
11159
|
+
"valueType": "enum",
|
|
11160
|
+
"enumValues": [
|
|
11161
|
+
"idle",
|
|
11162
|
+
"cleaning",
|
|
11163
|
+
"paused",
|
|
11164
|
+
"returning",
|
|
11165
|
+
"docked",
|
|
11166
|
+
"drying",
|
|
11167
|
+
"error"
|
|
11168
|
+
]
|
|
11169
|
+
},
|
|
11170
|
+
{
|
|
11171
|
+
"path": "batteryLevel",
|
|
11172
|
+
"valueType": "number"
|
|
11173
|
+
},
|
|
11174
|
+
{
|
|
11175
|
+
"path": "fanSpeed",
|
|
11176
|
+
"valueType": "string"
|
|
11177
|
+
},
|
|
11178
|
+
{
|
|
11179
|
+
"path": "progressPercent",
|
|
11180
|
+
"valueType": "number"
|
|
11181
|
+
},
|
|
11182
|
+
{
|
|
11183
|
+
"path": "errorCode",
|
|
11184
|
+
"valueType": "number"
|
|
11185
|
+
},
|
|
11186
|
+
{
|
|
11187
|
+
"path": "errorLabel",
|
|
11188
|
+
"valueType": "string"
|
|
11189
|
+
}
|
|
11190
|
+
],
|
|
11191
|
+
"valve": [{
|
|
11192
|
+
"path": "state",
|
|
11193
|
+
"valueType": "enum",
|
|
11194
|
+
"enumValues": [
|
|
11195
|
+
"open",
|
|
11196
|
+
"opening",
|
|
11197
|
+
"closing",
|
|
11198
|
+
"closed",
|
|
11199
|
+
"stopped"
|
|
11200
|
+
]
|
|
11201
|
+
}, {
|
|
11202
|
+
"path": "position",
|
|
11203
|
+
"valueType": "number"
|
|
11204
|
+
}],
|
|
11205
|
+
"vibration": [{
|
|
11206
|
+
"path": "detected",
|
|
11207
|
+
"valueType": "boolean"
|
|
11208
|
+
}],
|
|
11209
|
+
"water-heater": [
|
|
11210
|
+
{
|
|
11211
|
+
"path": "currentTemp",
|
|
11212
|
+
"valueType": "number"
|
|
11213
|
+
},
|
|
11214
|
+
{
|
|
11215
|
+
"path": "targetTemp",
|
|
11216
|
+
"valueType": "number"
|
|
11217
|
+
},
|
|
11218
|
+
{
|
|
11219
|
+
"path": "operationMode",
|
|
11220
|
+
"valueType": "string"
|
|
11221
|
+
},
|
|
11222
|
+
{
|
|
11223
|
+
"path": "away",
|
|
11224
|
+
"valueType": "boolean"
|
|
11225
|
+
},
|
|
11226
|
+
{
|
|
11227
|
+
"path": "minTemp",
|
|
11228
|
+
"valueType": "number"
|
|
11229
|
+
},
|
|
11230
|
+
{
|
|
11231
|
+
"path": "maxTemp",
|
|
11232
|
+
"valueType": "number"
|
|
11233
|
+
}
|
|
11234
|
+
],
|
|
11235
|
+
"weather": [
|
|
11236
|
+
{
|
|
11237
|
+
"path": "condition",
|
|
11238
|
+
"valueType": "string"
|
|
11239
|
+
},
|
|
11240
|
+
{
|
|
11241
|
+
"path": "temperature",
|
|
11242
|
+
"valueType": "number"
|
|
11243
|
+
},
|
|
11244
|
+
{
|
|
11245
|
+
"path": "temperatureUnit",
|
|
11246
|
+
"valueType": "string"
|
|
11247
|
+
},
|
|
11248
|
+
{
|
|
11249
|
+
"path": "humidity",
|
|
11250
|
+
"valueType": "number"
|
|
11251
|
+
},
|
|
11252
|
+
{
|
|
11253
|
+
"path": "pressure",
|
|
11254
|
+
"valueType": "number"
|
|
11255
|
+
},
|
|
11256
|
+
{
|
|
11257
|
+
"path": "pressureUnit",
|
|
11258
|
+
"valueType": "string"
|
|
11259
|
+
},
|
|
11260
|
+
{
|
|
11261
|
+
"path": "windSpeed",
|
|
11262
|
+
"valueType": "number"
|
|
11263
|
+
},
|
|
11264
|
+
{
|
|
11265
|
+
"path": "windSpeedUnit",
|
|
11266
|
+
"valueType": "string"
|
|
11267
|
+
},
|
|
11268
|
+
{
|
|
11269
|
+
"path": "windBearing",
|
|
11270
|
+
"valueType": "number"
|
|
11271
|
+
}
|
|
11272
|
+
],
|
|
11273
|
+
"zone-analytics": [
|
|
11274
|
+
{
|
|
11275
|
+
"path": "ts",
|
|
11276
|
+
"valueType": "number"
|
|
11277
|
+
},
|
|
11278
|
+
{
|
|
11279
|
+
"path": "frameWidth",
|
|
11280
|
+
"valueType": "number"
|
|
11281
|
+
},
|
|
11282
|
+
{
|
|
11283
|
+
"path": "frameHeight",
|
|
11284
|
+
"valueType": "number"
|
|
11285
|
+
},
|
|
11286
|
+
{
|
|
11287
|
+
"path": "frame.totalObjects",
|
|
11288
|
+
"valueType": "number"
|
|
11289
|
+
},
|
|
11290
|
+
{
|
|
11291
|
+
"path": "frame.standingObjects",
|
|
11292
|
+
"valueType": "number"
|
|
11293
|
+
},
|
|
11294
|
+
{
|
|
11295
|
+
"path": "frame.transientObjects",
|
|
11296
|
+
"valueType": "number"
|
|
11297
|
+
},
|
|
11298
|
+
{
|
|
11299
|
+
"path": "unzoned.totalObjects",
|
|
11300
|
+
"valueType": "number"
|
|
11301
|
+
},
|
|
11302
|
+
{
|
|
11303
|
+
"path": "unzoned.standingObjects",
|
|
11304
|
+
"valueType": "number"
|
|
11305
|
+
},
|
|
11306
|
+
{
|
|
11307
|
+
"path": "unzoned.transientObjects",
|
|
11308
|
+
"valueType": "number"
|
|
11309
|
+
}
|
|
11310
|
+
]
|
|
11311
|
+
});
|
|
9338
11312
|
object({
|
|
9339
11313
|
code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
|
|
9340
11314
|
params: record(string(), union([string(), number()])).optional()
|
|
@@ -9717,7 +11691,7 @@ function errMsg$2(err) {
|
|
|
9717
11691
|
return String(err);
|
|
9718
11692
|
}
|
|
9719
11693
|
//#endregion
|
|
9720
|
-
//#region ../types/dist/composition-
|
|
11694
|
+
//#region ../types/dist/composition-kEl9mevu.mjs
|
|
9721
11695
|
/**
|
|
9722
11696
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
9723
11697
|
*
|
|
@@ -13393,7 +15367,7 @@ var LogChannelDescriptorSchema = object({
|
|
|
13393
15367
|
* `true` is a PROMISE with two halves, and both must hold: the gate is
|
|
13394
15368
|
* consulted with the numeric device id, AND every line the channel admits
|
|
13395
15369
|
* carries `tags: { deviceId }` with that same numeric id. The second half is
|
|
13396
|
-
* what makes `| json | deviceId="
|
|
15370
|
+
* what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
|
|
13397
15371
|
* keeps `deviceId` out of the stream labels for cardinality, so the tag in
|
|
13398
15372
|
* the body is the only way to filter.
|
|
13399
15373
|
*
|
|
@@ -13600,7 +15574,7 @@ var ModelVariantGroupSchema = object({
|
|
|
13600
15574
|
precision: _enum(["fp32", "int8"]).optional(),
|
|
13601
15575
|
/**
|
|
13602
15576
|
* Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
|
|
13603
|
-
* an alternate training of the same family (
|
|
15577
|
+
* an alternate training of the same family (plugin catalog `relu_test`); chip
|
|
13604
15578
|
* label is "Test".
|
|
13605
15579
|
*/
|
|
13606
15580
|
optimization: _enum(["standard", "test"]).optional(),
|
|
@@ -13852,8 +15826,8 @@ var ModelCatalogEntrySchema = object({
|
|
|
13852
15826
|
provider: ModelProviderIdSchema.optional(),
|
|
13853
15827
|
/**
|
|
13854
15828
|
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
13855
|
-
* applies (
|
|
13856
|
-
* labels already ARE the CamStack macros (
|
|
15829
|
+
* applies (plus catalog / COCO public catalog). Set on a custom model whose raw
|
|
15830
|
+
* labels already ARE the CamStack macros (plugin catalog identity map).
|
|
13857
15831
|
*/
|
|
13858
15832
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
13859
15833
|
/**
|
|
@@ -16879,7 +18853,7 @@ method(object({
|
|
|
16879
18853
|
* `1` is real time and is the ONLY value that allows the copy branch —
|
|
16880
18854
|
* anything else forces `libx264` over the window. That was priced
|
|
16881
18855
|
* before it was chosen: a per-event burst measured at 0.23 s and 254 KB
|
|
16882
|
-
* on a real
|
|
18856
|
+
* on a real 101 720p cut, against 922 KB for the copy it replaces. A
|
|
16883
18857
|
* re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
|
|
16884
18858
|
* once the decode is forced the width stops being free.
|
|
16885
18859
|
*/
|
|
@@ -17299,6 +19273,7 @@ var CompositionRunStatusSchema = _enum([
|
|
|
17299
19273
|
"starting",
|
|
17300
19274
|
"running",
|
|
17301
19275
|
"degraded",
|
|
19276
|
+
"incomplete",
|
|
17302
19277
|
"failed"
|
|
17303
19278
|
]);
|
|
17304
19279
|
var CompositionFieldStateKindSchema = _enum([
|
|
@@ -17512,6 +19487,7 @@ var CoreBlockStatusSchema = _enum([
|
|
|
17512
19487
|
"starting",
|
|
17513
19488
|
"running",
|
|
17514
19489
|
"degraded",
|
|
19490
|
+
"incomplete",
|
|
17515
19491
|
"failed"
|
|
17516
19492
|
]);
|
|
17517
19493
|
/** path → TypeScript source for a multi-file block. */
|
|
@@ -39435,7 +41411,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
|
|
|
39435
41411
|
* `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
|
|
39436
41412
|
* operator's casing. The registry matches labels trimmed + case-insensitively
|
|
39437
41413
|
* everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
|
|
39438
|
-
* case-only rename (`
|
|
41414
|
+
* case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
|
|
39439
41415
|
* map keyed on the displayed casing would orphan its entry on exactly that
|
|
39440
41416
|
* edit. Consumers join by keying their own label through `locationIconKey`.
|
|
39441
41417
|
*/
|
|
@@ -39460,7 +41436,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39460
41436
|
/**
|
|
39461
41437
|
* A SITE ZONE — a named part of the property that several locations belong to.
|
|
39462
41438
|
*
|
|
39463
|
-
* "
|
|
41439
|
+
* "Night zone" holds every bedroom; "Zona giorno" the living room and the
|
|
39464
41440
|
* kitchen. A camera belongs to exactly one location, and a location to at most
|
|
39465
41441
|
* one zone, so a camera's zone is derived and never stored on the device: the
|
|
39466
41442
|
* whole point of this entity is that grouping rooms touches no device row.
|
|
@@ -39489,7 +41465,7 @@ var LocationDescriptionAssignmentSchema = object({
|
|
|
39489
41465
|
* the locations inside it.
|
|
39490
41466
|
*
|
|
39491
41467
|
* The LABEL is carried alongside the key because the key is lossy on purpose —
|
|
39492
|
-
* a surface must show "
|
|
41468
|
+
* a surface must show "Night zone", not "night zone". Locations are carried
|
|
39493
41469
|
* here, rather than left to a second call, because every consumer wants both
|
|
39494
41470
|
* at once and a viewer that asked twice could render a zone whose membership
|
|
39495
41471
|
* it has not fetched yet.
|
|
@@ -41602,8 +43578,8 @@ var LoadContributionSchema = object({
|
|
|
41602
43578
|
"unattributable"
|
|
41603
43579
|
]),
|
|
41604
43580
|
/**
|
|
41605
|
-
* What ONE entry is, in the contributor's own words — `
|
|
41606
|
-
* `
|
|
43581
|
+
* What ONE entry is, in the contributor's own words — `101/high`,
|
|
43582
|
+
* `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
|
|
41607
43583
|
* family and inventing a common one would lose the only information that
|
|
41608
43584
|
* makes two entries for the same camera distinguishable.
|
|
41609
43585
|
*/
|
|
@@ -44831,7 +46807,7 @@ var NcConditionsSchema = object({
|
|
|
44831
46807
|
* with the list under it is worse than no switch (D62).
|
|
44832
46808
|
*
|
|
44833
46809
|
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
44834
|
-
* renameable, and a rule authored on "
|
|
46810
|
+
* renameable, and a rule authored on "Alice" went silently dark the moment
|
|
44835
46811
|
* the operator fixed the spelling. The id reaches the record on
|
|
44836
46812
|
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
44837
46813
|
* `{{label}}` renders.
|
|
@@ -45382,7 +47358,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
45382
47358
|
* A rule scoped to one camera and one zone silently became a rule that
|
|
45383
47359
|
* matches EVERY event on EVERY camera, and lost its `media` policy
|
|
45384
47360
|
* (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
|
|
45385
|
-
* live on 2026-08-12: a rule scoped to device
|
|
47361
|
+
* live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
|
|
45386
47362
|
* within a minute of a two-field patch.
|
|
45387
47363
|
*
|
|
45388
47364
|
* So every defaulted field is re-declared here WITHOUT its default. The
|
|
@@ -47245,7 +49221,7 @@ var LabelAttributionSchema = object({
|
|
|
47245
49221
|
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
47246
49222
|
*
|
|
47247
49223
|
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
47248
|
-
* notification rule authored on "
|
|
49224
|
+
* notification rule authored on "Alice" stopped matching the moment the
|
|
47249
49225
|
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
47250
49226
|
* the thing that does not move, so it is what a rule matches on
|
|
47251
49227
|
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
@@ -49897,7 +51873,7 @@ var pipelineExecutorCapability = {
|
|
|
49897
51873
|
/**
|
|
49898
51874
|
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
49899
51875
|
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
49900
|
-
* step (a
|
|
51876
|
+
* step (a plus catalog `license_plate` for `plate-detection`): the step is
|
|
49901
51877
|
* NOT inferred, these boxes are its output, and its children (the plate
|
|
49902
51878
|
* reader) run on them through their own crop policy. Boxes are in the
|
|
49903
51879
|
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
@@ -51665,7 +53641,7 @@ var RunnerCameraConfigSchema = object({
|
|
|
51665
53641
|
* detection session that asks for history. What shipped was a last-moment
|
|
51666
53642
|
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
51667
53643
|
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
51668
|
-
* worth. Device
|
|
53644
|
+
* worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
|
|
51669
53645
|
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
51670
53646
|
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
51671
53647
|
* was decoded, and was freed.
|
|
@@ -54320,7 +56296,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
|
|
|
54320
56296
|
* The signals a device can emit to WAKE its own stream.
|
|
54321
56297
|
*
|
|
54322
56298
|
* A camera whose stream is built on demand sleeps until something asks for it,
|
|
54323
|
-
* and "something" cannot be a consumer that is merely attached — a
|
|
56299
|
+
* and "something" cannot be a consumer that is merely attached — a external-catalog
|
|
54324
56300
|
* puller holds a session open for ever, and treating that as demand would keep
|
|
54325
56301
|
* a battery camera awake for ever, which is the whole thing the battery is for
|
|
54326
56302
|
* (D173). So the wake has to come from the CAMERA: an event it noticed by
|
|
@@ -55007,7 +56983,7 @@ var ClipSchema = object({
|
|
|
55007
56983
|
* {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
|
|
55008
56984
|
*
|
|
55009
56985
|
* Bounded because it is not a payload the surface pages through: one visit on
|
|
55010
|
-
* device
|
|
56986
|
+
* device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
|
|
55011
56987
|
* camera-day. Read {@link eventCount} for the true total.
|
|
55012
56988
|
*/
|
|
55013
56989
|
eventIds: array(string()).optional(),
|
|
@@ -55152,7 +57128,7 @@ var ClipPlaybackSchema = object({
|
|
|
55152
57128
|
* camera has no recordings", which is the defect this whole line of work is
|
|
55153
57129
|
* about: a battery camera nobody woke (`sleeping`), a camera that could not be
|
|
55154
57130
|
* reached at all (`unreachable`, also what a provider that THREW reports), a
|
|
55155
|
-
* camera whose SD card is not mounted (`no-storage`, measured on
|
|
57131
|
+
* camera whose SD card is not mounted (`no-storage`, measured on 106 —
|
|
55156
57132
|
* `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
|
|
55157
57133
|
* camera whose OWN index disagrees with its OWN calendar (`index-empty`,
|
|
55158
57134
|
* measured on 618: the calendar marks 3–20 September, days 6–20 list zero
|
|
@@ -55417,7 +57393,7 @@ DeviceType.Camera, method(object({
|
|
|
55417
57393
|
*
|
|
55418
57394
|
* It was optional, documented as "absent means the device's BOUND
|
|
55419
57395
|
* provider, which is CamStack on every camera". No code implemented
|
|
55420
|
-
* that. Measured on the live hub 2026-09-20 — device
|
|
57396
|
+
* that. Measured on the live hub 2026-09-20 — device 107, bound to
|
|
55421
57397
|
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
55422
57398
|
* answered SIX rows, three from each source, merged newest-first:
|
|
55423
57399
|
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
@@ -56495,7 +58471,10 @@ object({
|
|
|
56495
58471
|
DeviceType.Sensor;
|
|
56496
58472
|
object({
|
|
56497
58473
|
/** Current illuminance in lux (lx). */
|
|
56498
|
-
lux: number().min(0)
|
|
58474
|
+
lux: number().min(0).meta({
|
|
58475
|
+
unit: "lx",
|
|
58476
|
+
label: "Illuminance"
|
|
58477
|
+
}),
|
|
56499
58478
|
/** Ms epoch when the slice was last updated. */
|
|
56500
58479
|
lastFetchedAt: number(),
|
|
56501
58480
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -56651,7 +58630,10 @@ var BatteryStatusSchema = object({
|
|
|
56651
58630
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
56652
58631
|
* declines to band a non-finite reading, which is the correct shape.
|
|
56653
58632
|
*/
|
|
56654
|
-
percentage: number().min(0).max(100).nullable()
|
|
58633
|
+
percentage: number().min(0).max(100).nullable().meta({
|
|
58634
|
+
unit: "%",
|
|
58635
|
+
label: "Charge"
|
|
58636
|
+
}),
|
|
56655
58637
|
/**
|
|
56656
58638
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
56657
58639
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -56670,13 +58652,13 @@ var BatteryStatusSchema = object({
|
|
|
56670
58652
|
"solar",
|
|
56671
58653
|
"none",
|
|
56672
58654
|
"unknown"
|
|
56673
|
-
]),
|
|
58655
|
+
]).meta({ label: "Charging source" }),
|
|
56674
58656
|
/**
|
|
56675
58657
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
56676
58658
|
* providers MUST avoid polling during sleep — reading the battery
|
|
56677
58659
|
* wakes the camera up and drains charge.
|
|
56678
58660
|
*/
|
|
56679
|
-
sleeping: boolean(),
|
|
58661
|
+
sleeping: boolean().meta({ label: "Sleeping" }),
|
|
56680
58662
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
56681
58663
|
lastUpdated: number(),
|
|
56682
58664
|
/**
|
|
@@ -56716,7 +58698,7 @@ var BatteryStatusSchema = object({
|
|
|
56716
58698
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
56717
58699
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
56718
58700
|
*/
|
|
56719
|
-
binary: boolean().optional()
|
|
58701
|
+
binary: boolean().optional().meta({ label: "Binary indicator" })
|
|
56720
58702
|
});
|
|
56721
58703
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat;
|
|
56722
58704
|
method(object({
|
|
@@ -56731,7 +58713,7 @@ method(object({
|
|
|
56731
58713
|
status: BatteryStatusSchema
|
|
56732
58714
|
});
|
|
56733
58715
|
object({
|
|
56734
|
-
on: boolean(),
|
|
58716
|
+
on: boolean().meta({ label: "On" }),
|
|
56735
58717
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
56736
58718
|
lastChangedAt: number()
|
|
56737
58719
|
});
|
|
@@ -56989,7 +58971,7 @@ var GridLayoutCellSchema = object({
|
|
|
56989
58971
|
*
|
|
56990
58972
|
* A grid's `high` composes its sources' `high` and its `low` their `low`, so a
|
|
56991
58973
|
* profile is on offer only when EVERY source can serve it. The refusal NAMES
|
|
56992
|
-
* the sources, because "this grid has no low" is not a finding — "
|
|
58974
|
+
* the sources, because "this grid has no low" is not a finding — "101 has no
|
|
56993
58975
|
* low" is, and it is the one an operator can act on.
|
|
56994
58976
|
*/
|
|
56995
58977
|
var GridProfileOfferSchema = object({
|
|
@@ -58549,7 +60531,10 @@ DeviceType.Humidifier, method(object({
|
|
|
58549
60531
|
});
|
|
58550
60532
|
object({
|
|
58551
60533
|
/** Current relative humidity, 0..100. */
|
|
58552
|
-
percent: number().min(0).max(100)
|
|
60534
|
+
percent: number().min(0).max(100).meta({
|
|
60535
|
+
unit: "%",
|
|
60536
|
+
label: "Humidity"
|
|
60537
|
+
}),
|
|
58553
60538
|
/** Ms epoch when the slice was last updated. */
|
|
58554
60539
|
lastFetchedAt: number(),
|
|
58555
60540
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -62067,9 +64052,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62067
64052
|
});
|
|
62068
64053
|
object({
|
|
62069
64054
|
/** Instantaneous power draw in watts. */
|
|
62070
|
-
watts: number().optional()
|
|
64055
|
+
watts: number().optional().meta({
|
|
64056
|
+
unit: "W",
|
|
64057
|
+
label: "Power"
|
|
64058
|
+
}),
|
|
62071
64059
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62072
|
-
kwhTotal: number().optional()
|
|
64060
|
+
kwhTotal: number().optional().meta({
|
|
64061
|
+
unit: "kWh",
|
|
64062
|
+
label: "Energy"
|
|
64063
|
+
}),
|
|
62073
64064
|
/** Voltage in volts. */
|
|
62074
64065
|
volts: number().optional(),
|
|
62075
64066
|
/** Current in amperes. */
|
|
@@ -62388,9 +64379,9 @@ var PtzOptionsSchema = object({
|
|
|
62388
64379
|
* Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
|
|
62389
64380
|
* not one of the three cameras honours its own:
|
|
62390
64381
|
*
|
|
62391
|
-
*
|
|
62392
|
-
* 1438
|
|
62393
|
-
* 3836
|
|
64382
|
+
* 107 Camera camera Carol (reolink) preset 0 holds "stanza"
|
|
64383
|
+
* 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
|
|
64384
|
+
* 3836 Camera studio (amcrest) preset 1 holds "Preset1"
|
|
62394
64385
|
*
|
|
62395
64386
|
* So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
|
|
62396
64387
|
* and two of the three swallowed the failure in a bare `catch`. For autotrack
|
|
@@ -62537,7 +64528,7 @@ object({
|
|
|
62537
64528
|
running: boolean().nullable(),
|
|
62538
64529
|
/** Epoch ms the current boolean began; null while `running` is null. */
|
|
62539
64530
|
since: number().nullable(),
|
|
62540
|
-
source: RunningStateSourceSchema,
|
|
64531
|
+
source: RunningStateSourceSchema.meta({ label: "Source" }),
|
|
62541
64532
|
phase: string().nullable(),
|
|
62542
64533
|
/** null until a reading has been published (D393). */
|
|
62543
64534
|
lastFetchedAt: number().nullable()
|
|
@@ -62590,7 +64581,7 @@ var RecordingAvailabilitySchema = object({
|
|
|
62590
64581
|
* would look identical. But the answer used to say nothing about that, so a
|
|
62591
64582
|
* caller asking "what can I export?" read the single preferred profile as
|
|
62592
64583
|
* the only one that exists — on this deployment every camera records `high`
|
|
62593
|
-
* AND `low`, the low tree holding 14 GB for camera
|
|
64584
|
+
* AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
|
|
62594
64585
|
* UI could not see it.
|
|
62595
64586
|
*
|
|
62596
64587
|
* Cheap: it is the same shallow directory read the profile CHOICE already
|
|
@@ -62689,7 +64680,7 @@ var RecordingSourceOptionsSchema = object({
|
|
|
62689
64680
|
* `sparse` = gaps are the absence of one, and must be drawn as such.
|
|
62690
64681
|
*
|
|
62691
64682
|
* Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
|
|
62692
|
-
* of
|
|
64683
|
+
* of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
|
|
62693
64684
|
* pair, and ours answers it per camera from `deriveRecordingMode`. */
|
|
62694
64685
|
coverage: _enum(["continuous", "sparse"]),
|
|
62695
64686
|
/** Where the playhead may be put.
|
|
@@ -62765,7 +64756,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
|
|
|
62765
64756
|
* merely discouraged (D554 amended).
|
|
62766
64757
|
*
|
|
62767
64758
|
* It was learned the expensive way on `videoclips.listClips`: measured
|
|
62768
|
-
* on the live hub 2026-09-20, device
|
|
64759
|
+
* on the live hub 2026-09-20, device 107 bound to `recorder` AND
|
|
62769
64760
|
* `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
|
|
62770
64761
|
* three from each source, merged — `device-collection-dispatch.ts`
|
|
62771
64762
|
* leaves an unpinned fan-out un-narrowed, so absence buys the union the
|
|
@@ -63366,7 +65357,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
|
|
|
63366
65357
|
* on a 10 h window holding 29,393 s of footage every range landed late by the
|
|
63367
65358
|
* gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
|
|
63368
65359
|
* the video was a uniform timelapse, and the log line reported the five ranges
|
|
63369
|
-
* that had been ASKED for (2026-08-13, export `57d14363`, camera
|
|
65360
|
+
* that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
|
|
63370
65361
|
*
|
|
63371
65362
|
* Relative and not absolute epoch, because an absolute epoch would make every
|
|
63372
65363
|
* call site responsible for the same subtraction.
|
|
@@ -64034,7 +66025,7 @@ getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) }
|
|
|
64034
66025
|
* which put a "Scenes" tab on one camera's detail page. That is the wrong shape
|
|
64035
66026
|
* for the thing: a scene is a standing question about the property ("is the bin
|
|
64036
66027
|
* still out"), and the operator's question is "which of my scenes have tripped",
|
|
64037
|
-
* across every camera at once — not "what does camera
|
|
66028
|
+
* across every camera at once — not "what does camera 102 think". Buried one
|
|
64038
66029
|
* camera deep it also could not be found. The surface is now a top-level admin
|
|
64039
66030
|
* page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
|
|
64040
66031
|
* picks the camera inside the create flow, the same shape Events and Faces have.
|
|
@@ -64617,7 +66608,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), StreamParamsOptionsSch
|
|
|
64617
66608
|
auth: "admin"
|
|
64618
66609
|
}), method(object({ deviceId: number() }), unknown().nullable());
|
|
64619
66610
|
object({
|
|
64620
|
-
on: boolean(),
|
|
66611
|
+
on: boolean().meta({ label: "On" }),
|
|
64621
66612
|
/** Ms epoch of the last state change. Useful for UI "X minutes ago". */
|
|
64622
66613
|
lastChangedAt: number()
|
|
64623
66614
|
});
|
|
@@ -65180,7 +67171,10 @@ object({
|
|
|
65180
67171
|
DeviceType.Sensor;
|
|
65181
67172
|
object({
|
|
65182
67173
|
/** Current temperature in Celsius. */
|
|
65183
|
-
celsius: number()
|
|
67174
|
+
celsius: number().meta({
|
|
67175
|
+
unit: "°C",
|
|
67176
|
+
label: "Temperature"
|
|
67177
|
+
}),
|
|
65184
67178
|
/** Ms epoch when the slice was last updated (push or poll). */
|
|
65185
67179
|
lastFetchedAt: number(),
|
|
65186
67180
|
/** Live display unit from the upstream source (e.g. HA
|
|
@@ -66388,6 +68382,10 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
|
|
|
66388
68382
|
auth: "admin"
|
|
66389
68383
|
});
|
|
66390
68384
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
68385
|
+
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;
|
|
68386
|
+
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
68387
|
+
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
68388
|
+
new Set(CAP_NAMES);
|
|
66391
68389
|
Object.freeze({
|
|
66392
68390
|
person: .5,
|
|
66393
68391
|
vehicle: .5,
|
|
@@ -79325,7 +81323,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79325
81323
|
state: [{
|
|
79326
81324
|
kind: "boolean",
|
|
79327
81325
|
field: "on",
|
|
79328
|
-
label: t("
|
|
81326
|
+
label: t("On", "Acceso"),
|
|
79329
81327
|
whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
|
|
79330
81328
|
whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
|
|
79331
81329
|
icon: "toggle-right"
|
|
@@ -82874,7 +84872,6 @@ var BucketAccumulator = class {
|
|
|
82874
84872
|
}
|
|
82875
84873
|
};
|
|
82876
84874
|
DeviceType.Camera;
|
|
82877
|
-
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;
|
|
82878
84875
|
/**
|
|
82879
84876
|
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
82880
84877
|
* `z.infer`, they do not restate the shape.
|
|
@@ -82963,7 +84960,6 @@ object({
|
|
|
82963
84960
|
]),
|
|
82964
84961
|
reason: string().nullable()
|
|
82965
84962
|
});
|
|
82966
|
-
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
82967
84963
|
var G711_SCALE_CORRECTION_DB = {
|
|
82968
84964
|
PCMU: 20 * Math.log10(4),
|
|
82969
84965
|
PCMA: 20 * Math.log10(8)
|
|
@@ -83336,7 +85332,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
83336
85332
|
{
|
|
83337
85333
|
name: "summaryStreams",
|
|
83338
85334
|
label: "Summary: streams offline",
|
|
83339
|
-
example: "
|
|
85335
|
+
example: "Front door (high) — since 06:40",
|
|
83340
85336
|
kinds: ["stream-offline", "stream-online"]
|
|
83341
85337
|
},
|
|
83342
85338
|
{
|
|
@@ -83354,13 +85350,13 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
83354
85350
|
{
|
|
83355
85351
|
name: "summaryDetection",
|
|
83356
85352
|
label: "Summary: cameras detecting nothing",
|
|
83357
|
-
example: "
|
|
85353
|
+
example: "Front door — since 05:10",
|
|
83358
85354
|
kinds: ["detection-blind"]
|
|
83359
85355
|
},
|
|
83360
85356
|
{
|
|
83361
85357
|
name: "summaryNodes",
|
|
83362
85358
|
label: "Summary: nodes",
|
|
83363
|
-
example: "
|
|
85359
|
+
example: "agent-a — offline since 03:00",
|
|
83364
85360
|
kinds: [
|
|
83365
85361
|
"node-offline",
|
|
83366
85362
|
"node-online",
|
|
@@ -87816,7 +89812,7 @@ function validateJumpTargets(inferenceDevices, enabledAvailableKeys) {
|
|
|
87816
89812
|
* A **Coral Edge TPU (`edgetpu`)** is an accelerator like the rest and is
|
|
87817
89813
|
* enabled by default (D912, superseding D39). The 2026-08-01 incident that made
|
|
87818
89814
|
* it opt-in (a Coral nobody enabled took an equal share of the rotation, ran a
|
|
87819
|
-
* weaker SSD and left camera
|
|
89815
|
+
* weaker SSD and left camera 101 at 2.4 fps) is answered by speed-proportional
|
|
87820
89816
|
* automatic weights — Auto tune sizes the Coral at its default YOLOv9-s 320
|
|
87821
89817
|
* Edge TPU build with the measured latency — and by that default model, which
|
|
87822
89818
|
* is YOLOv9 like the rest. An explicit stored `enabled:false` still wins.
|
|
@@ -91466,7 +93462,7 @@ var CameraStatusService = class {
|
|
|
91466
93462
|
* means "we could not look" from a `null` that means "there is nothing
|
|
91467
93463
|
* there"; the `warn` is what makes the next hang findable at all. The line
|
|
91468
93464
|
* carries `tags.deviceId` with the numeric id because the question is always
|
|
91469
|
-
* per-camera ("why is
|
|
93465
|
+
* per-camera ("why is 105 worse than 101?") and a line without the tag
|
|
91470
93466
|
* cannot be grouped to answer it.
|
|
91471
93467
|
*/
|
|
91472
93468
|
recordDegraded(sink, deviceId, stage, reason, elapsedMs, extraMeta = {}) {
|
|
@@ -91766,7 +93762,7 @@ var CameraStatusService = class {
|
|
|
91766
93762
|
*
|
|
91767
93763
|
* In the last two the returned list is `[]`, and `[]` was once handed to the
|
|
91768
93764
|
* payload as the positive claim "the operator has switched nothing off".
|
|
91769
|
-
* Measured on the live hub 2026-08-08: `getCameraStatus(
|
|
93765
|
+
* Measured on the live hub 2026-08-08: `getCameraStatus(105)` said
|
|
91770
93766
|
* `switchedOff: []` at the very moment `stream-broker` AND `recording` were
|
|
91771
93767
|
* switched off by the operator — the camera read as BROKEN because it was
|
|
91772
93768
|
* switched OFF. The list stays empty (a guess would put a permanent "off"
|
|
@@ -91953,7 +93949,7 @@ function readPrivacyMaskFacts(v) {
|
|
|
91953
93949
|
*
|
|
91954
93950
|
* Measured on the live hub, 2026-08-08: seven of the eight sources answered in
|
|
91955
93951
|
* 5–15ms on every camera. The eighth, `privacyMask.getStatus`, probes the
|
|
91956
|
-
* camera itself and took 3.1–3.6s on device
|
|
93952
|
+
* camera itself and took 3.1–3.6s on device 105 on every single call (18s under
|
|
91957
93953
|
* load) — so a bound generous enough to make the fast sources safe still has to
|
|
91958
93954
|
* be willing to drop the slow one, because waiting for it costs the other six.
|
|
91959
93955
|
*/
|
|
@@ -93259,7 +95255,7 @@ async function reconcileOnboardForwarding(input, deps) {
|
|
|
93259
95255
|
* never cause a video transcode, and on this fleet the motion rung IS a
|
|
93260
95256
|
* `derived:*` transcode. The caller therefore hands the resolved audio stream
|
|
93261
95257
|
* in {@link WatchdogAudioSource} — reading `motionStreamId` here would label
|
|
93262
|
-
* and RECOVER the wrong stream, which is how camera
|
|
95258
|
+
* and RECOVER the wrong stream, which is how camera 108's audio stage watched
|
|
93263
95259
|
* a plane the analyser was not listening to.
|
|
93264
95260
|
*
|
|
93265
95261
|
* `pipelineEnabled === false` (the `object-detection` switch, D62/ADR-0109)
|
|
@@ -93388,7 +95384,7 @@ var DetectionWiringController = class {
|
|
|
93388
95384
|
* silently loses `BATTERY_DEVICE_PROFILE` and `audioMode` falls back to
|
|
93389
95385
|
* `'always-on'` — which subscribes the audio-analyzer, which is demand on
|
|
93390
95386
|
* the substream, which dials the camera and WAKES it. Measured on the live
|
|
93391
|
-
* hub: 3 of 12 detection passes on device
|
|
95387
|
+
* hub: 3 of 12 detection passes on device 106 did exactly that, each right
|
|
93392
95388
|
* after a `provider-reolink` restart.
|
|
93393
95389
|
*
|
|
93394
95390
|
* So this reports UNKNOWN (`null`) distinctly from "no features" (`[]`), and
|
|
@@ -94847,7 +96843,7 @@ function decideSessionClose(input) {
|
|
|
94847
96843
|
* straight to the floor check; the hold, the cap and the track-freshness read
|
|
94848
96844
|
* all lived inside the COOLDOWN TIMER's body. On a camera that emits an
|
|
94849
96845
|
* explicit low edge — which is every camera — the timer body never ran.
|
|
94850
|
-
* Measured on device
|
|
96846
|
+
* Measured on device 102 over 24 h, 503 paired sessions: **502 closed on
|
|
94851
96847
|
* `motion_cleared`**, 1 on the cooldown, 0 on `maxSessionHoldMs`, and the
|
|
94852
96848
|
* "held open" branch fired **0 times**. Median session life 10 221 ms against a
|
|
94853
96849
|
* 10 000 ms floor — not a duration, a floor. 71.5% of the tracks that died in
|
|
@@ -99707,7 +101703,7 @@ var RECHECK_REASON = "orchestrator-recheck";
|
|
|
99707
101703
|
/**
|
|
99708
101704
|
* D691 — the EARLY LOOK. An occupancy edge commits only on a sample that lands
|
|
99709
101705
|
* after its sustain window, and a departure's session usually closes before
|
|
99710
|
-
* that (the car drives off, motion clears):
|
|
101706
|
+
* that (the car drives off, motion clears): 102 on 2026-10-01 closed 1.3 s
|
|
99711
101707
|
* before its 29 s sustain ended and the edge waited 4 min 52 s for the cadence
|
|
99712
101708
|
* above. The notification centre, which alone knows a flip is pending, asks
|
|
99713
101709
|
* for ONE look at the sustain's end ({@link OccupancyRecheckController.requestEarlyLook});
|
|
@@ -100479,7 +102475,7 @@ function countRunningByNode(placements) {
|
|
|
100479
102475
|
* 57.6% under 5 s, and **820 of 822 closes were the hub's explicit
|
|
100480
102476
|
* `motion_cleared` falling edge** — which closed the session instantly, so
|
|
100481
102477
|
* `motionCooldownMs` / the track hold / `maxSessionHoldMs` decided 2 closes in
|
|
100482
|
-
* total. Camera
|
|
102478
|
+
* total. Camera 104 opened and closed 249 sessions in 25 minutes; every close
|
|
100483
102479
|
* dropped its assignment and every reopen re-elected a node, which is the
|
|
100484
102480
|
* 2-3 second flicker the operator reported on the placement column — and a full
|
|
100485
102481
|
* detach+attach round trip per flicker.
|
|
@@ -100850,7 +102846,7 @@ var SessionDispatchController = class {
|
|
|
100850
102846
|
* Close an ACTIVE detection session so the next motion event re-dispatches
|
|
100851
102847
|
* it fresh — used by `assignPipeline` when the operator pins a session-mode
|
|
100852
102848
|
* camera to a node OTHER than the one its session currently runs on (the
|
|
100853
|
-
* cam-
|
|
102849
|
+
* cam-104 case: a busy camera's session never cools down, so without this
|
|
100854
102850
|
* the stale pre-pin placement survived indefinitely).
|
|
100855
102851
|
*
|
|
100856
102852
|
* Deliberately NOT `stopForDevice`: the camera must stay ARMED —
|
|
@@ -100956,7 +102952,7 @@ var SessionDispatchController = class {
|
|
|
100956
102952
|
* SAME rule the fallback timer uses ({@link resolveSessionLifecycleLocked}).
|
|
100957
102953
|
* It no longer bypasses the hold and the cap: it used to, and that made
|
|
100958
102954
|
* both unreachable on every camera that emits a falling edge — 502 of
|
|
100959
|
-
* 503 closes on device
|
|
102955
|
+
* 503 closes on device 102 in 24 h. An explicit clear still wins over
|
|
100960
102956
|
* the cooldown; it does not win over a subject that is still there.
|
|
100961
102957
|
*
|
|
100962
102958
|
* LIVE as of Task 2: `startDetection` no longer standing-attaches on-motion
|
|
@@ -101405,7 +103401,7 @@ var SessionDispatchController = class {
|
|
|
101405
103401
|
* falling edge, the `cooldown_expired` fallback timer, and the re-ask of a
|
|
101406
103402
|
* close this method itself deferred. That is the fix — the hold, the
|
|
101407
103403
|
* freshness read and `maxSessionHoldMs` used to live inside the COOLDOWN
|
|
101408
|
-
* TIMER's body, so a falling edge reached none of them. On device
|
|
103404
|
+
* TIMER's body, so a falling edge reached none of them. On device 102, 24 h,
|
|
101409
103405
|
* 503 sessions: 502 closes were falling edges, the hold branch fired 0
|
|
101410
103406
|
* times, `maxSessionHoldMs` fired 0 times, and the session-duration
|
|
101411
103407
|
* distribution collapsed onto {@link MIN_SESSION_OPEN_MS} — median 10 221 ms
|
|
@@ -101480,7 +103476,7 @@ var SessionDispatchController = class {
|
|
|
101480
103476
|
* **This branch drops work, so it says so.** Closing a session detaches the
|
|
101481
103477
|
* runner: every track still live on that camera dies here, mid-life, with no
|
|
101482
103478
|
* `end` key-event and no chance of ever reaching the stationary registry's
|
|
101483
|
-
* promotion window. It used to log one bare sentence. Measured on device
|
|
103479
|
+
* promotion window. It used to log one bare sentence. Measured on device 102
|
|
101484
103480
|
* over 24 h it killed **223 live tracks across 503 closes (0.44 per close)**,
|
|
101485
103481
|
* 95% of which had been motionless for at least a second, and not one line
|
|
101486
103482
|
* named a single one of them — the gap had to be reconstructed by
|
|
@@ -102093,9 +104089,9 @@ var ZoneRulesProvider = class {
|
|
|
102093
104089
|
* so a camera whose runtime-state row had never been written (or had
|
|
102094
104090
|
* been reset) had no `zones` slice at all, and every mirror-only
|
|
102095
104091
|
* consumer concluded "this camera has no zones" — forever, because no
|
|
102096
|
-
* mutation was coming. Live cost (camera
|
|
102097
|
-
* 2026-08-12): `zones.listZones {
|
|
102098
|
-
* while `deviceState.getCapSlice {
|
|
104092
|
+
* mutation was coming. Live cost (camera 102 'Parking',
|
|
104093
|
+
* 2026-08-12): `zones.listZones {102}` returned 'Parking pat'
|
|
104094
|
+
* while `deviceState.getCapSlice {102,'zones'}` returned `null`;
|
|
102099
104095
|
* occupancy dropped all three parked cars into `unzoned`, its zone
|
|
102100
104096
|
* rule could never fire, and the admin Zones tab — which reads the
|
|
102101
104097
|
* same mirror — showed "No zones yet".
|
|
@@ -102559,7 +104555,7 @@ async function buildOrchestratorControllers(deps) {
|
|
|
102559
104555
|
* false negative on every COLD broker: `getStats()` answers `audio: null`
|
|
102560
104556
|
* until a track is observed, and dispatch normally runs while the stream is
|
|
102561
104557
|
* idle. So the audio stage armed only for cameras that happened to be hot at
|
|
102562
|
-
* dispatch — which is why camera
|
|
104558
|
+
* dispatch — which is why camera 108's derived stream delivered zero audio
|
|
102563
104559
|
* chunks for four days without a single watchdog line. A stage armed on a
|
|
102564
104560
|
* camera that turns out to have no audio is BOUNDED: the watchdog disarms a
|
|
102565
104561
|
* stage that never produced one signal, with one line.
|
|
@@ -106201,7 +108197,7 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
|
|
|
106201
108197
|
* Which nodes can still infer. Refreshed by
|
|
106202
108198
|
* {@link resolveEligibleInferenceDevices}; read synchronously by both
|
|
106203
108199
|
* dispatch paths so a node whose every enabled accelerator vanished stops
|
|
106204
|
-
* receiving cameras.
|
|
108200
|
+
* receiving cameras. agent-a was handed cameras for a whole day in
|
|
106205
108201
|
* exactly that state.
|
|
106206
108202
|
*/
|
|
106207
108203
|
nodeInferenceUsability = new NodeInferenceUsabilityMirror();
|