Summary

Control4 KNX Routing Gateway is a Composer Pro driver that acts as a network-layer bridge between Control4 home automation controllers and KNX-certified devices. It uses KNXnet/IP Routing (connection-less IP multicast) over Ethernet to communicate with KNX devices on the network. No login or authentication procedure is required.

Transport

protocols:
  - udp  # KNXnet/IP Routing is connection-less IP multicast (UDP); source line 38 "connection-less multicast protocol", line 65 "IP multicast protocol"
addressing:
  port: 3671  # KNX multicast port - official KNX Association default (source line 91)
  multicast_address: 224.0.23.12  # official KNX Association IP multicast address (source line 89)
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable      # inferred: switch/dimmer drivers support ON/OFF via DPT_1
- routable       # inferred: KNX Group Address routing
- queryable      # inferred: REQUEST_STATUS, KNX_READ_REQUEST commands present
- levelable      # inferred: dimmer drivers support brightness control via DPT_3, DPT_5_001

Actions

- id: ADD_GROUP_ITEM
  label: Add Group Item
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DEVICE_ID
      type: integer
      description: Device ID of the driver
    - name: PROPERTY
      type: string
      description: Property Name in Composer where the Group Address is stored
    - name: DATA_POINT_TYPE
      type: string
      description: KNX Data Point Type (e.g. DPT_1, DPT_3)
    - name: STARTUP_READ
      type: boolean
      required: false
      description: If false, Group Address will not be read on startup

- id: CLEAR_GROUP_ITEM
  label: Clear Group Item
  kind: action
  params:
    - name: DEVICE_ID
      type: integer
      description: Device ID of the driver

- id: GET_NETWORK_VERSION
  label: Get Network Version
  kind: action
  params:
    - name: DEVICE_ID
      type: integer
      description: Device ID of the driver

- id: REQUEST_STATUS
  label: Request Status
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function

- id: SEND_TO_KNX
  label: Send to KNX
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: KNX Data Point Type
    # Additional parameters depend on DPT used

- id: UPDATE_GROUP_ITEM
  label: Update Group Item
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DEVICE_ID
      type: integer
      description: Device ID of the driver
    - name: PROPERTY
      type: string
      description: Property Name in Composer where the Group Address is stored
    - name: DATA_POINT_TYPE
      type: string
      description: KNX Data Point Type

- id: REMOVE_GROUP_ITEM
  label: Remove Group Item
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DEVICE_ID
      type: integer
      description: Device ID of the driver
    - name: PROPERTY
      type: string
      description: Property Name in Composer where the Group Address is stored

- id: DISPLAY_GLOBALS
  label: Display Globals
  kind: action
  params: []

- id: DISPLAY_GROUP_ADDRESSES
  label: Display Group Addresses
  kind: action
  params: []

- id: CONNECT
  label: Connect to KNX Network
  kind: action
  params: []

- id: DISCONNECT
  label: Disconnect from KNX Network
  kind: action
  params: []

- id: send_dpt_1
  label: Send DPT_1 (Boolean)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_1"
    - name: VALUE
      type: integer
      description: Boolean value - 0 or 1

- id: send_dpt_2
  label: Send DPT_2 (Boolean with control)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_2"
    - name: CONTROL
      type: integer
      description: 0 for No Control, 1 for Control
    - name: VALUE
      type: integer
      description: Boolean value - 0 or 1

- id: send_dpt_3
  label: Send DPT_3 (Dimming / Step)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_3"
    - name: DIRECTION
      type: integer
      description: 0 = Decrease (lighting) / Up (blind); 1 = Increase (lighting) / Down (blind)
    - name: STEP_CODE
      type: integer
      description: Number of intervals into which 0%..100% range is subdivided, or break indication

- id: send_dpt_4
  label: Send DPT_4 (Character)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_4"
    - name: VALUE
      type: integer
      description: 0 through 255. 8-bit value representing a character

- id: send_dpt_5
  label: Send DPT_5 (8-bit unsigned)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_5"
    - name: VALUE
      type: integer
      description: 0 through 255. 8-bit unsigned value

- id: send_dpt_6
  label: Send DPT_6 (8-bit signed)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_6"
    - name: VALUE
      type: integer
      description: -128 through 127. 8-bit relative value

- id: send_dpt_7
  label: Send DPT_7 (2-octet unsigned)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_7"
    - name: VALUE
      type: integer
      description: 0 - 65535. 2-octet unsigned value

- id: send_dpt_8
  label: Send DPT_8 (2-octet signed)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_8"
    - name: VALUE
      type: integer
      description: -32768 through 32767. 2-octet signed value

- id: send_dpt_9
  label: Send DPT_9 (2-octet float)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_9"
    - name: VALUE
      type: number
      description: -671088.64 - 670760.96. 2-octet float value (e.g. temperature)

- id: send_dpt_10
  label: Send DPT_10 (Time with day-of-week)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_10"
    - name: DAY
      type: integer
      description: 0-7. 0=No day, 1=Monday
    - name: HOUR
      type: integer
      description: 0-23
    - name: MINUTE
      type: integer
      description: 0-59
    - name: SECOND
      type: integer
      description: 0-59

- id: send_dpt_11
  label: Send DPT_11 (Date)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_11"
    - name: DAY
      type: integer
      description: 1 through 31
    - name: MONTH
      type: integer
      description: 1 through 12
    - name: YEAR
      type: integer
      description: 0 through 99

- id: send_dpt_12
  label: Send DPT_12 (4-octet unsigned)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_12"
    - name: VALUE
      type: integer
      description: 0 - 4294967295. 4-octet unsigned value

- id: send_dpt_13
  label: Send DPT_13 (4-octet signed)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_13"
    - name: VALUE
      type: integer
      description: -2147483648 to 2147483647. 4-octet signed value

- id: send_dpt_14
  label: Send DPT_14 (4-octet float)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_14"
    - name: VALUE
      type: number
      description: -2.14748E009 to +2.14748E009. 4-octet float value

- id: send_dpt_16
  label: Send DPT_16 (Text)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_16"
    - name: VALUE
      type: string
      description: 14-character text string

- id: send_dpt_17
  label: Send DPT_17 (Scene number)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_17"
    - name: VALUE
      type: integer
      description: Scene number 0-63

- id: send_dpt_18
  label: Send DPT_18 (Scene control)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_18"
    - name: VALUE
      type: integer
      description: Scene number 0-63
    - name: CONTROL
      type: integer
      description: 0 = activate scene; 1 = learn scene

- id: send_dpt_19
  label: Send DPT_19 (Date and Time)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_19"
    - name: YEAR
      type: integer
      required: false
      description: 1900-2155, or nil if not used
    - name: MONTH
      type: integer
      required: false
      description: 1-12, or nil if date is not used
    - name: DAY
      type: integer
      required: false
      description: 1-31, or nil if date is not used
    - name: WEEKDAY
      type: integer
      required: false
      description: 0-7, or nil if day-of-week is not used
    - name: HOUR
      type: integer
      required: false
      description: 0-24, or nil if time is not used
    - name: MINUTE
      type: integer
      required: false
      description: 0-60, or nil if time is not used
    - name: SECOND
      type: integer
      required: false
      description: 0-60, or nil if time is not used
    - name: WORKING_DAY
      type: integer
      required: false
      description: 0 or 1, nil if not used
    - name: SUMMER_TIME
      type: integer
      required: false
      description: 0 or 1 (Standard Summer Time), nil if not used
    - name: CLOCK_QUALITY
      type: integer
      required: false
      description: 0 = clock without external sync; 1 = clock with external sync; nil if not used
    - name: FAULT
      type: integer
      required: false
      description: 1 if one or more supported fields are corrupted, 0 otherwise

- id: send_dpt_5_001
  label: Send DPT_5_001 (Percentage)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_5_001"
    - name: VALUE
      type: integer
      description: Percentage 0% - 100%

- id: send_dpt_232
  label: Send DPT_232 (RGB color)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_232"
    - name: R
      type: integer
      description: Red value 0-255
    - name: G
      type: integer
      description: Green value 0-255
    - name: B
      type: integer
      description: Blue value 0-255

- id: send_dpt_242_600
  label: Send DPT_242_600 (xyY color)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_242_600"
    - name: X
      type: integer
      required: false
      description: x-coordinate (0 to 6553), or nil if only brightness is passed
    - name: Y
      type: integer
      required: false
      description: y-coordinate (0 to 6553), or nil if only brightness is passed
    - name: BRIGHTNESS
      type: integer
      required: false
      description: Brightness 0%-100%, or nil if only x/y are passed

- id: send_dpt_251_600
  label: Send DPT_251_600 (RGBW color)
  kind: action
  params:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for the Object Function
    - name: DATA_POINT_TYPE
      type: string
      description: Must be "DPT_251_600"
    - name: R
      type: integer
      required: false
      description: Red color level 0%-100%, or nil if not used
    - name: G
      type: integer
      required: false
      description: Green color level 0%-100%, or nil if not used
    - name: B
      type: integer
      required: false
      description: Blue color level 0%-100%, or nil if not used
    - name: W
      type: integer
      required: false
      description: White color level 0%-100%, or nil if not used

Feedbacks

- id: DATA_FROM_KNX
  type: object
  properties:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address associated with the received data
    - name: RESPONSE
      type: boolean
      description: Specifies if received data is a response to a read request
    # All other parameters depend on the DPT configured for the Group Address

- id: NETWORK_VERSION
  type: object
  properties:
    - name: VERSION
      type: number
      description: KNX Network driver version number

- id: KNX_READ_REQUEST
  type: object
  properties:
    - name: GROUP_ADDRESS
      type: string
      description: KNX Group Address for which a read request is issued

- id: CONNECTION_STATUS
  type: enum
  values:
    - "Connection with KNXnet/IP Server successful"
    - "The KNXnet/IP Server device cannot find an active data connection with the specified ID"
    - "The requested connection type is not supported by the KNXnet/IP Server device"
    - "One or more requested connection options are not supported by the KNXnet/IP Server device"
    - "The KNXnet/IP Server device cannot accept the new data connection because its maximum amount of concurrent connections is already occupied"
    - "The KNXnet/IP Server device detects an error concerning the data connection with the specified ID"
    - "The KNXnet/IP Server device detects an error concerning the KNX subnetwork connection with the specified ID"
    - "Unknown status from KNXnet/IP Server device"

Variables

# UNRESOLVED: driver exposes per-channel variables (CHANNEL_1_STEP, etc.)
# Variable availability depends on Data Point Type configured
# Source does not enumerate all possible variables - operator should inspect
# the driver source for the specific version in use

Events

# The KNX Generic driver exposes programming events; the Routing Gateway
# driver itself does not expose standalone events - events are delivered via
# DATA_FROM_KNX feedbacks to driver consumers

Macros

# UNRESOLVED: no multi-step sequences described in source

Safety

confirmation_required_for: []
interlocks:
  - description: "KNX Minimum Delay (ms) - driver waits this time after receiving data from KNX before sending; range 25-500 ms; prevents command flooding"
  - description: "KNX Maximum Delay (ms) - maximum interval between sent commands; range 50-500 ms; for 10 devices at 100 ms interval, all OFF commands are sent 900 ms apart"
  - description: "Set Read flag (R) on all status Group Objects in ETS - driver issues read requests at startup for all status addresses; read requests only work if Read flag is set in ETS"
# UNRESOLVED: no safety-critical hardware voltage/current/power specs - driver operates at software level only

Notes

The KNX Routing Gateway driver uses KNXnet/IP Routing (IP multicast over UDP) not KNXnet/IP Tunneling. Control4 recommends Routing over Tunneling due to strict timing requirements of Tunneling that cause occasional disconnections. All KNXnet/IP routing devices on the local network must be configured for multicast routing. Port 3671 and multicast address 224.0.23.12 are the official KNX Association defaults and should only be changed if the network infrastructure requires it.

Group Address format in ETS uses three-level (e.g. 0/0/10) notation. Driver properties allow assigning KNX Group Addresses to device functions (switching, dimming, feedback, etc.).

The driver exposes 7 SendToProxy API methods (ADD_GROUP_ITEM, CLEAR_GROUP_ITEM, GET_NETWORK_VERSION, REMOVE_GROUP_ITEM, REQUEST_STATUS, SEND_TO_KNX, UPDATE_GROUP_ITEM) and receives 3 callback commands from the network driver (DATA_FROM_KNX, KNX_READ_REQUEST, NETWORK_VERSION). SEND_TO_KNX accepts 22 Datapoint Types, each with its own parameter schema - each enumerated as a separate send variant action.

Datapoint Types (DPTs) supported: DPT_1 (boolean), DPT_2 (boolean + control), DPT_3 (dimming/step), DPT_4 (character), DPT_5 (8-bit unsigned), DPT_6 (8-bit signed), DPT_7 (2-byte unsigned), DPT_8 (2-byte signed), DPT_9 (2-byte float), DPT_10 (time), DPT_11 (date), DPT_12 (4-byte unsigned), DPT_13 (4-byte signed), DPT_14 (4-byte float), DPT_16 (text), DPT_17 (scene), DPT_18 (scene control), DPT_19 (date+time), DPT_5_001 (percentage), DPT_232 (RGB), DPT_242_600 (xyY color), DPT_251_600 (RGBW). DPT_15 is not supported.

DPT_19, DPT_242_600 and DPT_251_600 are available from KNX Routing Gateway driver version 44 and later.

Provenance

source_domains:
  - control4.github.io
  - snap-one.github.io
  - developer.control4.com
source_urls:
  - https://control4.github.io/docs-driverworks-knx/
  - https://snap-one.github.io/docs-driverworks-knx/
  - https://developer.control4.com
retrieved_at: 2026-05-21T07:26:31.297Z
last_checked_at: 2026-06-02T08:09:54.603Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T08:09:54.603Z
matched_actions: 33
action_count: 33
confidence: medium
summary: "All 33 spec actions match source API commands or DPT sections verbatim; transport port 3671 and multicast 224.0.23.12 confirmed; feedbacks cover remaining callbacks; full bidirectional coverage. (7 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "This spec describes the driver (knx_routing_gateway.c4z) not a standalone hardware device — no direct TCP port exposed by the driver itself; port 3671 is the KNX multicast port used by the KNX system"
- "driver exposes per-channel variables (CHANNEL_1_STEP, etc.)"
- "no multi-step sequences described in source"
- "no safety-critical hardware voltage/current/power specs - driver operates at software level only"
- "hardware device firmware version compatibility — source describes driver/API only"
- "individual device command encodings (raw KNX frames) — not exposed at driver level"
- "actual IP address of the KNX Routing Gateway hardware — assigned during installation, not stated in doc"

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