Summary

PTZ camera supporting VISCA, Pelco-D, and Pelco-P binary protocols over TCP. Provides pan/tilt/zoom control, focus, white balance, exposure, presets, and image adjustments. Minimum 500 ms between commands.

Transport

protocols:
  - tcp
addressing:
  port: 1259
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable     # inferred from CAM_Power On/Off commands
- queryable     # inferred from extensive Inquiry Command set
- levelable     # inferred from gain, brightness, contrast, saturation direct-set commands

Actions

- id: cam_power_on
  label: Power On
  kind: action
  params: []
  command: "8x 01 04 00 02 FF"
  note: "x = camera address"

- id: cam_power_off
  label: Power Off
  kind: action
  params: []
  command: "8x 01 04 00 03 FF"
  note: "x = camera address"

- id: cam_zoom_stop
  label: Zoom Stop
  kind: action
  params: []
  command: "8x 01 04 07 00 FF"

- id: cam_zoom_tele_standard
  label: Zoom Tele (Standard)
  kind: action
  params: []
  command: "8x 01 04 07 02 FF"

- id: cam_zoom_wide_standard
  label: Zoom Wide (Standard)
  kind: action
  params: []
  command: "8x 01 04 07 03 FF"

- id: cam_zoom_tele_variable
  label: Zoom Tele (Variable)
  kind: action
  params:
    - name: speed
      type: integer
      min: 0
      max: 15
      description: "Zoom speed, 0=low, F=high"
  command: "8x 01 04 07 2p FF"

- id: cam_zoom_wide_variable
  label: Zoom Wide (Variable)
  kind: action
  params:
    - name: speed
      type: integer
      min: 0
      max: 15
      description: "Zoom speed, 0=low, F=high"
  command: "8x 01 04 07 3p FF"

- id: cam_zoom_direct
  label: Zoom Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Zoom position (4 hex nibbles pqrs)"
  command: "8x 01 04 47 0p 0q 0r 0s FF"

- id: cam_focus_stop
  label: Focus Stop
  kind: action
  params: []
  command: "8x 01 04 08 00 FF"

- id: cam_focus_far_standard
  label: Focus Far (Standard)
  kind: action
  params: []
  command: "8x 01 04 08 02 FF"

- id: cam_focus_near_standard
  label: Focus Near (Standard)
  kind: action
  params: []
  command: "8x 01 04 08 03 FF"

- id: cam_focus_far_variable
  label: Focus Far (Variable)
  kind: action
  params:
    - name: speed
      type: integer
      min: 0
      max: 15
      description: "Focus speed, 0=low, F=high"
  command: "8x 01 04 08 2p FF"

- id: cam_focus_near_variable
  label: Focus Near (Variable)
  kind: action
  params:
    - name: speed
      type: integer
      min: 0
      max: 15
      description: "Focus speed, 0=low, F=high"
  command: "8x 01 04 08 3p FF"

- id: cam_focus_direct
  label: Focus Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Focus position (4 hex nibbles pqrs)"
  command: "8x 01 04 48 0p 0q 0r 0s FF"

- id: cam_auto_focus
  label: Auto Focus
  kind: action
  params: []
  command: "8x 01 04 38 02 FF"

- id: cam_manual_focus
  label: Manual Focus
  kind: action
  params: []
  command: "8x 01 04 38 03 FF"

- id: cam_zoom_focus_direct
  label: Zoom + Focus Direct
  kind: action
  params:
    - name: zoom_position
      type: integer
      description: "Zoom position (pqrs)"
    - name: focus_position
      type: integer
      description: "Focus position (tuvw)"
  command: "8x 01 04 47 0p 0q 0r 0s 0t 0u 0v 0w FF"

- id: cam_wb_auto
  label: White Balance Auto
  kind: action
  params: []
  command: "8x 01 04 35 00 FF"

- id: cam_wb_3000k
  label: White Balance 3000K
  kind: action
  params: []
  command: "8x 01 04 35 01 FF"

- id: cam_wb_4000k
  label: White Balance 4000K
  kind: action
  params: []
  command: "8x 01 04 35 02 FF"

- id: cam_wb_one_push
  label: White Balance One Push
  kind: action
  params: []
  command: "8x 01 04 35 03 FF"

- id: cam_wb_5000k
  label: White Balance 5000K
  kind: action
  params: []
  command: "8x 01 04 35 04 FF"

- id: cam_wb_manual
  label: White Balance Manual
  kind: action
  params: []
  command: "8x 01 04 35 05 FF"

- id: cam_wb_6500k
  label: White Balance 6500K
  kind: action
  params: []
  command: "8x 01 04 35 06 FF"

- id: cam_r_gain_reset
  label: R Gain Reset
  kind: action
  params: []
  command: "8x 01 04 03 00 FF"

- id: cam_r_gain_up
  label: R Gain Up
  kind: action
  params: []
  command: "8x 01 04 03 02 FF"

- id: cam_r_gain_down
  label: R Gain Down
  kind: action
  params: []
  command: "8x 01 04 03 03 FF"

- id: cam_r_gain_direct
  label: R Gain Direct
  kind: action
  params:
    - name: gain
      type: integer
      description: "R gain value (pq)"
  command: "8x 01 04 43 00 00 0p 0q FF"

- id: cam_b_gain_reset
  label: B Gain Reset
  kind: action
  params: []
  command: "8x 01 04 04 00 FF"

- id: cam_b_gain_up
  label: B Gain Up
  kind: action
  params: []
  command: "8x 01 04 04 02 FF"

- id: cam_b_gain_down
  label: B Gain Down
  kind: action
  params: []
  command: "8x 01 04 04 03 FF"

- id: cam_b_gain_direct
  label: B Gain Direct
  kind: action
  params:
    - name: gain
      type: integer
      description: "B gain value (pq)"
  command: "8x 01 04 44 00 00 0p 0q FF"

- id: cam_ae_full_auto
  label: AE Full Auto
  kind: action
  params: []
  command: "8x 01 04 39 00 FF"

- id: cam_ae_manual
  label: AE Manual
  kind: action
  params: []
  command: "8x 01 04 39 03 FF"

- id: cam_ae_shutter_priority
  label: AE Shutter Priority
  kind: action
  params: []
  command: "8x 01 04 39 0A FF"

- id: cam_ae_iris_priority
  label: AE Iris Priority
  kind: action
  params: []
  command: "8x 01 04 39 0B FF"

- id: cam_ae_bright
  label: AE Bright Mode
  kind: action
  params: []
  command: "8x 01 04 39 0D FF"

- id: cam_shutter_reset
  label: Shutter Reset
  kind: action
  params: []
  command: "8x 01 04 0A 00 FF"

- id: cam_shutter_up
  label: Shutter Up
  kind: action
  params: []
  command: "8x 01 04 0A 02 FF"

- id: cam_shutter_down
  label: Shutter Down
  kind: action
  params: []
  command: "8x 01 04 0A 03 FF"

- id: cam_shutter_direct
  label: Shutter Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Shutter position (pq)"
  command: "8x 01 04 4A 00 00 0p 0q FF"

- id: cam_iris_reset
  label: Iris Reset
  kind: action
  params: []
  command: "8x 01 04 0B 00 FF"

- id: cam_iris_up
  label: Iris Up
  kind: action
  params: []
  command: "8x 01 04 0B 02 FF"

- id: cam_iris_down
  label: Iris Down
  kind: action
  params: []
  command: "8x 01 04 0B 03 FF"

- id: cam_iris_direct
  label: Iris Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Iris position (pq)"
  command: "8x 01 04 4B 00 00 0p 0q FF"

- id: cam_gain_reset
  label: Gain Reset
  kind: action
  params: []
  command: "8x 01 04 0C 00 FF"

- id: cam_gain_up
  label: Gain Up
  kind: action
  params: []
  command: "8x 01 04 0C 02 FF"

- id: cam_gain_down
  label: Gain Down
  kind: action
  params: []
  command: "8x 01 04 0C 03 FF"

- id: cam_gain_direct
  label: Gain Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Gain position (pq)"
  command: "8x 01 04 0C 00 00 0p 0q FF"

- id: cam_bright_reset
  label: Brightness Reset
  kind: action
  params: []
  command: "8x 01 04 0D 00 FF"

- id: cam_bright_up
  label: Brightness Up
  kind: action
  params: []
  command: "8x 01 04 0D 02 FF"

- id: cam_bright_down
  label: Brightness Down
  kind: action
  params: []
  command: "8x 01 04 0D 03 FF"

- id: cam_bright_direct
  label: Brightness Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Brightness position (pq)"
  command: "8x 01 04 4D 00 00 0p 0q FF"

- id: cam_exp_comp_on
  label: Exposure Compensation On
  kind: action
  params: []
  command: "8x 01 04 3E 02 FF"

- id: cam_exp_comp_off
  label: Exposure Compensation Off
  kind: action
  params: []
  command: "8x 01 04 3E 03 FF"

- id: cam_exp_comp_reset
  label: Exposure Compensation Reset
  kind: action
  params: []
  command: "8x 01 04 0E 00 FF"

- id: cam_exp_comp_up
  label: Exposure Compensation Up
  kind: action
  params: []
  command: "8x 01 04 0E 02 FF"

- id: cam_exp_comp_down
  label: Exposure Compensation Down
  kind: action
  params: []
  command: "8x 01 04 0E 03 FF"

- id: cam_exp_comp_direct
  label: Exposure Compensation Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Exposure compensation position (pq)"
  command: "8x 01 04 4E 00 00 0p 0q FF"

- id: cam_backlight_on
  label: Backlight Compensation On
  kind: action
  params: []
  command: "8x 01 04 33 02 FF"

- id: cam_backlight_off
  label: Backlight Compensation Off
  kind: action
  params: []
  command: "8x 01 04 33 03 FF"

- id: cam_nr_2d
  label: 2D Noise Reduction
  kind: action
  params:
    - name: level
      type: integer
      min: 0
      max: 7
      description: "0=OFF, 1-7=level"
  command: "8x 01 04 53 0p FF"

- id: cam_nr_3d
  label: 3D Noise Reduction
  kind: action
  params:
    - name: level
      type: integer
      min: 0
      max: 8
      description: "0=OFF, 1-8=level"
  command: "8x 01 04 54 0p FF"

- id: cam_gamma
  label: Gamma Setting
  kind: action
  params:
    - name: preset
      type: enum
      values: [default, 0.47, 0.50, 0.52, 0.55]
      description: "0=Default, 1=0.47, 2=0.50, 3=0.52, 4=0.55"
  command: "8x 01 04 5B 0p FF"

- id: cam_flicker_off
  label: Flicker OFF
  kind: action
  params: []
  command: "8x 01 04 23 00 FF"

- id: cam_flicker_50hz
  label: Flicker 50Hz
  kind: action
  params: []
  command: "8x 01 04 23 01 FF"

- id: cam_flicker_60hz
  label: Flicker 60Hz
  kind: action
  params: []
  command: "8x 01 04 23 02 FF"

- id: cam_aperture_reset
  label: Aperture Reset
  kind: action
  params: []
  command: "8x 01 04 02 00 FF"

- id: cam_aperture_up
  label: Aperture Up
  kind: action
  params: []
  command: "8x 01 04 02 02 FF"

- id: cam_aperture_down
  label: Aperture Down
  kind: action
  params: []
  command: "8x 01 04 02 03 FF"

- id: cam_aperture_direct
  label: Aperture Direct
  kind: action
  params:
    - name: gain
      type: integer
      description: "Aperture gain (pq)"
  command: "8x 01 04 42 00 00 0p 0q FF"

- id: cam_memory_reset
  label: Preset Reset
  kind: action
  params:
    - name: preset
      type: integer
      min: 0
      max: 254
      description: "Memory/preset number"
  command: "8x 01 04 3F 00 pq FF"

- id: cam_memory_set
  label: Preset Set
  kind: action
  params:
    - name: preset
      type: integer
      min: 0
      max: 254
      description: "Memory/preset number"
  command: "8x 01 04 3F 01 pq FF"

- id: cam_memory_recall
  label: Preset Recall
  kind: action
  params:
    - name: preset
      type: integer
      min: 0
      max: 254
      description: "Memory/preset number"
  command: "8x 01 04 3F 02 pq FF"

- id: cam_lr_reverse_on
  label: Horizontal Flip On
  kind: action
  params: []
  command: "8x 01 04 61 02 FF"

- id: cam_lr_reverse_off
  label: Horizontal Flip Off
  kind: action
  params: []
  command: "8x 01 04 61 03 FF"

- id: cam_picture_flip_on
  label: Vertical Flip On
  kind: action
  params: []
  command: "8x 01 04 66 02 FF"

- id: cam_picture_flip_off
  label: Vertical Flip Off
  kind: action
  params: []
  command: "8x 01 04 66 03 FF"

- id: cam_color_saturation_direct
  label: Color Saturation Direct
  kind: action
  params:
    - name: level
      type: enum
      values: ["60%", "70%", "80%", "90%", "100%", "110%", "120%", "130%"]
      description: "p=0→60%, 1→70%, 2→80%, 3→90%, 4→100%, 5→110%, 6→120%, 7→130%"
  command: "8x 01 04 49 00 00 00 0p FF"

- id: cam_id_write
  label: Camera ID Write
  kind: action
  params:
    - name: camera_id
      type: integer
      description: "Camera ID (0000 to FFF)"
  command: "8x 01 04 22 0p 0q 0r 0s FF"

- id: sys_menu_on
  label: Menu On
  kind: action
  params: []
  command: "8x 01 04 06 06 02 FF"

- id: sys_menu_off
  label: Menu Off
  kind: action
  params: []
  command: "8x 01 04 06 06 03 FF"

- id: ir_receive_on
  label: IR Receive On
  kind: action
  params: []
  command: "8x 01 06 08 02 FF"

- id: ir_receive_off
  label: IR Receive Off
  kind: action
  params: []
  command: "8x 01 06 08 03 FF"

- id: ir_receive_return_on
  label: IR Receive Return On
  kind: action
  params: []
  command: "8x 01 7D 01 03 00 00 FF"

- id: ir_receive_return_off
  label: IR Receive Return Off
  kind: action
  params: []
  command: "8x 01 7D 01 13 00 00 FF"

- id: cam_setting_reset
  label: Factory Reset
  kind: action
  params: []
  command: "8x 01 04 A0 10 FF"

- id: cam_brightness_direct
  label: Brightness Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Brightness position (pq)"
  command: "8x 01 04 A1 00 00 0p 0q FF"

- id: cam_contrast_direct
  label: Contrast Direct
  kind: action
  params:
    - name: position
      type: integer
      description: "Contrast position (pq)"
  command: "8x 01 04 A2 00 00 0p 0q FF"

- id: cam_flip_off
  label: Video Flip Off
  kind: action
  params: []
  command: "8x 01 04 A4 00 FF"

- id: cam_flip_h
  label: Video Flip Horizontal
  kind: action
  params: []
  command: "8x 01 04 A4 01 FF"

- id: cam_flip_v
  label: Video Flip Vertical
  kind: action
  params: []
  command: "8x 01 04 A4 02 FF"

- id: cam_flip_hv
  label: Video Flip Horizontal + Vertical
  kind: action
  params: []
  command: "8x 01 04 A4 03 FF"

- id: cam_video_system
  label: Video System Set
  kind: action
  params:
    - name: format
      type: enum
      values:
        - 1080P60
        - 1080P50
        - 1080i60
        - 1080i50
        - 720P60
        - 720P50
        - 1080P30
        - 1080P25
        - 720P30
        - 720P25
        - 1080P59.94
        - 1080i59.94
        - 720P59.94
        - 1080P29.97
        - 720P29.97
      description: "0=1080P60, 1=1080P50, 2=1080i60, 3=1080i50, 4=720P60, 5=720P50, 6=1080P30, 7=1080P25, 8=720P30, 9=720P25, A=1080P59.94, B=1080i59.94, C=720P59.94, D=1080P29.97, E=720P29.97"
  command: "8x 01 06 35 00 0p FF"

- id: address_set
  label: Address Set (Broadcast)
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address (p)"
  command: "88 30 0p FF"

- id: if_clear
  label: Interface Clear (Broadcast)
  kind: action
  params: []
  command: "88 01 00 01 FF"

- id: command_cancel
  label: Command Cancel
  kind: action
  params: []
  command: "8x 21 FF"

- id: pan_tilt_up
  label: Pan-Tilt Up
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
      description: "Pan speed 01 (low) to 18 (high)"
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
      description: "Tilt speed 01 (low) to 14 (high)"
  command: "8x 01 06 01 VV WW 03 01 FF"

- id: pan_tilt_down
  label: Pan-Tilt Down
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
  command: "8x 01 06 01 VV WW 03 02 FF"

- id: pan_tilt_left
  label: Pan-Tilt Left
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
  command: "8x 01 06 01 VV WW 01 03 FF"

- id: pan_tilt_right
  label: Pan-Tilt Right
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
  command: "8x 01 06 01 VV WW 02 03 FF"

- id: pan_tilt_upleft
  label: Pan-Tilt Up-Left
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
  command: "8x 01 06 01 VV WW 01 01 FF"

- id: pan_tilt_upright
  label: Pan-Tilt Up-Right
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
  command: "8x 01 06 01 VV WW 02 01 FF"

- id: pan_tilt_downleft
  label: Pan-Tilt Down-Left
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
  command: "8x 01 06 01 VV WW 01 02 FF"

- id: pan_tilt_downright
  label: Pan-Tilt Down-Right
  kind: action
  params:
    - name: pan_speed
      type: integer
      min: 1
      max: 24
    - name: tilt_speed
      type: integer
      min: 1
      max: 20
  command: "8x 01 06 01 VV WW 02 02 FF"

- id: pan_tilt_stop
  label: Pan-Tilt Stop
  kind: action
  params:
    - name: pan_speed
      type: integer
    - name: tilt_speed
      type: integer
  command: "8x 01 06 01 VV WW 03 03 FF"

- id: pan_tilt_absolute_position
  label: Pan-Tilt Absolute Position
  kind: action
  params:
    - name: pan_speed
      type: integer
    - name: tilt_speed
      type: integer
    - name: pan_position
      type: integer
      description: "Pan position (YYYY, 4 hex nibbles)"
    - name: tilt_position
      type: integer
      description: "Tilt position (ZZZZ, 4 hex nibbles)"
  command: "8x 01 06 02 VV WW 0Y 0Y 0Y 0Y 0Z 0Z 0Z 0Z FF"

- id: pan_tilt_relative_position
  label: Pan-Tilt Relative Position
  kind: action
  params:
    - name: pan_speed
      type: integer
    - name: tilt_speed
      type: integer
    - name: pan_position
      type: integer
      description: "Pan offset (YYYY)"
    - name: tilt_position
      type: integer
      description: "Tilt offset (ZZZZ)"
  command: "8x 01 06 03 VV WW 0Y 0Y 0Y 0Y 0Z 0Z 0Z 0Z FF"

- id: pan_tilt_home
  label: Pan-Tilt Home
  kind: action
  params: []
  command: "8x 01 06 04 FF"

- id: pan_tilt_reset
  label: Pan-Tilt Reset
  kind: action
  params: []
  command: "8x 01 06 05 FF"

- id: pan_tilt_limit_set
  label: Pan-Tilt Limit Set
  kind: action
  params:
    - name: corner
      type: enum
      values: [downleft, upright]
      description: "1=UpRight, 0=DownLeft"
    - name: pan_position
      type: integer
      description: "Pan limit (YYYY)"
    - name: tilt_position
      type: integer
      description: "Tilt limit (ZZZZ)"
  command: "8x 01 06 07 00 0W 0Y 0Y 0Y 0Y 0Z 0Z 0Z 0Z FF"

- id: pan_tilt_limit_clear
  label: Pan-Tilt Limit Clear
  kind: action
  params:
    - name: corner
      type: enum
      values: [downleft, upright]
      description: "1=UpRight, 0=DownLeft"
  command: "8x 01 06 07 01 0W 07 0F 0F 0F 07 0F 0F 0F FF"
- id: cam_picture_effect_off
  label: Picture Effect Off
  kind: action
  params: []
  command: "8x 01 04 63 00 FF"
  note: "CAM_PictureEffect Off (B&W mode off)"

- id: cam_picture_effect_bw
  label: Picture Effect B&W
  kind: action
  params: []
  command: "8x 01 04 63 04 FF"
  note: "CAM_PictureEffect B&W mode"

- id: cam_picture_effect_inq
  label: Picture Effect Mode
  kind: query
  params: []
  command: "8x 09 04 63 FF"
  note: "CAM_PictureEffectModeInq; y0 50 00 FF Off, y0 50 04 FF B&W"

- id: pelco_d_up
  label: Pelco-D Pan-Tilt Up
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x08 [Pan Speed] [Tilt Speed] [SUM]"
  note: "Pelco-D 7-byte frame; SUM = sum of bytes 2-6 mod 256"

- id: pelco_d_down
  label: Pelco-D Pan-Tilt Down
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x10 [Pan Speed] [Tilt Speed] [SUM]"

- id: pelco_d_left
  label: Pelco-D Pan-Tilt Left
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x04 [Pan Speed] [Tilt Speed] [SUM]"

- id: pelco_d_right
  label: Pelco-D Pan-Tilt Right
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x02 [Pan Speed] [Tilt Speed] [SUM]"

- id: pelco_d_upleft
  label: Pelco-D Pan-Tilt Up-Left
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x0C [Pan Speed] [Tilt Speed] [SUM]"

- id: pelco_d_upright
  label: Pelco-D Pan-Tilt Up-Right
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x0A [Pan Speed] [Tilt Speed] [SUM]"

- id: pelco_d_downleft
  label: Pelco-D Pan-Tilt Down-Left
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x14 [Pan Speed] [Tilt Speed] [SUM]"

- id: pelco_d_downright
  label: Pelco-D Pan-Tilt Down-Right
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "FF [Address] 0x00 0x12 [Pan Speed] [Tilt Speed] [SUM]"

- id: pelco_d_zoom_in
  label: Pelco-D Zoom In
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "FF [Address] 0x00 0x20 0x00 0x00 [SUM]"

- id: pelco_d_zoom_out
  label: Pelco-D Zoom Out
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "FF [Address] 0x00 0x40 0x00 0x00 [SUM]"

- id: pelco_d_focus_far
  label: Pelco-D Focus Far
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "FF [Address] 0x00 0x80 0x00 0x00 [SUM]"

- id: pelco_d_focus_near
  label: Pelco-D Focus Near
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "FF [Address] 0x01 0x00 0x00 0x00 [SUM]"

- id: pelco_d_preset_set
  label: Pelco-D Set Preset
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: preset_id
      type: integer
      description: "Preset ID byte"
  command: "FF [Address] 0x00 0x03 0x00 [Preset ID] [SUM]"

- id: pelco_d_preset_clear
  label: Pelco-D Clear Preset
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: preset_id
      type: integer
      description: "Preset ID byte"
  command: "FF [Address] 0x00 0x05 0x00 [Preset ID] [SUM]"

- id: pelco_d_preset_call
  label: Pelco-D Call Preset
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: preset_id
      type: integer
      description: "Preset ID byte"
  command: "FF [Address] 0x00 0x07 0x00 [Preset ID] [SUM]"

- id: pelco_d_query_pan
  label: Pelco-D Query Pan Position
  kind: query
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "FF [Address] 0x00 0x51 0x00 0x00 [SUM]"
  note: "Response: FF [Address] 0x00 0x59 [Value High Byte] [Value Low Byte] [SUM]"

- id: pelco_d_query_tilt
  label: Pelco-D Query Tilt Position
  kind: query
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "FF [Address] 0x00 0x53 0x00 0x00 [SUM]"
  note: "Response: FF [Address] 0x00 0x5B [Value High Byte] [Value Low Byte] [SUM]"

- id: pelco_d_query_zoom
  label: Pelco-D Query Zoom Position
  kind: query
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "FF [Address] 0x00 0x55 0x00 0x00 [SUM]"
  note: "Response: FF [Address] 0x00 0x5D [Value High Byte] [Value Low Byte] [SUM]"

- id: pelco_p_up
  label: Pelco-P Pan-Tilt Up
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x08 [Pan Speed] [Tilt Speed] 0xAF [XOR]"
  note: "Pelco-P 8-byte frame; XOR of bytes 2-7"

- id: pelco_p_down
  label: Pelco-P Pan-Tilt Down
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x10 [Pan Speed] [Tilt Speed] 0xAF [XOR]"

- id: pelco_p_left
  label: Pelco-P Pan-Tilt Left
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x04 [Pan Speed] [Tilt Speed] 0xAF [XOR]"

- id: pelco_p_right
  label: Pelco-P Pan-Tilt Right
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x02 [Pan Speed] [Tilt Speed] 0xAF [XOR]"

- id: pelco_p_upleft
  label: Pelco-P Pan-Tilt Up-Left
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x0C [Pan Speed] [Tilt Speed] 0xAF [XOR]"

- id: pelco_p_upright
  label: Pelco-P Pan-Tilt Up-Right
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x0A [Pan Speed] [Tilt Speed] 0xAF [XOR]"

- id: pelco_p_downleft
  label: Pelco-P Pan-Tilt Down-Left
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x14 [Pan Speed] [Tilt Speed] 0xAF [XOR]"

- id: pelco_p_downright
  label: Pelco-P Pan-Tilt Down-Right
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: pan_speed
      type: integer
      description: "Pan speed byte"
    - name: tilt_speed
      type: integer
      description: "Tilt speed byte"
  command: "A0 [Address] 0x00 0x12 [Pan Speed] [Tilt Speed] 0xAF [XOR]"

- id: pelco_p_zoom_in
  label: Pelco-P Zoom In
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "A0 [Address] 0x00 0x20 0x00 0x00 0xAF [XOR]"

- id: pelco_p_zoom_out
  label: Pelco-P Zoom Out
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "A0 [Address] 0x00 0x40 0x00 0x00 0xAF [XOR]"

- id: pelco_p_focus_far
  label: Pelco-P Focus Far
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "A0 [Address] 0x01 0x00 0x00 0x00 0xAF [XOR]"

- id: pelco_p_focus_near
  label: Pelco-P Focus Near
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "A0 [Address] 0x02 0x00 0x00 0x00 0xAF [XOR]"

- id: pelco_p_preset_set
  label: Pelco-P Set Preset
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: preset_id
      type: integer
      description: "Preset ID byte"
  command: "A0 [Address] 0x00 0x03 0x00 [Preset ID] 0xAF [XOR]"

- id: pelco_p_preset_clear
  label: Pelco-P Clear Preset
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: preset_id
      type: integer
      description: "Preset ID byte"
  command: "A0 [Address] 0x00 0x05 0x00 [Preset ID] 0xAF [XOR]"

- id: pelco_p_preset_call
  label: Pelco-P Call Preset
  kind: action
  params:
    - name: address
      type: integer
      description: "Camera address byte"
    - name: preset_id
      type: integer
      description: "Preset ID byte"
  command: "A0 [Address] 0x00 0x07 0x00 [Preset ID] 0xAF [XOR]"

- id: pelco_p_query_pan
  label: Pelco-P Query Pan Position
  kind: query
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "A0 [Address] 0x00 0x51 0x00 0x00 0xAF [XOR]"
  note: "Response: A0 [Address] 0x00 0x59 [Value High Byte] [Value Low Byte] 0xAF [XOR]"

- id: pelco_p_query_tilt
  label: Pelco-P Query Tilt Position
  kind: query
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "A0 [Address] 0x00 0x53 0x00 0x00 0xAF [XOR]"
  note: "Response: A0 [Address] 0x00 0x5B [Value High Byte] [Value Low Byte] 0xAF [XOR]"

- id: pelco_p_query_zoom
  label: Pelco-P Query Zoom Position
  kind: query
  params:
    - name: address
      type: integer
      description: "Camera address byte"
  command: "A0 [Address] 0x00 0x55 0x00 0x00 0xAF [XOR]"
  note: "Response: A0 [Address] 0x00 0x5D [Value High Byte] [Value Low Byte] 0xAF [XOR]"

Feedbacks

- id: cam_power_inq
  label: Power State
  type: enum
  values: [on, off]
  command: "8x 09 04 00 FF"
  response:
    on: "y0 50 02 FF"
    off: "y0 50 03 FF"

- id: cam_zoom_pos_inq
  label: Zoom Position
  type: integer
  command: "8x 09 04 47 FF"
  response: "y0 50 0p 0q 0r 0s FF"

- id: cam_focus_af_mode_inq
  label: Focus AF Mode
  type: enum
  values: [auto, manual]
  command: "8x 09 04 38 FF"
  response:
    auto: "y0 50 02 FF"
    manual: "y0 50 03 FF"

- id: cam_focus_pos_inq
  label: Focus Position
  type: integer
  command: "8x 09 04 48 FF"
  response: "y0 50 0p 0q 0r 0s FF"

- id: cam_wb_mode_inq
  label: White Balance Mode
  type: enum
  values: [auto, "3000K", "4000K", one_push, "5000K", manual, "6500K"]
  command: "8x 09 04 35 FF"

- id: cam_r_gain_inq
  label: R Gain
  type: integer
  command: "8x 09 04 43 FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_b_gain_inq
  label: B Gain
  type: integer
  command: "8x 09 04 44 FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_ae_mode_inq
  label: AE Mode
  type: enum
  values: [full_auto, manual, shutter_priority, iris_priority, bright]
  command: "8x 09 04 39 FF"

- id: cam_shutter_pos_inq
  label: Shutter Position
  type: integer
  command: "8x 09 04 4A FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_iris_pos_inq
  label: Iris Position
  type: integer
  command: "8x 09 04 4B FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_bright_pos_inq
  label: Bright Position
  type: integer
  command: "8x 09 04 4D FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_exp_comp_mode_inq
  label: Exposure Compensation Mode
  type: enum
  values: [on, off]
  command: "8x 09 04 3E FF"

- id: cam_exp_comp_pos_inq
  label: Exposure Compensation Position
  type: integer
  command: "8x 09 04 4E FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_backlight_mode_inq
  label: Backlight Compensation Mode
  type: enum
  values: [on, off]
  command: "8x 09 04 33 FF"

- id: cam_nr_2d_level_inq
  label: 2D NR Level
  type: integer
  command: "8x 09 04 53 FF"
  response: "y0 50 0p FF"

- id: cam_nr_3d_level_inq
  label: 3D NR Level
  type: integer
  command: "8x 09 04 54 FF"
  response: "y0 50 0p FF"

- id: cam_flicker_mode_inq
  label: Flicker Mode
  type: enum
  values: [off, "50Hz", "60Hz"]
  command: "8x 09 04 55 FF"

- id: cam_aperture_inq
  label: Aperture Gain
  type: integer
  command: "8x 09 04 42 FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_memory_inq
  label: Last Preset Operated
  type: integer
  command: "8x 09 04 3F FF"
  response: "y0 50 0p FF"

- id: sys_menu_mode_inq
  label: Menu State
  type: enum
  values: [on, off]
  command: "8x 09 06 06 FF"

- id: cam_lr_reverse_inq
  label: Horizontal Flip State
  type: enum
  values: [on, off]
  command: "8x 09 04 61 FF"

- id: cam_picture_flip_inq
  label: Vertical Flip State
  type: enum
  values: [on, off]
  command: "8x 09 04 66 FF"

- id: cam_color_saturation_inq
  label: Color Saturation
  type: integer
  command: "8x 09 04 49 FF"
  response: "y0 50 00 00 00 0p FF"

- id: cam_id_inq
  label: Camera ID
  type: integer
  command: "8x 09 04 22 FF"

- id: ir_receive_inq
  label: IR Receive State
  type: enum
  values: [on, off]
  command: "8x 09 06 08 FF"

- id: cam_brightness_inq
  label: Brightness
  type: integer
  command: "8x 09 04 A1 FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_contrast_inq
  label: Contrast
  type: integer
  command: "8x 09 04 A2 FF"
  response: "y0 50 00 00 0p 0q FF"

- id: cam_flip_inq
  label: Video Flip State
  type: enum
  values: [off, flip_h, flip_v, flip_hv]
  command: "8x 09 04 A4 FF"

- id: cam_gamma_inq
  label: Gamma Setting
  type: integer
  command: "8x 09 04 5B FF"
  response: "y0 50 0p FF"

- id: cam_version_inq
  label: Firmware Version
  type: string
  command: "8x 09 00 02 FF"
  response: "y0 50 ab cd mn pq rs tu vw FF"
  note: "ab cd=vendor ID (0220), mn pq=model ID, rs tu=ARM version"

- id: video_system_inq
  label: Video System Format
  type: enum
  values:
    - 1080P60
    - 1080P50
    - 1080i60
    - 1080i50
    - 720P60
    - 720P50
    - 1080P30
    - 1080P25
    - 720P30
    - 720P25
    - 1080P59.94
    - 1080i59.94
    - 720P59.94
    - 1080P29.97
    - 720P29.97
  command: "8x 09 06 23 FF"

- id: pan_tilt_max_speed_inq
  label: Pan-Tilt Max Speed
  type: object
  command: "8x 09 06 11 FF"
  response: "y0 50 ww zz FF"
  note: "ww=Pan Max Speed, zz=Tilt Max Speed"

- id: pan_tilt_pos_inq
  label: Pan-Tilt Position
  type: object
  command: "8x 09 06 12 FF"
  response: "y0 50 0w 0w 0w 0w 0z 0z 0z 0z FF"
  note: "wwww=Pan Position, zzzz=Tilt Position"

Variables

# No continuously-settable variables beyond the direct-set actions above.
# All parameterized settings are captured as actions with direct-set commands.

Events

# VISCA ACK/Completion responses are sent per-command, not unsolicited.
# IR_ReceiveReturn messages are unsolicited when IR receive return is enabled.
- id: ir_receive_return_power
  label: IR Receive Return - Power
  trigger: "Unsolicited when IR remote used while receive return enabled"
  response: "y0 07 7D 01 04 00 FF"

- id: ir_receive_return_zoom
  label: IR Receive Return - Zoom
  trigger: "Unsolicited"
  response: "y0 07 7D 01 04 07 FF"

- id: ir_receive_return_af
  label: IR Receive Return - Auto Focus
  trigger: "Unsolicited"
  response: "y0 07 7D 01 04 38 FF"

- id: ir_receive_return_backlight
  label: IR Receive Return - Backlight
  trigger: "Unsolicited"
  response: "y0 07 7D 01 04 33 FF"

- id: ir_receive_return_memory
  label: IR Receive Return - Memory
  trigger: "Unsolicited"
  response: "y0 07 7D 01 04 3F FF"

- id: ir_receive_return_pan_tilt
  label: IR Receive Return - Pan-Tilt
  trigger: "Unsolicited"
  response: "y0 07 7D 01 06 01 FF"

Macros

# UNRESOLVED: no multi-step macro sequences described in source

Safety

confirmation_required_for: []
interlocks: []
note: "500 ms minimum delay between commands. Pan-tilt reset returns camera to home position."
# UNRESOLVED: no safety warnings, interlock procedures, or power-on sequencing documented in source

Notes

Device uses VISCA protocol (Sony PTZ camera command set) with binary hex command packets over TCP. Camera address x is used in commands (8x prefix), response address y = x + 8. ACK (z0 41 FF) returned on command acceptance, Completion (z0 51 FF) on execution. Error responses: Syntax Error (z0 60 02 FF), Command Not Executable (z0 61 41 FF). Also supports Pelco-D and Pelco-P protocols on the same TCP port for PTZ and preset operations. Pelco-D uses 7-byte frames (0xFF prefix, address, command bytes, checksum). Pelco-P uses 8-byte frames (0xA0 prefix, 0xAF sentinel, XOR checksum).

Provenance

source_domains:
  - atlona.com
source_urls:
  - https://atlona.com/pdf/AT-HDVS-CAM_API.pdf
retrieved_at: 2026-05-14T20:20:09.597Z
last_checked_at: 2026-06-02T21:47:58.038Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T21:47:58.038Z
matched_actions: 151
action_count: 151
confidence: medium
summary: "All 151 spec actions traced to source. (9 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "no serial (RS-232) pinout or wiring documented — source only specifies TCP"
- "firmware version compatibility not stated"
- "maximum concurrent connections not stated"
- "no multi-step macro sequences described in source"
- "no safety warnings, interlock procedures, or power-on sequencing documented in source"
- "Pelco-D/Pelco-P checksum calculation not explicitly shown"
- "pan/tilt position coordinate range not documented (TBD noted in source for limit set)"
- "maximum number of concurrent TCP connections not stated"
- "whether VISCA and Pelco-D/P can be used simultaneously on same connection"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0