Summary

IP-controlled outdoor TV series supporting TCP over HTTP (port 3000). Compatible with multiple Seura Pro and UB4 models. Control via JSON commands over HTTP POST requests; responses include power state, input, channel, volume, mute, and device info (model, serial, firmware, runtime).

Transport

protocols:
  - tcp
  - http
addressing:
  port: 3000
  base_url: /  # explicit POST / HTTP/1.1 request path
auth:
  type: UNRESOLVED  # Authentication requirements are not stated in the source

Traits

- powerable  # power on/off/toggle commands present
- queryable  # status query commands present (PWD:?, CHA:?, INP:?, VOL:?, MUT:?)
- routable   # input selection commands present (INP:0-7)
- levelable  # volume control commands present (VOL:+-/XX)

Actions

- id: power_on
  command: "PWD:1"
  label: Power On
  kind: action
  params: []

- id: power_off
  command: "PWD:0"
  label: Power Off
  kind: action
  params: []

- id: power_toggle
  command: "PWD:3"
  label: Power Toggle
  kind: action
  params: []

- id: power_query
  command: "PWD:?"
  label: Power Status Query
  kind: query
  params: []

- id: channel_up
  command: "CHA:+"
  label: Channel Up
  kind: action
  params: []

- id: channel_down
  command: "CHA:-"
  label: Channel Down
  kind: action
  params: []

- id: channel_set
  command: "CHA:XX.Y"
  wire_template: "CHA:{channel}"
  label: Set Channel
  kind: action
  params:
    - name: channel
      type: string
      description: Channel in XX.Y format (primary.secondary for digital)

- id: channel_query
  command: "CHA:?"
  label: Channel Status Query
  kind: query
  params: []

- id: input_query
  command: "INP:?"
  label: Input Status Query
  kind: query
  params: []

- id: input_select
  command: "INP:"
  wire_template: "INP:{input}"
  label: Select Input
  kind: action
  params:
    - name: input
      type: integer
      values: [0, 1, 2, 3, 4, 5, 7]
      description: Input number (0=TV, 1=HDMI 1, 2=HDMI 2, 3=HDMI 3, 4=Component, 5=AV, 7=USB Media)

- id: volume_up
  command: "VOL:+"
  label: Volume Up
  kind: action
  params: []

- id: volume_down
  command: "VOL:-"
  label: Volume Down
  kind: action
  params: []

- id: volume_set
  command: "VOL:XX"
  wire_template: "VOL:{level}"
  label: Set Volume
  kind: action
  params:
    - name: level
      type: integer
      description: "Volume setting XX; UNRESOLVED: encoding for 100 is not established by the two-digit setter template."

- id: volume_query
  command: "VOL:?"
  label: Volume Status Query
  kind: query
  params: []

- id: mute_on
  command: "MUT:1"
  label: Mute On
  kind: action
  params: []

- id: mute_off
  command: "MUT:0"
  label: Mute Off
  kind: action
  params: []

- id: mute_toggle
  command: "MUT:3"
  label: Mute Toggle
  kind: action
  params: []

- id: mute_query
  command: "MUT:?"
  label: Mute Status Query
  kind: query
  params: []

Feedbacks

- id: power_state
  label: Power State
  type: enum
  values:
    - 0  # off
    - 1  # on

- id: input_state
  label: Input State
  type: integer
  description: Current input number

- id: channel_state
  label: Channel State
  type: string
  description: Current channel in XX.Y format (primary.secondary for digital)

- id: volume_state
  label: Volume State
  type: integer
  description: Current volume level 0-100

- id: mute_state
  label: Mute State
  type: enum
  values:
    - 0  # off
    - 1  # on

- id: device_info
  label: Device Info
  type: object
  properties:
    - model: string
    - serial: string
    - firmware: string
    - runtime:
        type: number
        description: Runtime in hours

Variables

# No discrete settable parameters beyond direct commands.

Events

# UNRESOLVED: no unsolicited notification mechanism documented in source

Macros

# UNRESOLVED: no multi-step sequences documented in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source

Notes

Static IP requirement: Power cycle the display after entering static IP address information to ensure proper control system operation.

HTTP request format: POST to / with JSON body {"command": "<cmd>", "id": <optional-int>}. Response includes result status ("SUCCESS", "INVALID VALUE", "INVALID JSON", "UPDATE") and state object with power, input, channel, volume, mute fields. Info object contains model, serial, firmware version, and runtime hours.

Provenance

source_domains:
  - storage.googleapis.com
source_urls:
  - https://storage.googleapis.com/wp-stateless/2021/09/IPControl-SHD290.pdf
retrieved_at: 2026-04-30T04:28:57.688Z
last_checked_at: 2026-09-27T14:59:54.710Z

Verification Summary

verdict: verified
checked_at: 2026-09-27T14:59:54.710Z
matched_actions: 18
action_count: 18
confidence: medium
summary: "All 18 command units match the IP guide; setter encoding for 100 remains explicitly unknown. (9 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "Safety interlock procedures not documented"
- "encoding for 100 is not established by the two-digit setter template.\""
- "no unsolicited notification mechanism documented in source"
- "no multi-step sequences documented in source"
- "no safety warnings or interlock procedures in source"
- "firmware version compatibility not stated in source"
- "fault behavior and error recovery sequences not documented"
- "binary command encoding not applicable (text-based JSON over HTTP)"
- "source SET VOLUME is VOL:XX with X digits 0-9, while response volume is described as 0-100. Do not infer a wire encoding for setting 100."

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