Summary

The Dynalite PDEG is an Ethernet Gateway (EG) that bridges DyNet lighting networks to external control systems. This spec covers the DyNet Text protocol, a text-based command set sent over RS-485 serial or TCP/Telnet that translates to DyNet1 and DyNet2 messages on the network.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: UNRESOLVED  # source does not state this (was null)
serial:
  baud_rate: null  # UNRESOLVED: RS-485 baud rate not stated in source
  data_bits: null  # UNRESOLVED: data bits not stated in source
  parity: null  # UNRESOLVED: parity not stated in source
  stop_bits: null  # UNRESOLVED: stop bits not stated in source
  flow_control: null  # UNRESOLVED: flow control not stated in source
auth:
  type: UNRESOLVED  # source does not state this (was inferred none: no auth procedure in source)

Traits

- levelable  # inferred from channel level set/query commands
- queryable  # inferred from query command examples (RCP, RCL, RLEDBr, etc.)

Actions

# Logical messages
- id: preset
  label: Set Preset
  kind: action
  command: "P {P} {A} {F} {J}"
  params:
    - name: P
      type: integer
      description: Preset Number (0-65279)
    - name: A
      type: integer
      description: Area (0=all, 0-65535)
    - name: F
      type: integer
      description: Fade time in ms (0-83885.91)
    - name: J
      type: integer
      description: Join level (0x00-0xFF)

- id: request_current_preset
  label: Request Current Preset
  kind: query
  command: "RCP {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: channel_level
  label: Fade to Channel Level
  kind: action
  command: "CL {Ch} {CL} {A} {F} {J}"
  params:
    - name: Ch
      type: integer
      description: Channel number (0=all, 0-65535)
    - name: CL
      type: integer
      description: Channel level percent (0-100)
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: ramp_level
  label: Ramp to Channel Level
  kind: action
  command: "RL {Ch} {CL} {A} {F} {J}"
  params:
    - name: Ch
      type: integer
      description: Channel number
    - name: CL
      type: integer
      description: Channel level percent
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: request_channel_level
  label: Request Current Channel Level
  kind: query
  command: "RCL {Ch} {A} {J}"
  params:
    - name: Ch
      type: integer
      description: Channel number
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: stop_fade
  label: Stop Fading in Area
  kind: action
  command: "SF {Ch} {A} {J}"
  params:
    - name: Ch
      type: integer
      description: Channel number
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: off
  label: Turn Off Area
  kind: action
  command: "O {A} {F} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: panic
  label: Panic Area
  kind: action
  command: "Panic {A} {F} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: unpanic
  label: Un-panic Area
  kind: action
  command: "Unpanic {A} {F} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: enable_panel
  label: Enable a Panel
  kind: action
  command: "SB {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: disable_panel
  label: Disable a Panel
  kind: action
  command: "DP {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: preset_offset
  label: Set Preset Offset
  kind: action
  command: "PO {PO} {A} {J}"
  params:
    - name: PO
      type: integer
      description: Preset offset (0-65279)
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: save_preset
  label: Push Current Preset
  kind: action
  command: "SP {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: restore_preset
  label: Pop Current Preset
  kind: action
  command: "RP {A} {F} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: reset_preset
  label: Reset Area to Last Used Preset
  kind: action
  command: "RSetP {A} {F} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: program_current_preset
  label: Program Current Levels to the Current Preset
  kind: action
  command: "PCP {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: program_preset
  label: Program Current Levels to a Given Preset
  kind: action
  command: "PP {P} {A} {J}"
  params:
    - name: P
      type: integer
      description: Preset number
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: led_brightness
  label: Set Indicator LEDs' Active Brightness
  kind: action
  command: "LEDBr {CL} {A} {F} {J}"
  params:
    - name: CL
      type: integer
      description: Channel level percent (0-100)
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: request_led_brightness
  label: Request Indicator LEDs' Active Brightness
  kind: query
  command: "RLEDBr {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: led_backlight_brightness
  label: Set Backlight LEDs' Brightness
  kind: action
  command: "LEDBlBr {CL} {A} {F} {J}"
  params:
    - name: CL
      type: integer
      description: Channel level percent (0-100)
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: request_led_backlight_brightness
  label: Request Backlight LEDs' Brightness
  kind: query
  command: "RLEDBlBr {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: lcd_brightness
  label: Set Display Brightness
  kind: action
  command: "LCDBr {CL} {A} {F} {J}"
  params:
    - name: CL
      type: integer
      description: Channel level percent (0-100)
    - name: A
      type: integer
      description: Area
    - name: F
      type: integer
      description: Fade time ms
    - name: J
      type: integer
      description: Join

- id: request_lcd_brightness
  label: Request Display Brightness
  kind: query
  command: "RLCDBr {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: set_temperature_setpoint
  label: Set Temperature Setpoint
  kind: action
  command: "STmpSP {Tmp} {A} {J}"
  params:
    - name: Tmp
      type: number
      description: Temperature in °C (-127.99 to 127.99)
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: temperature_setpoint_reply
  label: Send a Reply Temperature Setpoint Message
  kind: action
  command: "TmpSP {Tmp} {A} {J}"
  params:
    - name: Tmp
      type: number
      description: Temperature in °C
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: request_temperature_setpoint
  label: Request a Temperature Setpoint
  kind: query
  command: "RTmpSP {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: temperature_reply
  label: Send a Reply Actual Temperature Message
  kind: action
  command: "Tmp {Tmp} {A} {J}"
  params:
    - name: Tmp
      type: number
      description: Temperature in °C
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

- id: request_temperature
  label: Request Actual Temperature
  kind: query
  command: "RTmp {A} {J}"
  params:
    - name: A
      type: integer
      description: Area
    - name: J
      type: integer
      description: Join

# Physical messages
- id: reset_device
  label: Reset Device
  kind: action
  command: "Reset {DC} {BN}"
  params:
    - name: DC
      type: integer
      description: Device code (0x00-0xFF, 0xAA=Any)
    - name: BN
      type: integer
      description: Box number (0x0000-0xFFFF, 0x5555=Any)

- id: version
  label: Sign on Device
  kind: query
  command: "V {DC} {BN}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: start_task
  label: Start Task Engine Task
  kind: action
  command: "STT {TN} {DC} {BN}"
  params:
    - name: TN
      type: integer
      description: Task number (0-255)
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: stop_task
  label: Stop Task Engine Task
  kind: action
  command: "SPT {TN} {DC} {BN}"
  params:
    - name: TN
      type: integer
      description: Task number
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: pause_task
  label: Pause Task Engine Task
  kind: action
  command: "PT {TN} {DC} {BN}"
  params:
    - name: TN
      type: integer
      description: Task number
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: trigger_event
  label: Trigger Event Scheduler Event
  kind: action
  command: "TE {EN} {DC} {BN}"
  params:
    - name: EN
      type: integer
      description: Event number (0-65535)
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: enable_event
  label: Enable Event Scheduler Event
  kind: action
  command: "EE {EN} {DC} {BN}"
  params:
    - name: EN
      type: integer
      description: Event number
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: disable_event
  label: Disable Event Scheduler Event
  kind: action
  command: "DE {EN} {DC} {BN}"
  params:
    - name: EN
      type: integer
      description: Event number
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: request_time
  label: Request Current Time
  kind: query
  command: "RT {DC} {BN}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: request_date
  label: Request Date
  kind: query
  command: "RD {DC} {BN}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: set_time
  label: Set Current Time
  kind: action
  command: "ST {H} {M} {S}"
  params:
    - name: H
      type: integer
      description: Hours (0-23)
    - name: M
      type: integer
      description: Minutes (0-59)
    - name: S
      type: integer
      description: Seconds (0-59)

- id: set_date
  label: Set Date
  kind: action
  command: "SD {DoW} {Day} {Mon} {Yr}"
  params:
    - name: DoW
      type: string
      description: Day of week (Sun..Sat)
    - name: Day
      type: integer
      description: Day of month (1-31)
    - name: Mon
      type: string
      description: Month (Jan..Dec)
    - name: Yr
      type: integer
      description: Year (0-99 or 2000-2099)

- id: set_physical_temperature_setpoint
  label: Set Physical Temperature Setpoint
  kind: action
  command: "SPhyTmpSP {DC} {BN} {Tmp}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number
    - name: Tmp
      type: number
      description: Temperature in °C

- id: physical_temperature_setpoint_reply
  label: Send a Reply Physical Temperature Setpoint Message
  kind: action
  command: "PhyTmpSP {DC} {BN} {Tmp}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number
    - name: Tmp
      type: number
      description: Temperature in °C

- id: request_physical_temperature_setpoint
  label: Request a Physical Temperature Setpoint
  kind: query
  command: "RPhyTmpSP {DC} {BN}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

- id: physical_temperature_reply
  label: Send a Reply Physical Actual Temperature Message
  kind: action
  command: "PhyTmp {DC} {BN} {Tmp}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number
    - name: Tmp
      type: number
      description: Temperature in °C

- id: request_physical_temperature
  label: Request Physical Actual Temperature
  kind: query
  command: "RPhyTmp {DC} {BN}"
  params:
    - name: DC
      type: integer
      description: Device code
    - name: BN
      type: integer
      description: Box number

# Configuration messages
- id: set_default_area
  label: Set Default Area
  kind: action
  command: "A {A}"
  params:
    - name: A
      type: integer
      description: Area (0-65535)

- id: request_default_area
  label: Request Default Area
  kind: query
  command: "A?"

- id: set_default_fade
  label: Set Default Fade Time (ms)
  kind: action
  command: "F {F}"
  params:
    - name: F
      type: integer
      description: Fade time in ms (0-83885.91)

- id: request_default_fade
  label: Request Default Fade Time
  kind: query
  command: "F?"

- id: set_default_join
  label: Set Default Join
  kind: action
  command: "J {J}"
  params:
    - name: J
      type: integer
      description: Join (0x00-0xFF)

- id: request_default_join
  label: Request Default Join
  kind: query
  command: "J?"

- id: set_default_channel
  label: Set Default Channel
  kind: action
  command: "Ch {Ch}"
  params:
    - name: Ch
      type: integer
      description: Channel number (0-65535)

- id: request_default_channel
  label: Request Default Channel
  kind: query
  command: "Ch?"

- id: area_min_max
  label: Set Maximum and Minimum Areas of Interest
  kind: action
  command: "AMM {A} {A}"
  params:
    - name: A
      type: integer
      description: Min area
    - name: A
      type: integer
      description: Max area

- id: request_area_min_max
  label: Request Maximum and Minimum Areas
  kind: query
  command: "AMM?"

- id: brief
  label: Set to Short Display of Reply Messages
  kind: action
  command: "Brief"

- id: verbose
  label: Set to Long Display of Reply Messages
  kind: action
  command: "Verbose"

- id: reply_ok
  label: Set Whether OK is Printed After Each Command
  kind: action
  command: "ReplyOK {TF}"
  params:
    - name: TF
      type: integer
      description: 0 or 1

- id: settings
  label: Display Current Settings
  kind: query
  command: "Settings"

- id: who_are_you
  label: Ask Gateway Device to Sign on
  kind: query
  command: "WhoAreYou"

- id: echo
  label: Repeat the Command Back
  kind: action
  command: "Echo {TF}"
  params:
    - name: TF
      type: integer
      description: 0 or 1

- id: dotted_network_address
  label: Use "Device (??hex) Box??" or "??.??" for Physical Properties
  kind: action
  command: "DNA {TF}"
  params:
    - name: TF
      type: integer
      description: 0 or 1

Feedbacks

- id: preset_reply
  type: string
  description: Reply with current preset number, area, and join

- id: channel_level_reply
  type: string
  description: Reply with channel level (channel, area, target %, current %, join)

- id: led_brightness_reply
  type: string
  description: Reply with indicator LED brightness, area, and join

- id: led_backlight_brightness_reply
  type: string
  description: Reply with backlight LED brightness, area, and join

- id: lcd_brightness_reply
  type: string
  description: Reply with display brightness, area, and join

- id: temperature_setpoint_reply_logical
  type: string
  description: Reply with logical temperature setpoint, area, and join

- id: temperature_reply_logical
  type: string
  description: Reply with logical actual temperature, area, and join

- id: temperature_setpoint_reply_physical
  type: string
  description: Reply with physical temperature setpoint and device

- id: temperature_reply_physical
  type: string
  description: Reply with physical actual temperature and device

- id: version_reply
  type: string
  description: Signon reply with port, device, box, and version

- id: time_reply
  type: string
  description: Time reply in24h format with DST/standard indicator

- id: date_reply
  type: string
  description: Date reply with DoW, day, month, year

- id: time_date_reply
  type: string
  description: Combined time and date reply (DyNet2)

- id: ok_ack
  type: string
  description: "OK" acknowledgement after each command (suppressed when a configuration response follows)

- id: default_area_reply
  type: string
  description: "A=<Ad>"

- id: default_fade_reply
  type: string
  description: "F=<Fd>"

- id: default_join_reply
  type: string
  description: "J=<Jd>"

- id: default_channel_reply
  type: string
  description: "Ch=<Chd>"

- id: area_min_max_reply
  type: string
  description: "AMin=<Ad>, AMax=<Ad>"

- id: who_are_you_reply
  type: string
  description: "I am EG (dchex) Box <Bd>, <V>"

- id: settings_reply
  type: string
  description: Current DyNet Text engine settings

Variables

# UNRESOLVED: DyNet Text has no EEPROM section (per source), so defaults are session-scoped - no persistent variables listed.

Events

# UNRESOLVED: source documents unsolicited network traffic logged to console but does not define discrete event messages for the EG itself.

Macros

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

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings, interlocks, or power-on sequencing procedures.

Notes

DyNet Text commands and arguments are not case-sensitive. Over RS-485 each command must be preceded by an asterisk (*) as a synchronization character; over Telnet this is optional. Arguments may be separated by spaces and/or a single comma. Integer arguments accept decimal or 0x-prefixed hex values. Temperature values use0.01°C resolution. Each Area/Fade/Join/Channel value used in a command becomes the new session default for that argument type (exceptions: AreaMinMax does not set default Area; JoinLevel sets default Join to its third argument). Typically, EG Port 1 is RS-485 and Port 2 is Ethernet/Telnet.

Provenance

source_domains:
  - docs.dynalite.com
source_urls:
  - https://docs.dynalite.com/system-builder/latest/ethernet_gateways/integration/dynet_text.html
retrieved_at: 2026-05-12T09:53:29.663Z
last_checked_at: 2026-10-01T13:26:45.830Z

Verification Summary

verdict: verified
checked_at: 2026-10-01T13:26:45.830Z
matched_actions: 62
action_count: 62
confidence: medium
summary: "All 62 spec actions map to verbatim source commands across Logical, Physical, and Configuration tables; transport UNRESOLVED values are honest source gaps. (11 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "TCP port number for Telnet access not stated in source."
- "RS-485 baud rate not stated in source"
- "data bits not stated in source"
- "parity not stated in source"
- "stop bits not stated in source"
- "flow control not stated in source"
- "DyNet Text has no EEPROM section (per source), so defaults are session-scoped - no persistent variables listed."
- "source documents unsolicited network traffic logged to console but does not define discrete event messages for the EG itself."
- "no multi-step macro sequences described in source."
- "source contains no explicit safety warnings, interlocks, or power-on sequencing procedures."
- "TCP Telnet port number not stated in source. UNRESOLVED: RS-485 serial parameters (baud/data/parity/stop/flow) not stated in source."

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