Domino
The DOMINO system is DUEMMEGI’s proprietary bus architecture for home automation. HSYCO fully integrates with this system through the DFCP control and gateway module, and its FXP-XT serial communication protocol. A serial connection between the DFCP and the HSYCO SERVER is required for the integration, either directly through the server’s RS-232 port or via the RS-232 port of a supported serial to IP gateway, including the WEBS module.
Contents
Communication
Employ a DE-9 (often called DB-9) male-female RS-232 straight cable to connect the RS-232 DFCP port to the serial port on HSYCO SERVER or serial gateway. The communication baud rate can be set to 9600, 38400, 57600 or 115200 bps, according to the DFCP serial port settings. The protocol requires 8bit data, no parity, one stop bit, no flow control. A speed of 115200 bps is recommended to achieve good performance, particularly when the number of devices connected to the bus is large.
HSYCO Configuration
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 | ||
inputdiscovery | false | true | auto-detects DOMINO’s input devices as configured in the DFCP, 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 DOMINO’s output devices as configured in the DFCP, 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 | ||
virtualdiscovery | false | true | auto-detects DOMINO’s virtual points for input and output devices as configured in the DFCP, and automatically creates the list of all detected virtual data points in the systemtopo.txt file. Should be enabled to allow the automatic update of (button) objects’ states |
false | auto-detect for devices’ virtual data points is disabled | ||
virtualpoints | false | <n> ≤ 2033 | enables polling for the first n virtual points of the DFCP. Enable this option only if you need to generate I/O events based on these virtual points |
true | enables polling for all the 2032 virtual points of the DFCP | ||
false | polling of the DFCP virtual data points is disabled |
inim.ini
The inim.ini file is a specific configuration file located in the root directory.
This file is required to provide the I/O Server with the mapping between the board terminals and the respective zones or outputs when a configuration different from the default one is used.
The default configuration for the SmartLiving 515 is shown in the following diagram:
And here is default configuration for SmartLiving 1050 and 10100 (for the 10100 model this diagram must be extended to 100 terminals and 40 expanders):
If the inim.ini file is not created or it does not contain specifications for our I/O server, then the above configurations are used.
If, on the other hand, you are using a custom configuration, then, for each used terminal of the panel, expanders, and keypads you must specify its configuration.
For instance, consider the following configuration on a SmartLiving1050:
The corresponding configuration in inim.ini, assuming that the ID of the I/O Server is "inm", would be the following:
inm.t1 = z1 inm.t2 = z2 inm.t3 = z3 inm.t4 = z4 inm.t5 = z5 inm.t6 = z6,o6 inm.t7 = z7d inm.t8 = z8d inm.t9 = z9d inm.e1.t1 = o10 inm.e1.t2 = z11d inm.e1.t3 = o12 inm.k1.t1 = z13
Terminals on the panel itself are referred to using the notation “<ioserver_id>.t<n>” where <n> is the number of the board terminal from left to right. Terminals on expanders are identified by the string “<ioserver_id>.e<m>.t<n>” where <m> is the expander number and <n> the terminal number on the expander board. Finally, the syntax “<ioserver_id>.k<m>.t<n>” is used to identify terminals on keyboards.
When a terminal is configured as a simple zone (), it should be assigned the corresponding zone number (e.g. "= z1
").
If the terminal is configured as double zone () then append “d” to the zone id (e.g. "= z7d
"). This configuration allows to have two zones connected to the same terminal, thus the I/O Server will handle these two zones independently: the notation "z<n>" will identify datapoints related to base zones, while "z<n>d" identifies double zones.
If the terminal correspond to an output () specify the corresponding output number (e.g. "= o10
"), while if the terminal is configured as an IO () then it will be seen as a zone as well as an output, so specify both of them (e.g. "= z6,o6
").
Further, it is possible to assign a name to a zone terminal to be displayed in the user interface by adding it at the end of the line after an additional “=”. For instance:
inm.t4 = z4 = door inm.t5 = z5 = corridor inm.t6 = z6, o6 = alarm point inm.e1.t2 = z11d = room 1, room 2
As you can see from the last line, when referring to a double zone you can specify two different names separated by a comma.
N.B. SmartLiving 515 panels have only 5 terminals on the board and the indexing of zones and outputs skips the numbers from 6 to 10 as we can see from the image above. But, from tests conducted on different configurations, sometimes these indexes are actually used, thus refinements on the configuration in inim.ini must be applied to map the terminals with the correct zone or output number.
Datapoints
ID | Value | R/W | Description |
---|---|---|---|
connection | online | R | connection established |
offline | R | HSYCO can't connect to the panel | |
armed | 0 | R | all areas are disarmed |
1 | R | at least one area is armed
| |
a<n>.armed | 0 | R | area <n> is disarmed |
W | disarm area <n> | ||
away | R | area <n> is armed in “away” mode | |
W | arm area <n> in “away” mode | ||
stay | R | area <n> is armed in “stay” mode | |
W | arm area <n> in “stay” mode | ||
inst | R | area <n> is armed in “instantaneous” mode | |
W | arm area <n> in “instantaneous” mode | ||
a<n>.alarm | 0 | R | no active alarm on area <n> |
1 | R | alarm on area <n> | |
a<n>.tamper | 0 | R | no tamper alarm on area <n> |
1 | R | tamper alarm on area <n> | |
a<n>.alarm.mem | 0 | R | no alarm in memory for area <n> |
1 | R | alarm in memory for area <n> | |
a<n>.tamper.mem | 0 | R | no tamper alarm in memory for area <n> |
1 | R | tamper alarm in memory for area <n> | |
a<n>.auto | 0 | R | auto-arming disabled on area <n> |
1 | R | auto-arming enabled on area <n> | |
a<n>.reset | 1 | W | reset alarms on area <n> |
z<n>.state z<n>d.state |
closed | R | zone <n> (base or double) is closed |
open | R | zone <n> (base or double) is open | |
tamper | R | zone <n> (base or double) is tampered | |
short | R | zone <n> (base or double) is in short circuit | |
z<n>.bypassed z<n>d.bypassed |
0 | R | zone <n> is not bypassed |
W | unbypass zone <n> | ||
1 | R | zone <n> is bypassed | |
W | bypass zone <n> | ||
z<n>.test z<n>d.test |
0 | R | zone <n> is not in test |
1 | R | zone <n> is being tested | |
z<n>.alarm.mem z<n>d.alarm.mem |
0 | R | no alarm in memory for zone <n> |
1 | R | alarm in memory for zone <n> | |
z<n>.tamper.mem z<n>d.tamper.mem |
0 | R | no terminal tamper alarm in memory for zone <n> |
1 | R | terminal tamper alarm in memory for zone <n> | |
or | 0 | R | the relay output on the panel is not active |
W | deactivate the relay output on the panel | ||
1 | R | the relay output on the panel is active | |
W | activate the relay output on the panel | ||
oc1 | 0 | R | the open collector 1 on the panel is not active |
W | deactivate the open collector 1 on the panel | ||
1 | R | the open collector 1 on the panel is active | |
W | activate the open collector 1 on the panel | ||
oc2 | 0 | R | the open collector 2 on the panel is not active |
W | deactivate the open collector 2 on the panel | ||
1 | R | the open collector 2 on the panel is active | |
W | activate the open collector 2 on the panel | ||
o<n> (if defined in inim.ini) |
0 | R | output <n> is not active |
W | deactivate output <n> | ||
1 | R | output <n> is active | |
W | activate output <n> | ||
fault.fuse.zones | 0 | R | zones fuse OK |
1 | R | fault on zones fuse | |
fault.fuse.ibus | 0 | R | IBUS fuse OK |
1 | R | fault on IBUS fuse | |
fault.battery | 0 | R | battery OK |
1 | R | fault on battery | |
fault.mains | 0 | R | mains OK |
1 | R | panel mains fault | |
fault.phone | 0 | R | phone line OK |
1 | R | fault on phone line | |
fault.jamming | 0 | R | no jamming |
1 | R | radio jamming | |
fault.radio.battery | 0 | R | radio zones battery OK |
1 | R | low battery on radio zone(s) | |
fault.radio.loss | 0 | R | radio zones OK |
1 | R | loss of radio zone(s) | |
battery.volts | <val> | R | the voltage value of the battery is <val> Volts |
tamper.panel | 0 | R | panel OK |
1 | R | panel tampered | |
tamper.cover | 0 | R | panel cover OK |
1 | R | panel cover tampered | |
tamper.reader | 0 | R | readers OK |
1 | R | reader(s) tampered | |
tamper.keypad | 0 | R | keypads OK |
1 | R | keypad(s) tampered | |
tamper.expander | 0 | R | FLEX5 expanders OK |
1 | R | FLEX5 expander(s) tampered | |
reset | 0 | R | communication BUS ready |
1 | R | ongoing reset procedure on communication BUS | |
internet | 0 | R | “internet access” option disabled |
1 | R | “internet access” option enabled | |
service | 0 | R | service jumper in “RUN” position |
1 | R | service jumper in “SERV” position (maintenance) | |
program | 0 | R | panel not in programming mode |
1 | R | ongoing programming via keyboard | |
voice | 0 | R | no SmartLogos30M voice card detected |
1 | R | SmartLogos30M voice card detected |
User Interface
Inim Object
The user interface for the control and supervision of one area of the system, the zones and the visualization of the security log:
The Inim object is listed in the Project Editor’s new object list only when at least one INIM I/O Server is defined.
Parameters
- id - the id assigned to the INIM I/O Server in hsyco.ini. Supports Redirect variables
- area - the number of the area to be addressed. Supports Redirect variables
- pos - the object’s position. Use the pixels or rows and columns coordinates format.
Syntax
(inim <server id>; <area>; <position>)
E.g.
(inim serverid; area; x10y20)
UISET Actions
ID | Attribute | Set to | |
---|---|---|---|
log | value | latest security log lines (as many as specified by the 'logsize' option) | |
log0 | value | latest line of the security log when a new entry is added, set back to blank after a short period | |
z<n>.name z<n>d.name |
value | name assigned to zone <n> (base or double) or its number if no name is defined | |
connection.label | visible | true | when datapoint connection = offline |
false | when datapoint connection = online | ||
a<n>.armed.label.0 | visible | true | when area <n> is disarmed |
false | when area <n> is armed | ||
a<n>.armed.label.away | visible | true | when area <n> is armed in "away" mode |
false | when area <n> is not armed in "away" mode | ||
a<n>.armed.label.stay | visible | true | when area <n> is armed in "stay" mode |
false | when area <n> is not armed in "stay" mode | ||
a<n>.armed.label.inst | visible | true | when area <n> is armed in "instantaneous" mode |
false | when area <n> is not armed in "instantaneous" mode | ||
a<n>.armed.label.1 | visible | true | when area <n> is armed in any mode |
false | when area <n> is not armed | ||
z<n>.state.label.closed z<n>d.state.label.closed |
visible | true | when datapoint 'z<n>.state' has value 'closed' |
false | when datapoint 'z<n>.state' has not value 'closed' | ||
z<n>.state.label.open z<n>d.state.label.open |
visible | true | when datapoint 'z<n>.state' has value 'open' |
false | when datapoint 'z<n>.state' has not value 'open' | ||
z<n>.state.label.tamper z<n>d.state.label.tamper |
visible | true | when datapoint 'z<n>.state' has value 'tamper' |
false | when datapoint 'z<n>.state' has not value 'tamper' | ||
z<n>.state.label.short z<n>d.state.label.short |
visible | true | when datapoint 'z<n>.state' has value 'short' |
false | when datapoint 'z<n>.state' has not value 'short' | ||
<datapoint_id>.label.1 | visible | true | when datapoint with ID <datapoint_id> has value '1' |
false | when datapoint with ID <datapoint_id> has value '0' | ||
<datapoint_id>.label.0 | visible | true | when datapoint with ID <datapoint_id> has value '0' |
false | when datapoint with ID <datapoint_id> has value '1' |
USER Commands
Name | Param | Action |
---|---|---|
a<n>.armed | 0 | disarm area <n> |
stay | arm area <n> in "stay" mode | |
away | arm area <n> in "away" mode | |
inst | arm area <n> in "instantaneous" mode | |
a<n>.reset | 1 | reset alarms on area <n> |
z<n>.bypassed z<n>d.bypassed |
0 | unbypass zone <n> (base or double) |
1 | bypass zone <n> (base or double) | |
or | 0 | deactivate the relay output on the panel |
1 | activate the relay output on the panel | |
oc1 | 0 | deactivate the open collector 1 on the panel |
1 | activate the open collector 1 on the panel | |
oc2 | 0 | deactivate the open collector 2 on the panel |
1 | activate the open collector 2 on the panel | |
o<n> | 0 | deactivate output <n> |
1 | activate output <n> |
To perform any of the above operations it is necessary to enter the user code first. To enter the user code through the user interface use user buttons to create a virtual keypad and assign them name and param values according to this table:
Name | Param | Action |
---|---|---|
digit | {0 ... 9} | append the specified digit to the entered user code |
c | delete the last entered digit |
To visualize the number of entered digits use up to 6 text objects (depending on the number of digits used for user codes) and set their IDs to:
ID | Description |
---|---|
pin.<n> (0 ≤ <n> ≤ 5) |
shows the character '*' when the corresponding digit has been entered, shows '_' otherwise |
The entered code will be cleared after a short period of inactivity.