@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.
- package/dist/interface/assets/{404-mKz7xfYl.js → 404-pb2fRn1r.js} +1 -1
- package/dist/interface/assets/{About-C3mKJiWW.js → About-eljMnDub.js} +1 -1
- package/dist/interface/assets/{Adminpanel-KkWHp8Mh.js → Adminpanel-BtQdiyre.js} +1 -1
- package/dist/interface/assets/Automation-DOiLJcU_.js +3 -0
- package/dist/interface/assets/AutomationImport-DflZNRBB.js +2 -0
- package/dist/interface/assets/AutomationStore-qF_NTNUf.js +2 -0
- package/dist/interface/assets/AutomationStoreDetail-CUw-jBBR.js +2 -0
- package/dist/interface/assets/Automations-DBjwNb3F.js +2 -0
- package/dist/interface/assets/Camera-BfvpjkW3.js +2 -0
- package/dist/interface/assets/{CameraConsole-Bj9mszzp.js → CameraConsole-CEARcJYc.js} +1 -1
- package/dist/interface/assets/{Cameras-BVFxn9Ef.js → Cameras-C0oHuoTR.js} +2 -2
- package/dist/interface/assets/Camview-DArvg940.js +1 -0
- package/dist/interface/assets/{Camview-DEURwPYt.css → Camview-mLCaY0ld.css} +1 -1
- package/dist/interface/assets/Config-Ccp5Acpv.js +2 -0
- package/dist/interface/assets/{ConfigActionCameraControl-B80iDDds.js → ConfigActionCameraControl-De0qb88r.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-ChhenlQV.js → ConfigActionDelay-nDK4i-AL.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-09PkDYgp.js → ConfigActionHttp-DX-vapgv.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-FDMVc5FH.js → ConfigActionImageInput-CS7U7BsI.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-4gLcAM0C.js → ConfigActionMqtt-82swCx_F.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-DmIQhrC2.js → ConfigActionNotification-t-1zN_1y.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-Df4BdM3c.js → ConfigActionNotificationControl-jz3ez2Uq.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-CNKeWFvE.js → ConfigActionOutput-B6uJheX1.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-CWfEabyz.js → ConfigActionPlugin-LyOIrZnv.js} +1 -1
- package/dist/interface/assets/ConfigActionSensor-BTqc1inw.js +1 -0
- package/dist/interface/assets/{ConfigActionSnapshot-CM8xar0h.js → ConfigActionSnapshot-DdPy_Ubu.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-B8tiVULt.js → ConfigActionVariable-Csf7jPOm.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-CtF5exKE.js → ConfigConditionIfElse-BvzwZ70p.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-B4hRgQdg.js → ConfigConditionSensorState-lI9dzHiT.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-ZhpDw8ZY.js → ConfigConditionSwitch-DJU2JC-3.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-EF84vg1f.js → ConfigConditionTime-BxE2CJMA.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-DNxw4rt3.js → ConfigSensorValueInput-DW4er753.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-BmxUG87T.js → ConfigTriggerDetection-DpC8V8K8.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-DTzax7bc.js +1 -0
- package/dist/interface/assets/{ConfigTriggerManual-t-J-HbqF.js → ConfigTriggerManual-CtjnnQb1.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-BD1iizF-.js → ConfigTriggerMqtt-C7J22EMe.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-CBPaopJK.js → ConfigTriggerSchedule-DnYDDz3F.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-CXmxhiPM.js → ConfigTriggerSensor-vhwPNmPj.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-CfFnKyIn.js → ConfigTriggerSystem-D1JulYVd.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-gqcxnQdl.js → ConfigTriggerWebhook-BrKFtq7o.js} +1 -1
- package/dist/interface/assets/Console-C6yUdEaM.js +1 -0
- package/dist/interface/assets/CuiAutomationRunsDialog-C4i7y1Re.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-C2zU_iyj.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-BcDAO9At.js → CuiBottomSheet-C_1_moNo.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-C7822oZM.js → CuiCameraPipCard-CZ-oDxzy.js} +1 -1
- package/dist/interface/assets/CuiCameraRecordings-mY_giLEi.js +1 -0
- package/dist/interface/assets/CuiCameraShares-XwN5kuC7.js +1 -0
- package/dist/interface/assets/{CuiCameraTable-BdXITi6O.js → CuiCameraTable-BeeHLaiQ.js} +2 -2
- package/dist/interface/assets/CuiConsole-B7R7U9UZ.js +5 -0
- package/dist/interface/assets/CuiDataTable-CQhCu0px.js +1 -0
- package/dist/interface/assets/CuiDataTable-DbkFXZeg.css +1 -0
- package/dist/interface/assets/CuiLightControl-CEpcKss7.js +1 -0
- package/dist/interface/assets/{CuiMarkdownContent-Bjs3wRnq.js → CuiMarkdownContent-C2uBepC1.js} +1 -1
- package/dist/interface/assets/CuiMarkdownContent-QxLR7_qs.js +1 -0
- package/dist/interface/assets/CuiPluginCard-1dSDwOCf.js +2 -0
- package/dist/interface/assets/{CuiPluginCard-D_6UFFZW.css → CuiPluginCard-rkhmuumi.css} +1 -1
- package/dist/interface/assets/{CuiPluginCategoryChip-C9l5I9v3.js → CuiPluginCategoryChip-JkdbQU4X.js} +1 -1
- package/dist/interface/assets/CuiPluginOAuthButton-LYMFfb3v.js +2 -0
- package/dist/interface/assets/{CuiPluginTrustBadge-BkdNlrZ7.js → CuiPluginTrustBadge-sZF0UKMD.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-D8CKX4s9.js → CuiQRCode-B4ysluWR.js} +1 -1
- package/dist/interface/assets/CuiRecordingsGrid-CkwE3jcR.js +1 -0
- package/dist/interface/assets/CuiSchema-DKATswRc.js +1 -0
- package/dist/interface/assets/{CuiTopNavbarItem-C-ZiLXkp.js → CuiTopNavbarItem-rMsWME9B.js} +1 -1
- package/dist/interface/assets/Faces-BeeZrFV-.js +1 -0
- package/dist/interface/assets/FirstSteps-DWT6Tt_T.js +1 -0
- package/dist/interface/assets/Instances-CJlFo8ni.js +1 -0
- package/dist/interface/assets/Logs-8onUmCYX.js +6 -0
- package/dist/interface/assets/{Menu-CvpQ9fHV.js → Menu-DP0aMICW.js} +1 -1
- package/dist/interface/assets/OAuthDeviceFlow-CcSkntGk.js +1 -0
- package/dist/interface/assets/Plugin-8dbt_8iG.js +1 -0
- package/dist/interface/assets/{PluginConsole-DUnPciNz.js → PluginConsole-JFcH_ZW0.js} +2 -2
- package/dist/interface/assets/PluginDetail-C9dR9jrw.js +2 -0
- package/dist/interface/assets/{PluginSchema-CQARvB5H.js → PluginSchema-Gfn_csMP.js} +1 -1
- package/dist/interface/assets/PluginSearch-BVAtgBZs.js +1 -0
- package/dist/interface/assets/PluginSearch-HEf_6CrR.js +2 -0
- package/dist/interface/assets/PluginUpdateProgress-DaI9bwSV.js +1 -0
- package/dist/interface/assets/Plugins-CQJhji6o.js +1 -0
- package/dist/interface/assets/Recordings-80Xd1V3L.css +1 -0
- package/dist/interface/assets/Recordings-AD78njIA.js +1 -0
- package/dist/interface/assets/SensorEdit-ono85O3c.css +1 -0
- package/dist/interface/assets/SensorEdit-rC02usEO.js +1 -0
- package/dist/interface/assets/{SensorHistory-oWCb8Kia.js → SensorHistory-2TmYLaL4.js} +1 -1
- package/dist/interface/assets/Sensors-CFfII3-e.css +1 -0
- package/dist/interface/assets/Sensors-Vwr7MYz6.js +2 -0
- package/dist/interface/assets/Settings-8yG5ny5r.js +1 -0
- package/dist/interface/assets/SettingsAccount-BBsivYFf.js +1 -0
- package/dist/interface/assets/SettingsAccount-CN9Xcgt-.js +1 -0
- package/dist/interface/assets/SettingsAppearance-Qh1cw9iX.js +1 -0
- package/dist/interface/assets/SettingsAppearance-WQtOksbk.js +1 -0
- package/dist/interface/assets/SettingsBackup-DNDDU6a1.js +1 -0
- package/dist/interface/assets/SettingsList-tFKUMnsB.js +1 -0
- package/dist/interface/assets/{SettingsMqtt-pH6KmHhv.js → SettingsMqtt-BYVV1Mew.js} +1 -1
- package/dist/interface/assets/SettingsNotifications-BVGmt0eF.js +2 -0
- package/dist/interface/assets/{SettingsPermissions-CDpVmRY2.js → SettingsPermissions-BPqDIjVt.js} +1 -1
- package/dist/interface/assets/SettingsRecordings-B4DDJSKe.js +1 -0
- package/dist/interface/assets/SettingsRemote-Bib7kXto.js +1 -0
- package/dist/interface/assets/SettingsSystem-DIe7CSgH.js +2 -0
- package/dist/interface/assets/SettingsUsers-BtT17FNe.js +1 -0
- package/dist/interface/assets/{Terminal-DSRLOAKR.js → Terminal-DuJHIlLe.js} +3 -3
- package/dist/interface/assets/{VariableInput-rbKenccv.js → VariableInput-CkXZ00Gc.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-DDyxhww6.js → VariableSuggestions-BD1kOG5f.js} +1 -1
- package/dist/interface/assets/VersionsHandler-D9sDkGXx.js +7 -0
- package/dist/interface/assets/{VirtualSensorCreate-_9QdFeEj.js → VirtualSensorCreate-DcwJ_w-l.js} +1 -1
- package/dist/interface/assets/{Workers-DmZkFylb.css → Workers-7hKMBU4w.css} +1 -1
- package/dist/interface/assets/Workers-fV_NEZ7U.js +2 -0
- package/dist/interface/assets/{account-C5mHt2Ep.js → account-CY80SLLf.js} +1 -1
- package/dist/interface/assets/{alert-circle-Cu_kjPlA.js → alert-circle-pDGfnZ4K.js} +1 -1
- package/dist/interface/assets/{alert-outline-DXHNnhoP.js → alert-outline-CeoXcnQc.js} +1 -1
- package/dist/interface/assets/api-Draww2tC.js +2 -0
- package/dist/interface/assets/{api-BijLH5JF.js → api-Mny5Elfn.js} +1 -1
- package/dist/interface/assets/api-eELh8KCM.css +2 -0
- package/dist/interface/assets/{arrow-left-DPtWmM6S.js → arrow-left-D9jDhvK5.js} +1 -1
- package/dist/interface/assets/{arrow-right-outline-BY1ggGA1.js → arrow-right-outline-DF7tkKYk.js} +1 -1
- package/dist/interface/assets/{auth-CSrkzvBq.js → auth-9_Jjlsh0.js} +1 -1
- package/dist/interface/assets/{automations-5YkU18M0.js → automations-BfsdbSPC.js} +1 -1
- package/dist/interface/assets/{back-filled-r7bN5ObT.js → back-filled-DUUGErMw.js} +1 -1
- package/dist/interface/assets/{bell-ring-C470qCAb.js → bell-ring-DV73JIre.js} +1 -1
- package/dist/interface/assets/{cameras.schema-BQ3CdtV5.js → cameras.schema-DMY4SYte.js} +1 -1
- package/dist/interface/assets/{cctv-BKVOVZCR.js → cctv-jy5ROx0o.js} +1 -1
- package/dist/interface/assets/{check-circle-Ce_sbfPZ.js → check-circle-FwoylV5-.js} +1 -1
- package/dist/interface/assets/{chevron-down-CjSTp091.js → chevron-down-umZ7i0mG.js} +1 -1
- package/dist/interface/assets/{chevron-right-B3j6hI1Q.js → chevron-right-AhqYJOFy.js} +1 -1
- package/dist/interface/assets/{clock-outline-BgcDXoyp.js → clock-outline-CbvOAMhO.js} +1 -1
- package/dist/interface/assets/{close-CQoGQHOF.js → close-CtaDF28n.js} +1 -1
- package/dist/interface/assets/{close-circle-DYhkXsRj.js → close-circle-FZ8IxGd4.js} +1 -1
- package/dist/interface/assets/{cloud-check-CVx221dJ.js → cloud-check-CFSukfAF.js} +1 -1
- package/dist/interface/assets/cloudHandoff-BQsDy9yp.js +1 -0
- package/dist/interface/assets/{config-BqiDMRVk.js → config-BZphegxi.js} +1 -1
- package/dist/interface/assets/{copy-yhHCVVOa.js → copy-CFA_pDRv.js} +1 -1
- package/dist/interface/assets/cube-scan-DEuMi23T.js +1 -0
- package/dist/interface/assets/{delete-xWUQUP2x.js → delete-921w_nKy.js} +1 -1
- package/dist/interface/assets/{deployed-code-update-CHr3gyW9.js → deployed-code-update-CYS6eKfa.js} +1 -1
- package/dist/interface/assets/{dist-DVb-CALh.js → dist-BwEXwXSw.js} +1 -1
- package/dist/interface/assets/{download-PLxvyB7s.js → download-C-LzNRmM.js} +1 -1
- package/dist/interface/assets/esm-B1LZs0VG.js +1 -0
- package/dist/interface/assets/esm-BB4SBaek.js +1 -0
- package/dist/interface/assets/esm-BGA8Ydne.js +1 -0
- package/dist/interface/assets/esm-BHI_KH7L.js +1 -0
- package/dist/interface/assets/esm-BQ0EuuZe.js +1 -0
- package/dist/interface/assets/esm-Bfb-tuKt.js +1 -0
- package/dist/interface/assets/esm-BzR_6ma5.js +1 -0
- package/dist/interface/assets/esm-CCIqNfsh.js +1 -0
- package/dist/interface/assets/esm-CSMN-8o1.js +1 -0
- package/dist/interface/assets/esm-CxWbrBxP.js +1 -0
- package/dist/interface/assets/esm-DBTrmJK6.js +1 -0
- package/dist/interface/assets/esm-DRswZUWf.js +1 -0
- package/dist/interface/assets/esm-Dk7gxPHs.js +1 -0
- package/dist/interface/assets/esm-P0RCkAtk.js +1 -0
- package/dist/interface/assets/{eye-off-C8kzsdYU.js → eye-off-DESV3QdF.js} +1 -1
- package/dist/interface/assets/{flowSchema-C6FlHoK2.js → flowSchema-_RiPAgMv.js} +1 -1
- package/dist/interface/assets/{history-QBEPNc4X.js → history-60iCpGvQ.js} +1 -1
- package/dist/interface/assets/{home-af3W_y8U.js → home-w5iY2RUg.js} +1 -1
- package/dist/interface/assets/{information-outline-BPCsozSU.js → information-outline-CvBsGtDu.js} +1 -1
- package/dist/interface/assets/{lightbulb-outline-ccTlGyvW.js → lightbulb-outline-DLrnCPG5.js} +1 -1
- package/dist/interface/assets/main-CV7qCZ5i.js +3 -0
- package/dist/interface/assets/{main-aZt-Pooz.css → main-DJb49Tjp.css} +1 -1
- package/dist/interface/assets/{microphone-5exHwwyq.js → microphone-DUVI-s2_.js} +1 -1
- package/dist/interface/assets/mqtt-BPfLOT7L.js +1 -0
- package/dist/interface/assets/native-Cr4dkfqy.js +1 -0
- package/dist/interface/assets/native-D1Vvlhds.js +1 -0
- package/dist/interface/assets/{nodeDefinitions-CRrkU6zR.js → nodeDefinitions-BecZ8I2Q.js} +1 -1
- package/dist/interface/assets/{notifications-DCAiomoR.js → notifications-CK6XQBF-.js} +1 -1
- package/dist/interface/assets/{pencil-outline-M9I4mCJO.js → pencil-outline-BrOrbuzc.js} +1 -1
- package/dist/interface/assets/plugin-937qnq7E.js +1 -0
- package/dist/interface/assets/{plugins-D4am8tba.js → plugins-BU7TQh_f.js} +1 -1
- package/dist/interface/assets/{plus-CGIx-WV8.js → plus-CL6KSxf8.js} +1 -1
- package/dist/interface/assets/{plus-CrfQUUEC.js → plus-Dd-XLT76.js} +1 -1
- package/dist/interface/assets/{power-VnZM2-0c.js → power-lCbm_7y7.js} +1 -1
- package/dist/interface/assets/{ring-resize-CodGa6wQ.js → ring-resize-CEqUkpxT.js} +1 -1
- package/dist/interface/assets/{round-alt-arrow-left-bold-DTrlW4yx.js → round-alt-arrow-left-bold-CwaLYdW5.js} +1 -1
- package/dist/interface/assets/round-restart-alt-BFgY3k77.js +1 -0
- package/dist/interface/assets/round-restart-alt-SpAgbSYJ.css +1 -0
- package/dist/interface/assets/{search-miJXZGQz.js → search-CT2BLw7G.js} +1 -1
- package/dist/interface/assets/sensorIcons-DtJEfoU4.js +1 -0
- package/dist/interface/assets/{sensors-D1OCrbIC.js → sensors-DjgfMS8S.js} +1 -1
- package/dist/interface/assets/{server-CUfmbg3m.js → server-BSYs0zoo.js} +1 -1
- package/dist/interface/assets/{settings-DY0TJSAM.js → settings-CzS4dvIO.js} +1 -1
- package/dist/interface/assets/{source-branch-nw9fwXin.js → source-branch-C6p1G3a9.js} +1 -1
- package/dist/interface/assets/table-2-line-_VC4NuFA.js +1 -0
- package/dist/interface/assets/theme-Dr_YO8-0.js +1 -0
- package/dist/interface/assets/{trash-2-B-di2M48.js → trash-2-DcOYT3oH.js} +1 -1
- package/dist/interface/assets/{trash-can-outline-BbZkHoW7.js → trash-can-outline-cphfB8Jh.js} +1 -1
- package/dist/interface/assets/{trash-fill-Bgen5QTD.js → trash-fill-CRBaUdPn.js} +1 -1
- package/dist/interface/assets/{trash2-BP__fHgN.js → trash2-CvhB8xOW.js} +1 -1
- package/dist/interface/assets/{types-B25Yynej.js → types-3mdj4rRK.js} +1 -1
- package/dist/interface/assets/types-BGMvANrz.js +1 -0
- package/dist/interface/assets/{upload-CNYrnwuV.js → upload-DeN3O-ua.js} +1 -1
- package/dist/interface/assets/{useAppVersion-Cp7Ehmiv.js → useAppVersion-UIA6seZv.js} +1 -1
- package/dist/interface/assets/{useBackupRestore-CL04IH-G.js → useBackupRestore-E3pVEOvA.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-DFe9A6XU.js → useCameraOptions-Dx-zyqdH.js} +1 -1
- package/dist/interface/assets/{useCardSelection-B3B2qPHO.js → useCardSelection-DGPLn1ZH.js} +1 -1
- package/dist/interface/assets/{useElectron-KnqvZz0q.js → useElectron-BXVcamD0.js} +1 -1
- package/dist/interface/assets/useLogsSocket-DSxzAvQF.js +1 -0
- package/dist/interface/assets/{usePermissions-C3D3JcPH.js → usePermissions-B_C-zX5H.js} +1 -1
- package/dist/interface/assets/usePluginUpdates-QU3U82S_.js +1 -0
- package/dist/interface/assets/{useServerRestart-Ck0mdqmf.js → useServerRestart-BxDBO7k-.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-C4AA8JUq.js → useStreamStatus-DY4NM_Ua.js} +1 -1
- package/dist/interface/assets/useUserOptions-BL53bECb.js +1 -0
- package/dist/interface/assets/{variable-CbNySf4s.js → variable-oLSsiEtj.js} +1 -1
- package/dist/interface/assets/{vendor-CSg6_Jfu.js → vendor-JQXDMBA-.js} +2 -2
- package/dist/interface/assets/vendor-cameraui-DojVuZ2L.js +2326 -0
- package/dist/interface/assets/{vendor-capacitor-C-8IYzpJ.js → vendor-capacitor-CDwgXF4b.js} +2 -2
- package/dist/interface/assets/{vendor-chart-CoQ9HTE3.js → vendor-chart-KrNcA52y.js} +1 -1
- package/dist/interface/assets/vendor-core-ZDcIKAw9.js +1 -0
- package/dist/interface/assets/{vendor-dnd-DQF7Aoap.js → vendor-dnd-Jch9IvL6.js} +1 -1
- package/dist/interface/assets/{vendor-draggabilly-Cghb3aIb.js → vendor-draggabilly-Cn-knCpG.js} +1 -1
- package/dist/interface/assets/{vendor-markdown-DWwrEE67.js → vendor-markdown-BhFLJolW.js} +1 -1
- package/dist/interface/assets/{vendor-primevue-JQ8abUl5.js → vendor-primevue-C0acGg0Y.js} +85 -371
- package/dist/interface/assets/{vendor-vueflow-crUU2mAI.js → vendor-vueflow-DQrTmoNS.js} +1 -1
- package/dist/interface/assets/web-BQtDHNew.js +1 -0
- package/dist/interface/assets/web-BY9kjyTj.js +1 -0
- package/dist/interface/assets/web-BcQtDSat.js +1 -0
- package/dist/interface/assets/web-BgrRQzLO.js +1 -0
- package/dist/interface/assets/web-BjKL51lK-CJYmHsnY.js +1 -0
- package/dist/interface/assets/web-BxvsJylk.js +1 -0
- package/dist/interface/assets/web-C-3iwDhG.js +1 -0
- package/dist/interface/assets/web-C9XOwu07.js +1 -0
- package/dist/interface/assets/web-CPCxRDtw.js +1 -0
- package/dist/interface/assets/web-D0U5B2i2.js +1 -0
- package/dist/interface/assets/web-DtxjXJdS.js +1 -0
- package/dist/interface/assets/web-Duf-oV4e.js +1 -0
- package/dist/interface/assets/web-jy45nBi_.js +1 -0
- package/dist/interface/assets/web-vWx_-Iq5.js +1 -0
- package/dist/interface/assets/{webhook-B7YgiSrF.js → webhook-CMAB4nTl.js} +1 -1
- package/dist/interface/assets/workbox-window.prod.es5-Dlqax_Po.js +1 -0
- package/dist/interface/assets/{zoom-in-D7BJNotF.js → zoom-in-STm8SNt2.js} +1 -1
- package/dist/interface/index.html +42 -43
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +13 -13
- package/dist/server/requirements.txt +1 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +20 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +20 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +40 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +20 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/carbon_dioxide.py +91 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/carbon_monoxide.py +90 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/cold.py +90 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/gas.py +90 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/heat.py +90 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/illuminance.py +91 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/power.py +90 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/problem.py +90 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/tamper.py +90 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/vibration.py +90 -0
- package/dist/server/src/api/database/record-schemas.d.ts +10 -0
- package/dist/server/src/api/schemas/cameras.schema.d.ts +325 -5
- package/dist/server/src/api/schemas/cameras.schema.js +24 -2
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/sensors.schema.d.ts +10 -0
- package/dist/server/src/api/schemas/users.schema.d.ts +70 -0
- package/dist/server/src/api/services/plugins.service.d.ts +2 -1
- package/dist/server/src/api/services/plugins.service.js +59 -15
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +7 -0
- package/dist/server/src/api/websocket/nsp/plugins.d.ts +1 -0
- package/dist/server/src/api/websocket/nsp/plugins.js +4 -0
- package/dist/server/src/api/websocket/nsp/plugins.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-coordinator.d.ts +6 -0
- package/dist/server/src/camera/decoder/detection-coordinator.js +67 -7
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-pipeline.d.ts +16 -1
- package/dist/server/src/camera/decoder/detection-pipeline.js +92 -14
- package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
- package/dist/server/src/camera/decoder/event-manager.d.ts +4 -1
- package/dist/server/src/camera/decoder/event-manager.js +29 -1
- package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
- package/dist/server/src/camera/decoder/frame-scaler.d.ts +21 -0
- package/dist/server/src/camera/decoder/frame-scaler.js +82 -10
- package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
- package/dist/server/src/camera/decoder/secondary-stage.js +19 -16
- package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
- package/dist/server/src/camera/decoder/stationary-suppressor.d.ts +7 -0
- package/dist/server/src/camera/decoder/stationary-suppressor.js +66 -4
- package/dist/server/src/camera/decoder/stationary-suppressor.js.map +1 -1
- package/dist/server/src/camera/sensors/controller.js +6 -0
- package/dist/server/src/camera/sensors/controller.js.map +1 -1
- package/dist/server/src/sensors/registry.d.ts +6 -1
- package/dist/server/src/sensors/registry.js +78 -26
- package/dist/server/src/sensors/registry.js.map +1 -1
- package/dist/server/src/sensors/sensor.d.ts +2 -2
- package/dist/server/src/sensors/sensor.js +14 -2
- package/dist/server/src/sensors/sensor.js.map +1 -1
- package/dist/server/src/workers/manager.js +2 -0
- package/dist/server/src/workers/manager.js.map +1 -1
- package/package.json +13 -13
- package/dist/interface/assets/Automation-BdSjkwoL.js +0 -3
- package/dist/interface/assets/AutomationImport-DEp2P3xa.js +0 -2
- package/dist/interface/assets/AutomationStore-4NQAyOXd.js +0 -2
- package/dist/interface/assets/AutomationStoreDetail-D8NZLRu9.js +0 -2
- package/dist/interface/assets/Automations-D7kh-T-O.js +0 -2
- package/dist/interface/assets/Camera-DsvE1bWd.js +0 -2
- package/dist/interface/assets/Camview-BXDwJtBf.js +0 -1
- package/dist/interface/assets/Config-CJgmsr2e.js +0 -2
- package/dist/interface/assets/ConfigActionSensor-pv3k-l2v.js +0 -1
- package/dist/interface/assets/ConfigTriggerGeofence-CDbA6_Wv.js +0 -1
- package/dist/interface/assets/Console-CPcfNsup.js +0 -1
- package/dist/interface/assets/CuiAutomationRunsDialog-Bx3LtjMJ.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-Qt8m2uSx.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-DJG6J1nY.js +0 -1
- package/dist/interface/assets/CuiCameraShares-C3SATbiV.js +0 -1
- package/dist/interface/assets/CuiDataTable-BGleWv6B.css +0 -1
- package/dist/interface/assets/CuiDataTable-DdNoneMB.js +0 -1
- package/dist/interface/assets/CuiLightControl-bH7WQXAY.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-Do8-vIl7.js +0 -1
- package/dist/interface/assets/CuiPluginCard-B50TjvIq.js +0 -2
- package/dist/interface/assets/CuiPluginOAuthButton-Aanenlqx.js +0 -2
- package/dist/interface/assets/CuiRecordingsGrid-D9IF3B-S.js +0 -1
- package/dist/interface/assets/CuiSchema-B8J8G314.js +0 -1
- package/dist/interface/assets/Faces-B8d8W6cq.js +0 -1
- package/dist/interface/assets/FirstSteps-DWB8ZhqT.js +0 -1
- package/dist/interface/assets/Instances-DCE3ixbf.js +0 -1
- package/dist/interface/assets/Logs-DJL3FHsG.js +0 -6
- package/dist/interface/assets/OAuthDeviceFlow-9kYvqgyg.js +0 -1
- package/dist/interface/assets/Plugin-HIED8ziU.js +0 -1
- package/dist/interface/assets/PluginDetail-Ba9VDO53.js +0 -2
- package/dist/interface/assets/PluginSearch-B3y83uDW.js +0 -2
- package/dist/interface/assets/PluginSearch-BKVIwJVF.js +0 -1
- package/dist/interface/assets/Plugins-mdsFKDQ8.js +0 -1
- package/dist/interface/assets/Recordings-DO1BPBKp.css +0 -1
- package/dist/interface/assets/Recordings-GVzdhE19.js +0 -1
- package/dist/interface/assets/SensorEdit-COOOaB-l.js +0 -1
- package/dist/interface/assets/Sensors-De6n66ER.js +0 -2
- package/dist/interface/assets/Sensors-DfE07b1Q.css +0 -1
- package/dist/interface/assets/Settings-BipPaBUB.js +0 -1
- package/dist/interface/assets/SettingsAccount-809sRaa9.js +0 -1
- package/dist/interface/assets/SettingsAccount-Bmteep-6.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CJWlk9_1.js +0 -1
- package/dist/interface/assets/SettingsAppearance-Cobtww9z.js +0 -1
- package/dist/interface/assets/SettingsBackup-Bbp3fEuS.js +0 -1
- package/dist/interface/assets/SettingsList-DFJifGkE.js +0 -1
- package/dist/interface/assets/SettingsNotifications-Dt_gxxoj.js +0 -2
- package/dist/interface/assets/SettingsRecordings-1i4sNZ8u.js +0 -1
- package/dist/interface/assets/SettingsRemote-HDCH_D5s.js +0 -1
- package/dist/interface/assets/SettingsSystem-jDQ9m8jt.js +0 -2
- package/dist/interface/assets/SettingsUsers-CFzURSfg.js +0 -1
- package/dist/interface/assets/VersionsHandler-CBAnjOWO.js +0 -7
- package/dist/interface/assets/Workers-DQZ0QoEN.js +0 -2
- package/dist/interface/assets/alarm-light-outline-jCTfmz5t.js +0 -1
- package/dist/interface/assets/api-CwjboJ6S.css +0 -2
- package/dist/interface/assets/api-DpZpuR8_.js +0 -2
- package/dist/interface/assets/cloudHandoff-D8flqTzb.js +0 -1
- package/dist/interface/assets/cube-scan-Ccxismvr.js +0 -1
- package/dist/interface/assets/esm-B4MXP42m.js +0 -1
- package/dist/interface/assets/esm-BW9m3dy4.js +0 -1
- package/dist/interface/assets/esm-BZ3gh7Fj.js +0 -1
- package/dist/interface/assets/esm-Blvz9SsB.js +0 -1
- package/dist/interface/assets/esm-CJXU9jaA.js +0 -1
- package/dist/interface/assets/esm-Cqqu_mer.js +0 -1
- package/dist/interface/assets/esm-CtKbLoV_.js +0 -1
- package/dist/interface/assets/esm-CwzNi2iW.js +0 -1
- package/dist/interface/assets/esm-KnO8wJyB.js +0 -1
- package/dist/interface/assets/esm-Lt6R0RFn.js +0 -1
- package/dist/interface/assets/esm-MvRctfDP.js +0 -1
- package/dist/interface/assets/esm-W4LX4Rpq.js +0 -1
- package/dist/interface/assets/esm-l57LNUWu.js +0 -1
- package/dist/interface/assets/esm-xofhyA8r.js +0 -1
- package/dist/interface/assets/main-Csclhnoq.js +0 -3
- package/dist/interface/assets/mqtt-DklPP2x5.js +0 -1
- package/dist/interface/assets/native-Cpj7zrLp.js +0 -1
- package/dist/interface/assets/native-D--k2WN1.js +0 -1
- package/dist/interface/assets/plugin-D3FpjfF8.js +0 -1
- package/dist/interface/assets/round-restart-alt-CdweDM5-.js +0 -1
- package/dist/interface/assets/round-restart-alt-D3sTGG7n.css +0 -1
- package/dist/interface/assets/theme-ClwavgWz.js +0 -1
- package/dist/interface/assets/types-D9YcubIy.js +0 -1
- package/dist/interface/assets/useLogsSocket-BxI3NbRJ.js +0 -5
- package/dist/interface/assets/useUserOptions-BpEZlRAL.js +0 -1
- package/dist/interface/assets/vendor-cameraui-Cgb5z6NJ.js +0 -2040
- package/dist/interface/assets/vendor-core-BJsSXMFQ.js +0 -1
- package/dist/interface/assets/web-BX3axHeB.js +0 -1
- package/dist/interface/assets/web-BcHmbPny.js +0 -1
- package/dist/interface/assets/web-BjKL51lK-BQjyRtns.js +0 -1
- package/dist/interface/assets/web-C8w-z-xR.js +0 -1
- package/dist/interface/assets/web-CHdniv8I.js +0 -1
- package/dist/interface/assets/web-CWBhY0Av.js +0 -1
- package/dist/interface/assets/web-Cf1yYy4u.js +0 -1
- package/dist/interface/assets/web-Ct6Vkr6F.js +0 -1
- package/dist/interface/assets/web-DARDw7d8.js +0 -1
- package/dist/interface/assets/web-DKBMdBSA.js +0 -1
- package/dist/interface/assets/web-Ddzvp-fv.js +0 -1
- package/dist/interface/assets/web-Dymr_MpD.js +0 -1
- package/dist/interface/assets/web-XIuTPdFc.js +0 -1
- package/dist/interface/assets/web-lrnXIJTz.js +0 -1
- package/dist/interface/assets/workbox-window.prod.es5-BkFwsIPp.js +0 -1
- /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."""
|