mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-05 02:35:22 +03:00
Add more commands
This commit is contained in:
parent
8f76157acd
commit
25aa438745
@ -14,6 +14,7 @@ logger = logging.getLogger(__name__)
|
|||||||
class OnvifCommandEnum(str, Enum):
|
class OnvifCommandEnum(str, Enum):
|
||||||
"""Holds all possible move commands"""
|
"""Holds all possible move commands"""
|
||||||
|
|
||||||
|
init = "init"
|
||||||
move_down = "move_down"
|
move_down = "move_down"
|
||||||
move_left = "move_left"
|
move_left = "move_left"
|
||||||
move_right = "move_right"
|
move_right = "move_right"
|
||||||
@ -36,19 +37,30 @@ class OnvifController:
|
|||||||
),
|
),
|
||||||
"init": False,
|
"init": False,
|
||||||
"active": False,
|
"active": False,
|
||||||
|
"presets": {},
|
||||||
}
|
}
|
||||||
|
|
||||||
def _init_onvif(self, camera_name: str) -> None:
|
def _init_onvif(self, camera_name: str) -> None:
|
||||||
onvif: ONVIFCamera = self.cams[camera_name]["onvif"]
|
onvif: ONVIFCamera = self.cams[camera_name]["onvif"]
|
||||||
|
|
||||||
|
# create init services
|
||||||
media = onvif.create_media_service()
|
media = onvif.create_media_service()
|
||||||
profile = media.GetProfiles()[0]
|
profile = media.GetProfiles()[0]
|
||||||
ptz = onvif.create_ptz_service()
|
ptz = onvif.create_ptz_service()
|
||||||
request = ptz.create_type("GetConfigurationOptions")
|
request = ptz.create_type("GetConfigurationOptions")
|
||||||
request.ConfigurationToken = profile.PTZConfiguration.token
|
request.ConfigurationToken = profile.PTZConfiguration.token
|
||||||
ptz_config = ptz.GetConfigurationOptions(request)
|
ptz_config = ptz.GetConfigurationOptions(request)
|
||||||
|
|
||||||
|
# setup moving request
|
||||||
move_request = ptz.create_type("ContinuousMove")
|
move_request = ptz.create_type("ContinuousMove")
|
||||||
move_request.ProfileToken = profile.token
|
move_request.ProfileToken = profile.token
|
||||||
self.cams[camera_name]["move_request"] = move_request
|
self.cams[camera_name]["move_request"] = move_request
|
||||||
|
|
||||||
|
# setup existing presets
|
||||||
|
presets: list[dict] = ptz.GetPresets({"ProfileToken": profile.token})
|
||||||
|
for preset in presets:
|
||||||
|
self.cams[camera_name]["presets"][preset["Name"]] = preset["token"]
|
||||||
|
|
||||||
self.cams[camera_name]["init"] = True
|
self.cams[camera_name]["init"] = True
|
||||||
|
|
||||||
def _stop(self, camera_name: str) -> None:
|
def _stop(self, camera_name: str) -> None:
|
||||||
@ -107,5 +119,8 @@ class OnvifController:
|
|||||||
|
|
||||||
if command == OnvifCommandEnum.stop:
|
if command == OnvifCommandEnum.stop:
|
||||||
self._stop(camera_name)
|
self._stop(camera_name)
|
||||||
|
elif command == OnvifCommandEnum.init:
|
||||||
|
# already init
|
||||||
|
return
|
||||||
else:
|
else:
|
||||||
self._move(camera_name, command)
|
self._move(camera_name, command)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user