@camera.ui/server 2.1.0 → 2.1.2

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 (384) hide show
  1. package/dist/interface/assets/{404-mKz7xfYl.js → 404-pb2fRn1r.js} +1 -1
  2. package/dist/interface/assets/{About-C3mKJiWW.js → About-eljMnDub.js} +1 -1
  3. package/dist/interface/assets/{Adminpanel-KkWHp8Mh.js → Adminpanel-BtQdiyre.js} +1 -1
  4. package/dist/interface/assets/Automation-DOiLJcU_.js +3 -0
  5. package/dist/interface/assets/AutomationImport-DflZNRBB.js +2 -0
  6. package/dist/interface/assets/AutomationStore-qF_NTNUf.js +2 -0
  7. package/dist/interface/assets/AutomationStoreDetail-CUw-jBBR.js +2 -0
  8. package/dist/interface/assets/Automations-DBjwNb3F.js +2 -0
  9. package/dist/interface/assets/Camera-BfvpjkW3.js +2 -0
  10. package/dist/interface/assets/{CameraConsole-Bj9mszzp.js → CameraConsole-CEARcJYc.js} +1 -1
  11. package/dist/interface/assets/{Cameras-BVFxn9Ef.js → Cameras-C0oHuoTR.js} +2 -2
  12. package/dist/interface/assets/Camview-DArvg940.js +1 -0
  13. package/dist/interface/assets/{Camview-DEURwPYt.css → Camview-mLCaY0ld.css} +1 -1
  14. package/dist/interface/assets/Config-Ccp5Acpv.js +2 -0
  15. package/dist/interface/assets/{ConfigActionCameraControl-B80iDDds.js → ConfigActionCameraControl-De0qb88r.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionDelay-ChhenlQV.js → ConfigActionDelay-nDK4i-AL.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionHttp-09PkDYgp.js → ConfigActionHttp-DX-vapgv.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionImageInput-FDMVc5FH.js → ConfigActionImageInput-CS7U7BsI.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionMqtt-4gLcAM0C.js → ConfigActionMqtt-82swCx_F.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionNotification-DmIQhrC2.js → ConfigActionNotification-t-1zN_1y.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionNotificationControl-Df4BdM3c.js → ConfigActionNotificationControl-jz3ez2Uq.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionOutput-CNKeWFvE.js → ConfigActionOutput-B6uJheX1.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionPlugin-CWfEabyz.js → ConfigActionPlugin-LyOIrZnv.js} +1 -1
  24. package/dist/interface/assets/ConfigActionSensor-BTqc1inw.js +1 -0
  25. package/dist/interface/assets/{ConfigActionSnapshot-CM8xar0h.js → ConfigActionSnapshot-DdPy_Ubu.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionVariable-B8tiVULt.js → ConfigActionVariable-Csf7jPOm.js} +1 -1
  27. package/dist/interface/assets/{ConfigConditionIfElse-CtF5exKE.js → ConfigConditionIfElse-BvzwZ70p.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionSensorState-B4hRgQdg.js → ConfigConditionSensorState-lI9dzHiT.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSwitch-ZhpDw8ZY.js → ConfigConditionSwitch-DJU2JC-3.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionTime-EF84vg1f.js → ConfigConditionTime-BxE2CJMA.js} +1 -1
  31. package/dist/interface/assets/{ConfigSensorValueInput-DNxw4rt3.js → ConfigSensorValueInput-DW4er753.js} +1 -1
  32. package/dist/interface/assets/{ConfigTriggerDetection-BmxUG87T.js → ConfigTriggerDetection-DpC8V8K8.js} +1 -1
  33. package/dist/interface/assets/ConfigTriggerGeofence-DTzax7bc.js +1 -0
  34. package/dist/interface/assets/{ConfigTriggerManual-t-J-HbqF.js → ConfigTriggerManual-CtjnnQb1.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerMqtt-BD1iizF-.js → ConfigTriggerMqtt-C7J22EMe.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSchedule-CBPaopJK.js → ConfigTriggerSchedule-DnYDDz3F.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSensor-CXmxhiPM.js → ConfigTriggerSensor-vhwPNmPj.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSystem-CfFnKyIn.js → ConfigTriggerSystem-D1JulYVd.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerWebhook-gqcxnQdl.js → ConfigTriggerWebhook-BrKFtq7o.js} +1 -1
  40. package/dist/interface/assets/Console-C6yUdEaM.js +1 -0
  41. package/dist/interface/assets/CuiAutomationRunsDialog-C4i7y1Re.js +1 -0
  42. package/dist/interface/assets/CuiBottomSheet-C2zU_iyj.js +1 -0
  43. package/dist/interface/assets/{CuiBottomSheet-BcDAO9At.js → CuiBottomSheet-C_1_moNo.js} +1 -1
  44. package/dist/interface/assets/{CuiCameraPipCard-C7822oZM.js → CuiCameraPipCard-CZ-oDxzy.js} +1 -1
  45. package/dist/interface/assets/CuiCameraRecordings-mY_giLEi.js +1 -0
  46. package/dist/interface/assets/CuiCameraShares-XwN5kuC7.js +1 -0
  47. package/dist/interface/assets/{CuiCameraTable-BdXITi6O.js → CuiCameraTable-BeeHLaiQ.js} +2 -2
  48. package/dist/interface/assets/CuiConsole-B7R7U9UZ.js +5 -0
  49. package/dist/interface/assets/CuiDataTable-CQhCu0px.js +1 -0
  50. package/dist/interface/assets/CuiDataTable-DbkFXZeg.css +1 -0
  51. package/dist/interface/assets/CuiLightControl-CEpcKss7.js +1 -0
  52. package/dist/interface/assets/{CuiMarkdownContent-Bjs3wRnq.js → CuiMarkdownContent-C2uBepC1.js} +1 -1
  53. package/dist/interface/assets/CuiMarkdownContent-QxLR7_qs.js +1 -0
  54. package/dist/interface/assets/CuiPluginCard-1dSDwOCf.js +2 -0
  55. package/dist/interface/assets/{CuiPluginCard-D_6UFFZW.css → CuiPluginCard-rkhmuumi.css} +1 -1
  56. package/dist/interface/assets/{CuiPluginCategoryChip-C9l5I9v3.js → CuiPluginCategoryChip-JkdbQU4X.js} +1 -1
  57. package/dist/interface/assets/CuiPluginOAuthButton-LYMFfb3v.js +2 -0
  58. package/dist/interface/assets/{CuiPluginTrustBadge-BkdNlrZ7.js → CuiPluginTrustBadge-sZF0UKMD.js} +1 -1
  59. package/dist/interface/assets/{CuiQRCode-D8CKX4s9.js → CuiQRCode-B4ysluWR.js} +1 -1
  60. package/dist/interface/assets/CuiRecordingsGrid-CkwE3jcR.js +1 -0
  61. package/dist/interface/assets/CuiSchema-DKATswRc.js +1 -0
  62. package/dist/interface/assets/{CuiTopNavbarItem-C-ZiLXkp.js → CuiTopNavbarItem-rMsWME9B.js} +1 -1
  63. package/dist/interface/assets/Faces-BeeZrFV-.js +1 -0
  64. package/dist/interface/assets/FirstSteps-DWT6Tt_T.js +1 -0
  65. package/dist/interface/assets/Instances-CJlFo8ni.js +1 -0
  66. package/dist/interface/assets/Logs-8onUmCYX.js +6 -0
  67. package/dist/interface/assets/{Menu-CvpQ9fHV.js → Menu-DP0aMICW.js} +1 -1
  68. package/dist/interface/assets/OAuthDeviceFlow-CcSkntGk.js +1 -0
  69. package/dist/interface/assets/Plugin-8dbt_8iG.js +1 -0
  70. package/dist/interface/assets/{PluginConsole-DUnPciNz.js → PluginConsole-JFcH_ZW0.js} +2 -2
  71. package/dist/interface/assets/PluginDetail-C9dR9jrw.js +2 -0
  72. package/dist/interface/assets/{PluginSchema-CQARvB5H.js → PluginSchema-Gfn_csMP.js} +1 -1
  73. package/dist/interface/assets/PluginSearch-BVAtgBZs.js +1 -0
  74. package/dist/interface/assets/PluginSearch-HEf_6CrR.js +2 -0
  75. package/dist/interface/assets/PluginUpdateProgress-DaI9bwSV.js +1 -0
  76. package/dist/interface/assets/Plugins-CQJhji6o.js +1 -0
  77. package/dist/interface/assets/Recordings-80Xd1V3L.css +1 -0
  78. package/dist/interface/assets/Recordings-AD78njIA.js +1 -0
  79. package/dist/interface/assets/SensorEdit-ono85O3c.css +1 -0
  80. package/dist/interface/assets/SensorEdit-rC02usEO.js +1 -0
  81. package/dist/interface/assets/{SensorHistory-oWCb8Kia.js → SensorHistory-2TmYLaL4.js} +1 -1
  82. package/dist/interface/assets/Sensors-CFfII3-e.css +1 -0
  83. package/dist/interface/assets/Sensors-Vwr7MYz6.js +2 -0
  84. package/dist/interface/assets/Settings-8yG5ny5r.js +1 -0
  85. package/dist/interface/assets/SettingsAccount-BBsivYFf.js +1 -0
  86. package/dist/interface/assets/SettingsAccount-CN9Xcgt-.js +1 -0
  87. package/dist/interface/assets/SettingsAppearance-Qh1cw9iX.js +1 -0
  88. package/dist/interface/assets/SettingsAppearance-WQtOksbk.js +1 -0
  89. package/dist/interface/assets/SettingsBackup-DNDDU6a1.js +1 -0
  90. package/dist/interface/assets/SettingsList-tFKUMnsB.js +1 -0
  91. package/dist/interface/assets/{SettingsMqtt-pH6KmHhv.js → SettingsMqtt-BYVV1Mew.js} +1 -1
  92. package/dist/interface/assets/SettingsNotifications-BVGmt0eF.js +2 -0
  93. package/dist/interface/assets/{SettingsPermissions-CDpVmRY2.js → SettingsPermissions-BPqDIjVt.js} +1 -1
  94. package/dist/interface/assets/SettingsRecordings-B4DDJSKe.js +1 -0
  95. package/dist/interface/assets/SettingsRemote-Bib7kXto.js +1 -0
  96. package/dist/interface/assets/SettingsSystem-DIe7CSgH.js +2 -0
  97. package/dist/interface/assets/SettingsUsers-BtT17FNe.js +1 -0
  98. package/dist/interface/assets/{Terminal-DSRLOAKR.js → Terminal-DuJHIlLe.js} +3 -3
  99. package/dist/interface/assets/{VariableInput-rbKenccv.js → VariableInput-CkXZ00Gc.js} +1 -1
  100. package/dist/interface/assets/{VariableSuggestions-DDyxhww6.js → VariableSuggestions-BD1kOG5f.js} +1 -1
  101. package/dist/interface/assets/VersionsHandler-D9sDkGXx.js +7 -0
  102. package/dist/interface/assets/{VirtualSensorCreate-_9QdFeEj.js → VirtualSensorCreate-DcwJ_w-l.js} +1 -1
  103. package/dist/interface/assets/{Workers-DmZkFylb.css → Workers-7hKMBU4w.css} +1 -1
  104. package/dist/interface/assets/Workers-fV_NEZ7U.js +2 -0
  105. package/dist/interface/assets/{account-C5mHt2Ep.js → account-CY80SLLf.js} +1 -1
  106. package/dist/interface/assets/{alert-circle-Cu_kjPlA.js → alert-circle-pDGfnZ4K.js} +1 -1
  107. package/dist/interface/assets/{alert-outline-DXHNnhoP.js → alert-outline-CeoXcnQc.js} +1 -1
  108. package/dist/interface/assets/api-Draww2tC.js +2 -0
  109. package/dist/interface/assets/{api-BijLH5JF.js → api-Mny5Elfn.js} +1 -1
  110. package/dist/interface/assets/api-eELh8KCM.css +2 -0
  111. package/dist/interface/assets/{arrow-left-DPtWmM6S.js → arrow-left-D9jDhvK5.js} +1 -1
  112. package/dist/interface/assets/{arrow-right-outline-BY1ggGA1.js → arrow-right-outline-DF7tkKYk.js} +1 -1
  113. package/dist/interface/assets/{auth-CSrkzvBq.js → auth-9_Jjlsh0.js} +1 -1
  114. package/dist/interface/assets/{automations-5YkU18M0.js → automations-BfsdbSPC.js} +1 -1
  115. package/dist/interface/assets/{back-filled-r7bN5ObT.js → back-filled-DUUGErMw.js} +1 -1
  116. package/dist/interface/assets/{bell-ring-C470qCAb.js → bell-ring-DV73JIre.js} +1 -1
  117. package/dist/interface/assets/{cameras.schema-BQ3CdtV5.js → cameras.schema-DMY4SYte.js} +1 -1
  118. package/dist/interface/assets/{cctv-BKVOVZCR.js → cctv-jy5ROx0o.js} +1 -1
  119. package/dist/interface/assets/{check-circle-Ce_sbfPZ.js → check-circle-FwoylV5-.js} +1 -1
  120. package/dist/interface/assets/{chevron-down-CjSTp091.js → chevron-down-umZ7i0mG.js} +1 -1
  121. package/dist/interface/assets/{chevron-right-B3j6hI1Q.js → chevron-right-AhqYJOFy.js} +1 -1
  122. package/dist/interface/assets/{clock-outline-BgcDXoyp.js → clock-outline-CbvOAMhO.js} +1 -1
  123. package/dist/interface/assets/{close-CQoGQHOF.js → close-CtaDF28n.js} +1 -1
  124. package/dist/interface/assets/{close-circle-DYhkXsRj.js → close-circle-FZ8IxGd4.js} +1 -1
  125. package/dist/interface/assets/{cloud-check-CVx221dJ.js → cloud-check-CFSukfAF.js} +1 -1
  126. package/dist/interface/assets/cloudHandoff-BQsDy9yp.js +1 -0
  127. package/dist/interface/assets/{config-BqiDMRVk.js → config-BZphegxi.js} +1 -1
  128. package/dist/interface/assets/{copy-yhHCVVOa.js → copy-CFA_pDRv.js} +1 -1
  129. package/dist/interface/assets/cube-scan-DEuMi23T.js +1 -0
  130. package/dist/interface/assets/{delete-xWUQUP2x.js → delete-921w_nKy.js} +1 -1
  131. package/dist/interface/assets/{deployed-code-update-CHr3gyW9.js → deployed-code-update-CYS6eKfa.js} +1 -1
  132. package/dist/interface/assets/{dist-DVb-CALh.js → dist-BwEXwXSw.js} +1 -1
  133. package/dist/interface/assets/{download-PLxvyB7s.js → download-C-LzNRmM.js} +1 -1
  134. package/dist/interface/assets/esm-B1LZs0VG.js +1 -0
  135. package/dist/interface/assets/esm-BB4SBaek.js +1 -0
  136. package/dist/interface/assets/esm-BGA8Ydne.js +1 -0
  137. package/dist/interface/assets/esm-BHI_KH7L.js +1 -0
  138. package/dist/interface/assets/esm-BQ0EuuZe.js +1 -0
  139. package/dist/interface/assets/esm-Bfb-tuKt.js +1 -0
  140. package/dist/interface/assets/esm-BzR_6ma5.js +1 -0
  141. package/dist/interface/assets/esm-CCIqNfsh.js +1 -0
  142. package/dist/interface/assets/esm-CSMN-8o1.js +1 -0
  143. package/dist/interface/assets/esm-CxWbrBxP.js +1 -0
  144. package/dist/interface/assets/esm-DBTrmJK6.js +1 -0
  145. package/dist/interface/assets/esm-DRswZUWf.js +1 -0
  146. package/dist/interface/assets/esm-Dk7gxPHs.js +1 -0
  147. package/dist/interface/assets/esm-P0RCkAtk.js +1 -0
  148. package/dist/interface/assets/{eye-off-C8kzsdYU.js → eye-off-DESV3QdF.js} +1 -1
  149. package/dist/interface/assets/{flowSchema-C6FlHoK2.js → flowSchema-_RiPAgMv.js} +1 -1
  150. package/dist/interface/assets/{history-QBEPNc4X.js → history-60iCpGvQ.js} +1 -1
  151. package/dist/interface/assets/{home-af3W_y8U.js → home-w5iY2RUg.js} +1 -1
  152. package/dist/interface/assets/{information-outline-BPCsozSU.js → information-outline-CvBsGtDu.js} +1 -1
  153. package/dist/interface/assets/{lightbulb-outline-ccTlGyvW.js → lightbulb-outline-DLrnCPG5.js} +1 -1
  154. package/dist/interface/assets/main-CV7qCZ5i.js +3 -0
  155. package/dist/interface/assets/{main-aZt-Pooz.css → main-DJb49Tjp.css} +1 -1
  156. package/dist/interface/assets/{microphone-5exHwwyq.js → microphone-DUVI-s2_.js} +1 -1
  157. package/dist/interface/assets/mqtt-BPfLOT7L.js +1 -0
  158. package/dist/interface/assets/native-Cr4dkfqy.js +1 -0
  159. package/dist/interface/assets/native-D1Vvlhds.js +1 -0
  160. package/dist/interface/assets/{nodeDefinitions-CRrkU6zR.js → nodeDefinitions-BecZ8I2Q.js} +1 -1
  161. package/dist/interface/assets/{notifications-DCAiomoR.js → notifications-CK6XQBF-.js} +1 -1
  162. package/dist/interface/assets/{pencil-outline-M9I4mCJO.js → pencil-outline-BrOrbuzc.js} +1 -1
  163. package/dist/interface/assets/plugin-937qnq7E.js +1 -0
  164. package/dist/interface/assets/{plugins-D4am8tba.js → plugins-BU7TQh_f.js} +1 -1
  165. package/dist/interface/assets/{plus-CGIx-WV8.js → plus-CL6KSxf8.js} +1 -1
  166. package/dist/interface/assets/{plus-CrfQUUEC.js → plus-Dd-XLT76.js} +1 -1
  167. package/dist/interface/assets/{power-VnZM2-0c.js → power-lCbm_7y7.js} +1 -1
  168. package/dist/interface/assets/{ring-resize-CodGa6wQ.js → ring-resize-CEqUkpxT.js} +1 -1
  169. package/dist/interface/assets/{round-alt-arrow-left-bold-DTrlW4yx.js → round-alt-arrow-left-bold-CwaLYdW5.js} +1 -1
  170. package/dist/interface/assets/round-restart-alt-BFgY3k77.js +1 -0
  171. package/dist/interface/assets/round-restart-alt-SpAgbSYJ.css +1 -0
  172. package/dist/interface/assets/{search-miJXZGQz.js → search-CT2BLw7G.js} +1 -1
  173. package/dist/interface/assets/sensorIcons-DtJEfoU4.js +1 -0
  174. package/dist/interface/assets/{sensors-D1OCrbIC.js → sensors-DjgfMS8S.js} +1 -1
  175. package/dist/interface/assets/{server-CUfmbg3m.js → server-BSYs0zoo.js} +1 -1
  176. package/dist/interface/assets/{settings-DY0TJSAM.js → settings-CzS4dvIO.js} +1 -1
  177. package/dist/interface/assets/{source-branch-nw9fwXin.js → source-branch-C6p1G3a9.js} +1 -1
  178. package/dist/interface/assets/table-2-line-_VC4NuFA.js +1 -0
  179. package/dist/interface/assets/theme-Dr_YO8-0.js +1 -0
  180. package/dist/interface/assets/{trash-2-B-di2M48.js → trash-2-DcOYT3oH.js} +1 -1
  181. package/dist/interface/assets/{trash-can-outline-BbZkHoW7.js → trash-can-outline-cphfB8Jh.js} +1 -1
  182. package/dist/interface/assets/{trash-fill-Bgen5QTD.js → trash-fill-CRBaUdPn.js} +1 -1
  183. package/dist/interface/assets/{trash2-BP__fHgN.js → trash2-CvhB8xOW.js} +1 -1
  184. package/dist/interface/assets/{types-B25Yynej.js → types-3mdj4rRK.js} +1 -1
  185. package/dist/interface/assets/types-BGMvANrz.js +1 -0
  186. package/dist/interface/assets/{upload-CNYrnwuV.js → upload-DeN3O-ua.js} +1 -1
  187. package/dist/interface/assets/{useAppVersion-Cp7Ehmiv.js → useAppVersion-UIA6seZv.js} +1 -1
  188. package/dist/interface/assets/{useBackupRestore-CL04IH-G.js → useBackupRestore-E3pVEOvA.js} +1 -1
  189. package/dist/interface/assets/{useCameraOptions-DFe9A6XU.js → useCameraOptions-Dx-zyqdH.js} +1 -1
  190. package/dist/interface/assets/{useCardSelection-B3B2qPHO.js → useCardSelection-DGPLn1ZH.js} +1 -1
  191. package/dist/interface/assets/{useElectron-KnqvZz0q.js → useElectron-BXVcamD0.js} +1 -1
  192. package/dist/interface/assets/useLogsSocket-DSxzAvQF.js +1 -0
  193. package/dist/interface/assets/{usePermissions-C3D3JcPH.js → usePermissions-B_C-zX5H.js} +1 -1
  194. package/dist/interface/assets/usePluginUpdates-QU3U82S_.js +1 -0
  195. package/dist/interface/assets/{useServerRestart-Ck0mdqmf.js → useServerRestart-BxDBO7k-.js} +1 -1
  196. package/dist/interface/assets/{useStreamStatus-C4AA8JUq.js → useStreamStatus-DY4NM_Ua.js} +1 -1
  197. package/dist/interface/assets/useUserOptions-BL53bECb.js +1 -0
  198. package/dist/interface/assets/{variable-CbNySf4s.js → variable-oLSsiEtj.js} +1 -1
  199. package/dist/interface/assets/{vendor-CSg6_Jfu.js → vendor-JQXDMBA-.js} +2 -2
  200. package/dist/interface/assets/vendor-cameraui-DojVuZ2L.js +2326 -0
  201. package/dist/interface/assets/{vendor-capacitor-C-8IYzpJ.js → vendor-capacitor-CDwgXF4b.js} +2 -2
  202. package/dist/interface/assets/{vendor-chart-CoQ9HTE3.js → vendor-chart-KrNcA52y.js} +1 -1
  203. package/dist/interface/assets/vendor-core-ZDcIKAw9.js +1 -0
  204. package/dist/interface/assets/{vendor-dnd-DQF7Aoap.js → vendor-dnd-Jch9IvL6.js} +1 -1
  205. package/dist/interface/assets/{vendor-draggabilly-Cghb3aIb.js → vendor-draggabilly-Cn-knCpG.js} +1 -1
  206. package/dist/interface/assets/{vendor-markdown-DWwrEE67.js → vendor-markdown-BhFLJolW.js} +1 -1
  207. package/dist/interface/assets/{vendor-primevue-JQ8abUl5.js → vendor-primevue-C0acGg0Y.js} +85 -371
  208. package/dist/interface/assets/{vendor-vueflow-crUU2mAI.js → vendor-vueflow-DQrTmoNS.js} +1 -1
  209. package/dist/interface/assets/web-BQtDHNew.js +1 -0
  210. package/dist/interface/assets/web-BY9kjyTj.js +1 -0
  211. package/dist/interface/assets/web-BcQtDSat.js +1 -0
  212. package/dist/interface/assets/web-BgrRQzLO.js +1 -0
  213. package/dist/interface/assets/web-BjKL51lK-CJYmHsnY.js +1 -0
  214. package/dist/interface/assets/web-BxvsJylk.js +1 -0
  215. package/dist/interface/assets/web-C-3iwDhG.js +1 -0
  216. package/dist/interface/assets/web-C9XOwu07.js +1 -0
  217. package/dist/interface/assets/web-CPCxRDtw.js +1 -0
  218. package/dist/interface/assets/web-D0U5B2i2.js +1 -0
  219. package/dist/interface/assets/web-DtxjXJdS.js +1 -0
  220. package/dist/interface/assets/web-Duf-oV4e.js +1 -0
  221. package/dist/interface/assets/web-jy45nBi_.js +1 -0
  222. package/dist/interface/assets/web-vWx_-Iq5.js +1 -0
  223. package/dist/interface/assets/{webhook-B7YgiSrF.js → webhook-CMAB4nTl.js} +1 -1
  224. package/dist/interface/assets/workbox-window.prod.es5-Dlqax_Po.js +1 -0
  225. package/dist/interface/assets/{zoom-in-D7BJNotF.js → zoom-in-STm8SNt2.js} +1 -1
  226. package/dist/interface/index.html +42 -43
  227. package/dist/interface/sw.js +1 -1
  228. package/dist/server/package.json +13 -13
  229. package/dist/server/requirements.txt +1 -1
  230. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +20 -0
  231. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +20 -0
  232. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +40 -0
  233. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +20 -0
  234. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/carbon_dioxide.py +91 -0
  235. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/carbon_monoxide.py +90 -0
  236. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/cold.py +90 -0
  237. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/gas.py +90 -0
  238. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/heat.py +90 -0
  239. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/illuminance.py +91 -0
  240. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/power.py +90 -0
  241. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/problem.py +90 -0
  242. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/tamper.py +90 -0
  243. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/vibration.py +90 -0
  244. package/dist/server/src/api/database/record-schemas.d.ts +10 -0
  245. package/dist/server/src/api/schemas/cameras.schema.d.ts +325 -5
  246. package/dist/server/src/api/schemas/cameras.schema.js +24 -2
  247. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  248. package/dist/server/src/api/schemas/sensors.schema.d.ts +10 -0
  249. package/dist/server/src/api/schemas/users.schema.d.ts +70 -0
  250. package/dist/server/src/api/services/plugins.service.d.ts +2 -1
  251. package/dist/server/src/api/services/plugins.service.js +59 -15
  252. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  253. package/dist/server/src/api/types/index.d.ts +7 -0
  254. package/dist/server/src/api/websocket/nsp/plugins.d.ts +1 -0
  255. package/dist/server/src/api/websocket/nsp/plugins.js +4 -0
  256. package/dist/server/src/api/websocket/nsp/plugins.js.map +1 -1
  257. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +6 -0
  258. package/dist/server/src/camera/decoder/detection-coordinator.js +67 -7
  259. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  260. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +16 -1
  261. package/dist/server/src/camera/decoder/detection-pipeline.js +92 -14
  262. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  263. package/dist/server/src/camera/decoder/event-manager.d.ts +4 -1
  264. package/dist/server/src/camera/decoder/event-manager.js +29 -1
  265. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  266. package/dist/server/src/camera/decoder/frame-scaler.d.ts +21 -0
  267. package/dist/server/src/camera/decoder/frame-scaler.js +82 -10
  268. package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
  269. package/dist/server/src/camera/decoder/secondary-stage.js +19 -16
  270. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  271. package/dist/server/src/camera/decoder/stationary-suppressor.d.ts +7 -0
  272. package/dist/server/src/camera/decoder/stationary-suppressor.js +66 -4
  273. package/dist/server/src/camera/decoder/stationary-suppressor.js.map +1 -1
  274. package/dist/server/src/camera/sensors/controller.js +6 -0
  275. package/dist/server/src/camera/sensors/controller.js.map +1 -1
  276. package/dist/server/src/sensors/registry.d.ts +6 -1
  277. package/dist/server/src/sensors/registry.js +78 -26
  278. package/dist/server/src/sensors/registry.js.map +1 -1
  279. package/dist/server/src/sensors/sensor.d.ts +2 -2
  280. package/dist/server/src/sensors/sensor.js +14 -2
  281. package/dist/server/src/sensors/sensor.js.map +1 -1
  282. package/dist/server/src/workers/manager.js +2 -0
  283. package/dist/server/src/workers/manager.js.map +1 -1
  284. package/package.json +13 -13
  285. package/dist/interface/assets/Automation-BdSjkwoL.js +0 -3
  286. package/dist/interface/assets/AutomationImport-DEp2P3xa.js +0 -2
  287. package/dist/interface/assets/AutomationStore-4NQAyOXd.js +0 -2
  288. package/dist/interface/assets/AutomationStoreDetail-D8NZLRu9.js +0 -2
  289. package/dist/interface/assets/Automations-D7kh-T-O.js +0 -2
  290. package/dist/interface/assets/Camera-DsvE1bWd.js +0 -2
  291. package/dist/interface/assets/Camview-BXDwJtBf.js +0 -1
  292. package/dist/interface/assets/Config-CJgmsr2e.js +0 -2
  293. package/dist/interface/assets/ConfigActionSensor-pv3k-l2v.js +0 -1
  294. package/dist/interface/assets/ConfigTriggerGeofence-CDbA6_Wv.js +0 -1
  295. package/dist/interface/assets/Console-CPcfNsup.js +0 -1
  296. package/dist/interface/assets/CuiAutomationRunsDialog-Bx3LtjMJ.js +0 -1
  297. package/dist/interface/assets/CuiBottomSheet-Qt8m2uSx.js +0 -1
  298. package/dist/interface/assets/CuiCameraRecordings-DJG6J1nY.js +0 -1
  299. package/dist/interface/assets/CuiCameraShares-C3SATbiV.js +0 -1
  300. package/dist/interface/assets/CuiDataTable-BGleWv6B.css +0 -1
  301. package/dist/interface/assets/CuiDataTable-DdNoneMB.js +0 -1
  302. package/dist/interface/assets/CuiLightControl-bH7WQXAY.js +0 -1
  303. package/dist/interface/assets/CuiMarkdownContent-Do8-vIl7.js +0 -1
  304. package/dist/interface/assets/CuiPluginCard-B50TjvIq.js +0 -2
  305. package/dist/interface/assets/CuiPluginOAuthButton-Aanenlqx.js +0 -2
  306. package/dist/interface/assets/CuiRecordingsGrid-D9IF3B-S.js +0 -1
  307. package/dist/interface/assets/CuiSchema-B8J8G314.js +0 -1
  308. package/dist/interface/assets/Faces-B8d8W6cq.js +0 -1
  309. package/dist/interface/assets/FirstSteps-DWB8ZhqT.js +0 -1
  310. package/dist/interface/assets/Instances-DCE3ixbf.js +0 -1
  311. package/dist/interface/assets/Logs-DJL3FHsG.js +0 -6
  312. package/dist/interface/assets/OAuthDeviceFlow-9kYvqgyg.js +0 -1
  313. package/dist/interface/assets/Plugin-HIED8ziU.js +0 -1
  314. package/dist/interface/assets/PluginDetail-Ba9VDO53.js +0 -2
  315. package/dist/interface/assets/PluginSearch-B3y83uDW.js +0 -2
  316. package/dist/interface/assets/PluginSearch-BKVIwJVF.js +0 -1
  317. package/dist/interface/assets/Plugins-mdsFKDQ8.js +0 -1
  318. package/dist/interface/assets/Recordings-DO1BPBKp.css +0 -1
  319. package/dist/interface/assets/Recordings-GVzdhE19.js +0 -1
  320. package/dist/interface/assets/SensorEdit-COOOaB-l.js +0 -1
  321. package/dist/interface/assets/Sensors-De6n66ER.js +0 -2
  322. package/dist/interface/assets/Sensors-DfE07b1Q.css +0 -1
  323. package/dist/interface/assets/Settings-BipPaBUB.js +0 -1
  324. package/dist/interface/assets/SettingsAccount-809sRaa9.js +0 -1
  325. package/dist/interface/assets/SettingsAccount-Bmteep-6.js +0 -1
  326. package/dist/interface/assets/SettingsAppearance-CJWlk9_1.js +0 -1
  327. package/dist/interface/assets/SettingsAppearance-Cobtww9z.js +0 -1
  328. package/dist/interface/assets/SettingsBackup-Bbp3fEuS.js +0 -1
  329. package/dist/interface/assets/SettingsList-DFJifGkE.js +0 -1
  330. package/dist/interface/assets/SettingsNotifications-Dt_gxxoj.js +0 -2
  331. package/dist/interface/assets/SettingsRecordings-1i4sNZ8u.js +0 -1
  332. package/dist/interface/assets/SettingsRemote-HDCH_D5s.js +0 -1
  333. package/dist/interface/assets/SettingsSystem-jDQ9m8jt.js +0 -2
  334. package/dist/interface/assets/SettingsUsers-CFzURSfg.js +0 -1
  335. package/dist/interface/assets/VersionsHandler-CBAnjOWO.js +0 -7
  336. package/dist/interface/assets/Workers-DQZ0QoEN.js +0 -2
  337. package/dist/interface/assets/alarm-light-outline-jCTfmz5t.js +0 -1
  338. package/dist/interface/assets/api-CwjboJ6S.css +0 -2
  339. package/dist/interface/assets/api-DpZpuR8_.js +0 -2
  340. package/dist/interface/assets/cloudHandoff-D8flqTzb.js +0 -1
  341. package/dist/interface/assets/cube-scan-Ccxismvr.js +0 -1
  342. package/dist/interface/assets/esm-B4MXP42m.js +0 -1
  343. package/dist/interface/assets/esm-BW9m3dy4.js +0 -1
  344. package/dist/interface/assets/esm-BZ3gh7Fj.js +0 -1
  345. package/dist/interface/assets/esm-Blvz9SsB.js +0 -1
  346. package/dist/interface/assets/esm-CJXU9jaA.js +0 -1
  347. package/dist/interface/assets/esm-Cqqu_mer.js +0 -1
  348. package/dist/interface/assets/esm-CtKbLoV_.js +0 -1
  349. package/dist/interface/assets/esm-CwzNi2iW.js +0 -1
  350. package/dist/interface/assets/esm-KnO8wJyB.js +0 -1
  351. package/dist/interface/assets/esm-Lt6R0RFn.js +0 -1
  352. package/dist/interface/assets/esm-MvRctfDP.js +0 -1
  353. package/dist/interface/assets/esm-W4LX4Rpq.js +0 -1
  354. package/dist/interface/assets/esm-l57LNUWu.js +0 -1
  355. package/dist/interface/assets/esm-xofhyA8r.js +0 -1
  356. package/dist/interface/assets/main-Csclhnoq.js +0 -3
  357. package/dist/interface/assets/mqtt-DklPP2x5.js +0 -1
  358. package/dist/interface/assets/native-Cpj7zrLp.js +0 -1
  359. package/dist/interface/assets/native-D--k2WN1.js +0 -1
  360. package/dist/interface/assets/plugin-D3FpjfF8.js +0 -1
  361. package/dist/interface/assets/round-restart-alt-CdweDM5-.js +0 -1
  362. package/dist/interface/assets/round-restart-alt-D3sTGG7n.css +0 -1
  363. package/dist/interface/assets/theme-ClwavgWz.js +0 -1
  364. package/dist/interface/assets/types-D9YcubIy.js +0 -1
  365. package/dist/interface/assets/useLogsSocket-BxI3NbRJ.js +0 -5
  366. package/dist/interface/assets/useUserOptions-BpEZlRAL.js +0 -1
  367. package/dist/interface/assets/vendor-cameraui-Cgb5z6NJ.js +0 -2040
  368. package/dist/interface/assets/vendor-core-BJsSXMFQ.js +0 -1
  369. package/dist/interface/assets/web-BX3axHeB.js +0 -1
  370. package/dist/interface/assets/web-BcHmbPny.js +0 -1
  371. package/dist/interface/assets/web-BjKL51lK-BQjyRtns.js +0 -1
  372. package/dist/interface/assets/web-C8w-z-xR.js +0 -1
  373. package/dist/interface/assets/web-CHdniv8I.js +0 -1
  374. package/dist/interface/assets/web-CWBhY0Av.js +0 -1
  375. package/dist/interface/assets/web-Cf1yYy4u.js +0 -1
  376. package/dist/interface/assets/web-Ct6Vkr6F.js +0 -1
  377. package/dist/interface/assets/web-DARDw7d8.js +0 -1
  378. package/dist/interface/assets/web-DKBMdBSA.js +0 -1
  379. package/dist/interface/assets/web-Ddzvp-fv.js +0 -1
  380. package/dist/interface/assets/web-Dymr_MpD.js +0 -1
  381. package/dist/interface/assets/web-XIuTPdFc.js +0 -1
  382. package/dist/interface/assets/web-lrnXIJTz.js +0 -1
  383. package/dist/interface/assets/workbox-window.prod.es5-BkFwsIPp.js +0 -1
  384. /package/dist/interface/assets/{useLogsSocket-CoA-Nq-_.css → CuiConsole-CoA-Nq-_.css} +0 -0
@@ -0,0 +1,90 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from enum import StrEnum
5
+ from typing import Any, Generic, Literal, Protocol, overload, runtime_checkable
6
+
7
+ from typing_extensions import TypedDict, TypeVar
8
+
9
+ from ..observable import Observable
10
+ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
+
12
+
13
+ class ColdProperty(StrEnum):
14
+ """Property names of a cold sensor."""
15
+
16
+ Detected = "detected"
17
+ """Whether abnormal cold is detected."""
18
+
19
+
20
+ class ColdSensorProperties(TypedDict):
21
+ """Property values of a cold sensor."""
22
+
23
+ detected: bool
24
+
25
+
26
+ class ColdPropertyChangeData(TypedDict):
27
+ """Property change payload emitted on ColdSensorLike.onPropertyChanged."""
28
+
29
+ property: str
30
+ """Name of the changed property, a ColdProperty value."""
31
+ value: bool
32
+ """New value of the property."""
33
+
34
+
35
+ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
36
+
37
+
38
+ @runtime_checkable
39
+ class ColdSensorLike(SensorLike, Protocol):
40
+ """Read-only proxy interface for a cold sensor."""
41
+
42
+ @property
43
+ def type(self) -> SensorType:
44
+ return SensorType.Cold
45
+
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[ColdPropertyChangeData]: ...
48
+
49
+ @overload
50
+ def getValue(self, property: Literal[ColdProperty.Detected]) -> bool | None: ...
51
+ @overload
52
+ def getValue(self, property: str) -> object | None: ...
53
+
54
+
55
+ class ColdSensor(Sensor[ColdSensorProperties, TStorage, str], Generic[TStorage]):
56
+ """Cold alarm sensor."""
57
+
58
+ _requires_frames = False
59
+
60
+ def __init__(self, name: str = "Cold Sensor", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
62
+ self._write_state({ColdProperty.Detected.value: False})
63
+
64
+ @property
65
+ def type(self) -> SensorType:
66
+ return SensorType.Cold
67
+
68
+ @property
69
+ def category(self) -> SensorCategory:
70
+ return SensorCategory.Sensor
71
+
72
+ @property
73
+ def detected(self) -> bool:
74
+ return bool(self.props.detected)
75
+
76
+ def setDetected(self, value: bool) -> None:
77
+ """Report abnormal cold detection state.
78
+
79
+ Args:
80
+ value: True when cold is currently detected.
81
+
82
+ Example:
83
+ ```python
84
+ cold.setDetected(True)
85
+ ```
86
+ """
87
+ self._write_state({ColdProperty.Detected.value: value})
88
+
89
+ async def updateValue(self, property: str, value: Any) -> None:
90
+ """Read-only sensor: external writes are ignored."""
@@ -0,0 +1,90 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from enum import StrEnum
5
+ from typing import Any, Generic, Literal, Protocol, overload, runtime_checkable
6
+
7
+ from typing_extensions import TypedDict, TypeVar
8
+
9
+ from ..observable import Observable
10
+ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
+
12
+
13
+ class GasProperty(StrEnum):
14
+ """Property names of a gas sensor."""
15
+
16
+ Detected = "detected"
17
+ """Whether gas is detected."""
18
+
19
+
20
+ class GasSensorProperties(TypedDict):
21
+ """Property values of a gas sensor."""
22
+
23
+ detected: bool
24
+
25
+
26
+ class GasPropertyChangeData(TypedDict):
27
+ """Property change payload emitted on GasSensorLike.onPropertyChanged."""
28
+
29
+ property: str
30
+ """Name of the changed property, a GasProperty value."""
31
+ value: bool
32
+ """New value of the property."""
33
+
34
+
35
+ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
36
+
37
+
38
+ @runtime_checkable
39
+ class GasSensorLike(SensorLike, Protocol):
40
+ """Read-only proxy interface for a gas sensor."""
41
+
42
+ @property
43
+ def type(self) -> SensorType:
44
+ return SensorType.Gas
45
+
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[GasPropertyChangeData]: ...
48
+
49
+ @overload
50
+ def getValue(self, property: Literal[GasProperty.Detected]) -> bool | None: ...
51
+ @overload
52
+ def getValue(self, property: str) -> object | None: ...
53
+
54
+
55
+ class GasSensor(Sensor[GasSensorProperties, TStorage, str], Generic[TStorage]):
56
+ """Gas detector sensor."""
57
+
58
+ _requires_frames = False
59
+
60
+ def __init__(self, name: str = "Gas Sensor", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
62
+ self._write_state({GasProperty.Detected.value: False})
63
+
64
+ @property
65
+ def type(self) -> SensorType:
66
+ return SensorType.Gas
67
+
68
+ @property
69
+ def category(self) -> SensorCategory:
70
+ return SensorCategory.Sensor
71
+
72
+ @property
73
+ def detected(self) -> bool:
74
+ return bool(self.props.detected)
75
+
76
+ def setDetected(self, value: bool) -> None:
77
+ """Report gas detection state.
78
+
79
+ Args:
80
+ value: True when gas is currently detected.
81
+
82
+ Example:
83
+ ```python
84
+ gas.setDetected(True)
85
+ ```
86
+ """
87
+ self._write_state({GasProperty.Detected.value: value})
88
+
89
+ async def updateValue(self, property: str, value: Any) -> None:
90
+ """Read-only sensor: external writes are ignored."""
@@ -0,0 +1,90 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from enum import StrEnum
5
+ from typing import Any, Generic, Literal, Protocol, overload, runtime_checkable
6
+
7
+ from typing_extensions import TypedDict, TypeVar
8
+
9
+ from ..observable import Observable
10
+ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
+
12
+
13
+ class HeatProperty(StrEnum):
14
+ """Property names of a heat sensor."""
15
+
16
+ Detected = "detected"
17
+ """Whether abnormal heat is detected."""
18
+
19
+
20
+ class HeatSensorProperties(TypedDict):
21
+ """Property values of a heat sensor."""
22
+
23
+ detected: bool
24
+
25
+
26
+ class HeatPropertyChangeData(TypedDict):
27
+ """Property change payload emitted on HeatSensorLike.onPropertyChanged."""
28
+
29
+ property: str
30
+ """Name of the changed property, a HeatProperty value."""
31
+ value: bool
32
+ """New value of the property."""
33
+
34
+
35
+ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
36
+
37
+
38
+ @runtime_checkable
39
+ class HeatSensorLike(SensorLike, Protocol):
40
+ """Read-only proxy interface for a heat sensor."""
41
+
42
+ @property
43
+ def type(self) -> SensorType:
44
+ return SensorType.Heat
45
+
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[HeatPropertyChangeData]: ...
48
+
49
+ @overload
50
+ def getValue(self, property: Literal[HeatProperty.Detected]) -> bool | None: ...
51
+ @overload
52
+ def getValue(self, property: str) -> object | None: ...
53
+
54
+
55
+ class HeatSensor(Sensor[HeatSensorProperties, TStorage, str], Generic[TStorage]):
56
+ """Heat alarm sensor."""
57
+
58
+ _requires_frames = False
59
+
60
+ def __init__(self, name: str = "Heat Sensor", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
62
+ self._write_state({HeatProperty.Detected.value: False})
63
+
64
+ @property
65
+ def type(self) -> SensorType:
66
+ return SensorType.Heat
67
+
68
+ @property
69
+ def category(self) -> SensorCategory:
70
+ return SensorCategory.Sensor
71
+
72
+ @property
73
+ def detected(self) -> bool:
74
+ return bool(self.props.detected)
75
+
76
+ def setDetected(self, value: bool) -> None:
77
+ """Report abnormal heat detection state.
78
+
79
+ Args:
80
+ value: True when heat is currently detected.
81
+
82
+ Example:
83
+ ```python
84
+ heat.setDetected(True)
85
+ ```
86
+ """
87
+ self._write_state({HeatProperty.Detected.value: value})
88
+
89
+ async def updateValue(self, property: str, value: Any) -> None:
90
+ """Read-only sensor: external writes are ignored."""
@@ -0,0 +1,91 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from enum import StrEnum
5
+ from typing import Any, Generic, Literal, Protocol, overload, runtime_checkable
6
+
7
+ from typing_extensions import TypedDict, TypeVar
8
+
9
+ from ..observable import Observable
10
+ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
+
12
+
13
+ class IlluminanceProperty(StrEnum):
14
+ """Property names of an illuminance sensor."""
15
+
16
+ Current = "current"
17
+ """Current illuminance in lux."""
18
+
19
+
20
+ class IlluminanceInfoProperties(TypedDict):
21
+ """Property values of an illuminance sensor."""
22
+
23
+ current: float
24
+
25
+
26
+ class IlluminancePropertyChangeData(TypedDict):
27
+ """Property change payload emitted on IlluminanceInfoLike.onPropertyChanged."""
28
+
29
+ property: str
30
+ """Name of the changed property, a IlluminanceProperty value."""
31
+ value: float
32
+ """New value of the property."""
33
+
34
+
35
+ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
36
+
37
+
38
+ @runtime_checkable
39
+ class IlluminanceInfoLike(SensorLike, Protocol):
40
+ """Read-only proxy interface for an illuminance sensor."""
41
+
42
+ @property
43
+ def type(self) -> SensorType:
44
+ return SensorType.Illuminance
45
+
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[IlluminancePropertyChangeData]: ...
48
+
49
+ @overload
50
+ def getValue(self, property: Literal[IlluminanceProperty.Current]) -> float | None: ...
51
+ @overload
52
+ def getValue(self, property: str) -> object | None: ...
53
+
54
+
55
+ class IlluminanceInfo(Sensor[IlluminanceInfoProperties, TStorage, str], Generic[TStorage]):
56
+ """Illuminance info sensor. Reports current light level in lux."""
57
+
58
+ _requires_frames = False
59
+
60
+ def __init__(self, name: str = "Illuminance", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
62
+ self._write_state({IlluminanceProperty.Current.value: 0})
63
+
64
+ @property
65
+ def type(self) -> SensorType:
66
+ return SensorType.Illuminance
67
+
68
+ @property
69
+ def category(self) -> SensorCategory:
70
+ return SensorCategory.Info
71
+
72
+ @property
73
+ def current(self) -> float:
74
+ value = self.props.current
75
+ return float(value) if value is not None else 0.0
76
+
77
+ def setCurrent(self, value: float) -> None:
78
+ """Report a new illuminance reading. Clamped to [0, 200000] lx.
79
+
80
+ Args:
81
+ value: Illuminance reading in lux.
82
+
83
+ Example:
84
+ ```python
85
+ illuminance.setCurrent(120)
86
+ ```
87
+ """
88
+ self._write_state({IlluminanceProperty.Current.value: max(0, min(200000, value))})
89
+
90
+ async def updateValue(self, property: str, value: Any) -> None:
91
+ """Read-only sensor: external writes are ignored."""
@@ -0,0 +1,90 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from enum import StrEnum
5
+ from typing import Any, Generic, Literal, Protocol, overload, runtime_checkable
6
+
7
+ from typing_extensions import TypedDict, TypeVar
8
+
9
+ from ..observable import Observable
10
+ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
+
12
+
13
+ class PowerProperty(StrEnum):
14
+ """Property names of a power sensor."""
15
+
16
+ Detected = "detected"
17
+ """Whether power is detected."""
18
+
19
+
20
+ class PowerSensorProperties(TypedDict):
21
+ """Property values of a power sensor."""
22
+
23
+ detected: bool
24
+
25
+
26
+ class PowerPropertyChangeData(TypedDict):
27
+ """Property change payload emitted on PowerSensorLike.onPropertyChanged."""
28
+
29
+ property: str
30
+ """Name of the changed property, a PowerProperty value."""
31
+ value: bool
32
+ """New value of the property."""
33
+
34
+
35
+ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
36
+
37
+
38
+ @runtime_checkable
39
+ class PowerSensorLike(SensorLike, Protocol):
40
+ """Read-only proxy interface for a power sensor."""
41
+
42
+ @property
43
+ def type(self) -> SensorType:
44
+ return SensorType.Power
45
+
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[PowerPropertyChangeData]: ...
48
+
49
+ @overload
50
+ def getValue(self, property: Literal[PowerProperty.Detected]) -> bool | None: ...
51
+ @overload
52
+ def getValue(self, property: str) -> object | None: ...
53
+
54
+
55
+ class PowerSensor(Sensor[PowerSensorProperties, TStorage, str], Generic[TStorage]):
56
+ """Power detection sensor."""
57
+
58
+ _requires_frames = False
59
+
60
+ def __init__(self, name: str = "Power Sensor", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
62
+ self._write_state({PowerProperty.Detected.value: False})
63
+
64
+ @property
65
+ def type(self) -> SensorType:
66
+ return SensorType.Power
67
+
68
+ @property
69
+ def category(self) -> SensorCategory:
70
+ return SensorCategory.Sensor
71
+
72
+ @property
73
+ def detected(self) -> bool:
74
+ return bool(self.props.detected)
75
+
76
+ def setDetected(self, value: bool) -> None:
77
+ """Report power detection state.
78
+
79
+ Args:
80
+ value: True when power is currently detected.
81
+
82
+ Example:
83
+ ```python
84
+ power.setDetected(True)
85
+ ```
86
+ """
87
+ self._write_state({PowerProperty.Detected.value: value})
88
+
89
+ async def updateValue(self, property: str, value: Any) -> None:
90
+ """Read-only sensor: external writes are ignored."""
@@ -0,0 +1,90 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from enum import StrEnum
5
+ from typing import Any, Generic, Literal, Protocol, overload, runtime_checkable
6
+
7
+ from typing_extensions import TypedDict, TypeVar
8
+
9
+ from ..observable import Observable
10
+ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
+
12
+
13
+ class ProblemProperty(StrEnum):
14
+ """Property names of a problem sensor."""
15
+
16
+ Detected = "detected"
17
+ """Whether a problem is detected."""
18
+
19
+
20
+ class ProblemSensorProperties(TypedDict):
21
+ """Property values of a problem sensor."""
22
+
23
+ detected: bool
24
+
25
+
26
+ class ProblemPropertyChangeData(TypedDict):
27
+ """Property change payload emitted on ProblemSensorLike.onPropertyChanged."""
28
+
29
+ property: str
30
+ """Name of the changed property, a ProblemProperty value."""
31
+ value: bool
32
+ """New value of the property."""
33
+
34
+
35
+ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
36
+
37
+
38
+ @runtime_checkable
39
+ class ProblemSensorLike(SensorLike, Protocol):
40
+ """Read-only proxy interface for a problem sensor."""
41
+
42
+ @property
43
+ def type(self) -> SensorType:
44
+ return SensorType.Problem
45
+
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[ProblemPropertyChangeData]: ...
48
+
49
+ @overload
50
+ def getValue(self, property: Literal[ProblemProperty.Detected]) -> bool | None: ...
51
+ @overload
52
+ def getValue(self, property: str) -> object | None: ...
53
+
54
+
55
+ class ProblemSensor(Sensor[ProblemSensorProperties, TStorage, str], Generic[TStorage]):
56
+ """Generic problem/fault sensor."""
57
+
58
+ _requires_frames = False
59
+
60
+ def __init__(self, name: str = "Problem Sensor", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
62
+ self._write_state({ProblemProperty.Detected.value: False})
63
+
64
+ @property
65
+ def type(self) -> SensorType:
66
+ return SensorType.Problem
67
+
68
+ @property
69
+ def category(self) -> SensorCategory:
70
+ return SensorCategory.Sensor
71
+
72
+ @property
73
+ def detected(self) -> bool:
74
+ return bool(self.props.detected)
75
+
76
+ def setDetected(self, value: bool) -> None:
77
+ """Report the problem state.
78
+
79
+ Args:
80
+ value: True when problem is currently detected.
81
+
82
+ Example:
83
+ ```python
84
+ problem.setDetected(True)
85
+ ```
86
+ """
87
+ self._write_state({ProblemProperty.Detected.value: value})
88
+
89
+ async def updateValue(self, property: str, value: Any) -> None:
90
+ """Read-only sensor: external writes are ignored."""
@@ -0,0 +1,90 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from enum import StrEnum
5
+ from typing import Any, Generic, Literal, Protocol, overload, runtime_checkable
6
+
7
+ from typing_extensions import TypedDict, TypeVar
8
+
9
+ from ..observable import Observable
10
+ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
+
12
+
13
+ class TamperProperty(StrEnum):
14
+ """Property names of a tamper sensor."""
15
+
16
+ Detected = "detected"
17
+ """Whether tampering is detected."""
18
+
19
+
20
+ class TamperSensorProperties(TypedDict):
21
+ """Property values of a tamper sensor."""
22
+
23
+ detected: bool
24
+
25
+
26
+ class TamperPropertyChangeData(TypedDict):
27
+ """Property change payload emitted on TamperSensorLike.onPropertyChanged."""
28
+
29
+ property: str
30
+ """Name of the changed property, a TamperProperty value."""
31
+ value: bool
32
+ """New value of the property."""
33
+
34
+
35
+ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
36
+
37
+
38
+ @runtime_checkable
39
+ class TamperSensorLike(SensorLike, Protocol):
40
+ """Read-only proxy interface for a tamper sensor."""
41
+
42
+ @property
43
+ def type(self) -> SensorType:
44
+ return SensorType.Tamper
45
+
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[TamperPropertyChangeData]: ...
48
+
49
+ @overload
50
+ def getValue(self, property: Literal[TamperProperty.Detected]) -> bool | None: ...
51
+ @overload
52
+ def getValue(self, property: str) -> object | None: ...
53
+
54
+
55
+ class TamperSensor(Sensor[TamperSensorProperties, TStorage, str], Generic[TStorage]):
56
+ """Tamper sensor."""
57
+
58
+ _requires_frames = False
59
+
60
+ def __init__(self, name: str = "Tamper Sensor", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
62
+ self._write_state({TamperProperty.Detected.value: False})
63
+
64
+ @property
65
+ def type(self) -> SensorType:
66
+ return SensorType.Tamper
67
+
68
+ @property
69
+ def category(self) -> SensorCategory:
70
+ return SensorCategory.Sensor
71
+
72
+ @property
73
+ def detected(self) -> bool:
74
+ return bool(self.props.detected)
75
+
76
+ def setDetected(self, value: bool) -> None:
77
+ """Report tampering detection state.
78
+
79
+ Args:
80
+ value: True when tamper is currently detected.
81
+
82
+ Example:
83
+ ```python
84
+ tamper.setDetected(True)
85
+ ```
86
+ """
87
+ self._write_state({TamperProperty.Detected.value: value})
88
+
89
+ async def updateValue(self, property: str, value: Any) -> None:
90
+ """Read-only sensor: external writes are ignored."""