Set-VmsDeviceEvent¶
SYNOPSIS¶
Used to enable, disable, or modify device events provided by hardware added to a recording server.
SYNTAX¶
Set-VmsDeviceEvent [-DeviceEvent] <HardwareDeviceEventChildItem> [[-Used] <Boolean>] [[-Enabled] <Boolean>]
[[-Index] <String>] [-PassThru] [-WhatIf] [-Confirm] [<CommonParameters>]
DESCRIPTION¶
The Set-VmsDeviceEvent
cmdlet is used to "add" or "remove" an event on a Hardware, Camera, Microphone, Speaker, Input,
Output, or Metadata device, by setting the value of Used
to $true
or $false
respectively. Events that are "used"
can then be enabled or disabled by setting the Enabled
property accordingly.
Some events, such as some hardware-based motion detection events, have an EventIndex
property which can provide additional
information like the ID of a motion detection window. This setting can be modified with the Index
parameter when needed.
REQUIREMENTS
- Requires VMS connection and will attempt to connect automatically
- Requires VMS version 21.1
EXAMPLES¶
Example 1¶
Get-VmsCamera | Get-VmsDeviceEvent -Name 'Motion St*ed (HW)' | Set-VmsDeviceEvent -Used $true -Enabled $true -WhatIf
Add and enable the hardware-based motion started/stopped events on all enabled cameras on the Milestone server. Note
that the -WhatIf
switch parameter should be removed from the Set-VmsDeviceEvent
command if you want the changed to
be made on the server.
Example 2¶
Disable any "*tripwire*" events available on all enabled cameras.
Example 3¶
# On selected cameras, ensure recording is enabled, and disable the prebuffer as it isn't useful for cameras that only stream on motion.
# Then add/enable the "Motion Started (HW)" and "Motion Stopped (HW)" events on each of the selected cameras.
$selectedCameras = Select-Camera -AllowFolders -AllowServers -RemoveDuplicates -Title 'Select cameras to configure for edge-based motion detection'
$selectedCameras | Set-VmsCamera -RecordingEnabled $true -PrebufferEnabled $false -PassThru | Get-VmsDeviceEvent -Name 'Motion*(HW)' | Set-VmsDeviceEvent -Used $true -Enabled $true -Index 1 -PassThru
# Create a rule to start camera feeds on edge-based motion detection events, and to retrieve the previous 15 seconds of recordings from the camera's edge storage if available.
$ruleArgs = @{
Name = 'Start Feed and Record on Motion Started (HW)'
Properties = @{
'Description' = 'Start live stream, start recording, and retrieve last 15 seconds from edge storage when camera detects motion.'
'StartRuleType' = 'Event'
'StartEventGroup' = 'DeviceConfigurable'
'StartEventType' = 'a7bd4b94-6eb0-4b5d-92d9-23f69bd23824'
'StartEventSources' = 'CameraGroup[0e1b0ad3-f67c-4d5f-b792-4bd6c3cf52f8]'
'StopRuleType' = 'Event'
'StopEventGroup' = 'DeviceConfigurable'
'StopEventType' = 'e3dd8ed6-cf93-410d-818a-6c474414d885'
'StopEventSources' = 'CameraGroup[0e1b0ad3-f67c-4d5f-b792-4bd6c3cf52f8]'
'StartActions' = 'StartRecording;StartFeed;RetrieveEdgeStorage'
'Start.StartRecording.Delay' = 0
'Start.StartRecording.DeviceIds' = 'Camera[00000000-0000-0000-0000-000000000000]'
'Start.StartFeed.DeviceIds' = 'Camera[00000000-0000-0000-0000-000000000000]'
'Start.RetrieveEdgeStorage.Delay' = 0
'Start.RetrieveEdgeStorage.DeviceIds' = 'Camera[00000000-0000-0000-0000-000000000000]'
'Start.RetrieveEdgeStorage.RetrieveSecondsBefore' = '-15'
'StopActions' = 'StopRecording;StopFeed'
'Stop.StopRecording.Delay' = '15'
'Stop.StopFeed.Delay' = '15'
}
}
New-VmsRule @ruleArgs -Verbose
This example demonstrates how you can enable the hardware-based or edge motion started/stopped events on many cameras at once, combined with creating a rule to start camera feeds on the "Motion Started (HW)" events and retrieving the previous 15 seconds of recordings from edge storage if available.
Note that the "Default Start Feed Rule" should be disabled if you do not want the camera to stream to the recording server all the time.
PARAMETERS¶
-DeviceEvent¶
Specifies the device event to modify use Get-VmsDeviceEvent
to retrieve a list of available DeviceEvents.
Type: HardwareDeviceEventChildItem
Parameter Sets: (All)
Aliases:
Required: True
Position: 0
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
-Enabled¶
Specifies a new value for the Enabled property on the device event.
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Index¶
Specifies a new value for the EventIndex property on the device event.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru¶
Returns each device event back to the pipeline whether it was modified or not.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Used¶
Specifies a new value for the EventUsed property on the device event. When the value is set to $true
the event is "added"
on the device. If this value was previously $false
, the Enabled property is automatically set to $true
to match the
behavior of the management client.
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Confirm¶
Prompts you for confirmation before running the cmdlet.
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WhatIf¶
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: SwitchParameter
Parameter Sets: (All)
Aliases: wi
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters¶
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.