@camera.ui/server 2.0.22 → 2.0.24
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-CRIhzt2J.js +1 -0
- package/dist/interface/assets/About-CvY4xvAU.js +1 -0
- package/dist/interface/assets/Adminpanel-4ilp8plp.js +1 -0
- package/dist/interface/assets/Automation-uaWWTeTZ.js +3 -0
- package/dist/interface/assets/AutomationImport-RNgRv6Uc.js +2 -0
- package/dist/interface/assets/AutomationStore-D8plMzVI.js +2 -0
- package/dist/interface/assets/AutomationStoreDetail-BO-9XCRn.js +2 -0
- package/dist/interface/assets/Automations-PHMVe6wG.js +2 -0
- package/dist/interface/assets/Camera-Akukeq4_.js +2 -0
- package/dist/interface/assets/CameraConsole-BnKiGukm.js +7 -0
- package/dist/interface/assets/Cameras-BuHNAHpD.js +652 -0
- package/dist/interface/assets/{Camview-CaEbdeQZ.css → Camview-Cj10uxGy.css} +1 -1
- package/dist/interface/assets/Camview-dF8o0iy2.js +1 -0
- package/dist/interface/assets/Config-iq-YI9Vg.js +2 -0
- package/dist/interface/assets/{ConfigActionCameraControl-DFdb4xzq.js → ConfigActionCameraControl-C2qva2mT.js} +1 -1
- package/dist/interface/assets/ConfigActionDelay-C02w0yBx.js +1 -0
- package/dist/interface/assets/ConfigActionHttp-DVf26mYG.js +1 -0
- package/dist/interface/assets/ConfigActionImageInput-BTlFV7kK.js +1 -0
- package/dist/interface/assets/ConfigActionMqtt-CD9RW5Lq.js +1 -0
- package/dist/interface/assets/ConfigActionNotification-CjbIPrEb.js +1 -0
- package/dist/interface/assets/ConfigActionNotificationControl-BCdKNvgC.js +1 -0
- package/dist/interface/assets/ConfigActionOutput-wV9RFDQO.js +1 -0
- package/dist/interface/assets/ConfigActionPlugin-DijuNALK.js +1 -0
- package/dist/interface/assets/ConfigActionSensor-C9q3sRuI.js +1 -0
- package/dist/interface/assets/ConfigActionSnapshot-B79IJLFV.js +1 -0
- package/dist/interface/assets/ConfigActionVariable-Do94c7oi.js +1 -0
- package/dist/interface/assets/ConfigConditionIfElse-BtbZhnCM.js +1 -0
- package/dist/interface/assets/ConfigConditionSensorState-D1V_FhNU.js +1 -0
- package/dist/interface/assets/ConfigConditionSwitch-C74dDt3R.js +1 -0
- package/dist/interface/assets/ConfigConditionTime-5IrJQgAV.js +1 -0
- package/dist/interface/assets/ConfigSensorValueInput-BcbzMf0g.js +1 -0
- package/dist/interface/assets/{ConfigTriggerDetection-Cjes6g7x.js → ConfigTriggerDetection-ld9Upgoc.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-DbfBc1AM.js +1 -0
- package/dist/interface/assets/ConfigTriggerManual-t-J-HbqF.js +1 -0
- package/dist/interface/assets/ConfigTriggerMqtt-i57J8-Nq.js +1 -0
- package/dist/interface/assets/ConfigTriggerSchedule-Dv7wIG3G.js +1 -0
- package/dist/interface/assets/ConfigTriggerSensor-Ba2lCSGc.js +1 -0
- package/dist/interface/assets/{ConfigTriggerSystem-NaaBopYq.js → ConfigTriggerSystem-BWs3rP_W.js} +1 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CpQakeYG.js +1 -0
- package/dist/interface/assets/Console-BTb5Yc32.js +1 -0
- package/dist/interface/assets/CuiAutomationRunsDialog-DX0xpNxx.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-Bu0PtwX-.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-DIg-nl0p.js +1 -0
- package/dist/interface/assets/CuiCameraPipCard-q3yeptLd.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-BWN8gBl4.js +1 -0
- package/dist/interface/assets/CuiCameraShares-BggG5Ic_.js +1 -0
- package/dist/interface/assets/CuiCameraTable-BCrE4TMJ.js +2 -0
- package/dist/interface/assets/CuiDataTable-Dk8LJl5S.js +1 -0
- package/dist/interface/assets/CuiLightControl-CaIl2eCO.js +1 -0
- package/dist/interface/assets/CuiLightControl-DFrZm_sv.css +1 -0
- package/dist/interface/assets/CuiList-Cjbxtb1E.js +1 -0
- package/dist/interface/assets/CuiMarkdownContent-Bjs3wRnq.js +1 -0
- package/dist/interface/assets/CuiMarkdownContent-Do8-vIl7.js +1 -0
- package/dist/interface/assets/CuiPluginCard-cvZkF8Cz.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-D9Vi1SEP.js → CuiPluginCategoryChip-DsEuwQrw.js} +1 -1
- package/dist/interface/assets/CuiPluginOAuthButton-Bbwly_xJ.js +2 -0
- package/dist/interface/assets/{CuiPluginTrustBadge-D0rUX2i6.js → CuiPluginTrustBadge-BC6F9f-3.js} +1 -1
- package/dist/interface/assets/CuiQRCode-DKHFwuhr.js +1 -0
- package/dist/interface/assets/CuiRecordingsGrid-DSf7RXci.js +1 -0
- package/dist/interface/assets/CuiSchema-Dda4lNPz.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-BZawroJz.js +1 -0
- package/dist/interface/assets/Faces-CvQCD53E.js +1 -0
- package/dist/interface/assets/FirstSteps-Dg0Bvjs2.js +1 -0
- package/dist/interface/assets/Instances-DisNu3zt.js +1 -0
- package/dist/interface/assets/Logs-DSSDjAY-.js +6 -0
- package/dist/interface/assets/Menu-CJ-MMxvd.js +1 -0
- package/dist/interface/assets/OAuthDeviceFlow-CKTokRaq.js +1 -0
- package/dist/interface/assets/Plugin-7daLGUVo.js +1 -0
- package/dist/interface/assets/PluginConsole-CcRMneFa.js +7 -0
- package/dist/interface/assets/PluginDetail-B1-NdurE.js +2 -0
- package/dist/interface/assets/PluginSchema-CP0JWUSD.js +1 -0
- package/dist/interface/assets/PluginSearch-BHN0J_JP.js +2 -0
- package/dist/interface/assets/PluginSearch-Cx_lzDqC.js +1 -0
- package/dist/interface/assets/Plugins-DnMPdcQF.js +1 -0
- package/dist/interface/assets/Recordings-Dxs3srmh.js +1 -0
- package/dist/interface/assets/SensorEdit-Dq2nV1Wf.js +1 -0
- package/dist/interface/assets/SensorHistory-BeCbNWJh.js +1 -0
- package/dist/interface/assets/Sensors-BA9P_Ray.css +1 -0
- package/dist/interface/assets/Sensors-D9DLdMaD.js +2 -0
- package/dist/interface/assets/Settings-DCHoD7r8.js +1 -0
- package/dist/interface/assets/SettingsAccount-BrhnlNuF.js +1 -0
- package/dist/interface/assets/SettingsAccount-djLxmQ9r.js +1 -0
- package/dist/interface/assets/{SettingsAccount-CyNJQSuV.css → SettingsAccount-si-6gWl5.css} +1 -1
- package/dist/interface/assets/SettingsAppearance-Bq-xM16S.js +1 -0
- package/dist/interface/assets/SettingsAppearance-JKbe5xiH.js +1 -0
- package/dist/interface/assets/SettingsBackup-CjlVk3hF.js +1 -0
- package/dist/interface/assets/SettingsList-C4mMOKJh.js +1 -0
- package/dist/interface/assets/SettingsMqtt-DoYFVHoD.js +1 -0
- package/dist/interface/assets/SettingsNotifications-Cmr9Bvy0.js +2 -0
- package/dist/interface/assets/SettingsPermissions-D33G-1kM.js +1 -0
- package/dist/interface/assets/SettingsRecordings-DYiuW0rA.js +1 -0
- package/dist/interface/assets/SettingsRemote-CROA1Oa7.js +1 -0
- package/dist/interface/assets/SettingsSystem-rgucO68X.js +2 -0
- package/dist/interface/assets/SettingsUsers-2uMPOpyC.js +1 -0
- package/dist/interface/assets/Terminal-BMFWoJ_k.js +4 -0
- package/dist/interface/assets/VariableInput-Cx9tgiM4.js +1 -0
- package/dist/interface/assets/VariableSuggestions-DV_QjTtU.js +1 -0
- package/dist/interface/assets/VersionsHandler-v4hH23M_.js +7 -0
- package/dist/interface/assets/VirtualSensorCreate-DhuGE1Mf.js +1 -0
- package/dist/interface/assets/Workers-DyJXudfY.js +2 -0
- package/dist/interface/assets/{account-sFoKqEOV.js → account-C5mHt2Ep.js} +1 -1
- package/dist/interface/assets/ace-BqKKexH4.js +1 -0
- package/dist/interface/assets/{ace.config-C_wgqTLD.js → ace.config-BNjBs7Fe.js} +1 -1
- package/dist/interface/assets/alarm-light-outline-jCTfmz5t.js +1 -0
- package/dist/interface/assets/{alert-circle-BQZQ417w.js → alert-circle-Cu_kjPlA.js} +1 -1
- package/dist/interface/assets/alert-outline-DXHNnhoP.js +1 -0
- package/dist/interface/assets/api-3va2gyB0.css +2 -0
- package/dist/interface/assets/{api-DEaXK1Kq.js → api-BKU9IS3U.js} +1 -1
- package/dist/interface/assets/api-Cc-rMHwl.js +2 -0
- package/dist/interface/assets/arrow-left-DPtWmM6S.js +1 -0
- package/dist/interface/assets/arrow-right-outline-BY1ggGA1.js +1 -0
- package/dist/interface/assets/{auth-XA5zkqwW.js → auth-B4latCDR.js} +1 -1
- package/dist/interface/assets/automationBlueprint-D0F9AHk9.js +1 -0
- package/dist/interface/assets/automations-BFkAMu3Y.js +1 -0
- package/dist/interface/assets/{back-filled-BdHG6uUx.js → back-filled-r7bN5ObT.js} +1 -1
- package/dist/interface/assets/{bell-ring-Dua4zXf_.js → bell-ring-C470qCAb.js} +1 -1
- package/dist/interface/assets/{cameras.schema-1a2URPGd.js → cameras.schema-BtaT3B32.js} +1 -1
- package/dist/interface/assets/{cctv-DEiPL3U8.js → cctv-BKVOVZCR.js} +1 -1
- package/dist/interface/assets/check-circle-Ce_sbfPZ.js +1 -0
- package/dist/interface/assets/chevron-down-CjSTp091.js +1 -0
- package/dist/interface/assets/chevron-right-B4vB0gm4.js +1 -0
- package/dist/interface/assets/{clock-outline-C_f3Ed8x.js → clock-outline-BgcDXoyp.js} +1 -1
- package/dist/interface/assets/{close-DNgGJYHi.js → close-CQoGQHOF.js} +1 -1
- package/dist/interface/assets/{close-circle-L5juejMg.js → close-circle-DYhkXsRj.js} +1 -1
- package/dist/interface/assets/{cloud-check-DD7oRzmo.js → cloud-check-CVx221dJ.js} +1 -1
- package/dist/interface/assets/cloudHandoff-CPrXpD0L.js +1 -0
- package/dist/interface/assets/{config-C2hgXHyj.js → config-B_lj3Myj.js} +1 -1
- package/dist/interface/assets/copy-yhHCVVOa.js +1 -0
- package/dist/interface/assets/cube-scan-Ccxismvr.js +1 -0
- package/dist/interface/assets/delete-xWUQUP2x.js +1 -0
- package/dist/interface/assets/dist-DVb-CALh.js +1 -0
- package/dist/interface/assets/download-PLxvyB7s.js +1 -0
- package/dist/interface/assets/esm-B4MXP42m.js +1 -0
- package/dist/interface/assets/esm-BW9m3dy4.js +1 -0
- package/dist/interface/assets/esm-BZ3gh7Fj.js +1 -0
- package/dist/interface/assets/esm-Blvz9SsB.js +1 -0
- package/dist/interface/assets/esm-CJXU9jaA.js +1 -0
- package/dist/interface/assets/esm-Cqqu_mer.js +1 -0
- package/dist/interface/assets/esm-CtKbLoV_.js +1 -0
- package/dist/interface/assets/esm-CwzNi2iW.js +1 -0
- package/dist/interface/assets/esm-KnO8wJyB.js +1 -0
- package/dist/interface/assets/esm-Lt6R0RFn.js +1 -0
- package/dist/interface/assets/esm-MvRctfDP.js +1 -0
- package/dist/interface/assets/esm-W4LX4Rpq.js +1 -0
- package/dist/interface/assets/esm-l57LNUWu.js +1 -0
- package/dist/interface/assets/esm-xofhyA8r.js +1 -0
- package/dist/interface/assets/eye-off-C8kzsdYU.js +1 -0
- package/dist/interface/assets/flowSchema-CyZseAPD.js +1 -0
- package/dist/interface/assets/{history-iAZcYg3f.js → history-QBEPNc4X.js} +1 -1
- package/dist/interface/assets/home-af3W_y8U.js +1 -0
- package/dist/interface/assets/{information-outline-CVsB1bl-.js → information-outline-BPCsozSU.js} +1 -1
- package/dist/interface/assets/{lightbulb-outline-nNLyXAIp.js → lightbulb-outline-ccTlGyvW.js} +1 -1
- package/dist/interface/assets/main-C4qjk6s5.js +3 -0
- package/dist/interface/assets/main-aZt-Pooz.css +1 -0
- package/dist/interface/assets/{microphone-CU0mFDMh.js → microphone-5exHwwyq.js} +1 -1
- package/dist/interface/assets/mqtt-CFw_CCq8.js +1 -0
- package/dist/interface/assets/native-Cpj7zrLp.js +1 -0
- package/dist/interface/assets/native-D--k2WN1.js +1 -0
- package/dist/interface/assets/nodeDefinitions-CRrkU6zR.js +1 -0
- package/dist/interface/assets/{notifications-BHQN6WD4.js → notifications-0_glcRlR.js} +1 -1
- package/dist/interface/assets/{pencil-outline-BQxLTlZx.js → pencil-outline-M9I4mCJO.js} +1 -1
- package/dist/interface/assets/plugin-D3FpjfF8.js +1 -0
- package/dist/interface/assets/{plugins-C0RtyBHQ.js → plugins-ICpmsguj.js} +1 -1
- package/dist/interface/assets/plus-CGIx-WV8.js +1 -0
- package/dist/interface/assets/{plus-Ct6WQfM1.js → plus-CrfQUUEC.js} +1 -1
- package/dist/interface/assets/power-VnZM2-0c.js +1 -0
- package/dist/interface/assets/{ring-resize-CZBThoQC.js → ring-resize-CodGa6wQ.js} +1 -1
- package/dist/interface/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/dist/interface/assets/{round-alt-arrow-left-bold-BlpNMBxm.js → round-alt-arrow-left-bold-DTrlW4yx.js} +1 -1
- package/dist/interface/assets/round-restart-alt-CxUkNgtt.js +1 -0
- package/dist/interface/assets/{search-M4Rt52Co.js → search-miJXZGQz.js} +1 -1
- package/dist/interface/assets/sensors-Bh5GuQ78.js +1 -0
- package/dist/interface/assets/{server-CVSOthzT.js → server-DbpDC3pc.js} +1 -1
- package/dist/interface/assets/{settings-CgToKrFd.js → settings-DY0TJSAM.js} +1 -1
- package/dist/interface/assets/{source-branch-CoHKTGxb.js → source-branch-nw9fwXin.js} +1 -1
- package/dist/interface/assets/{theme-BZi7VV10.js → theme-DlMdsvGC.js} +1 -1
- package/dist/interface/assets/{trash-2-BKWfq15D.js → trash-2-B-di2M48.js} +1 -1
- package/dist/interface/assets/trash-can-outline-BbZkHoW7.js +1 -0
- package/dist/interface/assets/{trash-fill-yNQsFs0Y.js → trash-fill-Bgen5QTD.js} +1 -1
- package/dist/interface/assets/{trash2-DjTG9rG-.js → trash2-BP__fHgN.js} +1 -1
- package/dist/interface/assets/types-C1VwkReu.js +1 -0
- package/dist/interface/assets/{types-Bw8H-UB4.js → types-CggzoTPX.js} +1 -1
- package/dist/interface/assets/upload-CNYrnwuV.js +1 -0
- package/dist/interface/assets/{useAppVersion-CDTrwxkp.js → useAppVersion-CCxZnwIP.js} +1 -1
- package/dist/interface/assets/useBackupRestore-DQQc_D6D.js +1 -0
- package/dist/interface/assets/useCameraOptions-DVlhUpbE.js +1 -0
- package/dist/interface/assets/{useCardSelection-CgZ7QTaA.js → useCardSelection-B3B2qPHO.js} +1 -1
- package/dist/interface/assets/{useElectron-CgLWOhcS.js → useElectron-KnqvZz0q.js} +1 -1
- package/dist/interface/assets/useLogsSocket-CUQwZ6wm.js +5 -0
- package/dist/interface/assets/{usePermissions-tzi2t12h.js → usePermissions-C3D3JcPH.js} +1 -1
- package/dist/interface/assets/useServerRestart-CqZRPCpR.js +1 -0
- package/dist/interface/assets/{useStreamStatus-BV_L7pxB.js → useStreamStatus-CVJFHRLZ.js} +1 -1
- package/dist/interface/assets/useUserOptions-drl3-JUC.js +1 -0
- package/dist/interface/assets/{variable-Y3IAPnsB.js → variable-CbNySf4s.js} +1 -1
- package/dist/interface/assets/vendor-CSg6_Jfu.js +22 -0
- package/dist/interface/assets/vendor-ace-DIEVbs6L.js +1085 -0
- package/dist/interface/assets/vendor-cameraui-Cgb5z6NJ.js +2040 -0
- package/dist/interface/assets/vendor-capacitor-C-8IYzpJ.js +2 -0
- package/dist/interface/assets/vendor-chart-CoQ9HTE3.js +3 -0
- package/dist/interface/assets/vendor-core-BJsSXMFQ.js +1 -0
- package/dist/interface/assets/{vendor-dnd-hwiZJHjo.js → vendor-dnd-DQF7Aoap.js} +2 -2
- package/dist/interface/assets/vendor-draggabilly-Cghb3aIb.js +1 -0
- package/dist/interface/assets/vendor-gridstack-qw2ro2uB.js +3 -0
- package/dist/interface/assets/{vendor-leaflet-BMMJO5Nd.js → vendor-leaflet-Bcgd-fkG.js} +1 -1
- package/dist/interface/assets/vendor-markdown-DWwrEE67.js +14 -0
- package/dist/interface/assets/{vendor-primevue-C6wcTjtT.js → vendor-primevue-CyD8V_Ft.js} +85 -85
- package/dist/interface/assets/vendor-vueflow-crUU2mAI.js +26 -0
- package/dist/interface/assets/vendor-xterm-BafMBqaV.js +91 -0
- package/dist/interface/assets/vendor-zod-Dbq0fBXY.js +127 -0
- package/dist/interface/assets/web-BX3axHeB.js +1 -0
- package/dist/interface/assets/web-BcHmbPny.js +1 -0
- package/dist/interface/assets/web-BjKL51lK-BQjyRtns.js +1 -0
- package/dist/interface/assets/web-C8w-z-xR.js +1 -0
- package/dist/interface/assets/web-CHdniv8I.js +1 -0
- package/dist/interface/assets/web-CWBhY0Av.js +1 -0
- package/dist/interface/assets/web-Cf1yYy4u.js +1 -0
- package/dist/interface/assets/web-Ct6Vkr6F.js +1 -0
- package/dist/interface/assets/web-DARDw7d8.js +1 -0
- package/dist/interface/assets/web-DKBMdBSA.js +1 -0
- package/dist/interface/assets/web-Ddzvp-fv.js +1 -0
- package/dist/interface/assets/web-Dymr_MpD.js +1 -0
- package/dist/interface/assets/web-XIuTPdFc.js +1 -0
- package/dist/interface/assets/web-lrnXIJTz.js +1 -0
- package/dist/interface/assets/{webhook-yCryYojY.js → webhook-B7YgiSrF.js} +1 -1
- package/dist/interface/assets/workbox-window.prod.es5-BkFwsIPp.js +1 -0
- package/dist/interface/assets/{zoom-in-Da5uRiQq.js → zoom-in-D7BJNotF.js} +1 -1
- package/dist/interface/index.html +44 -40
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +11 -11
- package/dist/server/requirements.txt +4 -6
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +3 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +9 -14
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +0 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +5 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +6 -23
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +60 -100
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/events.py +3 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/frames.py +2 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/__init__.py +2 -20
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_config_internal.py +1 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_enums.py +3 -3
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/event_emitter.py +13 -26
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/manager_rpc.py +2 -5
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_rpc.py +21 -6
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/shared_utils.py +7 -18
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +91 -29
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/observable/__init__.py +145 -37
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/api.py +21 -68
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +31 -58
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/helper.py +3 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +137 -99
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/notifier.py +34 -52
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/oauth.py +4 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +3 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/audio.py +45 -39
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +329 -256
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/battery.py +17 -16
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/classifier.py +31 -27
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/clip.py +14 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/contact.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/detection.py +34 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/doorbell.py +19 -19
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face.py +34 -28
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/garage.py +29 -20
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/humidity.py +22 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/leak.py +12 -11
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/license_plate.py +35 -31
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/light.py +22 -18
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/lock.py +26 -19
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/motion.py +28 -27
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +37 -33
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/occupancy.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/ptz.py +20 -24
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/security_system.py +22 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/siren.py +17 -16
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/smoke.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/spec.py +26 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/switch.py +13 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/temperature.py +22 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/storage/__init__.py +56 -38
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/types.py +15 -18
- package/dist/server/src/api/controllers/auth.controller.js +2 -1
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
- package/dist/server/src/api/controllers/cameras.controller.d.ts +6 -0
- package/dist/server/src/api/controllers/cameras.controller.js +21 -11
- package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
- package/dist/server/src/api/controllers/cast.controller.d.ts +11 -0
- package/dist/server/src/api/controllers/cast.controller.js +29 -0
- package/dist/server/src/api/controllers/cast.controller.js.map +1 -0
- package/dist/server/src/api/controllers/notifications.controller.d.ts +12 -0
- package/dist/server/src/api/controllers/notifications.controller.js +41 -0
- package/dist/server/src/api/controllers/notifications.controller.js.map +1 -1
- package/dist/server/src/api/controllers/nvr.controller.d.ts +14 -0
- package/dist/server/src/api/controllers/nvr.controller.js +61 -0
- package/dist/server/src/api/controllers/nvr.controller.js.map +1 -0
- package/dist/server/src/api/controllers/sensors.controller.d.ts +13 -0
- package/dist/server/src/api/controllers/sensors.controller.js +94 -0
- package/dist/server/src/api/controllers/sensors.controller.js.map +1 -0
- package/dist/server/src/api/controllers/server.controller.d.ts +1 -0
- package/dist/server/src/api/controllers/server.controller.js +11 -0
- package/dist/server/src/api/controllers/server.controller.js.map +1 -1
- package/dist/server/src/api/controllers/tunnel.controller.d.ts +0 -3
- package/dist/server/src/api/controllers/tunnel.controller.js +1 -21
- package/dist/server/src/api/controllers/tunnel.controller.js.map +1 -1
- package/dist/server/src/api/database/constants.d.ts +2 -0
- package/dist/server/src/api/database/constants.js +2 -0
- package/dist/server/src/api/database/constants.js.map +1 -1
- package/dist/server/src/api/database/index.d.ts +5 -2
- package/dist/server/src/api/database/index.js +7 -4
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/database/migrations/v2-1-0.d.ts +3 -0
- package/dist/server/src/api/database/migrations/v2-1-0.js +72 -0
- package/dist/server/src/api/database/migrations/v2-1-0.js.map +1 -0
- package/dist/server/src/api/database/record-schemas.d.ts +2 -3
- package/dist/server/src/api/database/record-schemas.js +3 -3
- package/dist/server/src/api/database/record-schemas.js.map +1 -1
- package/dist/server/src/api/database/types.d.ts +27 -3
- package/dist/server/src/api/index.js +3 -0
- package/dist/server/src/api/index.js.map +1 -1
- package/dist/server/src/api/plugins/natsSubFirewall.d.ts +1 -1
- package/dist/server/src/api/plugins/natsSubFirewall.js +5 -2
- package/dist/server/src/api/plugins/natsSubFirewall.js.map +1 -1
- package/dist/server/src/api/plugins/proxy.plugin.js +5 -3
- package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -1
- package/dist/server/src/api/routes/cameras.routes.js +14 -7
- package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
- package/dist/server/src/api/routes/cast.routes.d.ts +2 -0
- package/dist/server/src/api/routes/cast.routes.js +29 -0
- package/dist/server/src/api/routes/cast.routes.js.map +1 -0
- package/dist/server/src/api/routes/index.js +6 -2
- package/dist/server/src/api/routes/index.js.map +1 -1
- package/dist/server/src/api/routes/notifications.routes.js +32 -0
- package/dist/server/src/api/routes/notifications.routes.js.map +1 -1
- package/dist/server/src/api/routes/nvr.routes.d.ts +2 -0
- package/dist/server/src/api/routes/nvr.routes.js +19 -0
- package/dist/server/src/api/routes/nvr.routes.js.map +1 -0
- package/dist/server/src/api/routes/sensors.routes.d.ts +2 -0
- package/dist/server/src/api/routes/sensors.routes.js +89 -0
- package/dist/server/src/api/routes/sensors.routes.js.map +1 -0
- package/dist/server/src/api/routes/server.routes.js +10 -0
- package/dist/server/src/api/routes/server.routes.js.map +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +103 -45
- package/dist/server/src/api/schemas/cameras.schema.js +7 -10
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/cast.schema.d.ts +7 -0
- package/dist/server/src/api/schemas/cast.schema.js +7 -0
- package/dist/server/src/api/schemas/cast.schema.js.map +1 -0
- package/dist/server/src/api/schemas/nvr.schema.d.ts +10 -0
- package/dist/server/src/api/schemas/nvr.schema.js +13 -0
- package/dist/server/src/api/schemas/nvr.schema.js.map +1 -0
- package/dist/server/src/api/schemas/{virtualsensors.schema.d.ts → sensors.schema.d.ts} +15 -8
- package/dist/server/src/api/schemas/sensors.schema.js +25 -0
- package/dist/server/src/api/schemas/sensors.schema.js.map +1 -0
- package/dist/server/src/api/schemas/users.schema.d.ts +7 -18
- package/dist/server/src/api/schemas/users.schema.js +3 -7
- package/dist/server/src/api/schemas/users.schema.js.map +1 -1
- package/dist/server/src/api/services/cameras.service.js +1 -1
- package/dist/server/src/api/services/cameras.service.js.map +1 -1
- package/dist/server/src/api/services/cast.service.d.ts +7 -0
- package/dist/server/src/api/services/cast.service.js +14 -0
- package/dist/server/src/api/services/cast.service.js.map +1 -0
- package/dist/server/src/api/services/instances.service.js +1 -1
- package/dist/server/src/api/services/notifications.service.d.ts +3 -0
- package/dist/server/src/api/services/notifications.service.js +9 -0
- package/dist/server/src/api/services/notifications.service.js.map +1 -1
- package/dist/server/src/api/services/plugins.service.js +18 -3
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/services/sensors.service.d.ts +41 -0
- package/dist/server/src/api/services/sensors.service.js +106 -0
- package/dist/server/src/api/services/sensors.service.js.map +1 -0
- package/dist/server/src/api/services/server.service.d.ts +4 -0
- package/dist/server/src/api/services/server.service.js +14 -0
- package/dist/server/src/api/services/server.service.js.map +1 -1
- package/dist/server/src/api/services/users.service.js +6 -9
- package/dist/server/src/api/services/users.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +19 -6
- package/dist/server/src/api/websocket/nsp/events.js +38 -15
- package/dist/server/src/api/websocket/nsp/events.js.map +1 -1
- package/dist/server/src/api.d.ts +0 -2
- package/dist/server/src/api.js +0 -12
- package/dist/server/src/api.js.map +1 -1
- package/dist/server/src/automations/actions/sensor.js +4 -7
- package/dist/server/src/automations/actions/sensor.js.map +1 -1
- package/dist/server/src/automations/conditions/sensorState.js +4 -4
- package/dist/server/src/automations/conditions/sensorState.js.map +1 -1
- package/dist/server/src/automations/context.d.ts +2 -1
- package/dist/server/src/automations/context.js +2 -1
- package/dist/server/src/automations/context.js.map +1 -1
- package/dist/server/src/automations/pluginMethodRegistry.d.ts +2 -0
- package/dist/server/src/automations/pluginMethodRegistry.js +14 -0
- package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
- package/dist/server/src/automations/triggers/sensor.js +12 -23
- package/dist/server/src/automations/triggers/sensor.js.map +1 -1
- package/dist/server/src/camera/controller.d.ts +0 -1
- package/dist/server/src/camera/controller.js +9 -46
- package/dist/server/src/camera/controller.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-coordinator.js +13 -11
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/plugin-registry.d.ts +1 -0
- package/dist/server/src/camera/decoder/plugin-registry.js +13 -1
- package/dist/server/src/camera/decoder/plugin-registry.js.map +1 -1
- package/dist/server/src/camera/decoder/ptz/autotracker.js +2 -2
- package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
- package/dist/server/src/camera/decoder/secondary-stage.js +6 -6
- package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
- package/dist/server/src/camera/decoder/types.d.ts +7 -1
- package/dist/server/src/camera/decoder/types.js +4 -0
- package/dist/server/src/camera/decoder/types.js.map +1 -1
- package/dist/server/src/camera/decoder/worker.d.ts +2 -0
- package/dist/server/src/camera/decoder/worker.js +14 -3
- package/dist/server/src/camera/decoder/worker.js.map +1 -1
- package/dist/server/src/camera/index.d.ts +2 -14
- package/dist/server/src/camera/index.js +1 -32
- package/dist/server/src/camera/index.js.map +1 -1
- package/dist/server/src/camera/sensors/controller.d.ts +17 -77
- package/dist/server/src/camera/sensors/controller.js +60 -445
- package/dist/server/src/camera/sensors/controller.js.map +1 -1
- package/dist/server/src/internal-bus.d.ts +7 -13
- package/dist/server/src/internal-bus.js.map +1 -1
- package/dist/server/src/main.d.ts +1 -0
- package/dist/server/src/main.js +7 -0
- package/dist/server/src/main.js.map +1 -1
- package/dist/server/src/manager/castManager.d.ts +24 -0
- package/dist/server/src/manager/castManager.js +79 -0
- package/dist/server/src/manager/castManager.js.map +1 -0
- package/dist/server/src/manager/downloadManager.d.ts +1 -0
- package/dist/server/src/manager/downloadManager.js +6 -0
- package/dist/server/src/manager/downloadManager.js.map +1 -1
- package/dist/server/src/manager/notificationManager.d.ts +6 -0
- package/dist/server/src/manager/notificationManager.js +70 -3
- package/dist/server/src/manager/notificationManager.js.map +1 -1
- package/dist/server/src/mqtt/bridge.d.ts +7 -0
- package/dist/server/src/mqtt/bridge.js +92 -32
- package/dist/server/src/mqtt/bridge.js.map +1 -1
- package/dist/server/src/mqtt/ha-discovery.d.ts +1 -1
- package/dist/server/src/mqtt/ha-discovery.js +53 -8
- package/dist/server/src/mqtt/ha-discovery.js.map +1 -1
- package/dist/server/src/mqtt/manager.js +1 -1
- package/dist/server/src/mqtt/manager.js.map +1 -1
- package/dist/server/src/mqtt/topics.d.ts +3 -3
- package/dist/server/src/mqtt/topics.js +11 -10
- package/dist/server/src/mqtt/topics.js.map +1 -1
- package/dist/server/src/plugins/config-store.js +1 -1
- package/dist/server/src/plugins/config-store.js.map +1 -1
- package/dist/server/src/plugins/runtime/base.d.ts +1 -0
- package/dist/server/src/plugins/runtime/base.js +29 -6
- package/dist/server/src/plugins/runtime/base.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/child.js +5 -2
- package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +2 -0
- package/dist/server/src/plugins/runtime/node/pluginApi.js +4 -1
- package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +5 -13
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +97 -179
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +2 -1
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +26 -7
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.d.ts +2 -0
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.js +27 -0
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensor.d.ts +17 -3
- package/dist/server/src/plugins/runtime/node/proxy/sensor.js +61 -20
- package/dist/server/src/plugins/runtime/node/proxy/sensor.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.d.ts +18 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +269 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/storage.d.ts +1 -1
- package/dist/server/src/plugins/runtime/node/storage.js +10 -7
- package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/storageController.d.ts +5 -7
- package/dist/server/src/plugins/runtime/node/storageController.js +18 -43
- package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/child.py +13 -7
- package/dist/server/src/plugins/runtime/python/namespaces.py +13 -19
- package/dist/server/src/plugins/runtime/python/plugin_api.py +10 -1
- package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +130 -280
- package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +26 -5
- package/dist/server/src/plugins/runtime/python/proxy/sensor.py +88 -21
- package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +386 -0
- package/dist/server/src/plugins/runtime/python/storage.py +12 -9
- package/dist/server/src/plugins/runtime/python/storage_controller.py +18 -80
- package/dist/server/src/plugins/runtime/python/store.py +19 -95
- package/dist/server/src/plugins/runtime/python/typings.py +32 -9
- package/dist/server/src/plugins/store/layout.d.ts +1 -2
- package/dist/server/src/plugins/store/layout.js +9 -56
- package/dist/server/src/plugins/store/layout.js.map +1 -1
- package/dist/server/src/plugins/store/location.d.ts +2 -3
- package/dist/server/src/plugins/store/location.js +5 -13
- package/dist/server/src/plugins/store/location.js.map +1 -1
- package/dist/server/src/plugins/store/pluginStoreFile.d.ts +1 -2
- package/dist/server/src/plugins/store/pluginStoreFile.js +8 -15
- package/dist/server/src/plugins/store/pluginStoreFile.js.map +1 -1
- package/dist/server/src/plugins/worker.d.ts +2 -0
- package/dist/server/src/plugins/worker.js +26 -7
- package/dist/server/src/plugins/worker.js.map +1 -1
- package/dist/server/src/rpc/index.d.ts +2 -0
- package/dist/server/src/rpc/index.js +5 -0
- package/dist/server/src/rpc/index.js.map +1 -1
- package/dist/server/src/rpc/interfaces/sensor.d.ts +33 -16
- package/dist/server/src/rpc/namespaces.d.ts +17 -8
- package/dist/server/src/rpc/namespaces.js +20 -12
- package/dist/server/src/rpc/namespaces.js.map +1 -1
- package/dist/server/src/rpc/server.js +1 -0
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/sensors/registry.d.ts +96 -0
- package/dist/server/src/sensors/registry.js +814 -0
- package/dist/server/src/sensors/registry.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/semantics.d.ts +1 -1
- package/dist/server/src/{camera/sensors → sensors}/semantics.js +4 -1
- package/dist/server/src/sensors/semantics.js.map +1 -0
- package/dist/server/src/sensors/sensor.d.ts +58 -0
- package/dist/server/src/{camera/sensors → sensors}/sensor.js +43 -32
- package/dist/server/src/sensors/sensor.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/types.d.ts +2 -0
- package/dist/server/src/{camera/sensors → sensors}/types.js +9 -0
- package/dist/server/src/sensors/types.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/virtual.d.ts +4 -6
- package/dist/server/src/{camera/sensors → sensors}/virtual.js +10 -56
- package/dist/server/src/sensors/virtual.js.map +1 -0
- package/dist/server/src/services/mdns/index.js +4 -0
- package/dist/server/src/services/mdns/index.js.map +1 -1
- package/package.json +11 -11
- package/dist/interface/assets/404-0d936klL.js +0 -1
- package/dist/interface/assets/About-BMwYrGrl.js +0 -1
- package/dist/interface/assets/Adminpanel-DBsOmAuo.js +0 -1
- package/dist/interface/assets/Automation-BLndVfqR.js +0 -3
- package/dist/interface/assets/AutomationImport-Ba33juY0.js +0 -2
- package/dist/interface/assets/AutomationStore-Bjf1x7go.js +0 -2
- package/dist/interface/assets/AutomationStoreDetail-Ko3n3U1U.js +0 -2
- package/dist/interface/assets/Automations-BfC8bvkT.js +0 -2
- package/dist/interface/assets/Camera-BYDPeH6d.js +0 -2
- package/dist/interface/assets/CameraConsole-pVCj1xXI.js +0 -7
- package/dist/interface/assets/Cameras-DdokAe_Q.js +0 -652
- package/dist/interface/assets/Camview-DmuGSzal.js +0 -1
- package/dist/interface/assets/Config-DvVqB0_Y.js +0 -2
- package/dist/interface/assets/ConfigActionDelay-B1JjI6bg.js +0 -1
- package/dist/interface/assets/ConfigActionHttp-BzGIbeVo.js +0 -1
- package/dist/interface/assets/ConfigActionImageInput-C6m2-s8z.js +0 -1
- package/dist/interface/assets/ConfigActionMqtt-ByZNQKsg.js +0 -1
- package/dist/interface/assets/ConfigActionNotification-YmdMddoN.js +0 -1
- package/dist/interface/assets/ConfigActionNotificationControl-2hWDRBpq.js +0 -1
- package/dist/interface/assets/ConfigActionOutput-D9k1-jfI.js +0 -1
- package/dist/interface/assets/ConfigActionPlugin-DjD_94EX.js +0 -1
- package/dist/interface/assets/ConfigActionSensor-fak8jYSC.js +0 -1
- package/dist/interface/assets/ConfigActionSnapshot-mwEHXqyk.js +0 -1
- package/dist/interface/assets/ConfigActionVariable-kBxNfyOV.js +0 -1
- package/dist/interface/assets/ConfigConditionIfElse-CkjmImTD.js +0 -1
- package/dist/interface/assets/ConfigConditionSensorState-FE3mFjRe.js +0 -1
- package/dist/interface/assets/ConfigConditionSwitch-msqWizIt.js +0 -1
- package/dist/interface/assets/ConfigConditionTime-ifPV135b.js +0 -1
- package/dist/interface/assets/ConfigSensorValueInput-Bg3SEbSh.js +0 -1
- package/dist/interface/assets/ConfigTriggerGeofence-CemaUwl5.js +0 -1
- package/dist/interface/assets/ConfigTriggerManual-DWuiq7PC.js +0 -1
- package/dist/interface/assets/ConfigTriggerMqtt-DxAoDh2Z.js +0 -1
- package/dist/interface/assets/ConfigTriggerSchedule-DDqgMGvp.js +0 -1
- package/dist/interface/assets/ConfigTriggerSensor-M6bXqz4k.js +0 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CxOXgcJi.js +0 -1
- package/dist/interface/assets/Console-CMuW2_8s.js +0 -1
- package/dist/interface/assets/CuiAutomationRunsDialog-yh1qHzmS.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-BshiVWqw.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-DSNyVg5P.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-Cmk0jl6M.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-KU1wIai4.js +0 -1
- package/dist/interface/assets/CuiCameraShares-BoR3YQWj.js +0 -1
- package/dist/interface/assets/CuiCameraTable-BRPBqU8V.js +0 -2
- package/dist/interface/assets/CuiDataTable-BGY4VBtv.js +0 -1
- package/dist/interface/assets/CuiList-BSOMR296.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-DEMo42iT.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-Xn_VHwym.js +0 -1
- package/dist/interface/assets/CuiPluginCard-CgJb8B1W.js +0 -2
- package/dist/interface/assets/CuiPluginOAuthButton-XpEyqoRm.js +0 -2
- package/dist/interface/assets/CuiQRCode-QBkbmvRA.js +0 -1
- package/dist/interface/assets/CuiRecordingsGrid-CuEl_hhu.js +0 -1
- package/dist/interface/assets/CuiSchema-D_cg-H5i.js +0 -1
- package/dist/interface/assets/CuiTopNavbarItem-CXijnkK9.js +0 -1
- package/dist/interface/assets/Faces-C95mlWaW.js +0 -1
- package/dist/interface/assets/FirstSteps-Cpbg7fng.js +0 -1
- package/dist/interface/assets/Instances-BgJtM1Xl.js +0 -1
- package/dist/interface/assets/Logs-BWXYqm5T.js +0 -6
- package/dist/interface/assets/Menu-BO9Zjy1w.js +0 -1
- package/dist/interface/assets/OAuthDeviceFlow-NnwqdmBM.js +0 -1
- package/dist/interface/assets/Plugin-DQq3xjhe.js +0 -1
- package/dist/interface/assets/PluginConsole-BTsVAsKf.js +0 -7
- package/dist/interface/assets/PluginDetail-CTyzzZVU.js +0 -2
- package/dist/interface/assets/PluginSchema-Bn3pHjQA.js +0 -1
- package/dist/interface/assets/PluginSearch-DbXCyUF0.js +0 -1
- package/dist/interface/assets/PluginSearch-z0z8Z1gP.js +0 -2
- package/dist/interface/assets/Plugins-Cy7e-ty2.js +0 -1
- package/dist/interface/assets/Recordings-CWBpGEUf.js +0 -1
- package/dist/interface/assets/Settings-CUIORSmm.js +0 -1
- package/dist/interface/assets/SettingsAccount-CeJBKpzp.js +0 -1
- package/dist/interface/assets/SettingsAccount-CnwVrQx1.js +0 -1
- package/dist/interface/assets/SettingsAppearance-BraaC0WF.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CZrOTBki.js +0 -1
- package/dist/interface/assets/SettingsBackup-y9mb8XZZ.js +0 -1
- package/dist/interface/assets/SettingsList-DsKncveQ.js +0 -1
- package/dist/interface/assets/SettingsMqtt-DTyyctmQ.js +0 -1
- package/dist/interface/assets/SettingsNotifications-SFMt4Yuj.js +0 -2
- package/dist/interface/assets/SettingsPermissions-CktJaQzL.js +0 -1
- package/dist/interface/assets/SettingsRecordings-Bqguyt6u.js +0 -1
- package/dist/interface/assets/SettingsRemote-CTv7bb4g.js +0 -1
- package/dist/interface/assets/SettingsSystem-CkCnB34r.js +0 -2
- package/dist/interface/assets/SettingsUsers-D8LAGd6F.js +0 -1
- package/dist/interface/assets/Terminal-DaR9Ur0_.js +0 -4
- package/dist/interface/assets/VariableInput-D0TP_Lmo.js +0 -1
- package/dist/interface/assets/VariableSuggestions--vq7928F.js +0 -1
- package/dist/interface/assets/VersionsHandler-D9GDdcXr.js +0 -7
- package/dist/interface/assets/Workers-CUyRzwJG.js +0 -2
- package/dist/interface/assets/ace-DYqf8ZN7.js +0 -1
- package/dist/interface/assets/alert-outline-BUvdNY2J.js +0 -1
- package/dist/interface/assets/api-DxrxNyIH.js +0 -2
- package/dist/interface/assets/api-VZ_wVUpU.css +0 -2
- package/dist/interface/assets/arrow-left-LdfKbcre.js +0 -1
- package/dist/interface/assets/arrow-right-outline-BbTEhBJq.js +0 -1
- package/dist/interface/assets/automationBlueprint-DMjszOs4.js +0 -1
- package/dist/interface/assets/automations-51-JMUWD.js +0 -1
- package/dist/interface/assets/check-circle-D-utE_P9.js +0 -1
- package/dist/interface/assets/chevron-down-OEjMpuec.js +0 -1
- package/dist/interface/assets/chevron-right-B3nxd9UE.js +0 -1
- package/dist/interface/assets/cloudHandoff-BktPB9rt.js +0 -1
- package/dist/interface/assets/copy-BvSzmsFs.js +0 -1
- package/dist/interface/assets/delete-B9BZTgya.js +0 -1
- package/dist/interface/assets/dist-qdWlJrr0.js +0 -1
- package/dist/interface/assets/download-Dp_ssGIE.js +0 -1
- package/dist/interface/assets/esm-9VMgxuPI.js +0 -1
- package/dist/interface/assets/esm-B69zS8aI.js +0 -1
- package/dist/interface/assets/esm-BF94InGP.js +0 -1
- package/dist/interface/assets/esm-BHdK6hkk.js +0 -1
- package/dist/interface/assets/esm-BYm8JT8N.js +0 -1
- package/dist/interface/assets/esm-BwCmHX2G.js +0 -1
- package/dist/interface/assets/esm-CL6t-XYT.js +0 -1
- package/dist/interface/assets/esm-CXstRMXa.js +0 -1
- package/dist/interface/assets/esm-Ckb9rjlL.js +0 -1
- package/dist/interface/assets/esm-D4insKbc.js +0 -1
- package/dist/interface/assets/esm-DiReJ8YS.js +0 -1
- package/dist/interface/assets/esm-Dt_Neag0.js +0 -1
- package/dist/interface/assets/esm-GspmWlKf.js +0 -1
- package/dist/interface/assets/esm-eezqpB2a.js +0 -1
- package/dist/interface/assets/flowSchema-Ckr7CEbZ.js +0 -1
- package/dist/interface/assets/home-DL94781-.js +0 -1
- package/dist/interface/assets/main-BxM81wMi.css +0 -1
- package/dist/interface/assets/main-DOjghmGX.js +0 -3
- package/dist/interface/assets/mqtt-COazyb4A.js +0 -1
- package/dist/interface/assets/native-WiRjRKUS.js +0 -1
- package/dist/interface/assets/native-hhip9y-E.js +0 -1
- package/dist/interface/assets/nodeDefinitions-CPyyuw1P.js +0 -1
- package/dist/interface/assets/plugin-DIVM640y.js +0 -1
- package/dist/interface/assets/plus-CTzaBaTz.js +0 -1
- package/dist/interface/assets/power-CvKGepBP.js +0 -1
- package/dist/interface/assets/rolldown-runtime-DAXXjFlN.js +0 -1
- package/dist/interface/assets/round-restart-alt-D3iswthu.js +0 -1
- package/dist/interface/assets/trash-can-outline-HvqPHpF7.js +0 -1
- package/dist/interface/assets/types-CDJiWcQ7.js +0 -1
- package/dist/interface/assets/upload-B6yqOWqz.js +0 -1
- package/dist/interface/assets/useBackupRestore-QuXkc5ZG.js +0 -1
- package/dist/interface/assets/useCameraOptions-D5-bI-e6.js +0 -1
- package/dist/interface/assets/useLogsSocket-BlAo-xcw.js +0 -5
- package/dist/interface/assets/useServerRestart-DctcFWWh.js +0 -1
- package/dist/interface/assets/useUserOptions-nuBRgAEk.js +0 -1
- package/dist/interface/assets/vendor-ace-CrklN-bc.js +0 -1085
- package/dist/interface/assets/vendor-cameraui-B_OCKNGw.js +0 -2040
- package/dist/interface/assets/vendor-capacitor-D6T-f6Q_.js +0 -2
- package/dist/interface/assets/vendor-chart-DpsXMlB-.js +0 -3
- package/dist/interface/assets/vendor-core-zLmLhSHM.js +0 -1
- package/dist/interface/assets/vendor-draggabilly-OrLwQbim.js +0 -1
- package/dist/interface/assets/vendor-gridstack-C6VKsm_r.js +0 -3
- package/dist/interface/assets/vendor-markdown-_OBaDsnU.js +0 -15
- package/dist/interface/assets/vendor-nfBMzqgY.js +0 -22
- package/dist/interface/assets/vendor-vueflow-B1MUSE71.js +0 -26
- package/dist/interface/assets/vendor-xterm-IIYDrBG1.js +0 -142
- package/dist/interface/assets/vendor-zod-BaT-dXMv.js +0 -127
- package/dist/interface/assets/web-B-SlpbxK.js +0 -1
- package/dist/interface/assets/web-B6leYIzJ.js +0 -1
- package/dist/interface/assets/web-BLDe3Kn0.js +0 -1
- package/dist/interface/assets/web-BT-51W2W.js +0 -1
- package/dist/interface/assets/web-BjKL51lK-DHLvmMLr.js +0 -1
- package/dist/interface/assets/web-BpRU7MbT.js +0 -1
- package/dist/interface/assets/web-CiaJvmq8.js +0 -1
- package/dist/interface/assets/web-Cnkt61og.js +0 -1
- package/dist/interface/assets/web-CzhM-YH1.js +0 -1
- package/dist/interface/assets/web-Da5rcZ2Q.js +0 -1
- package/dist/interface/assets/web-DdZjFuTb.js +0 -1
- package/dist/interface/assets/web-DnHj9sl9.js +0 -1
- package/dist/interface/assets/web-E4Ew4Xhj.js +0 -1
- package/dist/interface/assets/web-q63OEDhG.js +0 -1
- package/dist/interface/assets/workbox-window.prod.es5-BMiTt6Ad.js +0 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_triggers.py +0 -4
- package/dist/server/src/api/controllers/virtualsensors.controller.d.ts +0 -11
- package/dist/server/src/api/controllers/virtualsensors.controller.js +0 -61
- package/dist/server/src/api/controllers/virtualsensors.controller.js.map +0 -1
- package/dist/server/src/api/routes/virtualsensors.routes.d.ts +0 -2
- package/dist/server/src/api/routes/virtualsensors.routes.js +0 -63
- package/dist/server/src/api/routes/virtualsensors.routes.js.map +0 -1
- package/dist/server/src/api/schemas/virtualsensors.schema.js +0 -14
- package/dist/server/src/api/schemas/virtualsensors.schema.js.map +0 -1
- package/dist/server/src/api/services/virtualsensors.service.d.ts +0 -20
- package/dist/server/src/api/services/virtualsensors.service.js +0 -151
- package/dist/server/src/api/services/virtualsensors.service.js.map +0 -1
- package/dist/server/src/camera/sensors/semantics.js.map +0 -1
- package/dist/server/src/camera/sensors/sensor.d.ts +0 -34
- package/dist/server/src/camera/sensors/sensor.js.map +0 -1
- package/dist/server/src/camera/sensors/stable-id.d.ts +0 -2
- package/dist/server/src/camera/sensors/stable-id.js +0 -17
- package/dist/server/src/camera/sensors/stable-id.js.map +0 -1
- package/dist/server/src/camera/sensors/types.js.map +0 -1
- package/dist/server/src/camera/sensors/virtual.js.map +0 -1
- package/dist/server/src/plugins/runtime/python/store_migrate.py +0 -59
- package/dist/server/src/plugins/store/migrate.d.ts +0 -1
- package/dist/server/src/plugins/store/migrate.js +0 -22
- package/dist/server/src/plugins/store/migrate.js.map +0 -1
|
@@ -11,7 +11,7 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class PTZCapability(StrEnum):
|
|
14
|
-
"""Optional capabilities
|
|
14
|
+
"""Optional capabilities of a PTZ control."""
|
|
15
15
|
|
|
16
16
|
Pan = "pan"
|
|
17
17
|
"""Camera supports panning (horizontal movement)."""
|
|
@@ -32,18 +32,18 @@ class PTZCapability(StrEnum):
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class PTZProperty(StrEnum):
|
|
35
|
-
"""
|
|
35
|
+
"""Property names of a PTZ control."""
|
|
36
36
|
|
|
37
37
|
Position = "position"
|
|
38
38
|
"""Current pan/tilt/zoom position."""
|
|
39
39
|
Moving = "moving"
|
|
40
40
|
"""Whether the camera is currently moving."""
|
|
41
41
|
Presets = "presets"
|
|
42
|
-
"""List of available preset names."""
|
|
42
|
+
"""List of available preset names, empty until `setPresets()` runs."""
|
|
43
43
|
Velocity = "velocity"
|
|
44
|
-
"""Current movement velocity (continuous move)."""
|
|
44
|
+
"""Current movement velocity (continuous move), None until one was issued."""
|
|
45
45
|
TargetPreset = "targetPreset"
|
|
46
|
-
"""Target preset to move to."""
|
|
46
|
+
"""Target preset to move to, None until a preset was requested."""
|
|
47
47
|
RelativeMove = "relativeMove"
|
|
48
48
|
"""Relative displacement move command (write-only)."""
|
|
49
49
|
Home = "home"
|
|
@@ -93,7 +93,7 @@ class PTZRelativeMove(TypedDict):
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
class PTZControlProperties(TypedDict):
|
|
96
|
-
"""Property
|
|
96
|
+
"""Property values of a PTZ control."""
|
|
97
97
|
|
|
98
98
|
position: PTZPosition
|
|
99
99
|
moving: bool
|
|
@@ -104,10 +104,12 @@ class PTZControlProperties(TypedDict):
|
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
class PTZPropertyChangeData(TypedDict):
|
|
107
|
-
"""
|
|
107
|
+
"""Property change payload emitted on PTZControlLike.onPropertyChanged."""
|
|
108
108
|
|
|
109
|
-
property: str
|
|
109
|
+
property: str
|
|
110
|
+
"""Name of the changed property, a PTZProperty value."""
|
|
110
111
|
value: PTZPosition | bool | list[str] | PTZDirection | PTZRelativeMove | str | None
|
|
112
|
+
"""New value of the property."""
|
|
111
113
|
|
|
112
114
|
|
|
113
115
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -121,6 +123,12 @@ class PTZControlLike(SensorLike, Protocol):
|
|
|
121
123
|
def type(self) -> SensorType:
|
|
122
124
|
return SensorType.PTZ
|
|
123
125
|
|
|
126
|
+
@property
|
|
127
|
+
def onPropertyChanged(self) -> Observable[PTZPropertyChangeData]: ...
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def onCapabilitiesChanged(self) -> Observable[list[PTZCapability]]: ...
|
|
131
|
+
|
|
124
132
|
@overload
|
|
125
133
|
def getValue(self, property: Literal[PTZProperty.Position]) -> PTZPosition | None: ...
|
|
126
134
|
@overload
|
|
@@ -136,12 +144,6 @@ class PTZControlLike(SensorLike, Protocol):
|
|
|
136
144
|
@overload
|
|
137
145
|
def getValue(self, property: str) -> object | None: ...
|
|
138
146
|
|
|
139
|
-
@property
|
|
140
|
-
def onPropertyChanged(self) -> Observable[PTZPropertyChangeData]: ...
|
|
141
|
-
|
|
142
|
-
@property
|
|
143
|
-
def onCapabilitiesChanged(self) -> Observable[list[PTZCapability]]: ...
|
|
144
|
-
|
|
145
147
|
|
|
146
148
|
class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[TStorage]):
|
|
147
149
|
"""Pan-tilt-zoom camera control.
|
|
@@ -149,7 +151,7 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
|
|
|
149
151
|
Override `setPosition()` / `setVelocity()` / `setTargetPreset()` to drive
|
|
150
152
|
hardware, then call the corresponding `super().X()` method after success to
|
|
151
153
|
sync the SDK state. For hardware-pushed state updates (e.g. PTZ position
|
|
152
|
-
change events), call the super methods from your event handler
|
|
154
|
+
change events), call the super methods from your event handler. That
|
|
153
155
|
bypasses any plugin override and only syncs state.
|
|
154
156
|
|
|
155
157
|
Set `capabilities` to advertise supported axes and features. Use
|
|
@@ -159,8 +161,8 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
|
|
|
159
161
|
|
|
160
162
|
_requires_frames = False
|
|
161
163
|
|
|
162
|
-
def __init__(self, name: str = "PTZ") -> None:
|
|
163
|
-
super().__init__(name)
|
|
164
|
+
def __init__(self, name: str = "PTZ", *, native_id: str | None = None) -> None:
|
|
165
|
+
super().__init__(name, native_id=native_id)
|
|
164
166
|
self._write_state(
|
|
165
167
|
{
|
|
166
168
|
PTZProperty.Position.value: {"pan": 0, "tilt": 0, "zoom": 0},
|
|
@@ -297,12 +299,7 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
|
|
|
297
299
|
await self.setPosition({"pan": 0, "tilt": 0, "zoom": 0})
|
|
298
300
|
|
|
299
301
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
300
|
-
"""Routes generic property writes to semantic
|
|
301
|
-
|
|
302
|
-
`moving` and `presets` are observed/discovered state and not externally
|
|
303
|
-
writable; only `Position`, `Velocity`, `TargetPreset`, `RelativeMove`
|
|
304
|
-
and `Home` may be set.
|
|
305
|
-
"""
|
|
302
|
+
"""Routes generic property writes to the semantic setters."""
|
|
306
303
|
if property == PTZProperty.Position.value:
|
|
307
304
|
await self.setPosition(value)
|
|
308
305
|
return
|
|
@@ -318,4 +315,3 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
|
|
|
318
315
|
if property == PTZProperty.Home.value:
|
|
319
316
|
await self.goHome()
|
|
320
317
|
return
|
|
321
|
-
# Unknown / non-writable property (incl. moving, presets) — ignored.
|
|
@@ -11,7 +11,7 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class SecuritySystemState(IntEnum):
|
|
14
|
-
"""Security system arm/disarm states
|
|
14
|
+
"""Security system arm/disarm states."""
|
|
15
15
|
|
|
16
16
|
StayArm = 0
|
|
17
17
|
"""Armed, occupants home."""
|
|
@@ -26,26 +26,28 @@ class SecuritySystemState(IntEnum):
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class SecuritySystemProperty(StrEnum):
|
|
29
|
-
"""
|
|
29
|
+
"""Property names of a security system control."""
|
|
30
30
|
|
|
31
31
|
CurrentState = "currentState"
|
|
32
32
|
"""The actual current state of the security system."""
|
|
33
33
|
TargetState = "targetState"
|
|
34
|
-
"""The desired target state (set by user, transitions to currentState)."""
|
|
34
|
+
"""The desired target state (set by user, transitions to currentState), never AlarmTriggered."""
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class SecuritySystemProperties(TypedDict):
|
|
38
|
-
"""Property
|
|
38
|
+
"""Property values of a security system control."""
|
|
39
39
|
|
|
40
|
-
currentState:
|
|
41
|
-
targetState:
|
|
40
|
+
currentState: SecuritySystemState
|
|
41
|
+
targetState: SecuritySystemState
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
class SecuritySystemPropertyChangeData(TypedDict):
|
|
45
|
-
"""
|
|
45
|
+
"""Property change payload emitted on SecuritySystemLike.onPropertyChanged."""
|
|
46
46
|
|
|
47
|
-
property: str
|
|
47
|
+
property: str
|
|
48
|
+
"""Name of the changed property, a SecuritySystemProperty value."""
|
|
48
49
|
value: SecuritySystemState
|
|
50
|
+
"""New value of the property."""
|
|
49
51
|
|
|
50
52
|
|
|
51
53
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -59,6 +61,9 @@ class SecuritySystemLike(SensorLike, Protocol):
|
|
|
59
61
|
def type(self) -> SensorType:
|
|
60
62
|
return SensorType.SecuritySystem
|
|
61
63
|
|
|
64
|
+
@property
|
|
65
|
+
def onPropertyChanged(self) -> Observable[SecuritySystemPropertyChangeData]: ...
|
|
66
|
+
|
|
62
67
|
@overload
|
|
63
68
|
def getValue(
|
|
64
69
|
self, property: Literal[SecuritySystemProperty.CurrentState]
|
|
@@ -70,22 +75,19 @@ class SecuritySystemLike(SensorLike, Protocol):
|
|
|
70
75
|
@overload
|
|
71
76
|
def getValue(self, property: str) -> object | None: ...
|
|
72
77
|
|
|
73
|
-
@property
|
|
74
|
-
def onPropertyChanged(self) -> Observable[SecuritySystemPropertyChangeData]: ...
|
|
75
|
-
|
|
76
78
|
|
|
77
79
|
class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TStorage]):
|
|
78
80
|
"""Security system control.
|
|
79
81
|
|
|
80
82
|
Override `setTargetState()` to drive hardware and call
|
|
81
|
-
`await super().setTargetState(value)` once the hardware confirms
|
|
83
|
+
`await super().setTargetState(value)` once the hardware confirms. The base
|
|
82
84
|
implementation updates both `targetState` and `currentState`.
|
|
83
85
|
"""
|
|
84
86
|
|
|
85
87
|
_requires_frames = False
|
|
86
88
|
|
|
87
|
-
def __init__(self, name: str = "Security System") -> None:
|
|
88
|
-
super().__init__(name)
|
|
89
|
+
def __init__(self, name: str = "Security System", *, native_id: str | None = None) -> None:
|
|
90
|
+
super().__init__(name, native_id=native_id)
|
|
89
91
|
self._write_state(
|
|
90
92
|
{
|
|
91
93
|
SecuritySystemProperty.CurrentState.value: int(SecuritySystemState.Disarmed),
|
|
@@ -113,7 +115,7 @@ class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TS
|
|
|
113
115
|
|
|
114
116
|
async def setTargetState(self, value: SecuritySystemState) -> None:
|
|
115
117
|
"""Set the target state. Override to drive hardware and call
|
|
116
|
-
`await super().setTargetState(value)` after success
|
|
118
|
+
`await super().setTargetState(value)` after success. The base implementation
|
|
117
119
|
syncs both `targetState` and `currentState` to the new value.
|
|
118
120
|
|
|
119
121
|
Args:
|
|
@@ -134,11 +136,10 @@ class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TS
|
|
|
134
136
|
)
|
|
135
137
|
|
|
136
138
|
def setCurrentState(self, value: SecuritySystemState) -> None:
|
|
137
|
-
"""Publish the actual security system state. Use this
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
consumers (``updateValue`` ignores it).
|
|
139
|
+
"""Publish the actual security system state. Use this for transitions
|
|
140
|
+
that diverge from the user-requested target: ``AlarmTriggered`` when an
|
|
141
|
+
intruder is detected, or arming-delay intermediate states. Read-only
|
|
142
|
+
from cross-process consumers (``updateValue`` ignores it).
|
|
142
143
|
|
|
143
144
|
Args:
|
|
144
145
|
value: Current security system state from ``SecuritySystemState``.
|
|
@@ -153,7 +154,6 @@ class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TS
|
|
|
153
154
|
self._write_state({SecuritySystemProperty.CurrentState.value: int(value)})
|
|
154
155
|
|
|
155
156
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
156
|
-
"""Routes generic property writes to semantic
|
|
157
|
+
"""Routes generic property writes to the semantic setters."""
|
|
157
158
|
if property == SecuritySystemProperty.TargetState.value:
|
|
158
159
|
await self.setTargetState(SecuritySystemState(value))
|
|
159
|
-
# Unknown / non-writable property (incl. currentState) — ignored.
|
|
@@ -11,14 +11,14 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class SirenCapability(StrEnum):
|
|
14
|
-
"""Optional capabilities
|
|
14
|
+
"""Optional capabilities of a siren control."""
|
|
15
15
|
|
|
16
16
|
Volume = "volume"
|
|
17
17
|
"""Siren supports volume adjustment (0-100)."""
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class SirenProperty(StrEnum):
|
|
21
|
-
"""
|
|
21
|
+
"""Property names of a siren control."""
|
|
22
22
|
|
|
23
23
|
Active = "active"
|
|
24
24
|
"""Whether the siren is currently active."""
|
|
@@ -27,17 +27,19 @@ class SirenProperty(StrEnum):
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class SirenControlProperties(TypedDict):
|
|
30
|
-
"""Property
|
|
30
|
+
"""Property values of a siren control."""
|
|
31
31
|
|
|
32
32
|
active: bool
|
|
33
33
|
volume: int
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class SirenPropertyChangeData(TypedDict):
|
|
37
|
-
"""
|
|
37
|
+
"""Property change payload emitted on SirenControlLike.onPropertyChanged."""
|
|
38
38
|
|
|
39
|
-
property: str
|
|
39
|
+
property: str
|
|
40
|
+
"""Name of the changed property, a SirenProperty value."""
|
|
40
41
|
value: bool | int
|
|
42
|
+
"""New value of the property."""
|
|
41
43
|
|
|
42
44
|
|
|
43
45
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -51,6 +53,12 @@ class SirenControlLike(SensorLike, Protocol):
|
|
|
51
53
|
def type(self) -> SensorType:
|
|
52
54
|
return SensorType.Siren
|
|
53
55
|
|
|
56
|
+
@property
|
|
57
|
+
def onPropertyChanged(self) -> Observable[SirenPropertyChangeData]: ...
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def onCapabilitiesChanged(self) -> Observable[list[SirenCapability]]: ...
|
|
61
|
+
|
|
54
62
|
@overload
|
|
55
63
|
def getValue(self, property: Literal[SirenProperty.Active]) -> bool | None: ...
|
|
56
64
|
@overload
|
|
@@ -58,25 +66,19 @@ class SirenControlLike(SensorLike, Protocol):
|
|
|
58
66
|
@overload
|
|
59
67
|
def getValue(self, property: str) -> object | None: ...
|
|
60
68
|
|
|
61
|
-
@property
|
|
62
|
-
def onPropertyChanged(self) -> Observable[SirenPropertyChangeData]: ...
|
|
63
|
-
|
|
64
|
-
@property
|
|
65
|
-
def onCapabilitiesChanged(self) -> Observable[list[SirenCapability]]: ...
|
|
66
|
-
|
|
67
69
|
|
|
68
70
|
class SirenControl(Sensor[SirenControlProperties, TStorage, SirenCapability], Generic[TStorage]):
|
|
69
71
|
"""Siren control sensor. Override `setActive()`/`setInactive()` to drive
|
|
70
72
|
your hardware, then `await super().setActive()` / `await super().setInactive()`
|
|
71
73
|
to sync the SDK state. For hardware-pushed updates, call the super methods
|
|
72
|
-
from your event handler
|
|
74
|
+
from your event handler. That bypasses any plugin override and only syncs
|
|
73
75
|
state.
|
|
74
76
|
"""
|
|
75
77
|
|
|
76
78
|
_requires_frames = False
|
|
77
79
|
|
|
78
|
-
def __init__(self, name: str = "Siren") -> None:
|
|
79
|
-
super().__init__(name)
|
|
80
|
+
def __init__(self, name: str = "Siren", *, native_id: str | None = None) -> None:
|
|
81
|
+
super().__init__(name, native_id=native_id)
|
|
80
82
|
self._write_state(
|
|
81
83
|
{
|
|
82
84
|
SirenProperty.Active.value: False,
|
|
@@ -139,7 +141,7 @@ class SirenControl(Sensor[SirenControlProperties, TStorage, SirenCapability], Ge
|
|
|
139
141
|
self._write_state({SirenProperty.Volume.value: max(0, min(100, value))})
|
|
140
142
|
|
|
141
143
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
142
|
-
"""Routes generic property writes to semantic
|
|
144
|
+
"""Routes generic property writes to the semantic setters."""
|
|
143
145
|
if property == SirenProperty.Active.value:
|
|
144
146
|
if value:
|
|
145
147
|
await self.setActive()
|
|
@@ -149,4 +151,3 @@ class SirenControl(Sensor[SirenControlProperties, TStorage, SirenCapability], Ge
|
|
|
149
151
|
if property == SirenProperty.Volume.value:
|
|
150
152
|
await self.setVolume(int(value))
|
|
151
153
|
return
|
|
152
|
-
# Unknown / non-writable property — ignored.
|
|
@@ -11,23 +11,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class SmokeProperty(StrEnum):
|
|
14
|
-
"""
|
|
14
|
+
"""Property names of a smoke sensor."""
|
|
15
15
|
|
|
16
16
|
Detected = "detected"
|
|
17
17
|
"""Whether smoke is detected."""
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class SmokeSensorProperties(TypedDict):
|
|
21
|
-
"""Property
|
|
21
|
+
"""Property values of a smoke sensor."""
|
|
22
22
|
|
|
23
23
|
detected: bool
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class SmokePropertyChangeData(TypedDict):
|
|
27
|
-
"""
|
|
27
|
+
"""Property change payload emitted on SmokeSensorLike.onPropertyChanged."""
|
|
28
28
|
|
|
29
|
-
property: str
|
|
29
|
+
property: str
|
|
30
|
+
"""Name of the changed property, a SmokeProperty value."""
|
|
30
31
|
value: bool
|
|
32
|
+
"""New value of the property."""
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -41,22 +43,22 @@ class SmokeSensorLike(SensorLike, Protocol):
|
|
|
41
43
|
def type(self) -> SensorType:
|
|
42
44
|
return SensorType.Smoke
|
|
43
45
|
|
|
46
|
+
@property
|
|
47
|
+
def onPropertyChanged(self) -> Observable[SmokePropertyChangeData]: ...
|
|
48
|
+
|
|
44
49
|
@overload
|
|
45
50
|
def getValue(self, property: Literal[SmokeProperty.Detected]) -> bool | None: ...
|
|
46
51
|
@overload
|
|
47
52
|
def getValue(self, property: str) -> object | None: ...
|
|
48
53
|
|
|
49
|
-
@property
|
|
50
|
-
def onPropertyChanged(self) -> Observable[SmokePropertyChangeData]: ...
|
|
51
|
-
|
|
52
54
|
|
|
53
55
|
class SmokeSensor(Sensor[SmokeSensorProperties, TStorage, str], Generic[TStorage]):
|
|
54
56
|
"""Smoke detector sensor."""
|
|
55
57
|
|
|
56
58
|
_requires_frames = False
|
|
57
59
|
|
|
58
|
-
def __init__(self, name: str = "Smoke Sensor") -> None:
|
|
59
|
-
super().__init__(name)
|
|
60
|
+
def __init__(self, name: str = "Smoke Sensor", *, native_id: str | None = None) -> None:
|
|
61
|
+
super().__init__(name, native_id=native_id)
|
|
60
62
|
self._write_state({SmokeProperty.Detected.value: False})
|
|
61
63
|
|
|
62
64
|
@property
|
|
@@ -86,4 +88,3 @@ class SmokeSensor(Sensor[SmokeSensorProperties, TStorage, str], Generic[TStorage
|
|
|
86
88
|
|
|
87
89
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
88
90
|
"""Read-only sensor: external writes are ignored."""
|
|
89
|
-
# No-op — smoke state is reported by the plugin, not set externally.
|
|
@@ -8,21 +8,23 @@ from typing_extensions import TypedDict
|
|
|
8
8
|
class VideoInputSpec(TypedDict):
|
|
9
9
|
"""Expected video input dimensions and pixel format for a detector model."""
|
|
10
10
|
|
|
11
|
-
width: int
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
width: int
|
|
12
|
+
"""Expected frame width in pixels."""
|
|
13
|
+
height: int
|
|
14
|
+
"""Expected frame height in pixels."""
|
|
15
|
+
format: Literal["rgb", "nv12", "gray"]
|
|
16
|
+
"""Pixel format: rgb=3 bytes/pixel, gray=1 byte/pixel, nv12=YUV semi-planar."""
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
class ObjectModelSpec(TypedDict):
|
|
19
20
|
"""Model spec for object detectors.
|
|
20
21
|
|
|
21
|
-
Only declares input dimensions
|
|
22
|
-
|
|
22
|
+
Only declares input dimensions, the output label set is dynamic and comes
|
|
23
|
+
from the model itself.
|
|
23
24
|
"""
|
|
24
25
|
|
|
25
|
-
input: VideoInputSpec
|
|
26
|
+
input: VideoInputSpec
|
|
27
|
+
"""Required input frame dimensions and pixel format."""
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
class ModelSpec(TypedDict):
|
|
@@ -32,27 +34,29 @@ class ModelSpec(TypedDict):
|
|
|
32
34
|
labels that should activate this detector.
|
|
33
35
|
"""
|
|
34
36
|
|
|
35
|
-
input: VideoInputSpec
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
input: VideoInputSpec
|
|
38
|
+
"""Required input frame dimensions and pixel format."""
|
|
39
|
+
triggerLabels: list[str]
|
|
40
|
+
"""Labels emitted by an upstream object detector that activate this detector."""
|
|
41
|
+
embeddingModel: NotRequired[str]
|
|
42
|
+
"""Embedding model identifier. Required for face recognition and for CLIP: embeddings are stored and matched under this id."""
|
|
40
43
|
|
|
41
44
|
|
|
42
45
|
class AudioInputSpec(TypedDict):
|
|
43
46
|
"""Expected audio input format for an audio detector model."""
|
|
44
47
|
|
|
45
|
-
sampleRate: int
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
sampleRate: int
|
|
49
|
+
"""Sample rate in Hz the model expects."""
|
|
50
|
+
channels: int
|
|
51
|
+
"""Channel count the model expects (typically 1 = mono)."""
|
|
52
|
+
format: Literal["pcm16", "float32"]
|
|
53
|
+
"""Sample format: pcm16=16-bit signed integer PCM, float32=32-bit float."""
|
|
54
|
+
samplesPerFrame: NotRequired[int]
|
|
55
|
+
"""Number of samples per audio frame the detector expects; the backend buffers audio to deliver exactly this many samples per call."""
|
|
53
56
|
|
|
54
57
|
|
|
55
58
|
class AudioModelSpec(TypedDict):
|
|
56
59
|
"""Model spec for audio detectors."""
|
|
57
60
|
|
|
58
|
-
input: AudioInputSpec
|
|
61
|
+
input: AudioInputSpec
|
|
62
|
+
"""Required input audio format."""
|
|
@@ -11,23 +11,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class SwitchProperty(StrEnum):
|
|
14
|
-
"""
|
|
14
|
+
"""Property names of a switch control."""
|
|
15
15
|
|
|
16
16
|
On = "on"
|
|
17
17
|
"""Whether the switch is on."""
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class SwitchControlProperties(TypedDict):
|
|
21
|
-
"""Property
|
|
21
|
+
"""Property values of a switch control."""
|
|
22
22
|
|
|
23
23
|
on: bool
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class SwitchPropertyChangeData(TypedDict):
|
|
27
|
-
"""
|
|
27
|
+
"""Property change payload emitted on SwitchControlLike.onPropertyChanged."""
|
|
28
28
|
|
|
29
|
-
property: str
|
|
29
|
+
property: str
|
|
30
|
+
"""Name of the changed property, a SwitchProperty value."""
|
|
30
31
|
value: bool
|
|
32
|
+
"""New value of the property."""
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -41,27 +43,27 @@ class SwitchControlLike(SensorLike, Protocol):
|
|
|
41
43
|
def type(self) -> SensorType:
|
|
42
44
|
return SensorType.Switch
|
|
43
45
|
|
|
46
|
+
@property
|
|
47
|
+
def onPropertyChanged(self) -> Observable[SwitchPropertyChangeData]: ...
|
|
48
|
+
|
|
44
49
|
@overload
|
|
45
50
|
def getValue(self, property: Literal[SwitchProperty.On]) -> bool | None: ...
|
|
46
51
|
@overload
|
|
47
52
|
def getValue(self, property: str) -> object | None: ...
|
|
48
53
|
|
|
49
|
-
@property
|
|
50
|
-
def onPropertyChanged(self) -> Observable[SwitchPropertyChangeData]: ...
|
|
51
|
-
|
|
52
54
|
|
|
53
55
|
class SwitchControl(Sensor[SwitchControlProperties, TStorage, str], Generic[TStorage]):
|
|
54
56
|
"""Generic on/off switch control. Override `setOn()` / `setOff()` to drive
|
|
55
57
|
hardware and call `await super().setOn()` / `await super().setOff()` after
|
|
56
58
|
success to sync the SDK state. For hardware-pushed updates, call the super
|
|
57
|
-
methods from your event handler
|
|
59
|
+
methods from your event handler. That bypasses any plugin override and only
|
|
58
60
|
syncs state.
|
|
59
61
|
"""
|
|
60
62
|
|
|
61
63
|
_requires_frames = False
|
|
62
64
|
|
|
63
|
-
def __init__(self, name: str = "Switch") -> None:
|
|
64
|
-
super().__init__(name)
|
|
65
|
+
def __init__(self, name: str = "Switch", *, native_id: str | None = None) -> None:
|
|
66
|
+
super().__init__(name, native_id=native_id)
|
|
65
67
|
self._write_state({SwitchProperty.On.value: False})
|
|
66
68
|
|
|
67
69
|
@property
|
|
@@ -99,10 +101,9 @@ class SwitchControl(Sensor[SwitchControlProperties, TStorage, str], Generic[TSto
|
|
|
99
101
|
self._write_state({SwitchProperty.On.value: False})
|
|
100
102
|
|
|
101
103
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
102
|
-
"""Routes generic property writes to semantic
|
|
104
|
+
"""Routes generic property writes to the semantic setters."""
|
|
103
105
|
if property == SwitchProperty.On.value:
|
|
104
106
|
if value:
|
|
105
107
|
await self.setOn()
|
|
106
108
|
else:
|
|
107
109
|
await self.setOff()
|
|
108
|
-
# Unknown / non-writable property — ignored.
|
|
@@ -11,23 +11,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class TemperatureProperty(StrEnum):
|
|
14
|
-
"""
|
|
14
|
+
"""Property names of a temperature sensor."""
|
|
15
15
|
|
|
16
16
|
Current = "current"
|
|
17
17
|
"""Current temperature in degrees Celsius."""
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class TemperatureInfoProperties(TypedDict):
|
|
21
|
-
"""Property
|
|
21
|
+
"""Property values of a temperature sensor."""
|
|
22
22
|
|
|
23
23
|
current: float
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class TemperaturePropertyChangeData(TypedDict):
|
|
27
|
-
"""
|
|
27
|
+
"""Property change payload emitted on TemperatureInfoLike.onPropertyChanged."""
|
|
28
28
|
|
|
29
|
-
property: str
|
|
29
|
+
property: str
|
|
30
|
+
"""Name of the changed property, a TemperatureProperty value."""
|
|
30
31
|
value: float
|
|
32
|
+
"""New value of the property."""
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -35,28 +37,28 @@ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
|
35
37
|
|
|
36
38
|
@runtime_checkable
|
|
37
39
|
class TemperatureInfoLike(SensorLike, Protocol):
|
|
38
|
-
"""Read-only proxy interface for a temperature
|
|
40
|
+
"""Read-only proxy interface for a temperature sensor."""
|
|
39
41
|
|
|
40
42
|
@property
|
|
41
43
|
def type(self) -> SensorType:
|
|
42
44
|
return SensorType.Temperature
|
|
43
45
|
|
|
46
|
+
@property
|
|
47
|
+
def onPropertyChanged(self) -> Observable[TemperaturePropertyChangeData]: ...
|
|
48
|
+
|
|
44
49
|
@overload
|
|
45
50
|
def getValue(self, property: Literal[TemperatureProperty.Current]) -> float | None: ...
|
|
46
51
|
@overload
|
|
47
52
|
def getValue(self, property: str) -> object | None: ...
|
|
48
53
|
|
|
49
|
-
@property
|
|
50
|
-
def onPropertyChanged(self) -> Observable[TemperaturePropertyChangeData]: ...
|
|
51
|
-
|
|
52
54
|
|
|
53
55
|
class TemperatureInfo(Sensor[TemperatureInfoProperties, TStorage, str], Generic[TStorage]):
|
|
54
56
|
"""Temperature info sensor. Reports current temperature in degrees Celsius."""
|
|
55
57
|
|
|
56
58
|
_requires_frames = False
|
|
57
59
|
|
|
58
|
-
def __init__(self, name: str = "Temperature") -> None:
|
|
59
|
-
super().__init__(name)
|
|
60
|
+
def __init__(self, name: str = "Temperature", *, native_id: str | None = None) -> None:
|
|
61
|
+
super().__init__(name, native_id=native_id)
|
|
60
62
|
self._write_state({TemperatureProperty.Current.value: 20})
|
|
61
63
|
|
|
62
64
|
@property
|
|
@@ -73,9 +75,17 @@ class TemperatureInfo(Sensor[TemperatureInfoProperties, TStorage, str], Generic[
|
|
|
73
75
|
return float(value) if value is not None else 0.0
|
|
74
76
|
|
|
75
77
|
def setCurrent(self, value: float) -> None:
|
|
76
|
-
"""Report a new temperature reading. Clamped to [-270, 100] degrees Celsius.
|
|
78
|
+
"""Report a new temperature reading. Clamped to [-270, 100] degrees Celsius.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
value: Temperature reading in degrees Celsius.
|
|
82
|
+
|
|
83
|
+
Example:
|
|
84
|
+
```python
|
|
85
|
+
temperature.setCurrent(21.5)
|
|
86
|
+
```
|
|
87
|
+
"""
|
|
77
88
|
self._write_state({TemperatureProperty.Current.value: max(-270, min(100, value))})
|
|
78
89
|
|
|
79
90
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
80
91
|
"""Read-only sensor: external writes are ignored."""
|
|
81
|
-
# No-op — temperature is reported by the plugin, not set externally.
|