Summary
The Domintell Dnipb04 B is a new-generation Domintell Ethernet communication interface module that exposes the Domintell LightProtocol over a Secured WebSocket (wss) on TCP port 17481. It acts as a LightProtocol server: third-party clients authenticate, download the installation configuration (APPINFO), then send ASCII command frames to control outputs (relays, dimmers, shutters, DMX, DALI, sound, temperature) across the Domintell bus and receive pushed status updates.
Transport
protocols:
- tcp
addressing:
# Secured WebSocket (wss). Source: "now use Secured WebSocket (wss: data are
# encrypted in encapsulated frame over HTTP protocol)".
scheme: wss
port: 17481 # "Default port 17481."
base_url: "wss://{host}:17481" # host = module IP (DHCP or static, static recommended)
auth:
# Source documents a LOGINPSW challenge-response mechanism (first generation
# accepts "LOGINPSW@:" with no password; newer generation uses REQUESTSALT +
# salted+hashed password). Not "none".
type: loginpsw
mechanism: challenge_response
hash_algorithm: SHA-512
formula: "SHA512(SHA512(password + salt) + nonce)"
# UNRESOLVED: user accounts must be pre-created in the configuration software
# (GoldenGate); credential/token storage and rotation not detailed in source.
Traits
traits:
- queryable # inferred: APPINFO, PING, %S and GETLPVER query commands present
- powerable # inferred: relay toggle/set/reset (%I/%O/none) commands present
- levelable # inferred: dimmer/volume percentage (%Dnnn) commands present
- routable # inferred: sound source selection (%An) commands present
Actions
# ===========================================================================
# System / session commands (verbatim keywords from §4.1 Reserved keywords and §5)
# ===========================================================================
- id: get_lp_version
label: Get LightProtocol Version
kind: query
command: "GETLPVER"
params: []
notes: "Available before and after session open; requires PROG M >= 43.7"
- id: discover
label: Discover Device Information
kind: query
command: "DISCOVER"
params: []
notes: "Requests info of the device hosting the LightProtocol server; requires PROG M >= 43.7"
- id: request_salt
label: Request Salt and Nonce
kind: query
command: "REQUESTSALT@{username}"
params:
- name: username
type: string
description: Registered username created in GoldenGate
notes: "Returns INFO:REQUESTSALT:USERNAME=<username>:NONCE=<nonce>:SALT=<salt>:INFO"
- id: login
label: Open Session (Login)
kind: action
command: "LOGINPSW@{username}:{hashedpsw}"
params:
- name: username
type: string
description: Registered username
- name: hashedpsw
type: string
description: 'SHA512( SHA512(password+salt) + nonce ) as hex string; first-gen devices accept "LOGINPSW@:" with no password'
notes: "On success replies INFO:Session opened:INFO"
- id: logout
label: Close Session (Logout)
kind: action
command: "LOGOUT"
params: []
- id: set_timeout
label: Set Session Timeout
kind: action
command: "TIMEOUT={minutes}"
params:
- name: minutes
type: integer
description: "Timeout in minutes; 0 disables timeout (socket closed only on LOGOUT or connection loss)"
notes: "Replies INFO:Timeout set to <n>min:INFO or INFO:Timeout disabled...:INFO"
- id: hello
label: Session Heartbeat (Hello)
kind: action
command: "HELLO"
params: []
notes: "Send every ~50s to keep session open; replies INFO:World:INFO"
- id: appinfo
label: Request Application Info
kind: query
command: "APPINFO"
params: []
notes: "Downloads full installation/module/IO list; terminated by 'END APPINFO'"
- id: ping
label: Request All Statuses (Ping)
kind: query
command: "PING"
params: []
notes: "Replies PONG followed by all cached statuses. Use sparingly (only on reconnect)."
- id: voiceinfo
label: Request Voice Assistant Configuration (VoiceInfo)
kind: query
command: "VOICEINFO"
params: []
notes: "DNET02 only; requires PROG M >= 40.0; Viewer role"
# ===========================================================================
# Legacy Input LightProtocol - module control action parameters (§4.6.c-4.6.e)
# Frame format: {ModType}{Serial}-{OutputNumber}{action_param}
# ModType = 3-char module type code (e.g. BU1, DIM, BIR, TRV, AMP, ...)
# Serial = 6-char hexadecimal serial number
# OutputNumber = 1-2 hex digits (2 for DINTDALI01)
# The distinguishing, verbatim command payload is the action parameter suffix.
# ===========================================================================
- id: module_toggle_output
label: Toggle Output
kind: action
command: "{ModType}{Serial}-{OutputNumber}"
params:
- {name: ModType, type: string, description: "3-char module type (e.g. BU1, DIM, BIR)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "1-2 hex digit output/IO index"}
notes: "Toggles output state if supported (Admin role)"
- id: ask_status
label: Ask Module/Group/Scene Status
kind: query
command: "{ModType}{Serial}-{OutputNumber}%S"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index; omit for module/group/scene status"}
notes: "Viewer role. On NewGen masters returns cached RAM value (PROG M >= 40.1 for legacy modules)"
- id: set_output
label: Set Output / Increase Value / Shutter Up
kind: action
command: "{ModType}{Serial}-{OutputNumber}%I"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "Sets output ON / increases a value variable / drives shutter up (down-output drives down). Admin role"
- id: reset_output
label: Reset Output / Decrease Value / Stop Shutter
kind: action
command: "{ModType}{Serial}-{OutputNumber}%O"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "Resets output OFF / decreases a value variable / stops shutter. Admin role"
- id: set_percent
label: Set Dimmer/Value Percentage
kind: action
command: "{ModType}{Serial}-{OutputNumber}%D{percent}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: percent, type: integer, description: "Decimal 0-100 (1-3 digits), e.g. 1, 23, 100"}
notes: "Assigns a percentage to a dimmable output or sets a value variable. Admin role"
- id: increase_percent
label: Increase Value/Dimmer/Volume
kind: action
command: "{ModType}{Serial}-{OutputNumber}%I%D{step}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: step, type: integer, description: "Decimal 1-100 increase amount"}
notes: "AMP module ignores step (always +1%). Broken for DAP 31-41.4 inclusive. Admin role"
- id: decrease_percent
label: Decrease Value/Dimmer/Volume
kind: action
command: "{ModType}{Serial}-{OutputNumber}%O%D{step}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: step, type: integer, description: "Decimal 1-100 decrease amount"}
notes: "AMP module ignores step (always -1%). Broken for DAP 31-41.4 inclusive. Admin role"
- id: increase_percent_alt
label: Increase Value/Dimmer/Volume (alt mnemonic)
kind: action
command: "{ModType}{Serial}-{OutputNumber}%DI{step}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: step, type: integer, description: "Decimal 1-100 increase amount"}
notes: "Same as %I%Dnnn; available from version 41.5. Admin role"
- id: decrease_percent_alt
label: Decrease Value/Dimmer/Volume (alt mnemonic)
kind: action
command: "{ModType}{Serial}-{OutputNumber}%DO{step}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: step, type: integer, description: "Decimal 1-100 decrease amount"}
notes: "Same as %O%Dnnn; available from version 41.5. Admin role"
- id: start_dimming
label: Start Dimming
kind: action
command: "{ModType}{Serial}-{OutputNumber}%DB"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "Starts dimming a dimmer/volume output. Admin role"
- id: stop_dimming
label: Stop Dimming
kind: action
command: "{ModType}{Serial}-{OutputNumber}%DE"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "Stops dimming a dimmer/volume output. Admin role"
- id: set_dmx_value
label: Set DMX Channel Value
kind: action
command: "{ModType}{Serial}-{Device}-{Channel}%X{value}"
params:
- {name: ModType, type: string, description: "3-char module type (DMX)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: Device, type: string, description: "DMX slave/canal number"}
- {name: Channel, type: string, description: "Channel index"}
- {name: value, type: integer, description: "Decimal 0-255 (1-3 digits)"}
notes: "Assigns a 0-255 value to a DMX output. Admin role"
- id: set_heating_setpoint
label: Set Heating Temperature Setpoint
kind: action
command: "{ModType}{Serial}-{OutputNumber}%T{temp}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: temp, type: number, description: "Floating point Celsius, e.g. 21.5"}
notes: "Sets new heating setpoint. Admin role"
- id: set_cooling_setpoint
label: Set Cooling Temperature Setpoint
kind: action
command: "{ModType}{Serial}-{OutputNumber}%U{temp}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: temp, type: number, description: "Floating point Celsius, e.g. 25.0"}
notes: "Sets new cooling setpoint. Admin role"
- id: set_temperature_mode
label: Set Temperature Mode
kind: action
command: "{ModType}{Serial}-{OutputNumber}%M{mode}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: mode, type: integer, description: "1=away, 2=auto, 5=comfort, 6=anti-freeze"}
notes: "Admin role"
- id: set_regulation_mode
label: Set Regulation Mode
kind: action
command: "{ModType}{Serial}-{OutputNumber}%R{mode}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: mode, type: integer, description: "0=off, 1=heating, 2=cooling, 3=mixed"}
notes: "Admin role"
- id: set_color_cycle
label: Set DMX Color Cycle
kind: action
command: "{ModType}{Serial}-{OutputNumber}%C{state}"
params:
- {name: ModType, type: string, description: "3-char module type (DMX)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: state, type: integer, description: "(none)=toggle, 1=start, 0=stop"}
notes: "Source: 'not yet available'. Admin role"
- id: select_sound_source
label: Select Sound Module Source
kind: action
command: "{ModType}{Serial}-{OutputNumber}%A{source}"
params:
- {name: ModType, type: string, description: "3-char module type (AMP)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: source, type: integer, description: "1-4 auxiliary source, 5 FM tuner"}
notes: "Broken for DAP 31-41.4 inclusive. Admin role"
- id: next_sound_source
label: Jump to Next Sound Source
kind: action
command: "{ModType}{Serial}-{OutputNumber}%I%A%AN"
params:
- {name: ModType, type: string, description: "3-char module type (AMP)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "From v41.7. Admin role"
- id: previous_sound_source
label: Jump to Previous Sound Source
kind: action
command: "{ModType}{Serial}-{OutputNumber}%O%A%AP"
params:
- {name: ModType, type: string, description: "3-char module type (AMP)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "From v41.7. Admin role"
- id: set_tuner_frequency
label: Set Tuner Frequency
kind: action
command: "{ModType}{Serial}-{OutputNumber}%F{freq}"
params:
- {name: ModType, type: string, description: "3-char module type (AMP)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: freq, type: number, description: "Floating point MHz, e.g. 99.1"}
notes: "Broken for DAP 31-41.4 inclusive. Admin role"
- id: seek_next_frequency
label: Seek Next Tuner Frequency
kind: action
command: "{ModType}{Serial}-{OutputNumber}%I%F%FN"
params:
- {name: ModType, type: string, description: "3-char module type (AMP)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "From v41.7. Admin role"
- id: seek_previous_frequency
label: Seek Previous Tuner Frequency
kind: action
command: "{ModType}{Serial}-{OutputNumber}%O%F%FP"
params:
- {name: ModType, type: string, description: "3-char module type (AMP)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "From v41.7. Admin role"
- id: shutter_move_up
label: Move Shutter Up
kind: action
command: "{ModType}{Serial}-{OutputNumber}%H"
params:
- {name: ModType, type: string, description: "3-char module type (TRV/TRP/V24/TPV)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "Moves shutter High. Admin role"
- id: shutter_move_down
label: Move Shutter Down
kind: action
command: "{ModType}{Serial}-{OutputNumber}%L"
params:
- {name: ModType, type: string, description: "3-char module type (TRV/TRP/V24/TPV)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
notes: "Moves shutter Low. Admin role"
- id: set_clock_data
label: Change Clock Data
kind: action
command: "{ModType}{Serial}%K{hh:mm:ss} {WD} {DD}/{MM}/{YY} {offset}"
params:
- {name: ModType, type: string, description: "3-char module type (CLK)"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: "hh:mm:ss", type: string, description: "24h execution time"}
- {name: WD, type: string, description: "Hex day mask OR-ed: 01=Sun,02=Mon,04=Tue,08=Wed,10=Thu,20=Fri,40=Sat,80=disabled"}
- {name: "DD/MM/YY", type: string, description: "Date restriction, 00 = no restriction"}
- {name: offset, type: string, description: "Optional astronomical-clock offset oh:om:os; '-' anticipates, else postpones (from v43)"}
notes: "Broken for DAP 31-42.x inclusive. Admin role"
- id: simulate_push
label: Simulate Button Push
kind: action
command: "{ModType}{Serial}-{OutputNumber}%P{action}"
params:
- {name: ModType, type: string, description: "3-char module type"}
- {name: Serial, type: string, description: "6-char hex serial number"}
- {name: OutputNumber, type: string, description: "IO index"}
- {name: action, type: integer, description: "1=begin short push, 2=end short push, 3=begin long push, 4=end long push"}
notes: "Admin role"
Feedbacks
- id: pong
type: ack
description: 'Acknowledgement to PING; statuses of all IO follow (no end-of-list marker)'
- id: info_message
type: text
description: 'System info wrapped in INFO:...:INFO tags (e.g. INFO:Session opened:INFO, INFO:World:INFO, INFO:Timeout set to <n>min:INFO, INFO:Session closed by server:INFO, INFO:Session timeout:INFO)'
- id: error_message
type: text
description: 'Error wrapped in ERROR:...:ERROR tags (e.g. ERROR:Invalid LOGINPSW..., ERROR:Invalid credentials:ERROR, ERROR:Invalid command. Use REQUESTSALT...:ERROR, ERROR:Command denied. Read-only user:ERROR)'
- id: salt_nonce_reply
type: text
description: 'INFO:REQUESTSALT:USERNAME=<user>:NONCE=<nonce>:SALT=<salt>:INFO'
- id: discover_reply
type: text
description: 'INFO:I AM A DGQG04-192.168.1.250-169.254.162.138-17481-54000001WSS:INFO'
- id: lp_version_reply
type: text
description: 'INFO:LPVER=<x.y.z>:INFO'
- id: output_status
type: bitmask
description: 'Oxx (outputs) - LSB=output 1, concatenated bytes for >8 outputs'
- id: input_status
type: bitmask
description: 'Ixx (inputs) - LSB=input 1, concatenated bytes for >8 inputs'
- id: dimmer_status
type: percent
description: 'Dxx - 2 hex bytes per output (%) e.g. 6432 = out1 100%, out2 50%'
- id: dmx_status
type: raw
description: 'Xxx - 2 hex bytes per channel; trailing CC byte = color cycle running (v39.1+, RGBx)'
- id: temperature_status
type: text
description: 'T/U - measure, setpoint, mode (ABSENCE/AUTO/COMFORT/FROST / HEATING/COOLING/MIXED/AUTOHVAC/DRY/FAN), profile value'
- id: ir_remote_key
type: raw
description: 'Cxx - two hex bytes; 00 = key released'
- id: sound_status
type: text
description: 'S - e.g. 1-32-TUNE-63-03E8 = output 1, 50%, tuner, 99.1MHz (module v5+)'
- id: time_broadcast
type: text
description: 'HH:MM DD/MM/YYYY sent each minute (YYYY 4-digit on NewGen; suppressed for DAP 31-41.6 inclusive)'
- id: firmware_warning
type: text
description: '"!! PLEASE UPGRADE DETH02/DRS23202 FIRMWARE ..." / "! PLEASE RESTART MASTER 0x???????? !"'
# UNRESOLVED: per-module NewGen (/type) status payloads (§4.8.k) not present in
# the supplied refined source excerpt - referenced but not included verbatim.
Variables
- id: dimmer_level
type: percent
range: "0-100"
description: 'Dimmer / 0-10V / analog output level (command %Dnnn, status Dxx)'
- id: volume_level
type: percent
range: "0-100"
description: 'DAMPLI01 output volume (command %Dnnn; step ignored on AMP)'
- id: dmx_value
type: integer
range: "0-255"
description: 'DMX channel value (command %Xnnn, status Xxx)'
- id: heating_setpoint
type: number
unit: Celsius
description: 'Heating setpoint (command %Tnn.n)'
- id: cooling_setpoint
type: number
unit: Celsius
description: 'Cooling setpoint (command %Unn.n)'
- id: temperature_mode
type: enum
values: [1_away, 2_auto, 5_comfort, 6_antifreeze]
description: 'Temperature mode (command %Mn)'
- id: regulation_mode
type: enum
values: [0_off, 1_heating, 2_cooling, 3_mixed]
description: 'Regulation mode (command %Rn)'
- id: sound_source
type: enum
values: [1_aux, 2_aux, 3_aux, 4_aux, 5_fm_tuner]
description: 'Sound module source (command %An)'
- id: value_variable
type: percent
range: "0-100"
description: 'Virtual value variable (VAR module, command %Dnnn)'
Events
- id: status_push
description: 'Unsolicited status frame pushed by server on any IO state change: {ModType}{Serial}{-IO}{DataType}{Data}'
- id: session_closed_by_server
description: 'INFO:Session closed by server:INFO - server closes connection itself (e.g. new DAP file received); no LOGOUT from client'
- id: session_timeout
description: 'INFO:Session timeout:INFO - no action/HELLO received before timeout'
- id: time_tick
description: 'Current time broadcast each minute (HH:MM DD/MM/YYYY)'
- id: upgrade_notice
description: 'Unsolicited "!! PLEASE UPGRADE ... FIRMWARE" warning when an incompatible firmware/new module type is detected'
Macros
# UNRESOLVED: no explicit multi-step sequences described in source.
Safety
confirmation_required_for: []
interlocks:
- id: rj45_bus_separation
severity: critical
description: >
WARNING (verbatim): "Do NOT connect Domintell bus on the RJ45 connector,
this can cause fatal damages to the module." The RJ45 connects only to the
LAN (UTP Cat5+) via a switch/router.
- id: fan_valve_interlock
severity: warning
description: >
DFAN01 valves always follow the setpoint regulation; toggling valves
requires first changing the setpoint on the associated sensor. If valves
are OFF the fan will not start.
# UNRESOLVED: no other interlock / power-on sequencing procedures stated.
Notes
- Transport is Secured WebSocket (wss) over TCP, default port 17481. Connect with
wscat -n -c wss://<ip>:17481. - Connection limits: DNET01/DNET02 up to 8 simultaneous wss connections; DGQG02/DGQG04 up to 2.
- Roles (PROG M >= 43.7):
None(disabled),Viewer(read-only — cannot trigger outputs or simulate pushes),Administrator(full access). Query/status commands require Viewer minimum; control commands require Administrator. - Strings are NOT case sensitive (lowercase auto-uppercased). ASCII recommended;
<CR>/<LF>/<TAB>map to 0x0D/0x0A/0x09. Frames can no longer be concatenated with&. - APPINFO line 1 carries DAP version:
APPINFO (PROG M 33.0 ...) => <name>.dap :. Module-type availability and several commands are gated on thisPROG Mversion. PINGreturns cached RAM statuses on NewGen masters — it does NOT poll modules live. Do not call PING periodically; only on reconnect. PreferHELLO(~every 50s) to keep a session open.- Several commands are explicitly broken for DAP versions 31–41.4/41.6/42.x (noted per-action); verify
PROG Mfrom APPINFO before using them.
Spec output above. Key gaps flagged UNRESOLVED: model name mismatch (source covers family, not "Dnipb04 B" verbatim), NewGen `/type` IO payloads (§4.8.j-k) absent from excerpt, voltage/power specs not stated.
## Provenance
```yaml
source_domains:
- pro2.mydomintell.com
- pro.mydomintell.com
source_urls:
- https://pro2.mydomintell.com/share/manual/lightprotocol/domintell_ligthprotocol-v16-20250319.pdf
- https://pro.mydomintell.com/share/manual/lightprotocol/domintell_ligthprotocol-v13-20230222.pdf
retrieved_at: 2026-07-03T09:01:44.675Z
last_checked_at: 2026-07-07T11:35:06.175Z
Verification Summary
verdict: verified
checked_at: 2026-07-07T11:35:06.175Z
matched_actions: 37
action_count: 37
confidence: medium
summary: "All 37 spec actions map one-to-one to wire-level tokens documented verbatim in source; transport wss/17481/LOGINPSW confirmed. (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "exact hardware model \"Dnipb04 B\" not named in source; source is a"
- "user accounts must be pre-created in the configuration software"
- "per-module NewGen (/type) status payloads (§4.8.k) not present in"
- "no explicit multi-step sequences described in source."
- "no other interlock / power-on sequencing procedures stated."
- "model name mismatch (source covers family, not \"Dnipb04 B\" verbatim), NewGen `/type` IO payloads (§4.8.j-k) absent from excerpt, voltage/power specs not stated."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0