@homebridge-plugins/homebridge-eufy-security 5.0.0-beta.4 → 5.0.0-beta.41

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.
Files changed (121) hide show
  1. package/CONTRIBUTING.md +9 -17
  2. package/config.schema.json +60 -0
  3. package/dist/account/ownership.js +16 -16
  4. package/dist/account/ownership.js.map +1 -1
  5. package/dist/account/persistence.js +24 -74
  6. package/dist/account/persistence.js.map +1 -1
  7. package/dist/account/temporary-authentication.js +5 -3
  8. package/dist/account/temporary-authentication.js.map +1 -1
  9. package/dist/configuration.js +50 -13
  10. package/dist/configuration.js.map +1 -1
  11. package/dist/device/member-evidence.js +11 -4
  12. package/dist/device/member-evidence.js.map +1 -1
  13. package/dist/device/member-trust.js +14 -32
  14. package/dist/device/member-trust.js.map +1 -1
  15. package/dist/device/snapshot.js +6 -18
  16. package/dist/device/snapshot.js.map +1 -1
  17. package/dist/diagnostics.js +966 -337
  18. package/dist/diagnostics.js.map +1 -1
  19. package/dist/homekit/adapter.js +4 -1
  20. package/dist/homekit/adapter.js.map +1 -1
  21. package/dist/homekit/adapters/battery.js +3 -3
  22. package/dist/homekit/adapters/battery.js.map +1 -1
  23. package/dist/homekit/adapters/camera-controls.js +15 -37
  24. package/dist/homekit/adapters/camera-controls.js.map +1 -1
  25. package/dist/homekit/adapters/camera-streaming.js +74 -48
  26. package/dist/homekit/adapters/camera-streaming.js.map +1 -1
  27. package/dist/homekit/adapters/contact.js +5 -5
  28. package/dist/homekit/adapters/contact.js.map +1 -1
  29. package/dist/homekit/adapters/doorbell.js +3 -15
  30. package/dist/homekit/adapters/doorbell.js.map +1 -1
  31. package/dist/homekit/adapters/lock.js +72 -221
  32. package/dist/homekit/adapters/lock.js.map +1 -1
  33. package/dist/homekit/adapters/motion.js +3 -3
  34. package/dist/homekit/adapters/motion.js.map +1 -1
  35. package/dist/homekit/adapters/package-sensor.js +63 -0
  36. package/dist/homekit/adapters/package-sensor.js.map +1 -0
  37. package/dist/homekit/adapters/registry.js +2 -0
  38. package/dist/homekit/adapters/registry.js.map +1 -1
  39. package/dist/homekit/adapters/security-system.js +106 -250
  40. package/dist/homekit/adapters/security-system.js.map +1 -1
  41. package/dist/homekit/adapters/siren.js +5 -33
  42. package/dist/homekit/adapters/siren.js.map +1 -1
  43. package/dist/homekit/adapters/smart-light.js +19 -217
  44. package/dist/homekit/adapters/smart-light.js.map +1 -1
  45. package/dist/homekit/coverage-matrix.js +8 -67
  46. package/dist/homekit/coverage-matrix.js.map +1 -1
  47. package/dist/homekit/device-control.js +249 -13
  48. package/dist/homekit/device-control.js.map +1 -1
  49. package/dist/homekit/reconciler.js +25 -9
  50. package/dist/homekit/reconciler.js.map +1 -1
  51. package/dist/media/last-successful-image.js +8 -23
  52. package/dist/media/last-successful-image.js.map +1 -1
  53. package/dist/media/live-preview.js +217 -0
  54. package/dist/media/live-preview.js.map +1 -0
  55. package/dist/media/live-stream.js +689 -160
  56. package/dist/media/live-stream.js.map +1 -1
  57. package/dist/media/recording.js +41 -118
  58. package/dist/media/recording.js.map +1 -1
  59. package/dist/media/snapshot.js +22 -17
  60. package/dist/media/snapshot.js.map +1 -1
  61. package/dist/media/station-live-sessions.js +40 -51
  62. package/dist/media/station-live-sessions.js.map +1 -1
  63. package/dist/platform.js +61 -10
  64. package/dist/platform.js.map +1 -1
  65. package/dist/runtime/channel.js +227 -40
  66. package/dist/runtime/channel.js.map +1 -1
  67. package/dist/runtime/device-settings.js +88 -0
  68. package/dist/runtime/device-settings.js.map +1 -0
  69. package/dist/runtime/owner.js +30 -5
  70. package/dist/runtime/owner.js.map +1 -1
  71. package/dist/runtime/sdk-client.js +21 -17
  72. package/dist/runtime/sdk-client.js.map +1 -1
  73. package/dist/runtime/tracker.js +8 -38
  74. package/dist/runtime/tracker.js.map +1 -1
  75. package/dist/storage.js +1 -1
  76. package/dist/storage.js.map +1 -1
  77. package/dist/ui/dashboard.js +36 -16
  78. package/dist/ui/dashboard.js.map +1 -1
  79. package/dist/ui/runtime-channel-client.js +155 -184
  80. package/dist/ui/runtime-channel-client.js.map +1 -1
  81. package/dist/ui/server.js +94 -41
  82. package/dist/ui/server.js.map +1 -1
  83. package/homebridge-ui/public/app.css +531 -239
  84. package/homebridge-ui/public/assets/icons/auto_fix_high.svg +1 -0
  85. package/homebridge-ui/public/assets/icons/battery_0.svg +1 -0
  86. package/homebridge-ui/public/assets/icons/battery_1.svg +1 -0
  87. package/homebridge-ui/public/assets/icons/battery_2.svg +1 -0
  88. package/homebridge-ui/public/assets/icons/battery_3.svg +1 -0
  89. package/homebridge-ui/public/assets/icons/battery_4.svg +1 -0
  90. package/homebridge-ui/public/assets/icons/battery_5.svg +1 -0
  91. package/homebridge-ui/public/assets/icons/battery_6.svg +1 -0
  92. package/homebridge-ui/public/assets/icons/battery_full.svg +1 -0
  93. package/homebridge-ui/public/assets/icons/contact_support.svg +1 -0
  94. package/homebridge-ui/public/assets/icons/delete.svg +1 -0
  95. package/homebridge-ui/public/assets/icons/download.svg +1 -0
  96. package/homebridge-ui/public/assets/icons/extension_off.svg +1 -0
  97. package/homebridge-ui/public/assets/icons/info.svg +1 -0
  98. package/homebridge-ui/public/assets/icons/key_off.svg +1 -0
  99. package/homebridge-ui/public/assets/icons/keyboard_arrow_left.svg +1 -0
  100. package/homebridge-ui/public/assets/icons/keyboard_arrow_right.svg +1 -0
  101. package/homebridge-ui/public/assets/icons/keyboard_double_arrow_left.svg +1 -0
  102. package/homebridge-ui/public/assets/icons/keyboard_double_arrow_right.svg +1 -0
  103. package/homebridge-ui/public/assets/icons/movie_off.svg +1 -0
  104. package/homebridge-ui/public/assets/icons/play_arrow.svg +1 -0
  105. package/homebridge-ui/public/assets/icons/refresh.svg +1 -0
  106. package/homebridge-ui/public/assets/icons/satellite_alt.svg +1 -0
  107. package/homebridge-ui/public/assets/icons/search_off.svg +1 -0
  108. package/homebridge-ui/public/assets/icons/sensors_off.svg +1 -0
  109. package/homebridge-ui/public/assets/icons/settings_photo_camera.svg +1 -0
  110. package/homebridge-ui/public/assets/icons/solar_power.svg +1 -0
  111. package/homebridge-ui/public/assets/icons/stop.svg +1 -0
  112. package/homebridge-ui/public/assets/icons/videocam_off.svg +1 -0
  113. package/homebridge-ui/public/i18n/en.json +161 -82
  114. package/homebridge-ui/public/i18n/fr.json +162 -83
  115. package/homebridge-ui/public/index.html +224 -96
  116. package/homebridge-ui/public/js/app.js +821 -435
  117. package/homebridge-ui/public/js/dashboard.js +148 -31
  118. package/i18n/runtime/en.json +10 -3
  119. package/package.json +10 -11
  120. package/homebridge-ui/public/js/legacy-settings.js +0 -37
  121. package/homebridge-ui/public/js/profile-wizard.js +0 -61
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="m800-680-38-82-82-38 82-38 38-82 38 82 82 38-82 38-38 82Zm-460 0-38-82-82-38 82-38 38-82 38 82 82 38-82 38-38 82Zm460 460-38-82-82-38 82-38 38-82 38 82 82 38-82 38-38 82ZM204-92 92-204q-12-12-12-29t12-29l446-446q12-12 29-12t29 12l112 112q12 12 12 29t-12 29L262-92q-12 12-29 12t-29-12Zm30-84 286-288-56-56-288 286 58 58Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-80h240v-560H360v560Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-160h240v-480H360v480Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-240h240v-400H360v400Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-320h240v-320H360v320Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-400h240v-240H360v240Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-480h240v-160H360v160Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Zm40-560h240v-80H360v80Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M320-80q-17 0-28.5-11.5T280-120v-640q0-17 11.5-28.5T320-800h80v-80h160v80h80q17 0 28.5 11.5T680-760v640q0 17-11.5 28.5T640-80H320Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="m480-80-10-120h-10q-142 0-241-99t-99-241q0-142 99-241t241-99q71 0 132.5 26.5t108 73q46.5 46.5 73 108T800-540q0 75-24.5 144t-67 128q-42.5 59-101 107T480-80Zm80-146q71-60 115.5-140.5T720-540q0-109-75.5-184.5T460-800q-109 0-184.5 75.5T200-540q0 109 75.5 184.5T460-280h100v54Zm-101-95q17 0 29-12t12-29q0-17-12-29t-29-12q-17 0-29 12t-12 29q0 17 12 29t29 12Zm-29-127h60q0-30 6-42t38-44q18-18 30-39t12-45q0-51-34.5-76.5T460-720q-44 0-74 24.5T344-636l56 22q5-17 19-33.5t41-16.5q27 0 40.5 15t13.5 33q0 17-10 30.5T480-558q-35 30-42.5 47.5T430-448Zm30-65Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M200-120q-33 0-56.5-23.5T120-200v-152q48 0 84-30.5t36-77.5q0-47-36-77.5T120-568v-152q0-17 6-31.5t17-25.5l57 57v88q54 20 87 67t33 105q0 57-33 104t-87 68v88h88q21-54 68-87t104-33q57 0 104 33t68 87h88l57 57q-11 11-25.5 17t-31.5 6H568q0-48-30.5-84T460-240q-47 0-77.5 36T352-120H200Zm600-154-80-80v-86h80q8 0 14-6t6-14q0-8-6-14t-14-6h-80v-240H480v-80q0-8-6-14t-14-6q-8 0-14 6t-6 14v80h-86l-80-80h86q0-42 29-71t71-29q42 0 71 29t29 71h160q33 0 56.5 23.5T800-720v160q42 0 71 29t29 71q0 42-29 71t-71 29v86Zm-9 219L55-791l57-57 736 736-57 57ZM537-537Zm-77 77Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M790-57 488-359q-32 54-87 86.5T280-240q-100 0-170-70T40-480q0-66 32.5-121t86.5-87L57-790l57-56 732 733-56 56Zm50-543 120 120-183 183-127-126 50-37 72 54 75-74-40-40H553l-80-80h367ZM280-320q51 0 90.5-27.5T428-419l-56-56-48.5-48.5L275-572l-56-56q-44 18-71.5 57.5T120-480q0 66 47 113t113 47Zm0-80q-33 0-56.5-23.5T200-480q0-33 23.5-56.5T280-560q33 0 56.5 23.5T360-480q0 33-23.5 56.5T280-400Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M562-231 311-482l251-251 52 52-199 199 199 199-52 52Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M522-482 323-681l52-52 251 251-251 251-52-52 199-199Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M441-231 191-481l250-250 52 51-199 199 199 198-52 52Zm278 0L469-481l250-250 51 51-199 199 199 198-51 52Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M390-481 191-680l52-51 250 250-250 250-52-52 199-198Zm278 0L469-680l51-51 250 250-250 250-51-52 199-198Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800l240 240H160v320h560l80 80H160Zm711-44-71-71v-285H514L274-800h66l67 133 27 27h106l-80-160h100l80 160h120l-80-160h120q33 0 56.5 23.5T880-720v480q0 10-2 19t-7 17ZM791-55 55-791l57-57 736 736-57 57ZM446-400Zm211-18Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#ffffff"><path d="M320-200v-560l440 280-440 280Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M560-32v-80q117 0 198.5-81.5T840-392h80q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T560-32Zm0-160v-80q50 0 85-35t35-85h80q0 83-58.5 141.5T560-192ZM222-57q-15 0-30-6t-27-17L23-222q-11-12-17-27t-6-30q0-16 6-30.5T23-335l127-127q23-23 57-23.5t57 22.5l50 50 28-28-50-50q-23-23-23-56t23-56l57-57q23-23 56.5-23t56.5 23l50 50 28-28-50-50q-23-23-23-56.5t23-56.5l127-127q12-12 27-18t30-6q15 0 29.5 6t26.5 18l142 142q12 11 17.5 25.5T895-730q0 15-5.5 30T872-673L745-546q-23 23-56.5 23T632-546l-50-50-28 28 50 50q23 23 22.5 56.5T603-405l-56 56q-23 23-56.5 23T434-349l-50-50-28 28 50 50q23 23 22.5 57T405-207L278-80q-11 11-25.5 17T222-57Zm0-79 42-42-142-142-42 42 142 142Zm85-85 42-42-142-142-42 42 142 142Zm184-184 56-56-142-142-56 56 142 142Zm198-198 42-42-142-142-42 42 142 142Zm85-85 42-42-142-142-42 42 142 142ZM448-504Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M280-80q-83 0-141.5-58.5T80-280q0-83 58.5-141.5T280-480q83 0 141.5 58.5T480-280q0 83-58.5 141.5T280-80Zm544-40L568-376q-12-13-25.5-26.5T516-428q38-24 61-64t23-88q0-75-52.5-127.5T420-760q-75 0-127.5 52.5T240-580q0 6 .5 11.5T242-557q-18 2-39.5 8T164-535q-2-11-3-22t-1-23q0-109 75.5-184.5T420-840q109 0 184.5 75.5T680-580q0 43-13.5 81.5T629-428l251 252-56 56Zm-615-61 71-71 70 71 29-28-71-71 71-71-28-28-71 71-71-71-28 28 71 71-71 71 28 28Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M791-55 325-521q-2 10-3.5 20t-1.5 21q0 33 12.5 62t34.5 51l-57 57q-32-33-51-76.5T240-480q0-28 6-54t17-49l-59-59q-21 36-32.5 76.5T160-480q0 67 25 125t69 101l-57 57q-54-55-85.5-127.5T80-480q0-62 17.5-117T146-700l-91-91 57-57 736 736-57 57Zm23-205-58-58q21-36 32.5-76.5T800-480q0-67-25-125t-69-101l57-57q54 54 85.5 126.5T880-480q0 61-17.5 116.5T814-260ZM697-377l-62-62q2-10 3.5-20t1.5-21q0-33-12.5-62T593-593l57-57q32 32 51 75.5t19 94.5q0 28-6 54t-17 49Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M580-80q-25 0-42.5-17.5T520-140v-200q0-25 17.5-42.5T580-400h60l40-40h80l40 40h60q25 0 42.5 17.5T920-340v200q0 25-17.5 42.5T860-80H580Zm140-80q33 0 56.5-23.5T800-240q0-33-23.5-56.5T720-320q-33 0-56.5 23.5T640-240q0 33 23.5 56.5T720-160ZM480-480Zm2-140q-58 0-99 41t-41 99q0 48 27 84t71 50v-90q-8-8-13-20.5t-5-23.5q0-25 17.5-42.5T482-540q14 0 25 5.5t19 14.5h90q-13-44-49.5-72T482-620ZM370-80l-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-85 65H696q-1-5-2-10.5t-3-10.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q24 25 54 42t65 22v184h-70Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="m80-80 80-400h640l80 400H80Zm40-720v-80h120v80H120Zm58 640h262v-80H194l-16 80Zm67-427-57-56 85-85 57 56-85 85Zm-35 267h230v-80H226l-16 80Zm270-360q-83 0-141.5-58.5T280-880h80q0 50 35 85t85 35q50 0 85-35t35-85h80q0 83-58.5 141.5T480-680Zm0-200Zm-40 360v-120h80v120h-80Zm80 360h262l-16-80H520v80Zm0-160h230l-16-80H520v80Zm195-267-84-85 56-56 85 84-57 57Zm5-213v-80h120v80H720Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#ffffff"><path d="M240-240v-480h480v480H240Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M880-260 720-420v67l-80-80v-287H353l-80-80h367q33 0 56.5 23.5T720-720v180l160-160v440ZM822-26 26-822l56-56L878-82l-56 56ZM498-575ZM382-464ZM160-800l80 80h-80v480h480v-80l80 80q0 33-23.5 56.5T640-160H160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800Z"/></svg>
@@ -9,9 +9,19 @@
9
9
  "advancedEyebrow": "Configuration",
10
10
  "advancedFfmpegHelp": "Leave blank to use the FFmpeg executable bundled with the plugin.",
11
11
  "advancedFfmpegLabel": "Custom FFmpeg path",
12
+ "advancedLiveVideoPassthroughHelp": "Turn this on if live view never shows, or if the log says FFmpeg stopped before sending video. Live video from cameras that record H.264 is then sent as the camera recorded it, as version 4 did, instead of being converted to what the Home app asked for.",
13
+ "advancedLiveVideoPassthroughLabel": "Send camera video unchanged",
14
+ "advancedHardwareVideoEncoderHelp": "Use the computer’s video hardware: turn this off if live view stopped working after an update or looks wrong.",
15
+ "advancedHardwareVideoEncoderLabel": "Hardware video encoding",
16
+ "advancedHdLiveVideoHelp": "Turn this on if live view in the Home app looks blurry. Cameras then offer the Home app only 720p and 1080p, also on mobile data and in the camera grid, which uses more data.",
17
+ "advancedHdLiveVideoLabel": "Always HD live video",
18
+ "advancedIgnoreHomeBitRateHelp": "Turn this on if live video looks sharp for a few seconds, then blurry or blocky. Video is then converted at a constant quality close to the camera’s own, instead of the low bit rate the Home app asks for, which uses more network bandwidth.",
19
+ "advancedIgnoreHomeBitRateLabel": "Ignore the Home app’s bit rate limit",
12
20
  "advancedPollingHelp": "Use 0 to disable scheduled polling. The default is 10 minutes.",
13
21
  "advancedPollingInvalid": "Enter a whole number of minutes greater than or equal to zero.",
14
22
  "advancedPollingLabel": "Polling interval in minutes",
23
+ "advancedSmallVideoPacketsHelp": "Turn this on if the Home app keeps loading a camera but never shows the live picture. Live video is then sent in smaller network packets, as version 4 did.",
24
+ "advancedSmallVideoPacketsLabel": "Smaller live video packets",
15
25
  "advancedSaveFailed": "The advanced setting could not be saved. Try again.",
16
26
  "advancedSummary": "Change infrequent host-level options. Save the Homebridge configuration when finished.",
17
27
  "advancedTitle": "Advanced settings",
@@ -28,10 +38,21 @@
28
38
  "advancedWarmUpLabel": "Warm up camera connections",
29
39
  "advancedWarmUpRemove": "Stop warming up the selected events",
30
40
  "advancedWarmUpRemoveAll": "Stop warming up every event",
31
- "authBlocked": "Stop the active Homebridge Eufy connection before authenticating, then try again.",
41
+ "armingModesHelp": "Four HomeKit states, nine station modes. Pick what each state sets; leave one empty to keep it out of HomeKit. Night has no default.",
42
+ "armingSlotAway": "Away",
43
+ "armingSlotHome": "Home",
44
+ "armingSlotNight": "Night",
45
+ "armingSlotOff": "Off",
46
+ "attentionChooseAnother": "Diagnose a different problem",
47
+ "attentionDiagnose": "Diagnose the problem shown",
48
+ "attentionUnreachableSummary": "Homebridge Eufy cannot reach this device, so HomeKit shows it as not responding. Check that it has power and a connection, then diagnose it if it stays unreachable.",
49
+ "attentionUnreachableTitle": "{device} is unreachable",
50
+ "authCommitFailed": "Signed in, but the session could not be saved. Restart Homebridge and sign in again.",
32
51
  "authFailed": "Authentication failed. Check the account details and try again.",
52
+ "authPluginRunning": "Homebridge Eufy is using the account connection right now. Restart Homebridge, then sign in again.",
33
53
  "authReady": "Authenticate your guest account",
34
- "authSuccess": "Authentication succeeded. Restart Homebridge to start the new account connection.",
54
+ "authSaveFailed": "Signed in, but the settings could not be saved. Press Save.",
55
+ "authSuccess": "Authentication succeeded. Press Save below, then let Homebridge restart to start the new account connection.",
35
56
  "authSummary": "This temporary connection stays in the setup window and closes before your account is saved.",
36
57
  "authTimedOut": "Authentication timed out. Start again to create a fresh connection.",
37
58
  "authenticate": "Authenticate",
@@ -39,6 +60,7 @@
39
60
  "brand": "Homebridge Eufy",
40
61
  "cameraOwnArming": "This camera also appears as its own security system. It works without a HomeBase, so it keeps its own arming state rather than following one — which is why each standalone camera shows a separate security system in the Home app.",
41
62
  "captchaLabel": "Captcha answer",
63
+ "captchaRetry": "That answer was not accepted. Enter the new captcha.",
42
64
  "categoryClean": "Clean",
43
65
  "categoryLife": "Life",
44
66
  "categorySecurity": "Security",
@@ -46,13 +68,15 @@
46
68
  "closeDetails": "Close device details",
47
69
  "closeDiagnostics": "Back to devices",
48
70
  "continueAuthentication": "Continue",
71
+ "countryInvalid": "Enter a two-letter country code, such as US or FR.",
49
72
  "countryLabel": "Country code",
50
73
  "dashboardActionsLabel": "Dashboard actions",
51
74
  "dashboardAuthenticationRequiredSummary": "The saved account needs authentication before devices can reconnect.",
52
75
  "dashboardAuthenticationRequiredTitle": "Authentication required",
53
76
  "dashboardDegradedSummary": "Showing the last complete discovery while the connection recovers.",
54
77
  "dashboardDegradedTitle": "Devices from the last complete discovery",
55
- "dashboardDiagnose": "Run diagnostics",
78
+ "dashboardFailedSummary": "Homebridge Eufy stopped on an error. Restart Homebridge.",
79
+ "dashboardFailedTitle": "Homebridge Eufy stopped",
56
80
  "dashboardIncompleteSummary": "Device discovery is incomplete. Existing device information is retained until a complete discovery replaces it.",
57
81
  "dashboardIncompleteTitle": "Discovery is incomplete",
58
82
  "dashboardMissingSummary": "No device snapshot is available yet. Start or restart Homebridge to discover devices.",
@@ -62,10 +86,12 @@
62
86
  "dashboardPageTitle": "Your Eufy devices",
63
87
  "dashboardReadySummary": "These devices came from the latest complete discovery.",
64
88
  "dashboardReadyTitle": "Discovered devices",
65
- "dashboardRestartRequiredSummary": "These devices were found for the account you just signed in to. Restart Homebridge to connect them.",
89
+ "dashboardRestartRequiredSummary": "These devices were found for the account you just signed in to. Press Save below, then let Homebridge restart to connect them.",
66
90
  "dashboardRestartRequiredTitle": "Devices found",
67
91
  "dashboardStaleSummary": "The saved device snapshot is no longer current. Restart Homebridge to refresh its status.",
68
92
  "dashboardStaleTitle": "Device status is stale",
93
+ "dashboardUnreachableSummary": "The settings service did not answer. Reload this page.",
94
+ "dashboardUnreachableTitle": "Settings did not load",
69
95
  "deviceBattery": "Battery {level}%",
70
96
  "deviceStatusHidden": "Hidden from HomeKit",
71
97
  "deviceStatusOnline": "Online",
@@ -76,98 +102,49 @@
76
102
  "diagnosticNoAction": "Nothing is wrong with your setup and there is nothing here to fix. It will appear in HomeKit once its main function has a representation verified against real hardware, so reporting it only helps if you can assist with that.",
77
103
  "diagnosticOnly": "Diagnostic only",
78
104
  "diagnosticsActionLabel": "What to do",
79
- "diagnosticsArchiveCoverageGap": "{classes}: evidence older than {retainedFrom} was dropped at the archive limit, so those classes do not reach the start of the reproduction you marked. Reproduce the fault again over a shorter interval.",
80
- "diagnosticsArchiveDetail": "Technical detail",
81
- "diagnosticsArchiveExcluded": "Never included:",
82
- "diagnosticsArchiveExpires": "expires {expiresAt}",
83
- "diagnosticsArchiveExport": "Download encrypted archive",
84
- "diagnosticsArchiveFields": "fields:",
85
- "diagnosticsArchiveMode": "mode:",
86
- "diagnosticsArchiveReviewConfirm": "I have read the summary above and want to create this file.",
87
- "diagnosticsArchiveReviewIntro": "Creating the file is the next step. Below is what it never contains.",
88
- "diagnosticsArchiveTruncated": "newest records retained at the archive limit",
89
- "diagnosticsAuthorize": "Start diagnostics session",
90
- "diagnosticsAuthorized": "Ready to collect. Start when you are ready.",
91
- "diagnosticsBeforeLabel": "Before you start",
92
- "diagnosticsBestMatch": "Best match",
93
- "diagnosticsChangeAnswers": "Change answers",
94
- "diagnosticsCollectingFinishHere": "Debug diagnostics — collection is active. Finish here.",
95
- "diagnosticsComplete": "Collection complete.",
96
- "diagnosticsContinue": "Continue",
105
+ "diagnosticsArchiveDownloaded": "Diagnostics file downloaded.",
106
+ "diagnosticsArchiveHandoff": "Your browser should have saved {filename}, usually in Downloads. On the GitHub issue, write when the problem happens, what you expected, and whether it happened during this capture. Drag the file into the Diagnostics Archive box without renaming it, and check that its name appears there before submitting.",
107
+ "diagnosticsArchiveExport": "Download the diagnostics file",
108
+ "diagnosticsAttention": "Diagnostics — a problem was detected",
109
+ "diagnosticsCancel": "Cancel",
110
+ "diagnosticsCaptureKeepsRunning": "You can close this page; the capture keeps running and stops on its own on {time}.",
111
+ "diagnosticsCaptureTimedOut": "The capture stopped after 72 hours. Download what was captured.",
112
+ "diagnosticsCapturing": "Capturing",
113
+ "diagnosticsCollectingFinishHere": "Diagnostics — a capture is running. Finish it here.",
97
114
  "diagnosticsControlAction": "Use the control once, wait for the device to settle, then finish when the wrong state is visible.",
98
- "diagnosticsControlBefore": "Choose one control and make sure it is safe to operate.",
99
115
  "diagnosticsControlSummary": "Checks what happens when a HomeKit control and the device disagree.",
100
- "diagnosticsDashboardAction": "Repeat the navigation, setting change, or save attempt once, then reopen Debug diagnostics from the bug icon to finish collecting.",
101
- "diagnosticsDashboardBefore": "Open the screen where the problem occurs. Do not enter passwords or verification codes while collecting.",
116
+ "diagnosticsDashboardAction": "Repeat the navigation, setting change, or save attempt once, then reopen Diagnostics from the bug icon to finish the capture.",
102
117
  "diagnosticsDashboardSummary": "Tracks a problem in the dashboard, login, or setup screens.",
103
118
  "diagnosticsDevicesAction": "Refresh the devices or reopen the affected tile, then finish when the problem appears.",
104
- "diagnosticsDevicesBefore": "Note which accessory is missing, duplicated, or shown as the wrong type.",
105
- "diagnosticsDevicesChosen": "Continue",
106
- "diagnosticsDevicesEvery": "Select all",
107
- "diagnosticsDevicesHeading": "Which devices are affected?",
108
- "diagnosticsDevicesHint": "Tap the ones involved. Every log is collected either way — naming them tells us where to look, and saves you being asked again.",
109
119
  "diagnosticsDevicesSummary": "Checks why a HomeKit accessory is missing, duplicated, or shown as the wrong type.",
110
- "diagnosticsEndReproduction": "Issue happened: end reproduction",
111
- "diagnosticsEvidenceReady": "Collection complete.",
112
- "diagnosticsExpired": "The previous collection session has ended. Start a new one when needed.",
120
+ "diagnosticsDownloadAgain": "Download it again",
121
+ "diagnosticsEvidenceReady": "Capture finished.",
122
+ "diagnosticsExistingIssue": "Attach it to my existing GitHub issue",
113
123
  "diagnosticsEyebrow": "Support",
114
124
  "diagnosticsFailed": "The diagnostics request failed. Try again.",
115
- "diagnosticsFrequencyBack": "Back",
116
- "diagnosticsInactive": "Choose an issue profile to begin. Nothing is uploaded automatically.",
117
- "diagnosticsIntermittentAuthorized": "Ready to wait for the next occurrence.",
118
- "diagnosticsIntermittentIssueHappened": "The issue happened",
119
- "diagnosticsIntermittentReadyGuidance": "Start waiting when you are ready. Collection can stay active until the problem next occurs.",
120
- "diagnosticsIntermittentReproducing": "Collection is waiting for the issue to happen.",
121
- "diagnosticsIntermittentStartWaiting": "Start waiting",
122
- "diagnosticsIntermittentWaitingGuidance": "Collection is waiting. Return here and finish when the issue happens.",
123
- "diagnosticsIssueNeedsArchive": "Available once you have downloaded the file above.",
124
- "diagnosticsIssueOpensTab": "Opens GitHub in a new tab. You will need to attach the downloaded file there.",
125
- "diagnosticsLiveAction": "Open the live view, request one snapshot, or try talkback once, then finish when the result is visible.",
126
- "diagnosticsLiveBefore": "Choose one camera and one action to try. Video and talkback audio are never included.",
125
+ "diagnosticsLiveAction": "In the Home app, open the live view, request one snapshot, or try talkback once. If the image stays black or the problem shows, come back here and press finish. If it works, leave the capture running and try again when the problem returns.",
127
126
  "diagnosticsLiveSummary": "Checks one live view, snapshot, or talkback problem.",
128
- "diagnosticsMissingEvidence": "Collection complete. Some diagnostic details were unavailable, but you can still continue.",
129
- "diagnosticsModeIntermittent": "intermittent",
130
- "diagnosticsModeIntermittentSummary": "Collection can wait for the next occurrence.",
131
- "diagnosticsModeNow": "reproduce now",
132
- "diagnosticsModeNowSummary": "Collection will cover one reproduction now.",
133
- "diagnosticsNo": "No",
134
- "diagnosticsNowFinish": "Finish when issue reproduced",
135
- "diagnosticsOpenIssue": "Prepare GitHub issue",
136
- "diagnosticsOtherAction": "Try to make the problem happen once, note what you see, and finish promptly.",
137
- "diagnosticsOtherBefore": "Focus on one action if possible. Avoid passwords and unrelated personal information.",
138
- "diagnosticsOtherSummary": "Collects details for a problem that does not fit another choice.",
139
- "diagnosticsPrivacy": "Nothing is uploaded. Passwords, private account data, and camera media are never included.",
140
- "diagnosticsProfileChanged": "Start a new diagnostics session to use this profile.",
127
+ "diagnosticsMissingEvidence": "Some details could not be captured. You can still download the diagnostics file.",
128
+ "diagnosticsNothingRecorded": "Nothing was recorded. Reproduce the problem before finishing, or start another capture.",
129
+ "diagnosticsNowFinish": "It happened — finish",
130
+ "diagnosticsOpenIssue": "Open a new GitHub issue",
131
+ "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.",
132
+ "diagnosticsOtherSummary": "Captures details for a problem that does not fit another choice.",
133
+ "diagnosticsPrivacy": "Reporting a problem needs a GitHub account. Nothing is uploaded: the diagnostics file is encrypted, stays on your computer until you attach it to a GitHub issue yourself, and never includes passwords, private account data, or camera media.",
141
134
  "diagnosticsProfileControl": "Control or state mismatch",
142
135
  "diagnosticsProfileDashboard": "Dashboard or setup interface",
143
136
  "diagnosticsProfileDevices": "Missing or incorrect device",
144
- "diagnosticsProfileLiveMedia": "Live video, snapshot, or talkback",
145
- "diagnosticsProfileOther": "Other issue",
146
- "diagnosticsProfileRecording": "HomeKit Secure Video recording",
137
+ "diagnosticsProfileLiveMedia": "Black screen or live video problem",
138
+ "diagnosticsProfileOther": "Something else",
139
+ "diagnosticsProfileRecording": "Missing or unplayable event recording",
147
140
  "diagnosticsProfileStartup": "Startup or authentication",
148
- "diagnosticsQuestionReproduceNow": "Can you reproduce the problem now?",
149
- "diagnosticsReauthorize": "Start a new diagnostics session",
150
- "diagnosticsRecordingAction": "Trigger one event that should be recorded, wait for the recording to appear, then finish.",
151
- "diagnosticsRecordingBefore": "Confirm HomeKit Secure Video is enabled and note roughly when the event happens. Recordings are never included.",
141
+ "diagnosticsRecordingAction": "Trigger one event that should be recorded and wait a few minutes. If the recording is missing or will not play, come back here and press finish. If it plays, leave the capture running and try again when the problem returns.",
152
142
  "diagnosticsRecordingSummary": "Checks one missing or unplayable HomeKit Secure Video recording.",
153
- "diagnosticsReproducing": "Collection is active. Reproduce the problem, then finish.",
154
- "diagnosticsStartAnother": "Start another diagnostics session",
155
- "diagnosticsStartRecording": "Start recording",
156
- "diagnosticsStartReproduction": "Start reproduction",
143
+ "diagnosticsStartAnother": "Start another capture",
157
144
  "diagnosticsStartupAction": "Restart Homebridge or repeat the failed sign-in step, then return here and finish.",
158
- "diagnosticsStartupBefore": "Start collecting before a restart. Never share a password, captcha answer, or verification code.",
159
145
  "diagnosticsStartupSummary": "Checks a Homebridge startup, connection, or sign-in problem.",
160
- "diagnosticsStaysLocal": "The file is encrypted and stays on this machine. Nothing is uploaded.",
161
- "diagnosticsSummary": "Choose the problem, then collect what happens while it occurs.",
162
146
  "diagnosticsTilesHeading": "What is going wrong?",
163
- "diagnosticsTitle": "Guided diagnostics",
164
- "diagnosticsYes": "Yes",
165
- "excludedCredentials": "your eufy login and password",
166
- "excludedInternalData": "raw internal data that was never reviewed",
167
- "excludedKeys": "encryption keys",
168
- "excludedMedia": "any camera image, video or audio",
169
- "excludedSessions": "saved sessions and push registrations",
170
- "excludedTokens": "access tokens and cookies",
147
+ "diagnosticsTitle": "Diagnostics",
171
148
  "firstSetupAcknowledgement": "I have created a dedicated guest account and shared my Eufy home and devices with it.",
172
149
  "firstSetupContinue": "Continue",
173
150
  "firstSetupEyebrow": "First-time setup",
@@ -179,16 +156,79 @@
179
156
  "legacyEyebrow": "V5 migration",
180
157
  "legacySummary": "These V4 settings were intentionally discarded. They were not migrated or executed.",
181
158
  "legacyTitle": "Review discarded V4 settings",
159
+ "log.action.allowBatteryCooling": "Allow the device battery to return to a safe temperature.",
160
+ "log.action.checkCameraControl": "Check the camera in the Eufy app; this control is unavailable until it reports its state.",
161
+ "log.action.checkCameraRecording": "Check that HomeKit Secure Video is set up for this camera and that it reports motion.",
162
+ "log.action.checkCameraSnapshot": "Check that the camera is reachable and can produce an image, then open the camera again.",
163
+ "log.action.checkFfmpegPath": "FFmpeg could not be started; check the custom FFmpeg path in Advanced settings.",
164
+ "log.action.checkNetwork": "Check network access and Eufy service availability.",
165
+ "log.action.checkPhysicalArmingMode": "Check the physical security-system mode before retrying.",
166
+ "log.action.checkPhysicalLight": "Check the physical smart-light state before retrying.",
167
+ "log.action.checkPhysicalLock": "Check the physical lock state before retrying.",
168
+ "log.action.checkStation": "Check that the station or HomeBase this camera uses is powered and online, and network access between Homebridge and it, then open live view again.",
169
+ "log.action.controlTimedOut": "The device did not answer in time; use the Eufy app for this control, and attach a diagnostics file to your issue if it keeps happening.",
170
+ "log.action.enableCamera": "Turn the camera on in the Eufy app, then open live view again.",
171
+ "log.action.mapArmingMode": "Assign this mode to a HomeKit state under HomeKit guard modes in the device’s settings.",
172
+ "log.action.reduceConcurrentMedia": "Open live view again; if it keeps happening, close a camera already open or raise Cameras streaming at once in Advanced settings.",
173
+ "log.action.retryArming": "Retry the security-system control manually.",
174
+ "log.action.retryCameraControl": "Try the control again; the camera did not confirm the change.",
175
+ "log.action.retryLight": "Retry the smart-light control manually.",
176
+ "log.action.retryLiveView": "Open live view again, and check network access between Homebridge and the camera.",
177
+ "log.action.retryLiveViewNoPicture": "The camera answered but sent no picture in time. Open live view again; if it keeps happening, send a diagnostics file.",
178
+ "log.action.retryLock": "Retry the lock control manually.",
179
+ "log.action.retryRecording": "No action is needed; recording is attempted again on the next trigger.",
180
+ "log.action.retryTalkback": "Close and reopen the camera, then try speaking again.",
181
+ "log.action.checkTalkbackMicrophone": "The Home app sent no voice. Allow the Home app to use the microphone in iPhone Settings, then tap the microphone button in the live view and speak.",
182
+ "log.action.setFfmpegPath": "Set a custom FFmpeg path in Advanced settings.",
183
+ "log.homekit.armingCapabilityUnavailable": "Security-system information is unavailable",
184
+ "log.homekit.armingOperationFailed": "A security-system control failed",
185
+ "log.homekit.armingReconciliationExpired": "A security system did not confirm the requested mode",
186
+ "log.homekit.batteryCapabilityUnavailable": "Battery information is unavailable",
187
+ "log.homekit.batteryTemperatureAlert": "A device reported a battery temperature alert",
188
+ "log.homekit.cameraControlOperationFailed": "A camera control did not take effect",
189
+ "log.homekit.cameraControlsCapabilityUnavailable": "A camera control is unavailable",
190
+ "log.homekit.cameraLiveSessionFailed": "A live view ended without video",
191
+ "log.homekit.cameraLiveSessionRefused": "Live view is unavailable because the camera is turned off",
192
+ "log.homekit.cameraMediaAtCapacity": "Live view was refused because this host had reached its configured limit of cameras streaming at once",
193
+ "log.homekit.cameraRecordingFailed": "A HomeKit Secure Video recording did not complete",
194
+ "log.homekit.cameraRecordingRefused": "HomeKit Secure Video recording is unavailable because the camera is turned off",
195
+ "log.homekit.cameraRecordingUnavailable": "HomeKit Secure Video recording is unavailable for this camera",
196
+ "log.homekit.cameraSnapshotCapabilityUnavailable": "Camera snapshots are unavailable",
197
+ "log.homekit.cameraSnapshotUnavailable": "A camera image is unavailable, so a placeholder is shown",
198
+ "log.homekit.cameraStreamingCapabilityUnavailable": "Camera live view is unavailable",
199
+ "log.homekit.cameraTalkbackFailed": "Camera talkback stopped unexpectedly",
200
+ "log.homekit.cameraTalkbackUnavailable": "Camera talkback is unavailable",
201
+ "log.homekit.contactCapabilityUnavailable": "Contact sensor information is unavailable",
202
+ "log.homekit.invalidBatteryObservation": "A battery reading is invalid",
203
+ "log.homekit.invalidCameraControlObservation": "A camera control state could not be read",
204
+ "log.homekit.invalidContactObservation": "A contact sensor reading is invalid",
205
+ "log.homekit.invalidLightObservation": "A smart-light reading is invalid",
206
+ "log.homekit.invalidSirenObservation": "A siren reading is invalid",
207
+ "log.homekit.lightCapabilityUnavailable": "Smart-light information is unavailable",
208
+ "log.homekit.lightOperationFailed": "A smart-light control failed",
209
+ "log.homekit.lightReconciliationExpired": "A smart-light did not confirm the requested state",
210
+ "log.homekit.lockCapabilityUnavailable": "Lock control is unavailable",
211
+ "log.homekit.lockOperationFailed": "A lock control failed",
212
+ "log.homekit.lockReconciliationExpired": "A lock did not confirm the requested target",
213
+ "log.homekit.sirenCapabilityUnavailable": "Siren information is unavailable",
214
+ "log.homekit.unsupportedArmingMode": "A security system reported a mode Apple Home cannot represent",
215
+ "log.homekit.unusableLockAnnouncement": "A lock reported something this plugin cannot read, so its state is shown as unknown",
216
+ "log.runtime.transportDegraded": "The Eufy connection is degraded",
182
217
  "menuAdvanced": "Advanced settings",
183
- "menuDiagnostics": "Debug diagnostics",
218
+ "menuDiagnostics": "Diagnostics",
184
219
  "menuRelogin": "Relogin or replace account",
185
220
  "oneAccountSession": "One account session at a time",
186
221
  "pageTitle": "Connect your Eufy account",
187
222
  "passwordLabel": "Password",
223
+ "preferenceArmingModes": "HomeKit guard modes",
188
224
  "preferenceAudio": "HomeKit audio",
225
+ "preferenceSecuritySystem": "HomeKit security system",
189
226
  "preferenceRepresented": "Expose in HomeKit",
190
227
  "preferenceSaveFailed": "The preference could not be saved. Try again.",
191
228
  "preferenceSnapshotMode": "Snapshot mode",
229
+ "reauthAction": "Sign in again",
230
+ "reauthSummary": "Homebridge Eufy can no longer use the saved Eufy session, so your devices are not updating in HomeKit. Sign in again to reconnect them.",
231
+ "reauthTitle": "Sign-in needed",
192
232
  "representationLabel": "Exposed as:",
193
233
  "serviceCamera": "Camera",
194
234
  "serviceCameraSwitches": "Camera switches",
@@ -212,11 +252,50 @@
212
252
  "stepDiscover": "Discover",
213
253
  "trustedDeviceLabel": "Trusted-device name",
214
254
  "twoFactorLabel": "Verification code",
255
+ "twoFactorSent": "Eufy has sent you a verification code. Enter it below.",
215
256
  "updatePendingAction": "Restart now",
216
257
  "updatePendingBusy": "Restarting…",
217
258
  "updatePendingFailed": "The restart could not be started. Restart Homebridge to use the installed version.",
218
259
  "updatePendingManual": "This page shows what the running version can do. Restart Homebridge to use the version you installed.",
219
260
  "updatePendingSummary": "This page shows what the running version can do. Restart to use the version you installed.",
220
261
  "updatePendingTitle": "An update is waiting",
221
- "updatePendingVersionLabel": "Running now"
262
+ "updatePendingVersionLabel": "Running now",
263
+ "menuWizard": "Setup assistant",
264
+ "closeWizard": "Back to devices",
265
+ "wizardTitle": "Setup assistant",
266
+ "wizardProgress": "Device {current} of {total}",
267
+ "wizardRestartSummary": "Restart Homebridge to connect your cameras. This assistant opens again on its own once the plugin is running, to go through each device with you.",
268
+ "wizardFinish": "Finish",
269
+ "wizardClose": "Close",
270
+ "wizardLiveStarting": "Connecting to the camera. This can take up to 30 seconds.",
271
+ "wizardLiveFailed": "The camera did not send video. Check it is on and online, then try again.",
272
+ "wizardLiveEncoder": "{encoder} coded this video at {kbps} kbps, as HomeKit receives it.",
273
+ "wizardLiveCamera": "The camera",
274
+ "wizardLiveHomeKit": "As HomeKit receives it",
275
+ "wizardLiveAsk": "Watched on",
276
+ "wizardLiveAskWifi": "iPhone on Wi-Fi",
277
+ "wizardLiveAskCellular": "iPhone on cellular",
278
+ "wizardLiveSave": "Save for this camera",
279
+ "wizardLiveTitle": "Live video in HomeKit",
280
+ "wizardLiveThisCamera": "This camera",
281
+ "wizardLiveAllCameras": "All cameras, saved with the plugin settings",
282
+ "wizardLiveHelp": "Try a setting on the HomeKit picture above before keeping it.",
283
+ "wizardLiveUnplayable": "The video coded for HomeKit did not produce a picture, so the Home app will likely fail to show it too.",
284
+ "wizardLiveDiagnoseHelp": "A live video diagnostics capture records why, so it can be reported and fixed.",
285
+ "wizardLiveDiagnose": "Capture diagnostics",
286
+ "wizardEufySettings": "Camera settings in the eufy app",
287
+ "wizardMotionDetection": "Motion detection",
288
+ "wizardNightVision": "Night vision",
289
+ "wizardNotificationStyle": "Notification style",
290
+ "wizardSettingSending": "Sending to the camera…",
291
+ "wizardSettingSent": "Sent. The camera confirms within a few minutes.",
292
+ "wizardSettingFailed": "The camera did not take the change. Try again.",
293
+ "wizardLivePlay": "Play live video",
294
+ "wizardLiveStop": "Stop live video",
295
+ "wizardHomeKitTitle": "In the Home app",
296
+ "wizardHomeKitHelp": "What the Home app shows of this device and how it behaves there. Saved with the plugin settings.",
297
+ "wizardEufyHelp": "Sent to the camera itself, the same settings as in the eufy app.",
298
+ "wizardMapLabel": "Your devices",
299
+ "wizardMapBase": "HomeBase",
300
+ "wizardMapStandalone": "Standalone"
222
301
  }