Summary
Pulse API control spec for Barco F400 N4K projector. JSON-RPC 2.0 over TCP/IP port 9090, plus RS-232 serial (19200 8N1) carrying the same Pulse service. Covers power, source selection, illumination, picture settings, warping, blending, environment telemetry, DMX, optics, and network introspection.
Transport
protocols:
- tcp
- serial
addressing:
port: 9090
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: optional_code # source: authenticate method with pass code; normal end-user access skips it
HTTP file transfer endpoint:
- base URL pattern:
http://<projector-ip>/api/...(e.g./api/image/processing/warp/file/transfer)
Traits
- powerable # inferred: system.poweron / system.poweroff
- routable # inferred: image.window.main.source
- queryable # inferred: property.get / property.subscribe
- levelable # inferred: illumination.sources.laser.power, image.brightness, image.contrast, image.gamma, image.saturation, image.sharpness
- introspectable # inferred: introspect method
- subscribable # inferred: property.subscribe / signal.subscribe
Actions
- id: authenticate
label: Authenticate (set access level)
kind: action
command: '{"jsonrpc":"2.0","method":"authenticate","params":{"code":<secret>}}'
params:
- name: code
type: integer
description: Numeric pass code; user must be at elevated access level
- id: introspect
label: Introspect Object (recursive)
kind: query
command: '{"jsonrpc":"2.0","method":"introspect","params":{"object":"<name>","recursive":true}}'
params:
- name: object
type: string
description: Object path in dot notation (default "" = introspect everything)
- name: recursive
type: boolean
description: If false, only one level of object names listed
- id: introspect_array
label: Introspect Object (array form)
kind: query
command: '{"jsonrpc":"2.0","method":"introspect","params":["<object>",<recursive>]}'
params:
- name: object
type: string
- name: recursive
type: boolean
- id: ledctrl_blink
label: Blink Status LED
kind: action
command: '{"jsonrpc":"2.0","method":"ledctrl.blink","params":{"led":"<name>","color":"<color>","period":<period>}}'
params:
- name: led
type: string
description: e.g. "systemstatus"
- name: color
type: string
description: e.g. "red"
- name: period
type: integer
- id: property_set
label: Set Property
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"<path>","value":<value>}}'
params:
- name: property
type: string
description: Object.property in dot notation
- name: value
type: any
description: Value matching property type
- id: property_get
label: Read Property
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"<path>"}}'
params:
- name: property
type: string
- id: property_get_multiple
label: Read Multiple Properties
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":["<p1>","<p2>"]}}'
params:
- name: property
type: array
description: Array of property paths
- id: property_subscribe
label: Subscribe to Property Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"<path>"}}'
params:
- name: property
type: string
- id: property_subscribe_multiple
label: Subscribe to Multiple Properties
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":["<p1>","<p2>"]}}'
params:
- name: property
type: array
- id: property_unsubscribe
label: Unsubscribe from Property
kind: action
command: '{"jsonrpc":"2.0","method":"property.unsubscribe","params":{"property":"<path>"}}'
params:
- name: property
type: string
- id: property_unsubscribe_multiple
label: Unsubscribe from Multiple Properties
kind: action
command: '{"jsonrpc":"2.0","method":"property.unsubscribe","params":{"property":["<p1>","<p2>"]}}'
params:
- name: property
type: array
- id: signal_subscribe
label: Subscribe to Signal
kind: action
command: '{"jsonrpc":"2.0","method":"signal.subscribe","params":{"signal":"<name>"}}'
params:
- name: signal
type: string
- id: signal_subscribe_multiple
label: Subscribe to Multiple Signals
kind: action
command: '{"jsonrpc":"2.0","method":"signal.subscribe","params":{"signal":["<s1>","<s2>"]}}'
params:
- name: signal
type: array
- id: signal_unsubscribe
label: Unsubscribe from Signal
kind: action
command: '{"jsonrpc":"2.0","method":"signal.unsubscribe","params":{"signal":"<name>"}}'
params:
- name: signal
type: string
- id: signal_unsubscribe_multiple
label: Unsubscribe from Multiple Signals
kind: action
command: '{"jsonrpc":"2.0","method":"signal.unsubscribe","params":{"signal":["<s1>","<s2>"]}}'
params:
- name: signal
type: array
- id: system_poweron
label: Power On Projector
kind: action
command: '{"jsonrpc":"2.0","method":"system.poweron"}'
params: []
- id: system_poweroff
label: Power Off Projector
kind: action
command: '{"jsonrpc":"2.0","method":"system.poweroff"}'
params: []
- id: set_active_source
label: Set Active Source
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.source","value":"<source>"}}'
params:
- name: source
type: string
description: One of the source names returned by image.source.list
- id: image_source_list
label: List Available Sources
kind: query
command: '{"jsonrpc":"2.0","method":"image.source.list"}'
params: []
- id: image_connector_list
label: List Available Connectors
kind: query
command: '{"jsonrpc":"2.0","method":"image.connector.list"}'
params: []
- id: image_source_listconnectors
label: List Connectors for a Source
kind: query
command: '{"jsonrpc":"2.0","method":"image.source.<sourcename>.listconnectors"}'
params:
- name: sourcename
type: string
description: Source object name (source name lowercased, non-word chars stripped, e.g. "DisplayPort 1" -> "displayport1")
- id: image_connector_detectedsignal_get
label: Get Connector Signal Info
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.connector.<name>.detectedsignal"}}'
params:
- name: name
type: string
description: Connector object name
- id: set_laser_power
label: Set Laser Illumination Power
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"illumination.sources.laser.power","value":<percent>}}'
params:
- name: percent
type: integer
description: Power in percent; respect minpower/maxpower
- id: illumination_clo_engage
label: Engage CLO at Current Light Level
kind: action
command: '{"jsonrpc":"2.0","method":"illumination.clo.engage"}'
params: []
- id: illumination_laser_getserialnumber
label: Get Laser Serial Number
kind: query
command: '{"jsonrpc":"2.0","method":"illumination.laser.getserialnumber"}'
params: []
- id: set_brightness
label: Set Image Brightness
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.brightness","value":<value>}}'
params:
- name: value
type: float
description: Normalized; 0 = default, 1 = 100% offset; range -1..1, step 0.01
- id: set_contrast
label: Set Image Contrast
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.contrast","value":<value>}}'
params:
- name: value
type: float
description: Normalized; 1 = default; range 0..2, step 0.01
- id: set_gamma
label: Set Image Gamma
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.gamma","value":<value>}}'
params:
- name: value
type: float
description: Default 2.2; range 1..3, step 0.1
- id: set_saturation
label: Set Image Saturation
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.saturation","value":<value>}}'
params:
- name: value
type: float
description: Normalized; 1 = default; range 0..2, step 0.01
- id: set_sharpness
label: Set Image Sharpness
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.sharpness","value":<value>}}'
params:
- name: value
type: integer
description: Normalized; range -2..8, step 1
- id: set_orientation
label: Set Image Orientation
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.orientation","value":"<value>"}}'
params:
- name: value
type: string
description: One of DESKTOP_FRONT / DESKTOP_REAR / CEILING_FRONT / CEILING_REAR
- id: set_window_position
label: Set Window Position
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.position","value":{"x":<x>,"y":<y>}}}'
params:
- name: x
type: integer
- name: y
type: integer
- id: set_window_size
label: Set Window Size
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.size","value":{"width":<w>,"height":<h>}}}'
params:
- name: width
type: integer
- name: height
type: integer
- id: set_scalingmode
label: Set Window Scaling Mode
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.scalingmode","value":"<mode>"}}'
params:
- name: mode
type: string
description: One of Fill / OneToOne / FillScreen / Stretch
- id: enable_warp
label: Enable All Warp Functions
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.enable","value":true}}'
params: []
- id: enable_warp_file
label: Enable File Warp
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.enable","value":true}}'
params: []
- id: select_warp_file
label: Select Warp File
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.selected","value":"<filename>"}}'
params:
- name: filename
type: string
- id: upload_warp_file_http
label: Upload Warp File (HTTP)
kind: action
command: 'curl -X POST -F file=@warp.xml http://<projector-ip>/api/image/processing/warp/file/transfer'
params:
- name: projector-ip
type: string
description: IP address of projector
- id: enable_blend_file
label: Enable File Blend
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.enable","value":true}}'
params: []
- id: select_blend_file
label: Select Blend Files
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.selected","value":["<filename>"]}}'
params:
- name: filename
type: string
- id: upload_blend_mask_http
label: Upload Blend Mask (HTTP)
kind: action
command: 'curl -X POST -F file=@mask.png http://<projector-ip>/api/image/processing/blend/file/transfer'
params:
- name: projector-ip
type: string
- id: enable_blacklevel_file
label: Enable Black Level Correction
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.enable","value":true}}'
params: []
- id: select_blacklevel_file
label: Select Black Level File
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.selected","value":"<filename>"}}'
params:
- name: filename
type: string
- id: upload_blacklevel_mask_http
label: Upload Black Level Mask (HTTP)
kind: action
command: 'curl -X POST -F file=@blacklevel.png http://<projector-ip>/api/image/processing/blacklevel/file/transfer'
params:
- name: projector-ip
type: string
- id: download_warp_file_http
label: Download Current Warp Grid (HTTP)
kind: action
command: 'curl -O -J http://<projector-ip>/api/image/processing/warp/file/transfer'
params:
- name: projector-ip
type: string
- id: download_warp_file_named_http
label: Download Named Warp Grid (HTTP)
kind: action
command: 'curl -O -J http://<projector-ip>/api/image/processing/warp/file/transfer/warpgrid.xml'
params:
- name: projector-ip
type: string
- id: environment_getcontrolblocks
label: Get Environment Control Blocks
kind: query
command: '{"jsonrpc":"2.0","method":"environment.getcontrolblocks","params":{"type":"<type>","valuetype":"<valuetype>"}}'
params:
- name: type
type: string
description: One of Sensor / Filter / Controller / Actuator / Alarm / GenericBlock
- name: valuetype
type: string
description: One of Temperature / Speed / PWM / Voltage / Current / Power / Altitude / Pressure / Humidity / ADC / Coordinate / Peltier / Waveform / Average / Delay / Difference / Interpolation / Limit / Median / Noise / Weighting / Comparison / Threshold / Formula / Driver / PID / Mode / State / Pump / Resistance / Simulation / Constant / Manual / Range / Any
- id: environment_getalarminfo
label: Get Alarm Info
kind: query
command: '{"jsonrpc":"2.0","method":"environment.getalarminfo"}'
params: []
- id: firmware_listcomponents
label: List Firmware Components
kind: query
command: '{"jsonrpc":"2.0","method":"firmware.listcomponents"}'
params: []
- id: firmware_listcomponentversionstatus
label: List Firmware Component Versions
kind: query
command: '{"jsonrpc":"2.0","method":"firmware.listcomponentversionstatus"}'
params: []
- id: firmware_schedulecomponentupgrade
label: Schedule Firmware Component Upgrade
kind: action
command: '{"jsonrpc":"2.0","method":"firmware.schedulecomponentupgrade"}'
params: []
- id: dmx_listchannels
label: List DMX Channels
kind: query
command: '{"jsonrpc":"2.0","method":"dmx.listchannels"}'
params: []
- id: dmx_listmodes
label: List DMX Modes
kind: query
command: '{"jsonrpc":"2.0","method":"dmx.listmodes"}'
params: []
- id: set_dmx_mode
label: Set DMX Mode
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.mode","value":"<mode>"}}'
params:
- name: mode
type: string
- id: set_dmx_startchannel
label: Set DMX Start Channel
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.startchannel","value":<channel>}}'
params:
- name: channel
type: integer
description: 1..512
- id: set_dmx_shutdown
label: Set DMX Shutdown
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.shutdown","value":<bool>}}'
params:
- name: value
type: boolean
- id: set_shutter_position
label: Set Shutter Position
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.shutter.position","value":"<pos>"}}'
params:
- name: pos
type: string
description: Open or Closed
- id: set_shutter_target
label: Set Shutter Target
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.shutter.target","value":"<pos>"}}'
params:
- name: pos
type: string
description: Open or Closed
- id: set_zoom_position
label: Set Zoom Position
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.zoom.position","value":<pos>}}'
params:
- name: pos
type: integer
- id: set_focus_position
label: Set Focus Position
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.focus.position","value":<pos>}}'
params:
- name: pos
type: integer
- id: set_lensshift_horizontal
label: Set Horizontal Lens Shift
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.lensshift.horizontal.position","value":<pos>}}'
params:
- name: pos
type: integer
- id: set_lensshift_vertical
label: Set Vertical Lens Shift
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.lensshift.vertical.position","value":<pos>}}'
params:
- name: pos
type: integer
- id: set_standby_enable
label: Enable Standby State
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"system.standby.enable","value":<bool>}}'
params:
- name: value
type: boolean
description: Check availability first
- id: set_eco_enable
label: Enable ECO State
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"system.eco.enable","value":<bool>}}'
params:
- name: value
type: boolean
description: Check availability first
- id: image_color_p7_custom_copypresettocustom
label: Copy P7 Preset to Custom
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.copypresettocustom","params":{"presetname":"<name>"}}'
params:
- name: presetname
type: string
- id: image_color_p7_custom_resetpreset
label: Reset P7 Custom Preset to Defaults
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resetpreset","params":{"presetname":"<name>"}}'
params:
- name: presetname
type: string
- id: image_color_p7_custom_resettonative
label: Reset P7 Custom to Native
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resettonative"}'
params: []
- id: image_color_rgbmode_nextrgbmode
label: Cycle Next RGB Mode
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.rgbmode.nextrgbmode"}'
params: []
- id: set_network_ipv4_config
label: Set LAN IPv4 Config
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"network.device.lan.ip4config","value":{"Address":"<ip>","Mask":"<mask>","Gateway":"<gw>","NameServers":"<ns>"}}}'
params:
- name: Address
type: string
- name: Mask
type: string
- name: Gateway
type: string
- name: NameServers
type: string
- id: rs232_wake_from_eco
label: Wake From ECO via RS-232
kind: action
command: ':POWR1\r'
params: []
notes: ASCII string sent on serial port; used when projector is in ECO/power-save
- id: subscribe_system_state
label: Subscribe to Projector State Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"system.state"}}'
params: []
- id: subscribe_active_source
label: Subscribe to Active Source Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"image.window.main.source"}}'
params: []
- id: subscribe_illumination_state
label: Subscribe to Illumination State Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"illumination.state"}}'
params: []
- id: subscribe_laser_power
label: Subscribe to Laser Power Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"illumination.sources.laser.power"}}'
params: []
- id: subscribe_image_brightness
label: Subscribe to Image Brightness Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"image.brightness"}}'
params: []
Feedbacks
- id: system_state
type: enum
values: [boot, eco, standby, ready, conditioning, on, deconditioning, error, service]
query_command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"system.state"}}'
- id: illumination_state
type: enum
values: [On, Off]
query_command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.state"}}'
- id: image_window_main_source
type: string
description: Currently active source name
query_command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.window.main.source"}}'
- id: illumination_sources_laser_power
type: float
description: Current laser power in percent
query_command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.power"}}'
- id: illumination_sources_laser_minpower
type: float
query_command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.minpower"}}'
- id: illumination_sources_laser_maxpower
type: float
- id: image_brightness
type: float
range: [-1, 1]
step: 0.01
query_command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.brightness"}}'
- id: image_contrast
type: float
range: [0, 2]
step: 0.01
- id: image_gamma
type: float
range: [1, 3]
step: 0.1
- id: image_saturation
type: float
range: [0, 2]
step: 0.01
- id: image_sharpness
type: integer
range: [-2, 8]
- id: image_orientation
type: enum
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
- id: image_window_main_scalingmode
type: enum
values: [Fill, OneToOne, FillScreen, Stretch]
- id: optics_shutter_position
type: enum
values: [Open, Closed]
- id: optics_shutter_target
type: enum
values: [Open, Closed]
- id: optics_zoom_position
type: integer
- id: optics_focus_position
type: integer
- id: optics_lensshift_horizontal_position
type: integer
- id: optics_lensshift_vertical_position
type: integer
- id: dmx_mode
type: string
- id: dmx_startchannel
type: integer
range: [1, 512]
- id: dmx_shutdown
type: boolean
- id: network_device_lan_ip4config
type: object
fields: [Address, Mask, Gateway, NameServers]
- id: network_device_lan_state
type: enum
values: [CONNECTED, DISCONNECTED]
- id: environment_alarmstate
type: enum
values: [Fatal, Error, Alert, Warning, Ok]
- id: image_connector_detectedsignal
type: object
description: Active flag plus timing/color metadata; see source for full field set
query_command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.connector.<name>.detectedsignal"}}'
- id: environment_temperatures
type: object
description: Dictionary keyed by environment.<sensor>.temperature path -> float Celsius
query_command: '{"jsonrpc":"2.0","method":"environment.getcontrolblocks","params":{"type":"Sensor","valuetype":"Temperature"}}'
- id: environment_fan_speeds
type: object
description: Dictionary keyed by environment.fan.<name>.tacho -> RPM
query_command: '{"jsonrpc":"2.0","method":"environment.getcontrolblocks","params":{"type":"Sensor","valuetype":"Speed"}}'
Variables
# Properties with read/write access and range constraints:
- id: illumination_sources_laser_power
type: float
range: [0, 100]
description: Target laser power percent
- id: image_brightness
type: float
range: [-1, 1]
step: 0.01
- id: image_contrast
type: float
range: [0, 2]
step: 0.01
- id: image_gamma
type: float
range: [1, 3]
step: 0.1
- id: image_saturation
type: float
range: [0, 2]
step: 0.01
- id: image_sharpness
type: integer
range: [-2, 8]
- id: image_orientation
type: enum
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
- id: image_window_main_source
type: string
- id: image_window_main_position
type: object
fields: {x: int, y: int}
- id: image_window_main_size
type: object
fields: {width: int, height: int}
- id: image_window_main_scalingmode
type: enum
values: [Fill, OneToOne, FillScreen, Stretch]
- id: image_processing_warp_enable
type: boolean
- id: image_processing_warp_file_enable
type: boolean
- id: image_processing_warp_file_selected
type: string
- id: image_processing_blend_file_enable
type: boolean
- id: image_processing_blend_file_selected
type: array
items: string
- id: image_processing_blacklevel_file_enable
type: boolean
- id: image_processing_blacklevel_file_selected
type: string
- id: optics_shutter_position
type: enum
values: [Open, Closed]
- id: optics_shutter_target
type: enum
values: [Open, Closed]
- id: optics_zoom_position
type: integer
- id: optics_focus_position
type: integer
- id: optics_lensshift_horizontal_position
type: integer
- id: optics_lensshift_vertical_position
type: integer
- id: dmx_mode
type: string
- id: dmx_startchannel
type: integer
range: [1, 512]
- id: dmx_shutdown
type: boolean
- id: network_device_lan_ip4config
type: object
fields: {Address: string, Mask: string, Gateway: string, NameServers: string}
- id: system_standby_enable
type: boolean
- id: system_eco_enable
type: boolean
Events
- id: property_changed
description: Server-pushed notification when subscribed property value changes; client must implement property.changed
payload_example: |
{"jsonrpc":"2.0","method":"property.changed","params":{"property":[{"system.state":"ready"}]}}
- id: signal_callback
description: Server-pushed notification for subscribed signal; client must implement signal.callback
payload_example: |
{"jsonrpc":"2.0","method":"signal.callback","params":{"signal":[{"objectname.signalname":{"arg1":100}}]}}
- id: modelupdated_signal
description: Signal triggered when object structure changes (objects added/removed)
signal_path: modelupdated
- id: introspect_objectchanged_signal
description: Signal triggered when new objects arrive or objects are removed
payload_example: |
{"introspect.objectchanged":{"object":"motors.motor1","isnew":true}}
Macros
- id: power_on_sequence
description: Verify state then issue power on
steps:
- property_get: {property: "system.state"}
- assert_value_in: [standby, ready]
- system_poweron
- id: power_off_sequence
description: Verify state then issue power off
steps:
- property_get: {property: "system.state"}
- assert_value_in: [on]
- system_poweroff
- id: warp_upload_and_enable
description: Upload warp grid via HTTP then activate
steps:
- upload_warp_file_http
- select_warp_file: {filename: "warp.xml"}
- enable_warp_file
- id: blend_upload_and_enable
description: Upload blend mask via HTTP then activate
steps:
- upload_blend_mask_http
- select_blend_file: {filename: "mask.png"}
- enable_blend_file
- id: blacklevel_upload_and_enable
description: Upload black level mask via HTTP then activate
steps:
- upload_blacklevel_mask_http
- select_blacklevel_file: {filename: "blacklevel.png"}
- enable_blacklevel_file
- id: wake_from_eco
description: Three documented methods to wake projector from ECO mode
options:
- wake_on_lan_to_mac
- power_button_remote
- power_button_keypad
- send_serial: ":POWR1\r"
Safety
confirmation_required_for:
- system_poweroff
- firmware_schedulecomponentupgrade
interlocks: []
# UNRESOLVED: source documents no explicit safety interlocks, lockout procedures, or power-on sequencing constraints beyond "verify state before issuing power on/off"
Notes
- Pulse API is a JSON-RPC 2.0 service; same commands available over TCP/9090 and RS-232.
- RS-232 cable pinout: DB9 female to host, DB9 male to projector; pin 2↔2, pin 3↔3, pin 5↔5.
- Best practice: wait for
property.setconfirmation before re-issuing the same property; flooding degrades performance. - Auth: end-user level requires no auth; elevated access needs
authenticatewith pass code. - ECO wake: Wake-on-LAN, remote/keypad power button, or RS-232 ASCII
:POWR1\r. - Source list and connector list contents are model-dependent; use
introspectandproperty.getto discover runtime properties rather than hardcoding. - API surface is dynamic; peripherals (e.g. motorized zoom lens) add or remove properties depending on installed hardware.
- HTTP file endpoints use base URL
http://<projector-ip>/api/....
Provenance
source_domains:
- audiogeneral.com
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-07-29T19:12:51.783Z
last_checked_at: 2026-10-07T17:48:46.560Z
Verification Summary
verdict: verified
checked_at: 2026-10-07T17:48:46.560Z
matched_actions: 84
action_count: 84
confidence: medium
summary: "All 84 action units match source methods, properties or HTTP endpoints, transport values are supported, and spec coverage of the Pulse catalogue exceeds 0.9 (S about 71). (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "no safety warnings or interlocks documented in source"
- "source documents no explicit safety interlocks, lockout procedures, or power-on sequencing constraints beyond \"verify state before issuing power on/off\""
- "firmware version compatibility ranges, exact pass-code format/length, complete connector object-name mapping table (only \"DisplayPort 1 -> displayport1\" example given), full image.color.p7.* method parameter set"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0