Difference between revisions of "DUELUX"

From HSYCO
Jump to navigation Jump to search
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
DUELUX is a lighting system based on the DALI-2 ndustry-standardized protocol for lighting control. HSYCO integrates this system and communicates with it through the DLCP gateway module via a TCP/IP connection.
+
DUELUX is a lighting system based on the DALI-2 industry-standard protocol for lighting control. HSYCO integrates this system and communicates with it through the DLCP gateway module via a TCP/IP connection.
  
 
[[Category:I/O Server]]
 
[[Category:I/O Server]]
  
 
== HSYCO Configuration ==
 
== HSYCO Configuration ==
Add an DUELUX I/O Server in the [[Settings#I/O Servers|I/O Servers section of the Settings]] and set its parameters:
+
Add an DUELUX I/O Server in the [[Settings#I/O Servers|I/O Servers section of the Settings]] and set its parameters.
 +
 
 +
{{note|Note that the DUELUX I/O Server counts as 1/4 unit in the I/O servers license total.}}
 +
 
  
 
=== Communication ===
 
=== Communication ===
Line 32: Line 35:
  
 
|rowspan="2"|groupdiscovery
 
|rowspan="2"|groupdiscovery
|rowspan="2"|false
+
|rowspan="2"|true
 
|true
 
|true
 
|auto-detects DALI groups as configured in the DLCP, and automatically creates the list of all detected devices and  individual data points in the systemtopo.txt file. Should be enabled to allow the automatic update of (button) objects’ states
 
|auto-detects DALI groups as configured in the DLCP, and automatically creates the list of all detected devices and  individual data points in the systemtopo.txt file. Should be enabled to allow the automatic update of (button) objects’ states
Line 52: Line 55:
 
|rowspan="2"|false
 
|rowspan="2"|false
 
|true
 
|true
|polls the DLCP areas/scene set point and delay configuration settings
+
|polls the DLCP areas/scenarios set point and delay configuration settings
 
|-
 
|-
 
|false
 
|false
Line 118: Line 121:
 
|offline
 
|offline
 
|R
 
|R
|HSYCO can't connect to the panel
+
|HSYCO can't connect to the DLCP
 
|-
 
|-
  
|rowspan="6"|g<n>
+
|rowspan="3"|clock
|on
+
|yyyy-mm-dd hh:mm:ss
|W
 
|set the light level of the group to the last level set before the off command
 
|-
 
|rowspan="2"|off
 
 
|R
 
|R
|group is off
+
|the DLCP clock current time
|-
 
|W
 
|switch group off
 
|-
 
|rowspan="2"|1...100%
 
|R
 
|current light level
 
|-
 
|W
 
|set the light level of the group to the specified value
 
|-
 
|X/Y
 
|W
 
|set the light level of the group to the specified fraction (e.g. a value of 1/5 corresponds to 20%)
 
 
|-
 
|-
 
|rowspan="2"|<n>.lux<sup>[[#note1|[Note 1]]]</sup>
 
 
|read
 
|read
 
|W
 
|W
|request the reading of the light intensity measured by the targeted MSensor
+
|read the DLCP clock, and the delta with HSYCO’s time
 
|-
 
|-
|<lux>
+
|sync
|R
 
|the light intensity measured by the targeted MSensor corresponds to the reported value (in lux). The reading must be requested via the “read” function
 
|-
 
 
 
|broadcast.lux<sup>[[#note1|[Note 1]]]</sup>
 
|read
 
 
|W
 
|W
|request the reading of the light intensity on all the MSensors
+
|set the DLCP clock to HSYCO’s current time
 
|-
 
|-
  
|e<x>.lux<sup>[[#note2|[Note 2]]]</sup>
+
|clock.delta
where <x> is the eDALI address of the light sensor of the MSensor
+
|integer number
|<lux>
 
 
|R
 
|R
|the light intensity measured by the targeted MSensor corresponds to the reported value (in lux)
+
|the delta time in seconds between the DLCP and HSYCO clocks. A positive number means that the DLCP clock is ahead of HSYCO
 
|-
 
|-
  
|rowspan="3"|motion
+
|rowspan="2" |a<n>.s<m>.auto
|g<m><sup>[[#note1|[Note 1]]]</sup>
+
|0
 
|R
 
|R
|a motion event has been reported to group <m>
+
|area <n> scenario <m> automatic control is off
 
|-
 
|-
|style="white-space:nowrap"|broadcast<sup>[[#note1|[Note 1]]]</sup>
+
|1
 
|R
 
|R
|a motion event has been broadcasted
+
|area <n> scenario <m> automatic control is on
 
|-
 
|-
|e<x><sup>[[#note2|[Note 2]]]</sup>
+
 
 +
|rowspan="2" |a<n>.s<m>.delay
 +
|rowspan="2" |0...65535
 
|R
 
|R
|a motion event has been generated by the MSensor’s light sensor with eDALI address <x>
+
|area <n> scenario <m> delay in seconds (refreshed every 10 seconds)
 
|-
 
|-
 
|<n>.scene
 
g<m>.scene <br/>
 
broadcast.scene
 
|0...15
 
 
|W
 
|W
|set the light level of the target to the value stored for the specified scene number (from 0 to 15)
+
|set area <n> scenario <m> delay in seconds
 
|-
 
|-
  
|rowspan="2"|command
+
|rowspan="2" |a<n>.s<m>.setpoint
|rowspan="2"|<xxyy>
+
|rowspan="2" |0...65535
 
|R
 
|R
|the 2-byte hexadecimal DALI frame<sup>[[#note3|[Note 3]]]</sup> has been sent to the system
+
|area <n> scenario <m> setpoint (refreshed every 10 seconds)
 
|-
 
|-
 
|W
 
|W
|sends the 2-byte hexadecimal DALI frame<sup>[[#note3|[Note 3]]]</sup> to the system
+
|set area <n> scenario <m> setpoint level
 
|-
 
|-
  
|rowspan="4"|monitor
+
|rowspan="1"|ai<n>.<m>
|none
+
|0...255
|W
+
|R
|none of the DALI frames detected on the bus will be reported
+
|analog value for input <m> of device <n>
 
|-
 
|-
|ignored
+
 
|W
+
|rowspan="4"|c<n>
|only the DALI frames detected on the bus not processed by the driver will be reported
+
|rowspan="2"|0
 +
|R
 +
|binary command <n> off
 
|-
 
|-
|all
 
 
|W
 
|W
|all the DALI frames detected on the bus will be reported
+
|set command <n> off (setting value to "off" is equivalent to "0")
 
|-
 
|-
|<xxyy>
+
|rowspan="2"|1
 
|R
 
|R
|the reported 2-byte hexadecimal DALI frame<sup>[[#note3|[Note 3]]]</sup> has been detected on the bus
+
|binary command <n> on
 
|-
 
|-
 
|rowspan="2"|refresh
 
|0
 
|W
 
|the secondary properties of the devices (minimum and maximum levels, fade time and fade rate) won’t be rechecked on every monitor loop iteration
 
|-
 
|1
 
 
|W
 
|W
|the secondary properties of the devices (minimum and maximum levels, fade time and fade rate) will be rechecked on every monitor loop iteration
+
|set command <n> on (setting value to "on" is equivalent to "1")
 
|-
 
|-
  
|rowspan="2"|<n>.error
+
|rowspan="2" |di<n>.<m>
g<m>.error <br/>
 
broadcast.error
 
 
|0
 
|0
 
|R
 
|R
|the target works properly
+
|digital input <m> of device address <n> is off
 
|-
 
|-
 
|1
 
|1
 
|R
 
|R
|the target is in an error state
+
|digital input <m> of device address <n> is on
 
|-
 
|-
  
|}
+
|rowspan="6"|g<n>
 
+
|on
<span id="note1">
+
|W
;Note 1 : Only available if the MSensor is configured to work in Direct-master mode (default mode).
+
|set the light level of the group to the last level set before the off command
</span>
+
|-
 
+
|rowspan="2"|off
<span id="note2">
+
|R
;Note 2 : Only available if the MSensor is configured to work in Indirect-master mode.
+
|group is off
</span>
 
 
 
<span id="note3">
 
;Note 3 : The 2-byte DALI frames consist of an 8-bit address part and an 8-bit command part.
 
</span>
 
 
 
The address byte is formatted as follows:
 
 
 
{| class="wikitable"
 
!Type of Address
 
!Byte Description
 
 
|-
 
|-
 
+
|W
|Individual address
+
|switch group off
|0AAAAAAS  (AAAAAA = 0 .. 63, S = 0/1)
 
 
|-
 
|-
 
+
|rowspan="2"|1...100%
|Group Address
+
|R
|100AAAAS  (AAAA = 0 .. 15, S = 0/1)
+
|current light level
 
|-
 
|-
 
+
|W
|Broadcast Address
+
|set the light level of the group to the specified value (the % leading character is optional. Value range is from 0 to 100)
|1111111S  (S = 0/1)
 
 
|-
 
|-
|}
+
|X/Y
 
+
|W
The command byte is to be interpreted as an arc power level (light intensity) if bit S is 0. The arc power can range between 00 (off) and and FE (maximum level) expressed in hexadecimal. A 1 in the position S means that the command byte is to be interpreted as a DALI command. Refer to the following table for a list of all available commands:
+
|set the light level of the group to the specified fraction (e.g. a value of 1/5 corresponds to 20%)
 
 
{| class="wikitable"
 
!Command
 
!Description
 
 
|-
 
|-
  
|00
+
|rowspan="6"|o<n>
|Extinguish the lamp without fading
+
|on
 +
|W
 +
|set the light level of a specific output address to the last level set before the off command
 
|-
 
|-
|01
+
|rowspan="2"|off
|Dim up 200 ms using the selected fade rate
+
|R
 +
|output is off
 
|-
 
|-
|02
+
|W
|Dim down 200 ms using the selected fade rate
+
|switch output off
 
|-
 
|-
|03
+
|rowspan="2"|1...100%
|Set the actual arc power level one step higher without fading
+
|R
 +
|current light level
 
|-
 
|-
|04
+
|W
|Set the actual arc power level one step lower without fading
+
|set the light level of the output to the specified value (the % leading character is optional. Value range is from 0 to 100)
 
|-
 
|-
|05
+
|X/Y
|Set the actual arc power level to the maximum value
+
|W
 +
|set the light level of the output to the specified fraction (e.g. a value of 1/5 corresponds to 20%)
 
|-
 
|-
|06
+
 
|Set the actual arc power level to the minimum value
+
|rowspan="1"|detected.input.ai<n>.<m>
 +
|<type>
 +
|R
 +
|analog input <m> of device address <n> detected. Types: light sensor
 
|-
 
|-
|07
+
 
|Set the actual arc power level one step lower without fading
+
|rowspan="1"|detected.input.di<n>.<m>
 +
|<type>
 +
|R
 +
|digital input <m> of device address <n> detected. Types: push-button, switch, occupancy sensor
 
|-
 
|-
|08
+
 
|Set the actual arc power level one step higher without fading
+
|rowspan="1"|detected.output.o<n>
|-
+
|<type>
|10 + scene
+
|R
|Set the light level to the value stored for the selected scene
+
|output address <n> detected. Types: lamp
|-
 
|20
 
|Reset the parameters to default settings
 
|-
 
|21
 
|Store the current light level in the DTR
 
|-
 
|2A
 
|Store the value in the DTR as the maximum level
 
|-
 
|2B
 
|Store the value in the DTR as the minimum level
 
|-
 
|2C
 
|Store the value in the DTR as the system failure level
 
|-
 
|2D
 
|Store the value in the DTR as the power on level
 
|-
 
|2E
 
|Store the value in the DTR as the fade time
 
|-
 
|2F
 
|Store the value in the DTR as the fade rate
 
 
|-
 
|-
|40 + scene
 
|Store the value in the DTR as the selected scene
 
|-
 
|50 + scene
 
|Remove the selected scene from the slave unit
 
|-
 
|60 + group
 
|Add the slave unit to the selected group
 
|-
 
|70 + group
 
|Remove the slave unit from the selected group
 
|-
 
|80
 
|Store the value in the DTR as a short address
 
|-
 
|90
 
|Returns the status of the slave as XX
 
|-
 
|91
 
|Check if the slave is working
 
|-
 
|92
 
|Check if there is a lamp failure
 
|-
 
|93
 
|Check if the lamp is operating
 
|-
 
|94
 
|Check if the slave has received a level out of limit
 
|-
 
|95
 
|Check if the slave is in reset state
 
|-
 
|96
 
|Check if the slave is missing a short address
 
|-
 
|97
 
|Returns the version number as XX
 
|-
 
|98
 
|Returns the content of the DTR as XX
 
|-
 
|99
 
|Returns the device type as XX
 
|-
 
|9A
 
|Returns the physical minimum level as XX
 
|-
 
|9B
 
|Check if the slave is in power failure mode
 
|-
 
|A0
 
|Returns the current light level as XX
 
|-
 
|A1
 
|Returns the maximum allowed light level as XX
 
|-
 
|A2
 
|Returns the minimum allowed light level as XX
 
|-
 
|A3
 
|Return the power up level as XX
 
|-
 
|A4
 
|Returns the system failure level as XX
 
|-
 
|A5
 
|Returns the fade time as X and the fade rate as Y
 
|-
 
|B0 + scene
 
|Returns the light level XX for the selected scene
 
|-
 
|C0
 
|Returns a bit pattern XX indicating which group (0-7) the slave belongs to
 
|-
 
|C1
 
|Returns a bit pattern XX indicating which group (8-15) the slave belongs to
 
|-
 
|C2
 
|Returns the high bits of the random address as HH
 
|-
 
|C3
 
|Return the middle bit of the random address as MM
 
|-
 
|C4
 
|Returns the lower bits of the random address as LL
 
|-
 
|}
 
  
Other than the above described commands, it is possible to send the following 2-byte DALI frames:
+
|rowspan="1"|o<n>.time
 
+
|0...2^32 - 1
{| class="wikitable"
+
|R
!Frame
+
|the amount of time the output has been turned on, in seconds (refreshed every 60 seconds)
!Description
 
 
|-
 
|-
  
|A100
 
|All special mode processes shall be terminated
 
|-
 
|A3XX
 
|Store value XX in the DTR
 
|-
 
|A5XX
 
|Initialize addressing commands for slaves with address XX
 
|-
 
|A700
 
|Generate a new random address
 
|-
 
|A900
 
|Compare the random address with the search address
 
|-
 
|AB00
 
|Withdraw from the compare process
 
|-
 
|B1HH
 
|Store value HH as the high bits of the search address
 
|-
 
|B3MM
 
|Store value MM as the middle bits of the search address
 
|-
 
|B5LL
 
|Store value LL as the lower bits of the search address
 
|-
 
|B7XX
 
|Program the selected slave with short address XX
 
|-
 
|B9XX
 
|Check if the selected slave has short address XX
 
|-
 
|BB00
 
|The selected slave returns its short address XX
 
|-
 
|BD00
 
|Go into physical selection mode
 
|-
 
 
|}
 
|}
 
The value of the events ID.command and ID.monitor is expressed as a 4-digits string “XXYY” representing the hexadecimal value (upper case letters) of the two bytes. For instance, to send the command 00 to the group 1 of our system “tr”, the following syntax will apply:
 
tr.command = 8300
 
  
 
== User Interface ==
 
== User Interface ==
 
All the devices that have been defined in the systemtopo.txt database are automatically listed in the Web Editor. Adding a slider to control a dimmer requires just a few clicks and no additional EVENTS logic.
 
All the devices that have been defined in the systemtopo.txt database are automatically listed in the Web Editor. Adding a slider to control a dimmer requires just a few clicks and no additional EVENTS logic.
 
 
[[File:IO Servers Tridonic Project Editor.png|center|border|600px]]
 
  
 
== Release Notes ==
 
== Release Notes ==

Latest revision as of 10:24, 21 September 2020

DUELUX is a lighting system based on the DALI-2 industry-standard protocol for lighting control. HSYCO integrates this system and communicates with it through the DLCP gateway module via a TCP/IP connection.

HSYCO Configuration

Add an DUELUX I/O Server in the I/O Servers section of the Settings and set its parameters.

Note that the DUELUX I/O Server counts as 1/4 unit in the I/O servers license total.


Communication

  • IP Address: host name or IP address of the DLCP gateway
  • IP Port: TCP/IP port of the DLCP gateway (defaults to 80 if not set)

High Availability

  • Shutdown when inactive: defaults to false.

Options

ID Default Values Description
startupevents false true generate IO events also during the driver’s start-up phase
false start generating events only after HSYCO is aligned with the current status of the system
groupdiscovery true true auto-detects DALI groups as configured in the DLCP, and automatically creates the list of all detected devices and individual data points in the systemtopo.txt file. Should be enabled to allow the automatic update of (button) objects’ states
false auto-detect for input devices is disabled
outputdiscovery true true auto-detects DALI output devices as configured in the DLCP, and automatically creates the list of all detected devices and individual data points in the systemtopo.txt file. Should be enabled to allow the automatic update of (button) objects’ states
false auto-detect for output devices is disabled
areasconfiguration false true polls the DLCP areas/scenarios set point and delay configuration settings
false areas configuration polling disabled
detectevents false true generate forced events when a device is detected at start-up
false do not generate events when a device is detected at start-up

The Device Configuration Database

The systemtopo.txt file contains the list of all groups and individual outputs that could be directly associated to graphic objects in the Web-based user interface. This file can be filled manually or automatically by HSYCO at start-up. To enable automatic discovery, set the 'groupdiscovery' and/or 'outputdiscovery' option to true.

This is an example of an automatically generated systemtopo.txt file:

(devices)
dlcp.g1 : LIGHT ; DIMMER ; G1
dlcp.g10 : LIGHT ; DIMMER ; G10
dlcp.g11 : LIGHT ; DIMMER ; G11
dlcp.g12 : LIGHT ; DIMMER ; G12
dlcp.g13 : LIGHT ; DIMMER ; G13
dlcp.g14 : LIGHT ; DIMMER ; G14
dlcp.g15 : LIGHT ; DIMMER ; G15
dlcp.g16 : LIGHT ; DIMMER ; G16
dlcp.g2 : LIGHT ; DIMMER ; G2
dlcp.g3 : LIGHT ; DIMMER ; G3
dlcp.g4 : LIGHT ; DIMMER ; G4
dlcp.g5 : LIGHT ; DIMMER ; G5
dlcp.g6 : LIGHT ; DIMMER ; G6
dlcp.g7 : LIGHT ; DIMMER ; G7
dlcp.g8 : LIGHT ; DIMMER ; G8
dlcp.g9 : LIGHT ; DIMMER ; G9
dlcp.o1 : LIGHT ; DIMMER ; O1
dlcp.o2 : LIGHT ; DIMMER ; O2
dlcp.o3 : LIGHT ; DIMMER ; O3
dlcp.o4 : LIGHT ; DIMMER ; O4

You should then manually add comments and other optional parameters.

Datapoints

ID Value R/W Description
connection online R connection established
offline R HSYCO can't connect to the DLCP
clock yyyy-mm-dd hh:mm:ss R the DLCP clock current time
read W read the DLCP clock, and the delta with HSYCO’s time
sync W set the DLCP clock to HSYCO’s current time
clock.delta integer number R the delta time in seconds between the DLCP and HSYCO clocks. A positive number means that the DLCP clock is ahead of HSYCO
a<n>.s<m>.auto 0 R area <n> scenario <m> automatic control is off
1 R area <n> scenario <m> automatic control is on
a<n>.s<m>.delay 0...65535 R area <n> scenario <m> delay in seconds (refreshed every 10 seconds)
W set area <n> scenario <m> delay in seconds
a<n>.s<m>.setpoint 0...65535 R area <n> scenario <m> setpoint (refreshed every 10 seconds)
W set area <n> scenario <m> setpoint level
ai<n>.<m> 0...255 R analog value for input <m> of device <n>
c<n> 0 R binary command <n> off
W set command <n> off (setting value to "off" is equivalent to "0")
1 R binary command <n> on
W set command <n> on (setting value to "on" is equivalent to "1")
di<n>.<m> 0 R digital input <m> of device address <n> is off
1 R digital input <m> of device address <n> is on
g<n> on W set the light level of the group to the last level set before the off command
off R group is off
W switch group off
1...100% R current light level
W set the light level of the group to the specified value (the % leading character is optional. Value range is from 0 to 100)
X/Y W set the light level of the group to the specified fraction (e.g. a value of 1/5 corresponds to 20%)
o<n> on W set the light level of a specific output address to the last level set before the off command
off R output is off
W switch output off
1...100% R current light level
W set the light level of the output to the specified value (the % leading character is optional. Value range is from 0 to 100)
X/Y W set the light level of the output to the specified fraction (e.g. a value of 1/5 corresponds to 20%)
detected.input.ai<n>.<m> <type> R analog input <m> of device address <n> detected. Types: light sensor
detected.input.di<n>.<m> <type> R digital input <m> of device address <n> detected. Types: push-button, switch, occupancy sensor
detected.output.o<n> <type> R output address <n> detected. Types: lamp
o<n>.time 0...2^32 - 1 R the amount of time the output has been turned on, in seconds (refreshed every 60 seconds)

User Interface

All the devices that have been defined in the systemtopo.txt database are automatically listed in the Web Editor. Adding a slider to control a dimmer requires just a few clicks and no additional EVENTS logic.

Release Notes

3.7.0

  • initial release


DUELUX is a registered trademark of DUEMMEGI SRL. DALI, the DALI Logo, DALI-2 and the DALI-2 Logo are trademarks in various countries in the exclusive use of the Digital Illumination Interface Alliance.