@camera.ui/server 2.0.22 → 2.0.23
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-junY0N5P.js +1 -0
- package/dist/interface/assets/About-Dwc0TTLa.js +1 -0
- package/dist/interface/assets/Adminpanel-wZGtsPD-.js +1 -0
- package/dist/interface/assets/Automation-Dj6xmGae.js +3 -0
- package/dist/interface/assets/AutomationImport-Ccnxyslc.js +2 -0
- package/dist/interface/assets/AutomationStore-DmbxA0ml.js +2 -0
- package/dist/interface/assets/AutomationStoreDetail-DcbvD8g5.js +2 -0
- package/dist/interface/assets/Automations-C9JJO6dy.js +2 -0
- package/dist/interface/assets/Camera-D_j0J3kB.js +2 -0
- package/dist/interface/assets/CameraConsole--hGg9Ye6.js +7 -0
- package/dist/interface/assets/Cameras-B2Tizr4Q.js +652 -0
- package/dist/interface/assets/Camview-Bh2UCnGC.js +1 -0
- package/dist/interface/assets/{Camview-CaEbdeQZ.css → Camview-Cj10uxGy.css} +1 -1
- package/dist/interface/assets/Config-Dn_s2M7r.js +2 -0
- package/dist/interface/assets/{ConfigActionCameraControl-DFdb4xzq.js → ConfigActionCameraControl-DQEYHVN5.js} +1 -1
- package/dist/interface/assets/ConfigActionDelay-C0mbjCCj.js +1 -0
- package/dist/interface/assets/ConfigActionHttp-Bf58WHcw.js +1 -0
- package/dist/interface/assets/ConfigActionImageInput-CDXVFrOz.js +1 -0
- package/dist/interface/assets/ConfigActionMqtt-lH7MQqWr.js +1 -0
- package/dist/interface/assets/ConfigActionNotification-CAkr6NJX.js +1 -0
- package/dist/interface/assets/ConfigActionNotificationControl-CiL-4Ytw.js +1 -0
- package/dist/interface/assets/ConfigActionOutput-ILAxBT-r.js +1 -0
- package/dist/interface/assets/ConfigActionPlugin-B2d4mZiK.js +1 -0
- package/dist/interface/assets/ConfigActionSensor-BxMdsmRa.js +1 -0
- package/dist/interface/assets/ConfigActionSnapshot-CXVQBSzv.js +1 -0
- package/dist/interface/assets/ConfigActionVariable-CABnlnMv.js +1 -0
- package/dist/interface/assets/ConfigConditionIfElse-Cxu7TSdJ.js +1 -0
- package/dist/interface/assets/ConfigConditionSensorState-rB7I04Gb.js +1 -0
- package/dist/interface/assets/ConfigConditionSwitch-CU0hLo1h.js +1 -0
- package/dist/interface/assets/ConfigConditionTime-DfeEvxIU.js +1 -0
- package/dist/interface/assets/ConfigSensorValueInput-wXiyU3Sc.js +1 -0
- package/dist/interface/assets/{ConfigTriggerDetection-Cjes6g7x.js → ConfigTriggerDetection-DFJpuWrs.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-CZwesOD8.js +1 -0
- package/dist/interface/assets/ConfigTriggerManual-aibwYUtf.js +1 -0
- package/dist/interface/assets/ConfigTriggerMqtt-CUNgifGb.js +1 -0
- package/dist/interface/assets/ConfigTriggerSchedule-8Y_OBcB1.js +1 -0
- package/dist/interface/assets/ConfigTriggerSensor-Bu-YtGnX.js +1 -0
- package/dist/interface/assets/{ConfigTriggerSystem-NaaBopYq.js → ConfigTriggerSystem-CXNvmC4S.js} +1 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CkZ-_ABi.js +1 -0
- package/dist/interface/assets/Console-CG8eRDA4.js +1 -0
- package/dist/interface/assets/CuiAutomationRunsDialog-Ux0g-E3w.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-C-ZN_uXE.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-RUyuBxJZ.js +1 -0
- package/dist/interface/assets/CuiCameraPipCard-B-B6Ppsd.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-DqVdR9uS.js +1 -0
- package/dist/interface/assets/CuiCameraShares-DstoVjf9.js +1 -0
- package/dist/interface/assets/CuiCameraTable-BHaCRB65.js +2 -0
- package/dist/interface/assets/CuiDataTable-CTT9IFeR.js +1 -0
- package/dist/interface/assets/CuiLightControl-B_JIzm9t.js +1 -0
- package/dist/interface/assets/CuiLightControl-DFrZm_sv.css +1 -0
- package/dist/interface/assets/CuiList-CDed3qXV.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-7aXQznrX.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-D9Vi1SEP.js → CuiPluginCategoryChip-C2Y8x73q.js} +1 -1
- package/dist/interface/assets/CuiPluginOAuthButton-CCzRlZP6.js +2 -0
- package/dist/interface/assets/{CuiPluginTrustBadge-D0rUX2i6.js → CuiPluginTrustBadge-C8qBdLCg.js} +1 -1
- package/dist/interface/assets/CuiQRCode-D52Fcu61.js +1 -0
- package/dist/interface/assets/CuiRecordingsGrid-CfuihmlY.js +1 -0
- package/dist/interface/assets/CuiSchema-DTIuxROi.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-CoTQmfY7.js +1 -0
- package/dist/interface/assets/Faces-EtBPS1Ve.js +1 -0
- package/dist/interface/assets/FirstSteps-CC0BPH40.js +1 -0
- package/dist/interface/assets/Instances-dSYERqIc.js +1 -0
- package/dist/interface/assets/Logs-B8d6dEt7.js +6 -0
- package/dist/interface/assets/Menu-CejIVz_7.js +1 -0
- package/dist/interface/assets/OAuthDeviceFlow-YhwV_FSL.js +1 -0
- package/dist/interface/assets/Plugin-Brb6wfq-.js +1 -0
- package/dist/interface/assets/PluginConsole-CfyZQVq5.js +7 -0
- package/dist/interface/assets/PluginDetail-DVRnnauk.js +2 -0
- package/dist/interface/assets/PluginSchema-i6UJfMnh.js +1 -0
- package/dist/interface/assets/PluginSearch-C1YL9q00.js +1 -0
- package/dist/interface/assets/PluginSearch-PDx47aUx.js +2 -0
- package/dist/interface/assets/Plugins-CukJohcb.js +1 -0
- package/dist/interface/assets/Recordings-m6jxYvRI.js +1 -0
- package/dist/interface/assets/SensorEdit-BJAijbmc.js +1 -0
- package/dist/interface/assets/SensorHistory-DW00ZuHR.js +1 -0
- package/dist/interface/assets/Sensors-BA9P_Ray.css +1 -0
- package/dist/interface/assets/Sensors-Lfafn19i.js +2 -0
- package/dist/interface/assets/Settings-DHT8KXi2.js +1 -0
- package/dist/interface/assets/SettingsAccount-DOd4JeGd.js +1 -0
- package/dist/interface/assets/{SettingsAccount-CyNJQSuV.css → SettingsAccount-si-6gWl5.css} +1 -1
- package/dist/interface/assets/SettingsAccount-vrwV9rtP.js +1 -0
- package/dist/interface/assets/SettingsAppearance-11UFhRDY.js +1 -0
- package/dist/interface/assets/SettingsAppearance-BaDwC_h_.js +1 -0
- package/dist/interface/assets/SettingsBackup-CBBZV_nU.js +1 -0
- package/dist/interface/assets/SettingsList-Dx9DHGq9.js +1 -0
- package/dist/interface/assets/SettingsMqtt-BglQ_GeN.js +1 -0
- package/dist/interface/assets/SettingsNotifications-96czeGDD.js +2 -0
- package/dist/interface/assets/SettingsPermissions-CU4OVllA.js +1 -0
- package/dist/interface/assets/SettingsRecordings-BrnU9hrb.js +1 -0
- package/dist/interface/assets/SettingsRemote-CwJw_9HX.js +1 -0
- package/dist/interface/assets/SettingsSystem-B3nne5fS.js +2 -0
- package/dist/interface/assets/SettingsUsers-CoYyAxxn.js +1 -0
- package/dist/interface/assets/Terminal-DMAHgufw.js +4 -0
- package/dist/interface/assets/VariableInput-BzWLKBgd.js +1 -0
- package/dist/interface/assets/VariableSuggestions-BdxcP_dn.js +1 -0
- package/dist/interface/assets/VersionsHandler-Dvy5Lv-E.js +7 -0
- package/dist/interface/assets/VirtualSensorCreate-BXz0lWNm.js +1 -0
- package/dist/interface/assets/Workers-DqeKkdpa.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-DmxTF6VE.js} +1 -1
- package/dist/interface/assets/api-milc5VEE.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-DwSrX8QL.js} +1 -1
- package/dist/interface/assets/automationBlueprint-D0F9AHk9.js +1 -0
- package/dist/interface/assets/automations-yVPQAmFo.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-JAiaenSf.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-QtPEpiS4.js +1 -0
- package/dist/interface/assets/{config-C2hgXHyj.js → config-BE0DnCXx.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-BQp77LdP.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-CqhwDjRG.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-D_shY0Ks.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-BuSNpaOJ.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-7pWXkYgo.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-DKWwojYm.js +1 -0
- package/dist/interface/assets/{search-M4Rt52Co.js → search-miJXZGQz.js} +1 -1
- package/dist/interface/assets/sensors-CLQG1mQt.js +1 -0
- package/dist/interface/assets/{server-CVSOthzT.js → server-Bv5NVJ0G.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-DsxRUmCC.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-Bw8H-UB4.js → types-BazOcNe_.js} +1 -1
- package/dist/interface/assets/types-CoXm85So.js +1 -0
- package/dist/interface/assets/upload-CNYrnwuV.js +1 -0
- package/dist/interface/assets/{useAppVersion-CDTrwxkp.js → useAppVersion-oPpW7jcN.js} +1 -1
- package/dist/interface/assets/useBackupRestore-b0Niqql7.js +1 -0
- package/dist/interface/assets/useCameraOptions-uf9Kog6z.js +1 -0
- package/dist/interface/assets/{useCardSelection-CgZ7QTaA.js → useCardSelection-B3B2qPHO.js} +1 -1
- package/dist/interface/assets/{useElectron-CgLWOhcS.js → useElectron-Dg8tFzam.js} +1 -1
- package/dist/interface/assets/useLogsSocket-9jJ-oJIm.js +5 -0
- package/dist/interface/assets/{usePermissions-tzi2t12h.js → usePermissions-xL0VlbyD.js} +1 -1
- package/dist/interface/assets/useServerRestart-3AZOTz7i.js +1 -0
- package/dist/interface/assets/{useStreamStatus-BV_L7pxB.js → useStreamStatus-Dg-Djura.js} +1 -1
- package/dist/interface/assets/useUserOptions-BQnM3gdi.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-BqkrW4Bb.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-BQegq2Q6.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-DYzLjOFZ.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 +19 -2
- 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 +2 -2
- package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/storageController.d.ts +5 -5
- package/dist/server/src/plugins/runtime/node/storageController.js +20 -28
- 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 +18 -0
- 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 +1 -3
- package/dist/server/src/plugins/runtime/python/storage_controller.py +19 -50
- 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 +808 -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 BatteryCapability(StrEnum):
|
|
14
|
-
"""Optional capabilities
|
|
14
|
+
"""Optional capabilities of a battery info sensor."""
|
|
15
15
|
|
|
16
16
|
LowBattery = "lowBattery"
|
|
17
17
|
"""Sensor reports low-battery alerts."""
|
|
@@ -20,14 +20,14 @@ class BatteryCapability(StrEnum):
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class BatteryProperty(StrEnum):
|
|
23
|
-
"""
|
|
23
|
+
"""Property names of a battery info sensor."""
|
|
24
24
|
|
|
25
25
|
Level = "level"
|
|
26
26
|
"""Battery level percentage (0-100)."""
|
|
27
27
|
Charging = "charging"
|
|
28
28
|
"""Current charging state."""
|
|
29
29
|
Low = "low"
|
|
30
|
-
"""Whether battery is critically low."""
|
|
30
|
+
"""Whether the battery is critically low."""
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class ChargingState(StrEnum):
|
|
@@ -44,7 +44,7 @@ class ChargingState(StrEnum):
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
class BatteryInfoProperties(TypedDict):
|
|
47
|
-
"""Property
|
|
47
|
+
"""Property values of a battery info sensor."""
|
|
48
48
|
|
|
49
49
|
level: int
|
|
50
50
|
charging: ChargingState
|
|
@@ -52,10 +52,12 @@ class BatteryInfoProperties(TypedDict):
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
class BatteryPropertyChangeData(TypedDict):
|
|
55
|
-
"""
|
|
55
|
+
"""Property change payload emitted on BatteryInfoLike.onPropertyChanged."""
|
|
56
56
|
|
|
57
|
-
property: str
|
|
57
|
+
property: str
|
|
58
|
+
"""Name of the changed property, a BatteryProperty value."""
|
|
58
59
|
value: int | ChargingState | bool
|
|
60
|
+
"""New value of the property."""
|
|
59
61
|
|
|
60
62
|
|
|
61
63
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -69,6 +71,12 @@ class BatteryInfoLike(SensorLike, Protocol):
|
|
|
69
71
|
def type(self) -> SensorType:
|
|
70
72
|
return SensorType.Battery
|
|
71
73
|
|
|
74
|
+
@property
|
|
75
|
+
def onPropertyChanged(self) -> Observable[BatteryPropertyChangeData]: ...
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def onCapabilitiesChanged(self) -> Observable[list[BatteryCapability]]: ...
|
|
79
|
+
|
|
72
80
|
@overload
|
|
73
81
|
def getValue(self, property: Literal[BatteryProperty.Level]) -> int | None: ...
|
|
74
82
|
@overload
|
|
@@ -78,24 +86,18 @@ class BatteryInfoLike(SensorLike, Protocol):
|
|
|
78
86
|
@overload
|
|
79
87
|
def getValue(self, property: str) -> object | None: ...
|
|
80
88
|
|
|
81
|
-
@property
|
|
82
|
-
def onPropertyChanged(self) -> Observable[BatteryPropertyChangeData]: ...
|
|
83
|
-
|
|
84
|
-
@property
|
|
85
|
-
def onCapabilitiesChanged(self) -> Observable[list[BatteryCapability]]: ...
|
|
86
|
-
|
|
87
89
|
|
|
88
90
|
class BatteryInfo(Sensor[BatteryInfoProperties, TStorage, BatteryCapability], Generic[TStorage]):
|
|
89
91
|
"""Battery info sensor. Reports battery level, charging state, and low-battery alerts.
|
|
90
92
|
|
|
91
|
-
Plugin authors call
|
|
93
|
+
Plugin authors call ``setLevel(value)``, ``setCharging(state)``, and ``setLow(value)``
|
|
92
94
|
to push updates from the device.
|
|
93
95
|
"""
|
|
94
96
|
|
|
95
97
|
_requires_frames = False
|
|
96
98
|
|
|
97
|
-
def __init__(self, name: str = "Battery") -> None:
|
|
98
|
-
super().__init__(name)
|
|
99
|
+
def __init__(self, name: str = "Battery", *, native_id: str | None = None) -> None:
|
|
100
|
+
super().__init__(name, native_id=native_id)
|
|
99
101
|
self._write_state(
|
|
100
102
|
{
|
|
101
103
|
BatteryProperty.Level.value: 100,
|
|
@@ -167,4 +169,3 @@ class BatteryInfo(Sensor[BatteryInfoProperties, TStorage, BatteryCapability], Ge
|
|
|
167
169
|
|
|
168
170
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
169
171
|
"""Read-only sensor: external writes are ignored."""
|
|
170
|
-
# No-op — battery state is reported by the plugin, not set externally.
|
|
@@ -16,20 +16,25 @@ from .spec import ModelSpec
|
|
|
16
16
|
class ClassifierProperty(StrEnum):
|
|
17
17
|
"""Property names of a classifier sensor."""
|
|
18
18
|
|
|
19
|
-
Detected = "detected"
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
Detected = "detected"
|
|
20
|
+
"""Whether any classification result is active."""
|
|
21
|
+
Detections = "detections"
|
|
22
|
+
"""List of classification results with labels and confidence."""
|
|
23
|
+
Labels = "labels"
|
|
24
|
+
"""Unique labels of the current detections (auto-derived when reporting detections)."""
|
|
22
25
|
|
|
23
26
|
|
|
24
27
|
class ClassifierDetection(Detection):
|
|
25
28
|
"""A classifier detection result with an open attribute for classifier categories."""
|
|
26
29
|
|
|
27
|
-
attribute: str # type: ignore[misc]
|
|
28
|
-
|
|
30
|
+
attribute: str # type: ignore[misc]
|
|
31
|
+
"""Classifier category (e.g. "bird", "delivery"). Open string for any classifier."""
|
|
32
|
+
subAttribute: str
|
|
33
|
+
"""Classifier sub-category (e.g. "woodpecker", "amazon")."""
|
|
29
34
|
|
|
30
35
|
|
|
31
36
|
class ClassifierSensorProperties(TypedDict):
|
|
32
|
-
"""Property
|
|
37
|
+
"""Property values of a classifier sensor."""
|
|
33
38
|
|
|
34
39
|
detected: bool
|
|
35
40
|
detections: list[ClassifierDetection]
|
|
@@ -39,8 +44,10 @@ class ClassifierSensorProperties(TypedDict):
|
|
|
39
44
|
class ClassifierPropertyChangeData(TypedDict):
|
|
40
45
|
"""Property change payload emitted on ClassifierSensorLike.onPropertyChanged."""
|
|
41
46
|
|
|
42
|
-
property: str
|
|
47
|
+
property: str
|
|
48
|
+
"""Name of the changed property, a ClassifierProperty value."""
|
|
43
49
|
value: bool | list[ClassifierDetection] | list[str]
|
|
50
|
+
"""New value of the property."""
|
|
44
51
|
|
|
45
52
|
|
|
46
53
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -54,6 +61,9 @@ class ClassifierSensorLike(SensorLike, Protocol):
|
|
|
54
61
|
def type(self) -> SensorType:
|
|
55
62
|
return SensorType.Classifier
|
|
56
63
|
|
|
64
|
+
@property
|
|
65
|
+
def onPropertyChanged(self) -> Observable[ClassifierPropertyChangeData]: ...
|
|
66
|
+
|
|
57
67
|
@overload
|
|
58
68
|
def getValue(self, property: Literal[ClassifierProperty.Detected]) -> bool | None: ...
|
|
59
69
|
@overload
|
|
@@ -65,21 +75,18 @@ class ClassifierSensorLike(SensorLike, Protocol):
|
|
|
65
75
|
@overload
|
|
66
76
|
def getValue(self, property: str) -> object | None: ...
|
|
67
77
|
|
|
68
|
-
@property
|
|
69
|
-
def onPropertyChanged(self) -> Observable[ClassifierPropertyChangeData]: ...
|
|
70
|
-
|
|
71
78
|
|
|
72
79
|
class ClassifierSensor(Sensor[ClassifierSensorProperties, TStorage, str], Generic[TStorage]):
|
|
73
80
|
"""General-purpose image classifier sensor.
|
|
74
81
|
|
|
75
|
-
Plugin authors call
|
|
76
|
-
|
|
82
|
+
Plugin authors call ``reportDetections(list)`` to push classification results.
|
|
83
|
+
``detected`` and ``labels`` are auto-derived from the detection list.
|
|
77
84
|
"""
|
|
78
85
|
|
|
79
86
|
_requires_frames = False
|
|
80
87
|
|
|
81
|
-
def __init__(self, name: str = "Classifier") -> None:
|
|
82
|
-
super().__init__(name)
|
|
88
|
+
def __init__(self, name: str = "Classifier", *, native_id: str | None = None) -> None:
|
|
89
|
+
super().__init__(name, native_id=native_id)
|
|
83
90
|
self._write_state(
|
|
84
91
|
{
|
|
85
92
|
ClassifierProperty.Detected.value: False,
|
|
@@ -98,28 +105,25 @@ class ClassifierSensor(Sensor[ClassifierSensorProperties, TStorage, str], Generi
|
|
|
98
105
|
|
|
99
106
|
@property
|
|
100
107
|
def detected(self) -> bool:
|
|
101
|
-
"""Whether any classification result is active."""
|
|
102
108
|
return bool(self.props.detected)
|
|
103
109
|
|
|
104
110
|
@property
|
|
105
111
|
def detections(self) -> list[ClassifierDetection]:
|
|
106
|
-
"""Current detection list."""
|
|
107
112
|
return self.props.detections or []
|
|
108
113
|
|
|
109
114
|
@property
|
|
110
115
|
def labels(self) -> list[str]:
|
|
111
|
-
"""Unique labels of the current detections."""
|
|
112
116
|
return self.props.labels or []
|
|
113
117
|
|
|
114
118
|
def reportDetections(self, detected: bool, detections: list[ClassifierDetection] | None = None) -> None:
|
|
115
119
|
"""Report classification results. Auto-derives ``detected`` and
|
|
116
120
|
``labels`` from the list.
|
|
117
121
|
|
|
118
|
-
- ``reportDetections(True)
|
|
122
|
+
- ``reportDetections(True)``: generic classification trigger. The SDK
|
|
119
123
|
synthesizes a single full-frame detection with empty attribute and
|
|
120
124
|
sub-attribute.
|
|
121
|
-
- ``reportDetections(True, [...])
|
|
122
|
-
- ``reportDetections(False)
|
|
125
|
+
- ``reportDetections(True, [...])``: explicit classifier detections.
|
|
126
|
+
- ``reportDetections(False)``: clear.
|
|
123
127
|
|
|
124
128
|
Args:
|
|
125
129
|
detected: Whether any classification result is active.
|
|
@@ -163,30 +167,30 @@ class ClassifierSensor(Sensor[ClassifierSensorProperties, TStorage, str], Generi
|
|
|
163
167
|
|
|
164
168
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
165
169
|
"""Read-only sensor: external writes are ignored."""
|
|
166
|
-
# No-op — classifier state is reported by the plugin, not set externally.
|
|
167
170
|
|
|
168
171
|
|
|
169
172
|
class ClassifierResult(TypedDict):
|
|
170
173
|
"""Return type for ClassifierDetectorSensor.detectClassifications()."""
|
|
171
174
|
|
|
172
|
-
detected: bool
|
|
173
|
-
|
|
175
|
+
detected: bool
|
|
176
|
+
"""Whether any classification result is emitted for this frame."""
|
|
177
|
+
detections: list[ClassifierDetection]
|
|
178
|
+
"""Detections emitted for this frame."""
|
|
174
179
|
|
|
175
180
|
|
|
176
181
|
class ClassifierDetectorSensor(ClassifierSensor[TStorage], Generic[TStorage]):
|
|
177
182
|
"""Classifier detector that receives video frames from the backend pipeline.
|
|
178
183
|
|
|
179
184
|
Extend this class and implement ``detectClassifications`` to run image
|
|
180
|
-
classification models against trigger regions.
|
|
185
|
+
classification models against trigger regions. The backend scales frames
|
|
186
|
+
to match ``modelSpec.input`` dimensions before each call.
|
|
181
187
|
"""
|
|
182
188
|
|
|
183
189
|
_requires_frames = True
|
|
184
190
|
|
|
185
191
|
@property
|
|
186
192
|
@abstractmethod
|
|
187
|
-
def modelSpec(self) -> ModelSpec:
|
|
188
|
-
"""Declares the expected input dimensions and trigger labels. The backend scales frames to match."""
|
|
189
|
-
...
|
|
193
|
+
def modelSpec(self) -> ModelSpec: ...
|
|
190
194
|
|
|
191
195
|
@abstractmethod
|
|
192
196
|
async def detectClassifications(self, frames: list[VideoFrameData]) -> list[ClassifierResult]:
|
|
@@ -14,16 +14,21 @@ from .spec import ModelSpec
|
|
|
14
14
|
class ClipEmbedding(TypedDict):
|
|
15
15
|
"""A CLIP embedding result for a detected region."""
|
|
16
16
|
|
|
17
|
-
label: str
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
label: str
|
|
18
|
+
"""Detection label this embedding was computed for (e.g. "person", "vehicle")."""
|
|
19
|
+
box: BoundingBox
|
|
20
|
+
"""Bounding box of the detected region in normalized coordinates."""
|
|
21
|
+
embedding: list[float]
|
|
22
|
+
"""CLIP embedding vector."""
|
|
20
23
|
|
|
21
24
|
|
|
22
25
|
class ClipResult(TypedDict):
|
|
23
26
|
"""Return type for ClipDetectorSensor.detectEmbeddings()."""
|
|
24
27
|
|
|
25
|
-
embeddings: list[ClipEmbedding]
|
|
26
|
-
|
|
28
|
+
embeddings: list[ClipEmbedding]
|
|
29
|
+
"""Embeddings emitted for this frame."""
|
|
30
|
+
embeddingModel: str
|
|
31
|
+
"""Identifier of the embedding model used to produce the vectors."""
|
|
27
32
|
|
|
28
33
|
|
|
29
34
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -38,8 +43,8 @@ class ClipDetectorSensor(Sensor[dict[str, Any], TStorage, str], Generic[TStorage
|
|
|
38
43
|
|
|
39
44
|
_requires_frames = True
|
|
40
45
|
|
|
41
|
-
def __init__(self, name: str = "CLIP Sensor") -> None:
|
|
42
|
-
super().__init__(name)
|
|
46
|
+
def __init__(self, name: str = "CLIP Sensor", *, native_id: str | None = None) -> None:
|
|
47
|
+
super().__init__(name, native_id=native_id)
|
|
43
48
|
|
|
44
49
|
@property
|
|
45
50
|
def type(self) -> SensorType:
|
|
@@ -51,9 +56,7 @@ class ClipDetectorSensor(Sensor[dict[str, Any], TStorage, str], Generic[TStorage
|
|
|
51
56
|
|
|
52
57
|
@property
|
|
53
58
|
@abstractmethod
|
|
54
|
-
def modelSpec(self) -> ModelSpec:
|
|
55
|
-
"""Declares the expected input dimensions and trigger labels."""
|
|
56
|
-
...
|
|
59
|
+
def modelSpec(self) -> ModelSpec: ...
|
|
57
60
|
|
|
58
61
|
@abstractmethod
|
|
59
62
|
async def detectEmbeddings(self, frames: list[VideoFrameData]) -> list[ClipResult]:
|
|
@@ -64,5 +67,4 @@ class ClipDetectorSensor(Sensor[dict[str, Any], TStorage, str], Generic[TStorage
|
|
|
64
67
|
...
|
|
65
68
|
|
|
66
69
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
67
|
-
"""
|
|
68
|
-
# No-op — clip detector has no state.
|
|
70
|
+
"""Read-only sensor: external writes are ignored."""
|
|
@@ -11,23 +11,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ContactProperty(StrEnum):
|
|
14
|
-
"""
|
|
14
|
+
"""Property names of a contact sensor."""
|
|
15
15
|
|
|
16
16
|
Detected = "detected"
|
|
17
17
|
"""Whether the contact is open (true = open, false = closed)."""
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class ContactSensorProperties(TypedDict):
|
|
21
|
-
"""Property
|
|
21
|
+
"""Property values of a contact sensor."""
|
|
22
22
|
|
|
23
23
|
detected: bool
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class ContactPropertyChangeData(TypedDict):
|
|
27
|
-
"""
|
|
27
|
+
"""Property change payload emitted on ContactSensorLike.onPropertyChanged."""
|
|
28
28
|
|
|
29
|
-
property: str
|
|
29
|
+
property: str
|
|
30
|
+
"""Name of the changed property, a ContactProperty 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 ContactSensorLike(SensorLike, Protocol):
|
|
|
41
43
|
def type(self) -> SensorType:
|
|
42
44
|
return SensorType.Contact
|
|
43
45
|
|
|
46
|
+
@property
|
|
47
|
+
def onPropertyChanged(self) -> Observable[ContactPropertyChangeData]: ...
|
|
48
|
+
|
|
44
49
|
@overload
|
|
45
50
|
def getValue(self, property: Literal[ContactProperty.Detected]) -> bool | None: ...
|
|
46
51
|
@overload
|
|
47
52
|
def getValue(self, property: str) -> object | None: ...
|
|
48
53
|
|
|
49
|
-
@property
|
|
50
|
-
def onPropertyChanged(self) -> Observable[ContactPropertyChangeData]: ...
|
|
51
|
-
|
|
52
54
|
|
|
53
55
|
class ContactSensor(Sensor[ContactSensorProperties, TStorage, str], Generic[TStorage]):
|
|
54
56
|
"""Contact sensor for door/window open-close state."""
|
|
55
57
|
|
|
56
58
|
_requires_frames = False
|
|
57
59
|
|
|
58
|
-
def __init__(self, name: str = "Contact Sensor") -> None:
|
|
59
|
-
super().__init__(name)
|
|
60
|
+
def __init__(self, name: str = "Contact Sensor", *, native_id: str | None = None) -> None:
|
|
61
|
+
super().__init__(name, native_id=native_id)
|
|
60
62
|
self._write_state({ContactProperty.Detected.value: False})
|
|
61
63
|
|
|
62
64
|
@property
|
|
@@ -86,4 +88,3 @@ class ContactSensor(Sensor[ContactSensorProperties, TStorage, str], Generic[TSto
|
|
|
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 — contact state is reported by the plugin, not set externally.
|
|
@@ -30,37 +30,49 @@ class BoundingBox(TypedDict):
|
|
|
30
30
|
so they are independent of resolution.
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
|
-
x: float
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
x: float
|
|
34
|
+
"""X coordinate of the top-left corner (0-1)."""
|
|
35
|
+
y: float
|
|
36
|
+
"""Y coordinate of the top-left corner (0-1)."""
|
|
37
|
+
width: float
|
|
38
|
+
"""Width as a fraction of frame width (0-1)."""
|
|
39
|
+
height: float
|
|
40
|
+
"""Height as a fraction of frame height (0-1)."""
|
|
37
41
|
|
|
38
42
|
|
|
39
43
|
class Detection(TypedDict):
|
|
40
44
|
"""A single detection result emitted by any detection sensor."""
|
|
41
45
|
|
|
42
|
-
label: DetectionLabel
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
label: DetectionLabel
|
|
47
|
+
"""Detection label (e.g. "person", "vehicle")."""
|
|
48
|
+
confidence: float
|
|
49
|
+
"""Confidence score in the range 0-1."""
|
|
50
|
+
box: BoundingBox
|
|
51
|
+
"""Bounding box in normalized coordinates."""
|
|
52
|
+
attribute: NotRequired[str]
|
|
53
|
+
"""Optional sub-detection attribute (DetectionAttribute or classifier-specific)."""
|
|
48
54
|
|
|
49
55
|
|
|
50
56
|
class VideoFrameData(TypedDict):
|
|
51
57
|
"""Video frame data delivered to detector sensors by the backend pipeline.
|
|
52
58
|
|
|
53
|
-
The backend handles capture, decoding
|
|
54
|
-
|
|
59
|
+
The backend handles capture, decoding and scaling. Detectors only process
|
|
60
|
+
the pixel payload.
|
|
55
61
|
"""
|
|
56
62
|
|
|
57
|
-
id: str
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
id: str
|
|
64
|
+
"""Unique frame or crop identifier used to map batch results back to inputs."""
|
|
65
|
+
cameraId: NotRequired[str]
|
|
66
|
+
"""Camera the frame originated from."""
|
|
67
|
+
data: bytes
|
|
68
|
+
"""Raw pixel buffer."""
|
|
69
|
+
width: int
|
|
70
|
+
"""Frame width in pixels."""
|
|
71
|
+
height: int
|
|
72
|
+
"""Frame height in pixels."""
|
|
73
|
+
format: Literal["nv12", "rgb", "rgba", "gray"]
|
|
74
|
+
"""Pixel format: rgb=3 bytes/pixel, rgba=4 bytes/pixel, gray=1 byte/pixel, nv12=YUV semi-planar."""
|
|
75
|
+
timestamp: NotRequired[int]
|
|
76
|
+
"""Capture timestamp in milliseconds since epoch."""
|
|
77
|
+
label: NotRequired[str]
|
|
78
|
+
"""Trigger label propagated by the coordinator for secondary detectors."""
|
|
@@ -12,23 +12,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class DoorbellProperty(StrEnum):
|
|
15
|
-
"""
|
|
15
|
+
"""Property names of a doorbell trigger."""
|
|
16
16
|
|
|
17
17
|
Ring = "ring"
|
|
18
18
|
"""Whether the doorbell is currently ringing."""
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class DoorbellTriggerProperties(TypedDict):
|
|
22
|
-
"""Property
|
|
22
|
+
"""Property values of a doorbell trigger."""
|
|
23
23
|
|
|
24
24
|
ring: bool
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class DoorbellPropertyChangeData(TypedDict):
|
|
28
|
-
"""
|
|
28
|
+
"""Property change payload emitted on DoorbellTriggerLike.onPropertyChanged."""
|
|
29
29
|
|
|
30
|
-
property: str
|
|
30
|
+
property: str
|
|
31
|
+
"""Name of the changed property, a DoorbellProperty value."""
|
|
31
32
|
value: bool
|
|
33
|
+
"""New value of the property."""
|
|
32
34
|
|
|
33
35
|
|
|
34
36
|
TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
|
|
@@ -42,32 +44,32 @@ class DoorbellTriggerLike(SensorLike, Protocol):
|
|
|
42
44
|
def type(self) -> SensorType:
|
|
43
45
|
return SensorType.Doorbell
|
|
44
46
|
|
|
47
|
+
@property
|
|
48
|
+
def onPropertyChanged(self) -> Observable[DoorbellPropertyChangeData]: ...
|
|
49
|
+
|
|
45
50
|
@overload
|
|
46
51
|
def getValue(self, property: Literal[DoorbellProperty.Ring]) -> bool | None: ...
|
|
47
52
|
@overload
|
|
48
53
|
def getValue(self, property: str) -> object | None: ...
|
|
49
54
|
|
|
50
|
-
@property
|
|
51
|
-
def onPropertyChanged(self) -> Observable[DoorbellPropertyChangeData]: ...
|
|
52
|
-
|
|
53
55
|
|
|
54
|
-
#: Auto-reset duration after
|
|
56
|
+
#: Auto-reset duration after ``trigger()`` is called (ms).
|
|
55
57
|
RING_AUTO_RESET_MS = 2000
|
|
56
58
|
|
|
57
59
|
|
|
58
60
|
class DoorbellTrigger(Sensor[DoorbellTriggerProperties, TStorage, str], Generic[TStorage]):
|
|
59
61
|
"""Doorbell trigger sensor.
|
|
60
62
|
|
|
61
|
-
Plugin authors call
|
|
62
|
-
is set to True and automatically reset to False after a short
|
|
63
|
-
(``RING_AUTO_RESET_MS``). Calling
|
|
64
|
-
resets the timer (extends the ring phase).
|
|
63
|
+
Plugin authors call ``trigger()`` to fire a doorbell event. The ``ring``
|
|
64
|
+
property is set to True and automatically reset to False after a short
|
|
65
|
+
delay (``RING_AUTO_RESET_MS``). Calling ``trigger()`` again while still
|
|
66
|
+
ringing resets the timer (extends the ring phase).
|
|
65
67
|
"""
|
|
66
68
|
|
|
67
69
|
_requires_frames = False
|
|
68
70
|
|
|
69
|
-
def __init__(self, name: str = "Doorbell") -> None:
|
|
70
|
-
super().__init__(name)
|
|
71
|
+
def __init__(self, name: str = "Doorbell", *, native_id: str | None = None) -> None:
|
|
72
|
+
super().__init__(name, native_id=native_id)
|
|
71
73
|
self._ring_reset_timer: threading.Timer | None = None
|
|
72
74
|
self._write_state({DoorbellProperty.Ring.value: False})
|
|
73
75
|
|
|
@@ -107,11 +109,9 @@ class DoorbellTrigger(Sensor[DoorbellTriggerProperties, TStorage, str], Generic[
|
|
|
107
109
|
self._ring_reset_timer.start()
|
|
108
110
|
|
|
109
111
|
async def updateValue(self, property: str, value: Any) -> None:
|
|
110
|
-
"""
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
real hardware ring (auto-reset included). Writing ``ring=false`` is
|
|
114
|
-
ignored — the auto-reset timer owns the off transition.
|
|
112
|
+
"""Routes generic property writes to the semantic setters.
|
|
113
|
+
|
|
114
|
+
Writing ring=false is ignored, the auto-reset timer owns the off transition.
|
|
115
115
|
"""
|
|
116
116
|
if property == DoorbellProperty.Ring.value and value:
|
|
117
117
|
self.trigger()
|