@homebridge-plugins/homebridge-eufy-security 5.0.0-beta.41 → 5.0.0-beta.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/diagnostics.js +126 -7
- package/dist/diagnostics.js.map +1 -1
- package/dist/homekit/adapter.js.map +1 -1
- package/dist/homekit/adapters/camera-streaming.js +6 -2
- package/dist/homekit/adapters/camera-streaming.js.map +1 -1
- package/dist/homekit/reconciler.js +4 -1
- package/dist/homekit/reconciler.js.map +1 -1
- package/dist/media/live-stream.js +39 -7
- package/dist/media/live-stream.js.map +1 -1
- package/dist/platform.js +2 -2
- package/dist/platform.js.map +1 -1
- package/homebridge-ui/public/app.css +64 -19
- package/homebridge-ui/public/i18n/en.json +16 -1
- package/homebridge-ui/public/i18n/fr.json +16 -1
- package/homebridge-ui/public/index.html +22 -1
- package/homebridge-ui/public/js/app.js +170 -3
- package/package.json +1 -1
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -357,8 +357,27 @@ button.diagnostics-quiet-action {
|
|
|
357
357
|
text-transform: uppercase;
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
-
.diagnostics-
|
|
361
|
-
|
|
360
|
+
.diagnostics-guidance .diagnostics-actions button,
|
|
361
|
+
.diagnostics-cameras .diagnostics-actions button {
|
|
362
|
+
flex: 1 1 0;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.diagnostics-actions:has(> [data-diagnostics-reproduction][hidden]) > [data-diagnostics-cancel] {
|
|
366
|
+
flex: 0 0 auto;
|
|
367
|
+
padding-inline: 24px;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.diagnostics-guidance [data-diagnostics-cancel],
|
|
371
|
+
.diagnostics-encode [data-encode-answer='live-picture-not-seen'],
|
|
372
|
+
.diagnostics-cameras [data-diagnostics-cameras-back] {
|
|
373
|
+
border: 1px solid var(--line-strong);
|
|
374
|
+
background: transparent;
|
|
375
|
+
color: var(--ink);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/* A guided live capture's step is the instruction, so the general one is not repeated beside it. */
|
|
379
|
+
.diagnostics-guidance:has(> [data-diagnostics-encode]:not([hidden])) > div:has(> [data-diagnostics-guidance-action]) {
|
|
380
|
+
display: none;
|
|
362
381
|
}
|
|
363
382
|
|
|
364
383
|
.diagnostics-result h2,
|
|
@@ -496,6 +515,7 @@ button.diagnostics-quiet-action {
|
|
|
496
515
|
mask-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%20-960%20960%20960%22%3E%3Cpath%20d=%22M440-120v-240h80v80h320v80H520v80h-80Zm-320-80v-80h240v80H120Zm160-160v-80H120v-80h160v-80h80v240h-80Zm160-80v-80h400v80H440Zm160-160v-240h80v80h160v80H680v80h-80Zm-480-80v-80h400v80H120Z%22/%3E%3C/svg%3E');
|
|
497
516
|
}
|
|
498
517
|
|
|
518
|
+
.diagnostics-camera-tiles button::before,
|
|
499
519
|
.diagnostics-tiles [data-diagnostics-tile='live-media']::before {
|
|
500
520
|
mask-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%20-960%20960%20960%22%3E%3Cpath%20d=%22M160-160q-33%200-56.5-23.5T80-240v-480q0-33%2023.5-56.5T160-800h480q33%200%2056.5%2023.5T720-720v180l160-160v440L720-420v180q0%2033-23.5%2056.5T640-160H160Zm0-80h480v-480H160v480Zm0%200v-480%20480Z%22/%3E%3C/svg%3E');
|
|
501
521
|
}
|
|
@@ -577,7 +597,6 @@ button.diagnostics-quiet-action {
|
|
|
577
597
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
578
598
|
align-items: center;
|
|
579
599
|
gap: 16px;
|
|
580
|
-
border-left: 4px solid var(--alert);
|
|
581
600
|
}
|
|
582
601
|
|
|
583
602
|
.notice-icon,
|
|
@@ -1539,28 +1558,13 @@ button.diagnostics-quiet-action {
|
|
|
1539
1558
|
}
|
|
1540
1559
|
|
|
1541
1560
|
.first-setup {
|
|
1542
|
-
position: relative;
|
|
1543
1561
|
margin-bottom: 16px;
|
|
1544
1562
|
border: 1px solid var(--line);
|
|
1545
|
-
border-left: 4px solid var(--accent);
|
|
1546
1563
|
border-radius: var(--radius-card);
|
|
1547
1564
|
background: var(--accent-soft);
|
|
1548
1565
|
padding: 16px 20px;
|
|
1549
1566
|
}
|
|
1550
1567
|
|
|
1551
|
-
.first-setup::before {
|
|
1552
|
-
content: '';
|
|
1553
|
-
position: absolute;
|
|
1554
|
-
top: 50%;
|
|
1555
|
-
left: -3px;
|
|
1556
|
-
width: 10px;
|
|
1557
|
-
height: 10px;
|
|
1558
|
-
border-top: 4px solid var(--accent);
|
|
1559
|
-
border-right: 4px solid var(--accent);
|
|
1560
|
-
background: var(--accent-soft);
|
|
1561
|
-
transform: translate(-50%, -50%) rotate(225deg);
|
|
1562
|
-
}
|
|
1563
|
-
|
|
1564
1568
|
.first-setup h2 {
|
|
1565
1569
|
margin-bottom: 8px;
|
|
1566
1570
|
}
|
|
@@ -1650,7 +1654,6 @@ button.diagnostics-quiet-action {
|
|
|
1650
1654
|
|
|
1651
1655
|
.handoff {
|
|
1652
1656
|
border: 1px solid var(--line);
|
|
1653
|
-
border-left: 4px solid var(--accent);
|
|
1654
1657
|
border-radius: var(--radius-card);
|
|
1655
1658
|
background: var(--accent-soft);
|
|
1656
1659
|
padding: 12px 16px;
|
|
@@ -2424,3 +2427,45 @@ p.wizard-map-base {
|
|
|
2424
2427
|
min-width: 160px;
|
|
2425
2428
|
margin-top: 0;
|
|
2426
2429
|
}
|
|
2430
|
+
|
|
2431
|
+
/* A live capture's camera step takes the place of the areas until it starts or goes back. */
|
|
2432
|
+
.diagnostics-question:has(> [data-diagnostics-cameras]:not([hidden])) > :not([data-diagnostics-cameras]) {
|
|
2433
|
+
display: none;
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2436
|
+
.diagnostics-cameras:not([hidden]) {
|
|
2437
|
+
display: grid;
|
|
2438
|
+
gap: 12px;
|
|
2439
|
+
}
|
|
2440
|
+
|
|
2441
|
+
.diagnostics-cameras > h3 {
|
|
2442
|
+
margin: 0;
|
|
2443
|
+
font-size: clamp(17px, 4vw, 21px);
|
|
2444
|
+
line-height: 1.35;
|
|
2445
|
+
}
|
|
2446
|
+
|
|
2447
|
+
.diagnostics-camera-tiles button[aria-pressed='true'] {
|
|
2448
|
+
border-color: var(--accent);
|
|
2449
|
+
background: var(--accent-soft);
|
|
2450
|
+
color: var(--accent-ink);
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
.diagnostics-encode-preview {
|
|
2454
|
+
display: block;
|
|
2455
|
+
width: 100%;
|
|
2456
|
+
aspect-ratio: 16 / 9;
|
|
2457
|
+
object-fit: contain;
|
|
2458
|
+
border-radius: var(--radius-card);
|
|
2459
|
+
background: #000;
|
|
2460
|
+
}
|
|
2461
|
+
|
|
2462
|
+
.diagnostics-encode-preview[hidden] {
|
|
2463
|
+
display: none;
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
.diagnostics-encode [data-diagnostics-encode-step] {
|
|
2467
|
+
margin: 0;
|
|
2468
|
+
font-size: clamp(16px, 3.6vw, 19px);
|
|
2469
|
+
font-weight: 600;
|
|
2470
|
+
line-height: 1.4;
|
|
2471
|
+
}
|
|
@@ -126,6 +126,20 @@
|
|
|
126
126
|
"diagnosticsLiveSummary": "Checks one live view, snapshot, or talkback problem.",
|
|
127
127
|
"diagnosticsMissingEvidence": "Some details could not be captured. You can still download the diagnostics file.",
|
|
128
128
|
"diagnosticsNothingRecorded": "Nothing was recorded. Reproduce the problem before finishing, or start another capture.",
|
|
129
|
+
"diagnosticsEncodeCameras": "Which cameras show no picture in the Home app?",
|
|
130
|
+
"diagnosticsEncodeStart": "Start the capture",
|
|
131
|
+
"diagnosticsEncodeKeepOpen": "Keep this page open until every attempt is done.",
|
|
132
|
+
"diagnosticsEncodeNotListed": "Not in the list",
|
|
133
|
+
"diagnosticsEncodePreview": "First, the live video of {camera} plays below, straight from the camera. Do you see it?",
|
|
134
|
+
"diagnosticsEncodeNoVideo": "No camera showed its video here, so there is nothing to try in the Home app. Press finish to get the file.",
|
|
135
|
+
"diagnosticsEncodeOpen": "In the Home app, open the live view of {camera}. Attempt {attempt} of {attempts}. Close it after about 20 seconds, or as soon as the picture shows.",
|
|
136
|
+
"diagnosticsEncodeWatching": "{camera} is streaming, attempt {attempt} of {attempts}. Close the live view after about 20 seconds, or as soon as the picture shows.",
|
|
137
|
+
"diagnosticsEncodeAsk": "Attempt {attempt} of {attempts} on {camera} ended. Did you see the picture?",
|
|
138
|
+
"diagnosticsEncodeSeen": "Yes, I saw it",
|
|
139
|
+
"diagnosticsEncodeNotSeen": "No picture",
|
|
140
|
+
"diagnosticsEncodeWrongCamera": "That is not one of the cameras you chose. Close it and open {camera}.",
|
|
141
|
+
"diagnosticsEncodeReminder": "Nothing has started for a few minutes: open the live view in the Home app.",
|
|
142
|
+
"diagnosticsEncodeDone": "Every attempt is done. Press finish to get the file.",
|
|
129
143
|
"diagnosticsNowFinish": "It happened — finish",
|
|
130
144
|
"diagnosticsOpenIssue": "Open a new GitHub issue",
|
|
131
145
|
"diagnosticsOtherAction": "Try to make the problem happen and note what you see. Once it has happened, come back here and press finish; until then, leave the capture running.",
|
|
@@ -297,5 +311,6 @@
|
|
|
297
311
|
"wizardEufyHelp": "Sent to the camera itself, the same settings as in the eufy app.",
|
|
298
312
|
"wizardMapLabel": "Your devices",
|
|
299
313
|
"wizardMapBase": "HomeBase",
|
|
300
|
-
"wizardMapStandalone": "Standalone"
|
|
314
|
+
"wizardMapStandalone": "Standalone",
|
|
315
|
+
"diagnosticsBack": "Back"
|
|
301
316
|
}
|
|
@@ -126,6 +126,20 @@
|
|
|
126
126
|
"diagnosticsLiveSummary": "Vérifie un problème de vue en direct, d’instantané ou d’audio bidirectionnel.",
|
|
127
127
|
"diagnosticsMissingEvidence": "Certains détails n’ont pas pu être capturés. Vous pouvez tout de même télécharger le fichier de diagnostic.",
|
|
128
128
|
"diagnosticsNothingRecorded": "Rien n’a été enregistré. Reproduisez le problème avant de terminer, ou lancez une nouvelle capture.",
|
|
129
|
+
"diagnosticsEncodeCameras": "Quelles caméras n’affichent pas d’image dans l’app Maison ?",
|
|
130
|
+
"diagnosticsEncodeStart": "Démarrer la capture",
|
|
131
|
+
"diagnosticsEncodeKeepOpen": "Gardez cette page ouverte jusqu’à la fin de tous les essais.",
|
|
132
|
+
"diagnosticsEncodeNotListed": "Pas dans la liste",
|
|
133
|
+
"diagnosticsEncodePreview": "D’abord, la vidéo en direct de {camera} s’affiche ci-dessous, directement depuis la caméra. La voyez-vous ?",
|
|
134
|
+
"diagnosticsEncodeNoVideo": "Aucune caméra n’a affiché sa vidéo ici, il n’y a donc rien à essayer dans l’app Maison. Appuyez sur terminer pour obtenir le fichier.",
|
|
135
|
+
"diagnosticsEncodeOpen": "Dans l’app Maison, ouvrez la vue en direct de {camera}. Essai {attempt} sur {attempts}. Fermez-la après environ 20 secondes, ou dès que l’image s’affiche.",
|
|
136
|
+
"diagnosticsEncodeWatching": "{camera} diffuse, essai {attempt} sur {attempts}. Fermez la vue en direct après environ 20 secondes, ou dès que l’image s’affiche.",
|
|
137
|
+
"diagnosticsEncodeAsk": "L’essai {attempt} sur {attempts} de {camera} est terminé. Avez-vous vu l’image ?",
|
|
138
|
+
"diagnosticsEncodeSeen": "Oui, je l’ai vue",
|
|
139
|
+
"diagnosticsEncodeNotSeen": "Pas d’image",
|
|
140
|
+
"diagnosticsEncodeWrongCamera": "Ce n’est pas une des caméras choisies. Fermez-la et ouvrez {camera}.",
|
|
141
|
+
"diagnosticsEncodeReminder": "Rien n’a démarré depuis quelques minutes : ouvrez la vue en direct dans l’app Maison.",
|
|
142
|
+
"diagnosticsEncodeDone": "Tous les essais sont faits. Appuyez sur terminer pour obtenir le fichier.",
|
|
129
143
|
"diagnosticsNowFinish": "C’est arrivé — terminer",
|
|
130
144
|
"diagnosticsOpenIssue": "Ouvrir un nouveau ticket GitHub",
|
|
131
145
|
"diagnosticsOtherAction": "Essayez de faire survenir le problème et notez ce que vous voyez. Une fois qu’il s’est produit, revenez ici et appuyez sur terminer ; d’ici là, laissez la capture en cours.",
|
|
@@ -297,5 +311,6 @@
|
|
|
297
311
|
"wizardEufyHelp": "Envoyé à la caméra elle-même, les mêmes réglages que dans l’app eufy.",
|
|
298
312
|
"wizardMapLabel": "Vos appareils",
|
|
299
313
|
"wizardMapBase": "HomeBase",
|
|
300
|
-
"wizardMapStandalone": "Autonomes"
|
|
314
|
+
"wizardMapStandalone": "Autonomes",
|
|
315
|
+
"diagnosticsBack": "Retour"
|
|
301
316
|
}
|
|
@@ -362,17 +362,38 @@
|
|
|
362
362
|
<small data-i18n="diagnosticsOtherSummary"></small>
|
|
363
363
|
</button>
|
|
364
364
|
</div>
|
|
365
|
+
<div class="diagnostics-cameras" data-diagnostics-cameras hidden>
|
|
366
|
+
<h3 id="diagnostics-cameras-heading" data-i18n="diagnosticsEncodeCameras"></h3>
|
|
367
|
+
<div
|
|
368
|
+
class="diagnostics-tiles diagnostics-camera-tiles"
|
|
369
|
+
role="group"
|
|
370
|
+
aria-labelledby="diagnostics-cameras-heading"
|
|
371
|
+
data-diagnostics-camera-list
|
|
372
|
+
></div>
|
|
373
|
+
<div class="diagnostics-actions">
|
|
374
|
+
<button type="button" data-diagnostics-cameras-back data-i18n="diagnosticsBack"></button>
|
|
375
|
+
<button type="button" data-diagnostics-cameras-start data-i18n="diagnosticsEncodeStart"></button>
|
|
376
|
+
</div>
|
|
377
|
+
</div>
|
|
365
378
|
</div>
|
|
366
379
|
</div>
|
|
367
380
|
<div class="diagnostics-guidance diagnostics-surface" data-diagnostics-guidance hidden>
|
|
368
381
|
<h3 tabindex="-1" data-diagnostics-phase-title></h3>
|
|
382
|
+
<div class="diagnostics-encode" data-diagnostics-encode hidden>
|
|
383
|
+
<p aria-live="polite" data-diagnostics-encode-step></p>
|
|
384
|
+
<img class="diagnostics-encode-preview" alt="" data-diagnostics-encode-preview hidden />
|
|
385
|
+
<div class="diagnostics-actions" data-diagnostics-encode-answer hidden>
|
|
386
|
+
<button type="button" data-encode-answer="live-picture-seen" data-i18n="diagnosticsEncodeSeen"></button>
|
|
387
|
+
<button type="button" data-encode-answer="live-picture-not-seen" data-i18n="diagnosticsEncodeNotSeen"></button>
|
|
388
|
+
</div>
|
|
389
|
+
</div>
|
|
369
390
|
<div>
|
|
370
391
|
<span class="guidance-label" data-i18n="diagnosticsActionLabel"></span>
|
|
371
392
|
<p data-diagnostics-guidance-action></p>
|
|
372
393
|
</div>
|
|
373
394
|
<div class="diagnostics-actions" data-diagnostics-actions hidden>
|
|
395
|
+
<button type="button" data-diagnostics-cancel data-i18n="diagnosticsCancel"></button>
|
|
374
396
|
<button type="button" data-diagnostics-reproduction disabled data-i18n="diagnosticsNowFinish"></button>
|
|
375
|
-
<button type="button" class="diagnostics-quiet-action" data-diagnostics-cancel data-i18n="diagnosticsCancel"></button>
|
|
376
397
|
</div>
|
|
377
398
|
<p class="diagnostics-note" data-diagnostics-capture-note></p>
|
|
378
399
|
</div>
|
|
@@ -57,6 +57,13 @@ const diagnosticsGuidance = document.querySelector('[data-diagnostics-guidance]'
|
|
|
57
57
|
const diagnosticsPhaseTitle = document.querySelector('[data-diagnostics-phase-title]');
|
|
58
58
|
const diagnosticsGuidanceAction = document.querySelector('[data-diagnostics-guidance-action]');
|
|
59
59
|
const diagnosticsCaptureNote = document.querySelector('[data-diagnostics-capture-note]');
|
|
60
|
+
const diagnosticsCameras = document.querySelector('[data-diagnostics-cameras]');
|
|
61
|
+
const diagnosticsCameraList = document.querySelector('[data-diagnostics-camera-list]');
|
|
62
|
+
const diagnosticsCamerasStart = document.querySelector('[data-diagnostics-cameras-start]');
|
|
63
|
+
const diagnosticsEncode = document.querySelector('[data-diagnostics-encode]');
|
|
64
|
+
const diagnosticsEncodeStep = document.querySelector('[data-diagnostics-encode-step]');
|
|
65
|
+
const diagnosticsEncodeAnswer = document.querySelector('[data-diagnostics-encode-answer]');
|
|
66
|
+
const diagnosticsEncodePreview = document.querySelector('[data-diagnostics-encode-preview]');
|
|
60
67
|
const diagnosticsHandoff = document.querySelector('[data-diagnostics-handoff]');
|
|
61
68
|
const diagnosticsHandoffNote = document.querySelector('[data-diagnostics-handoff-note]');
|
|
62
69
|
const diagnosticsResultStatus = document.querySelector('[data-diagnostics-result-status]');
|
|
@@ -343,9 +350,118 @@ function renderDiagnostics(state) {
|
|
|
343
350
|
});
|
|
344
351
|
diagnosticsCaptureNote.textContent = (messages.diagnosticsCaptureKeepsRunning ?? '').replace('{time}', stopsAt);
|
|
345
352
|
}
|
|
353
|
+
renderLiveEncode(state);
|
|
346
354
|
diagnosticsStatus.textContent = '';
|
|
347
355
|
}
|
|
348
356
|
|
|
357
|
+
let liveEncodePoll;
|
|
358
|
+
/** How many live starts the guided encoder attempts had recorded, and when that last changed. */
|
|
359
|
+
let liveEncodeProgress = { starts: -1, at: 0 };
|
|
360
|
+
|
|
361
|
+
/** A guided encoder message with its `{camera}`, `{attempt}` and `{attempts}` filled. */
|
|
362
|
+
function liveEncodeText(key, values) {
|
|
363
|
+
return Object.entries(values).reduce((text, [name, value]) => text.replace(`{${name}}`, value), messages[key] ?? '');
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Walks a reporter through the guided encoder attempts of a live-media capture that named cameras: which camera to
|
|
368
|
+
* open next and which attempt it is, read back from the starts the capture recorded; a camera it did not name; a
|
|
369
|
+
* reminder after three minutes without a start; the picture question once an attempt ended; and finishing once
|
|
370
|
+
* every camera made its attempts. Polls the capture's status while the panel shows it.
|
|
371
|
+
*/
|
|
372
|
+
function renderLiveEncode(state) {
|
|
373
|
+
clearTimeout(liveEncodePoll);
|
|
374
|
+
const live = state.status === 'reproducing' && !diagnosticsPanel.hidden ? state.liveEncode : undefined;
|
|
375
|
+
diagnosticsEncode.hidden = !live;
|
|
376
|
+
diagnosticsReproduction.textContent = messages[live ? 'wizardFinish' : 'diagnosticsNowFinish'] ?? '';
|
|
377
|
+
diagnosticsReproduction.hidden = Boolean(live);
|
|
378
|
+
const cameras = live ? state.affectedDevices : [];
|
|
379
|
+
const previewing = live && live.previews.length < cameras.length ? cameras[live.previews.length] : undefined;
|
|
380
|
+
previewLiveEncode(previewing);
|
|
381
|
+
if (!live) return;
|
|
382
|
+
diagnosticsCaptureNote.textContent = messages.diagnosticsEncodeKeepOpen ?? '';
|
|
383
|
+
liveEncodePoll = setTimeout(() => {
|
|
384
|
+
requestWithinDeadline('/diagnostics/status', undefined, 12000).then(renderDiagnostics, () =>
|
|
385
|
+
renderLiveEncode(diagnosticsState),
|
|
386
|
+
);
|
|
387
|
+
}, 3000);
|
|
388
|
+
const name = (index) => dashboardDevices.find(({ serial }) => serial === cameras[index])?.name ?? `#${index + 1}`;
|
|
389
|
+
if (previewing) {
|
|
390
|
+
const text = liveEncodeText('diagnosticsEncodePreview', { camera: name(live.previews.length) });
|
|
391
|
+
if (diagnosticsEncodeStep.textContent !== text) diagnosticsEncodeStep.textContent = text;
|
|
392
|
+
diagnosticsEncodeAnswer.hidden = false;
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const attempted = live.starts.filter(({ variant }) => variant !== undefined);
|
|
396
|
+
const made = cameras.map((_, index) =>
|
|
397
|
+
live.previews[index] ? attempted.filter(({ camera }) => camera === index).length : live.attempts,
|
|
398
|
+
);
|
|
399
|
+
const pending = attempted[live.answers];
|
|
400
|
+
const latest = live.starts.at(-1);
|
|
401
|
+
if (live.starts.length !== liveEncodeProgress.starts) liveEncodeProgress = { starts: live.starts.length, at: Date.now() };
|
|
402
|
+
const next = made.findIndex((count) => count < live.attempts);
|
|
403
|
+
const values = { attempts: live.attempts };
|
|
404
|
+
let text;
|
|
405
|
+
if (pending) {
|
|
406
|
+
Object.assign(values, { camera: name(pending.camera), attempt: pending.variant + 1 });
|
|
407
|
+
text = liveEncodeText(pending.state === 'ended' ? 'diagnosticsEncodeAsk' : 'diagnosticsEncodeWatching', values);
|
|
408
|
+
} else if (latest && latest.camera === undefined && latest.state !== 'ended') {
|
|
409
|
+
text = liveEncodeText('diagnosticsEncodeWrongCamera', { camera: name(Math.max(next, 0)) });
|
|
410
|
+
} else if (next < 0) {
|
|
411
|
+
diagnosticsReproduction.hidden = false;
|
|
412
|
+
text = messages[live.previews.some(Boolean) ? 'diagnosticsEncodeDone' : 'diagnosticsEncodeNoVideo'] ?? '';
|
|
413
|
+
} else {
|
|
414
|
+
text = liveEncodeText('diagnosticsEncodeOpen', { ...values, camera: name(next), attempt: made[next] + 1 });
|
|
415
|
+
if (Date.now() - liveEncodeProgress.at > 180000) text += ` ${messages.diagnosticsEncodeReminder ?? ''}`;
|
|
416
|
+
}
|
|
417
|
+
if (diagnosticsEncodeStep.textContent !== text) diagnosticsEncodeStep.textContent = text;
|
|
418
|
+
diagnosticsEncodeAnswer.hidden = pending?.state !== 'ended';
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/** The camera whose own video the page shows before its attempts, so the reporter can say whether it plays at all. */
|
|
422
|
+
let liveEncodePreviewSerial;
|
|
423
|
+
|
|
424
|
+
/** Shows `serial`'s own video in the guided capture, stopping any other camera's first; nothing stops it. */
|
|
425
|
+
function previewLiveEncode(serial) {
|
|
426
|
+
if (serial === liveEncodePreviewSerial) return;
|
|
427
|
+
if (liveEncodePreviewSerial) void requestWithinDeadline('/device/live/stop', {}, 12000).catch(() => undefined);
|
|
428
|
+
liveEncodePreviewSerial = serial;
|
|
429
|
+
diagnosticsEncodePreview.src = '';
|
|
430
|
+
diagnosticsEncodePreview.hidden = !serial;
|
|
431
|
+
if (!serial) return;
|
|
432
|
+
const config = configuredBlock() ?? {};
|
|
433
|
+
const own = config.entityPreferences?.[serial] ?? {};
|
|
434
|
+
const adaptation = {
|
|
435
|
+
ask: 'wifi',
|
|
436
|
+
smallVideoPackets: config.smallVideoPackets === true,
|
|
437
|
+
liveVideoPassthrough: (own.liveVideoPassthrough ?? config.liveVideoPassthrough) === true,
|
|
438
|
+
hardwareVideoEncoder: config.hardwareVideoEncoder !== false,
|
|
439
|
+
ignoreHomeBitRate: (own.ignoreHomeBitRate ?? config.ignoreHomeBitRate) === true,
|
|
440
|
+
};
|
|
441
|
+
void requestWithinDeadline('/device/live/start', { serial, adaptation }, 12000).catch(() => undefined);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
homebridge.addEventListener('device-live', (event) => {
|
|
445
|
+
if (!event.data?.image || event.data.serial !== liveEncodePreviewSerial || event.data.side === 'homekit') return;
|
|
446
|
+
diagnosticsEncodePreview.src = `data:image/jpeg;base64,${event.data.image}`;
|
|
447
|
+
diagnosticsEncodePreview.hidden = false;
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
for (const answer of document.querySelectorAll('[data-encode-answer]')) {
|
|
451
|
+
answer.addEventListener('click', async () => {
|
|
452
|
+
diagnosticsEncodeAnswer.hidden = true;
|
|
453
|
+
const event = liveEncodePreviewSerial
|
|
454
|
+
? answer.dataset.encodeAnswer.replace('picture', 'preview')
|
|
455
|
+
: answer.dataset.encodeAnswer;
|
|
456
|
+
try {
|
|
457
|
+
await requestWithinDeadline('/diagnostics/ui-event', { event }, 12000);
|
|
458
|
+
renderDiagnostics(await requestWithinDeadline('/diagnostics/status', undefined, 12000));
|
|
459
|
+
} catch {
|
|
460
|
+
diagnosticsStatus.textContent = messages.diagnosticsFailed ?? '';
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
|
|
349
465
|
/** Whether a finished capture holds no record of any log it selected, so its file carries nothing to diagnose. */
|
|
350
466
|
function isNothingRecorded(state) {
|
|
351
467
|
return state.status === 'complete' && state.selectedEvidence?.length > 0 &&
|
|
@@ -469,10 +585,15 @@ async function settleDiagnostics() {
|
|
|
469
585
|
* Captures the area picked. The area is the only answer a capture needs, so the pick opens the session and starts
|
|
470
586
|
* it in one go.
|
|
471
587
|
*/
|
|
472
|
-
async function startDiagnosticsCapture(profile) {
|
|
588
|
+
async function startDiagnosticsCapture(profile, affectedDevices) {
|
|
473
589
|
for (const tile of diagnosticsTiles) tile.disabled = true;
|
|
590
|
+
diagnosticsCameras.hidden = true;
|
|
474
591
|
try {
|
|
475
|
-
await requestWithinDeadline(
|
|
592
|
+
await requestWithinDeadline(
|
|
593
|
+
'/diagnostics/authorize',
|
|
594
|
+
affectedDevices?.length ? { profile, reproductionMode: 'now', affectedDevices } : { profile },
|
|
595
|
+
12000,
|
|
596
|
+
);
|
|
476
597
|
const state = await requestWithinDeadline('/diagnostics/reproduction/start', undefined, 12000);
|
|
477
598
|
renderDiagnostics(state);
|
|
478
599
|
if (isDashboardUiReproducing(state)) {
|
|
@@ -488,10 +609,56 @@ async function startDiagnosticsCapture(profile) {
|
|
|
488
609
|
}
|
|
489
610
|
}
|
|
490
611
|
|
|
612
|
+
/**
|
|
613
|
+
* A live-media capture first asks which cameras show no picture, each of which then makes the guided encoder
|
|
614
|
+
* attempts. The last tile, a camera not in the list, excludes the others and captures the area as any other; the
|
|
615
|
+
* capture starts once a tile is picked.
|
|
616
|
+
*/
|
|
491
617
|
for (const tile of diagnosticsTiles) {
|
|
492
|
-
tile.addEventListener('click', () =>
|
|
618
|
+
tile.addEventListener('click', () => {
|
|
619
|
+
const cameras = dashboardDevices.filter((device) => device.deviceClass === 'camera' && !device.diagnosticOnly);
|
|
620
|
+
if (tile.dataset.diagnosticsTile !== 'live-media' || cameras.length === 0) {
|
|
621
|
+
return startDiagnosticsCapture(tile.dataset.diagnosticsTile);
|
|
622
|
+
}
|
|
623
|
+
const choices = [...cameras, { serial: '', name: messages.diagnosticsEncodeNotListed ?? '' }].map((camera) => {
|
|
624
|
+
const choice = Object.assign(document.createElement('button'), { type: 'button', textContent: camera.name });
|
|
625
|
+
choice.dataset.serial = camera.serial;
|
|
626
|
+
choice.setAttribute('aria-pressed', 'false');
|
|
627
|
+
return choice;
|
|
628
|
+
});
|
|
629
|
+
for (const choice of choices) {
|
|
630
|
+
choice.addEventListener('click', () => {
|
|
631
|
+
const pressed = choice.getAttribute('aria-pressed') !== 'true';
|
|
632
|
+
for (const other of choices) {
|
|
633
|
+
if (other === choice) other.setAttribute('aria-pressed', String(pressed));
|
|
634
|
+
else if (pressed && (choice.dataset.serial === '' || other.dataset.serial === '')) {
|
|
635
|
+
other.setAttribute('aria-pressed', 'false');
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
diagnosticsCamerasStart.disabled = !choices.some((each) => each.getAttribute('aria-pressed') === 'true');
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
diagnosticsCameraList.replaceChildren(...choices);
|
|
642
|
+
diagnosticsCamerasStart.disabled = true;
|
|
643
|
+
diagnosticsCameras.hidden = false;
|
|
644
|
+
choices[0].focus?.();
|
|
645
|
+
});
|
|
493
646
|
}
|
|
494
647
|
|
|
648
|
+
diagnosticsCamerasStart.addEventListener('click', () =>
|
|
649
|
+
startDiagnosticsCapture(
|
|
650
|
+
'live-media',
|
|
651
|
+
[...diagnosticsCameraList.querySelectorAll('[aria-pressed="true"]')]
|
|
652
|
+
.map((tile) => tile.dataset.serial)
|
|
653
|
+
.filter(Boolean),
|
|
654
|
+
),
|
|
655
|
+
);
|
|
656
|
+
|
|
657
|
+
document.querySelector('[data-diagnostics-cameras-back]').addEventListener('click', () => {
|
|
658
|
+
diagnosticsCameras.hidden = true;
|
|
659
|
+
diagnosticsQuestionText.focus?.();
|
|
660
|
+
});
|
|
661
|
+
|
|
495
662
|
diagnosticsStartAnother.addEventListener('click', endDiagnosticsCase);
|
|
496
663
|
/** Escape leaves the archive dialog only once its file is downloaded, and leaving it finishes the session. */
|
|
497
664
|
diagnosticsResult.addEventListener('cancel', (event) => {
|
package/package.json
CHANGED