Summary
The Domintell DPBC02 (module type code CL2) is a 2-button "Classic" push-button module with two LED indicators and an integrated temperature sensor, operating on the Domintell bus. It is controlled through a Domintell LightProtocol server (master module such as DGQG02/DGQG04, or a DNET01/DNET02 Ethernet interface) using the legacy ASCII LightProtocol command set. The same command set is reachable either via a DRS23202 RS-232 interface (legacy serial path) or via a Secured WebSocket (WSS) connection to a NewGen Ethernet module (default port 17481). This spec covers the device-level commands and status frames for the CL2 module.
Transport
# Two transports reach the same LightProtocol command set:
# 1. serial - legacy RS-232 via DRS23202 (electrical params NOT in source)
# 2. http - Secured WebSocket (wss://) via DNET01/DNET02/DGQG02/DGQG04
# (source 2.2: "Secured WebSocket ... data are encrypted in encapsulated
# frame over HTTP protocol"; default port 17481)
protocols:
- serial
- http
serial:
baud_rate: null # UNRESOLVED: baud rate not stated in source
data_bits: null # UNRESOLVED: not stated in source
parity: null # UNRESOLVED: not stated in source
stop_bits: null # UNRESOLVED: not stated in source
flow_control: null # UNRESOLVED: not stated in source
addressing:
port: 17481
base_url: "wss://{host}:17481" # source 5.2.a: wscat -n -c wss://<ip>:17481
# Connection limits (source 2.2): max 8 simultaneous WSS on DNET01/DNET02;
# max 2 simultaneous WSS on DGQG02/DGQG04.
auth:
type: password # LightProtocol session uses REQUESTSALT + LOGINPSW@<user>:<hash>
# Hash algorithm (source 5.3.a): sha512(sha512(password + salt) + nonce)
# - salt + nonce are obtained via REQUESTSALT@<username>
# - "Possibility to set a password" (source 2.2, DNET01/DNET02)
# First-gen modules accept bare LOGINPSW@: (no user/pass) per source 5.5.
Traits
- queryable # inferred: %S status query and packed status frames documented
- levelable # inferred: %Tnn.n / %Unn.n continuous temperature setpoints documented
Actions
# Legacy input LightProtocol frame format (source 4.6.c):
# {ModType 3 char}{SerialNumber 6 char hex}-{OutputNumber 1 hex}{%params}
# For CL2 the command output numbers (per source 4.5 I/O mapping) are:
# -1 push-button 1 AND temperature-sensor addressing (shared)
# -1 LED 1 indicator
# -2 LED 2 indicator
# {serial} = 6-char hexadecimal module serial number, e.g. 000043.
# Source notes: strings are NOT case sensitive (auto-uppercased); leading/trailing
# spaces are trimmed; CR/LF supported at line end; frames can NOT be joined with '&'.
- id: push_button_simulate
label: Simulate Push-Button Press
kind: action
command: "CL2{serial}-1%P{n}"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number (e.g. "000043")
- name: n
type: integer
description: "1=begin short push, 2=end short push, 3=begin long push, 4=end long push"
- id: led1_toggle
label: LED 1 Toggle
kind: action
command: "CL2{serial}-1"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- id: led1_set_on
label: LED 1 Set On
kind: action
command: "CL2{serial}-1%I"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- id: led1_reset_off
label: LED 1 Reset Off
kind: action
command: "CL2{serial}-1%O"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- id: led2_toggle
label: LED 2 Toggle
kind: action
command: "CL2{serial}-2"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- id: led2_set_on
label: LED 2 Set On
kind: action
command: "CL2{serial}-2%I"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- id: led2_reset_off
label: LED 2 Reset Off
kind: action
command: "CL2{serial}-2%O"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- id: temp_heating_setpoint
label: Set Heating Temperature Setpoint
kind: action
command: "CL2{serial}-1%T{value}"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- name: value
type: number
description: Floating-point heating setpoint in Celsius (e.g. 21.5). Valid range is bounded per-install by APPINFO LHH/LHL flags.
- id: temp_cooling_setpoint
label: Set Cooling Temperature Setpoint
kind: action
command: "CL2{serial}-1%U{value}"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- name: value
type: number
description: Floating-point cooling setpoint in Celsius (e.g. 25.0). Valid range is bounded per-install by APPINFO LCH/LCL flags.
- id: temp_mode
label: Set Temperature Mode
kind: action
command: "CL2{serial}-1%M{mode}"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- name: mode
type: integer
description: "1=away, 2=auto, 5=comfort, 6=anti-freeze. Per-install availability is gated by APPINFO HMT flags."
- id: temp_regulation_mode
label: Set Regulation Mode
kind: action
command: "CL2{serial}-1%R{mode}"
params:
- name: serial
type: string
description: 6-char hexadecimal module serial number
- name: mode
type: integer
description: "0=off, 1=heating, 2=cooling, 3=mixed. Per-install availability is gated by APPINFO HMR flags."
- id: module_status_query
label: Module Status Query
kind: query
command: "CL2{serial}%S"
params:
- name: serial
type: string
description: >
6-char hexadecimal module serial number. Output index is OMITTED for %S
(module-wide query). On NewGen masters (DGQG02/DGQG04/...) this command
requires DAP version 40.1 (OS 25.3.0) or higher for legacy modules
(source 4.6.d) and returns the cached RAM value - no fresh bus read is
performed, so it cannot accelerate sensor refresh beyond the master's
periodic polling.
Feedbacks
# Status frame format (source 4.7.a):
# {ModType 3}{Serial 6 hex}{-IO?}{DataType 1 char}{Data n*2 hex}
# CL2 uses packed/global status for inputs and outputs.
- id: push_button_state
type: bitmask
format: "CL2{serial}I{xx}"
description: >
Packed input bitmask, LSB = push-button 1.
Example "CL2000043I01" = button 1 pressed; "CL2000043I00" = released.
- id: led_output_state
type: bitmask
format: "CL2{serial}O{xx}"
description: >
Packed output bitmask, LSB = LED 1.
Example "CL2000043O02" = LED 2 on; "CL2000043O00" = all LEDs off.
- id: temperature_heating
type: string
format: "CL2{serial}T{measured} {heating_setpoint} {MODE} {profile_value}"
description: >
Heating temperature info (source 4.7.b type T). MODE is one of
ABSENCE/AUTO/COMFORT/FROST. Measured value includes software offset.
Example "CL2000043T25.2 21.0 AUTO 18.0".
- id: temperature_cooling
type: string
format: "CL2{serial}U{measured} {cooling_setpoint} {REG_MODE} {profile_value}"
description: >
Cooling temperature info (source 4.7.b type U). REG_MODE is one of
OFF/HEATING/COOLING/MIXED (HVAC-only: AUTOHVAC/DRY/FAN).
Example "CL2000043U25.2 21.0 HEATING 19.5".
Variables
# No separate settable parameters beyond the actions above.
# Temperature-sensor capability bounds are read from APPINFO (not settable via
# LightProtocol): [HMR=0x00-HMT=0x00][LHH=30.0-LHL=10.0-LCH=40.0-LCL=20.0-ISP=0.5]
# UNRESOLVED: no settable variables identified in source for this module.
Events
# The LightProtocol server pushes the Feedback status frames above unsolicited
# whenever a CL2 input/output/temperature state changes, and on demand after a
# PING -> PONG refresh cycle (source 4.1, 5.9).
# System INFO/ERROR messages are also sent by the server, e.g.:
# INFO:Waiting for LOGINPSW:NONCE=123456789:INFO
# INFO:REQUESTSALT:USERNAME=<user>:NONCE=<n>:SALT=<salt>:INFO
# INFO:Session opened:INFO
# INFO:Session timeout:INFO
# INFO:World:INFO (reply to HELLO)
# INFO:Timeout disabled. Socket will never be closed...:INFO (reply to TIMEOUT=0)
# ERROR:Invalid LOGINPSW. Use REQUESTSALT@<user> and LOGINPSW@<user>:<hashedpsw>:ERROR
# ERROR:Invalid credentials:ERROR
# ERROR:Command denied. Read-only user:ERROR (from PROG M 43.7)
Macros
# Session login flow required before any device command is accepted (source 4.1, 5.5).
# Hash algorithm (source 5.3.a): sha512(sha512(password + salt) + nonce)
- id: session_login
name: LightProtocol Session Login
steps:
- "REQUESTSALT@{username}"
- "# expect INFO:REQUESTSALT:USERNAME={username}:NONCE={nonce}:SALT={salt}:INFO"
- "# compute hashedpsw = sha512( sha512(password + salt) + nonce ) [hex strings]"
- "LOGINPSW@{username}:{hashedpsw}"
- "# expect INFO:Session opened:INFO"
notes: >
First-gen modules with no user database accept a bare LOGINPSW@: to open a
session without credentials (source 5.5).
- id: session_keepalive
name: Session Keep-Alive (HELLO)
steps:
- "HELLO"
- "# expect INFO:World:INFO (send every ~50s before session timeout)"
notes: >
Alternative: TIMEOUT=0 disables the session timeout entirely (reply:
INFO:Timeout disabled...). Preferred over PING for keepalive to avoid
bus traffic (source 5.8).
- id: session_logout
name: Close Session
steps:
- "LOGOUT"
- "# expect INFO:Closing session:INFO"
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no DPBC02-specific safety warnings, interlocks, or power-on
# sequencing found in source. (The source's RJ45/bus warning applies to the
# communication-interface modules, not to this bus push-button module.)
Notes
- Module identity:
CL2= DPBC02 "Classic 2 Push Button (8 colors and temperature sensor)"; minimum DAP (PROG M) version 30 (source 4.3). - Command addressing quirk: temperature-sensor commands use output index
-1(shared with the push-button), even though the temperature sensor is APPINFO IO index 5 and LED 1 is IO index 3 — see source 4.5 DPBC02 row. LED 1 = command output 1, LED 2 = command output 2. - String handling: not case sensitive (lowercase auto-replaced with uppercase); leading/trailing spaces trimmed;
<CR>/<LF>/<TAB>literals replaced by 0x0D/0x0A/0x09; CR/LF supported at line end; frames cannot be concatenated with&(source 4.6.b). - Status query caveat: on NewGen masters (DGQG02/DGQG04)
%Sreturns the cached RAM value — it does not force a fresh read from the module, so it cannot accelerate sensor refresh beyond the master's periodic polling. For legacy modules on NewGen masters,%Srequires DAP version 40.1 / OS 25.3.0 or higher (source 4.6.d). - Temperature-sensor capability metadata (APPINFO, source 4.7.d): each CL2 temperature IO carries
[LOCAL][HMR=0x00-HMT=0x00][LHH=30.0-LHL=10.0-LCH=40.0-LCL=20.0-ISP=0.5]describing per-install limits:HMR(Hide Mode Regulation bitmask): 0x01=off disabled, 0x02=heating disabled, 0x04=cooling disabled, 0x08=mixed disabled, 0x10=auto-HVAC disabled (v42+), 0x20=dry disabled (v42+), 0x40=fan disabled (v42+).HMT(Hide Mode Temperature bitmask): 0x01=auto disabled, 0x02=comfort disabled, 0x04=away disabled, 0x08=frost disabled.LHH/LHL= high/low heating setpoint limits;LCH/LCL= high/low cooling setpoint limits (fromPROG M 37.0).ISP= setpoint increment step (fromPROG M 37.0). These are read-only descriptors; a client should gate%M/%R/%T/%Urequests against them.
- Transport scope: the source states it "only covers Ethernet modules of new generation … using Secured Websockets instead of RS232 or UDP socket" (default port 17481, max 8 WSS connections on DNET01/DNET02, max 2 on DGQG02/DGQG04). It nonetheless confirms legacy input/output LightProtocol works over the DRS23202 RS-232 interface using the identical ASCII command set documented here; the RS-232 electrical parameters for that path are not given.
- Roles (from
PROG M 43.7): Viewer (read-only) can issue%S/APPINFO/PING/GETLPVER but not actions; Administrator has full access. Push-button simulation and LED/toggle/set/reset and setpoint commands require Administrator role (source 4.6.d, 5.4).
Upgrade summary: device action list unchanged (all 12 CL2 commands already covered). Added WSS transport (port 17481), resolved hash algo sha512(sha512(pw+salt)+nonce), enriched temp-setpoint actions with APPINFO LHH/LHL/LCH/LCL bound refs, enriched %M/%R with HMR/HMT gate refs, added %S DAP-40.1 requirement, added roles note. Serial electricals still UNRESOLVED (source silent).
Provenance
source_domains:
- pro.mydomintell.com
source_urls:
- https://pro.mydomintell.com/share/manual/lightprotocol/domintell_ligthprotocol-v16-20250319.pdf
- https://pro.mydomintell.com/share/manual/lightprotocol/domintell_ligthprotocol-v15-20231130.pdf
- https://pro.mydomintell.com/share/manual/lightprotocol/DS_RS232_ETH_Interfaces-1.27.08-rev2.pdf
- "https://pro.mydomintell.com/share/manual/DPBC0x/Product%20Datasheet%20-%20DPBC0x%20-%20EN-NL-FR%20-%20V1.pdf"
retrieved_at: 2026-07-01T15:04:27.587Z
last_checked_at: 2026-07-21T21:56:51.597Z
Verification Summary
verdict: verified
checked_at: 2026-07-21T21:56:51.597Z
matched_actions: 12
action_count: 12
confidence: medium
summary: "All 12 CL2 actions map 1:1 to the DPBC02 I/O-mapping row plus the generic %S query, and WSS/auth transport values match verbatim. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "This source is the shared LightProtocol guide; it confirms the RS-232 path via DRS23202 works with the identical ASCII command set but does not state the RS-232 electrical parameters (baud/data/parity/stop) for that path."
- "baud rate not stated in source"
- "not stated in source"
- "no settable variables identified in source for this module."
- "no DPBC02-specific safety warnings, interlocks, or power-on"
- "RS-232 serial parameters (baud/data bits/parity/stop/flow) not stated in source."
- "firmware/hardware version compatibility range not stated (only min DAP 30 for CL2)."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0