Summary

Control spec for the Goelst G-Rail (G-Motion Curtain Controller) motor unit, covering the RS-232 TTL-level serial protocol on the RJ45 connector. The protocol is fully text-based with CR+LF line endings and exposes serial number retrieval, sensor/position queries, and movement (open/close/stop/preset 1-5) commands, with broadcast variants over the GM-BUS network for grouped control.

Transport

protocols:
  - serial
serial:
  baud_rate: 115200
  data_bits: 8
  parity: even
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable       # inferred: mv open/close commands affect motor state
- routable        # inferred: open/close/stop/preset commands drive curtain position
- queryable       # inferred: sn, get pos/tmp/lux, remote get commands return values

Actions

- id: get_serial_number
  label: Get Serial Number
  kind: query
  command: "sn"
  params: []
  notes: |
    Returns a hexadecimal serial number. Example response: 14EA8D15
- id: get_position
  label: Get Current Position
  kind: query
  command: "pos get"
  params: []
  notes: |
    Returns current slider position on the rails in millimeters. Example response: 25
- id: get_temperature
  label: Get Temperature
  kind: query
  command: "tmp get"
  params: []
  notes: |
    Returns measured temperature in degrees Celsius.
- id: get_lux
  label: Get Lux Sensor Value
  kind: query
  command: "lux get"
  params: []
  notes: |
    Returns lux sensor value. Only valid when a lux sensor is attached.
- id: remote_get_position
  label: Get Remote Device Position
  kind: query
  command: "remote get {serial} pos"
  params:
    - name: serial
      type: string
      description: Last 16 bits of the target device serial number (hex).
  notes: |
    Requires G-Motion BUS extension board. Times out to "cmd failed" if target does not respond.
- id: remote_get_temperature
  label: Get Remote Device Temperature
  kind: query
  command: "remote get {serial} tmp"
  params:
    - name: serial
      type: string
      description: Last 16 bits of the target device serial number (hex).
  notes: |
    Requires G-Motion BUS extension board. Times out to "cmd failed" if target does not respond.
- id: remote_get_lux
  label: Get Remote Device Lux
  kind: query
  command: "remote get {serial} lux"
  params:
    - name: serial
      type: string
      description: Last 16 bits of the target device serial number (hex).
  notes: |
    Requires G-Motion BUS extension board. Only valid when lux sensor attached to remote. Times out to "cmd failed" if target does not respond.
- id: mv_open
  label: Move Open
  kind: action
  command: "mv open"
  params: []
- id: mv_close
  label: Move Close
  kind: action
  command: "mv close"
  params: []
- id: mv_stop
  label: Move Stop
  kind: action
  command: "mv stop"
  params: []
- id: mv_preset
  label: Move to Preset
  kind: action
  command: "mv{preset}"
  params:
    - name: preset
      type: integer
      description: Preset number 1-5
- id: remote_mv
  label: Remote Move Event
  kind: action
  command: "remote mv {action} {user_address}"
  params:
    - name: action
      type: string
      description: "One of: open, close, stop, or preset 1-5"
    - name: user_address
      type: integer
      description: |
        UserAddress (1-31). Standard UA 1 is the factory default; up to 31 addresses
        can be activated per motor, forming motor groups.
  notes: |
    Requires GM-BUS extension board. Transmitted over GM-BUS with the specified UserAddress.

Feedbacks

- id: cmd_ok
  type: string
  values: "cmd ok"
  description: Returned after successfully handling an executing or setting command.
- id: cmd_failed
  type: string
  values: "cmd failed"
  description: Returned after a timeout event or incorrect parameters.
- id: cmd_unknown
  type: string
  values: "cmd unknown"
  description: Returned when a command is sent that is not recognized by the controller.

Variables

# UNRESOLVED: source exposes only commands; no separate settable parameters (gain, speed, etc.) documented.

Events

# UNRESOLVED: source does not document unsolicited notifications from the device.

Macros

# UNRESOLVED: source does not document any multi-step sequences.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source notes "Improper connections may damage your hardware!" as a wiring warning but does not document interlock procedures or power-on sequencing requirements.

Notes

  • Protocol is text-based; commands end with CR+LF.
  • RJ45 pinout uses 3V TTL: pin 1 = TX (out), pin 4 = GND, pin 8 = RX (in); pins 2, 3, 5, 6, 7 are DNC.
  • Two official Goelst cables expose the RJ45 TTL port: 6036-RS232-SUBD/RJ45 (DE-9) and 6036-RS232-USB/RJ45 (USB-A).
  • The protocol is also mapped internally on the I2C Internal Bus between expansion modules, where the TargetID serves as the I2C DeviceAddress.
  • GM-BUS remote commands require that target motors be subscribed to the relevant UserAddress; motors on the same UA form a controllable group.
  • Beta v0.2 is documented as compatible with firmware v1.2.14+; future versions may not be backward compatible.
  • Only the last 16 bits of a device serial number are used for GM-BUS addressing.

Provenance

source_domains:
  - web.archive.org
source_urls:
  - https://web.archive.org/web/20250121220142/https://goelst.com/brochure/pdf2018/GM_EN_RS232.pdf
retrieved_at: 2026-09-06T08:43:35.497Z
last_checked_at: 2026-09-11T22:16:32.898Z

Verification Summary

verdict: verified
checked_at: 2026-09-11T22:16:32.898Z
matched_actions: 12
action_count: 12
confidence: medium
summary: "All 12 spec actions correspond to commands documented in the source; transport parameters also match the source verbatim. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source describes only RS-232/TTL serial; no IP, REST, OSC, or other protocol support documented."
- "source exposes only commands; no separate settable parameters (gain, speed, etc.) documented."
- "source does not document unsolicited notifications from the device."
- "source does not document any multi-step sequences."
- "source notes \"Improper connections may damage your hardware!\" as a wiring warning but does not document interlock procedures or power-on sequencing requirements."
- "voltage/current draw, RF/WiFi networking specifics, and fault-recovery sequences are not stated in source."

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