AIO Tips & tricks during installation and troubleshooting

From OpenMotics
Jump to navigation Jump to search

Introduction

This document contains tips & tricks for using the Brain(+). The tips in this document are all done by using the CLI interface of the Brain(+). The CLI interface gives you the possibility to do "under the motor hood" configurations which is under normal circumstances not needed. For all normal configurations, please use the graphical user interface. The below instructions can be used for simple and more complex configurations and is useful to better understand the Master configuration, to do in-depth troubleshooting and to perform testing.

Using the CLI

  • To use the CLI, please use the Openmotics portal and go to the tab Maintenance Mode.
  • On the CLI console, you can also request the full list of CLI instructions by using instruction
?
  • All CLI instruction can be found here: CLI Reference Guide AIO
  • A lot of functions on the CLI console can also be done by using Basic Actions, see Action Types AIO. To execute a Basic Action, you can use the CLI instruction followed by the necessary parameters.
basic action activate 

or

baa 
  • The CLI instruction "baa" or "basic action activate" can be used with 4 parameters or 6 parameters. A Basic Action contains 4 parameters:
    • Type: Byte
    • Action: Byte
    • Device Parameter: Word
    • Extra parameter: Word
  • When "baa" is used with 4 parameters, 2 byte values (Type, action) followed with 2 word values (device parameter, extra parameter) will be entered. Example switch output ON with timer value:
baa 0 3 24 20000
  • When "baa" is used with 6 parameters, 2 byte values (Type, action) followed with 4 byte values (device parameter.MSB, device parameter.LSB, extra parameter.MSB, extra parameter.LSB) will be entered. Example witch buzzer OFF of Micro CAN with ID 30.245.232:
baa 20 105 30 245 232 0
  • To switch ON for example output 10, you can use the instruction
output on 10

or

on 10
  • To switch OFF for example output 10, you can use instruction
output off 10

or

off 10
  • To switch OFF all outputs, you can use instruction
output all off

or

aoff

Followings docs are important:

  • The full static configuration of the Master processor of the Brain(+) resides in EEPROM memory. The full Memory map can be found here: Memory Model AIO
  • The full active configuration of the Master processor of the Brain(+) resides in FRAM memory. The full Memory map can be found here:FRAM Model AIO
  • The different errors that can appear on the CLI console can be found here: Error List AIO
  • The Brain(+) release notes can be found here: AIO Release Notes

Check status of the Brain(+)

The first and probably most used function is the CLI instruction "error list". This instruction returns the status of each (RS485 or virtual) module connected.

error list
--- Total Uptime: 000334 Hours, Last Startup: 20:23:50 07/12/20   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 26'C  --.--V --.--A ---
--- PWR RS485/CAN/12V: 1/1/1 CANTERM: 1, Firmware Version: 1.0.70 ---
-------Output------------ID---------Err-------Status-------
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)
 01 (O E 008->015) 079.222.189.122 00000   GOOD       (000)
 02 (D E 016->023) 068.072.145.035 00000   GOOD       (000)
-------Input-------------ID---------Err-------Status-------
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)
 02 (b C 016->023) 098.000.000.002 00000   GOOD       (000)
 03 (b C 024->031) 098.000.000.003 00000   GOOD       (000)
 04 (I E 032->039) 073.195.134.013 00001   GOOD       (144)
-------Sensor------------ID---------Err-------Status-------
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)
 01 (T E 008->015) 084.001.003.007 00000   GOOD       (080)
-------CAN Control-------ID---------Err-------Status-------
 00 (C E 000->000) 067.131.006.013 00000   GOOD       (016)
-------Micro CAN---------ID---------Err-------Status-------
 00 (m C 000->000) 000.100.154.092 00215   DEGRADED 2 (000)
 01 (m C 001->001) 100.030.245.232 00000   GOOD       (000)
 02 (m C 006->006) 100.232.121.136 00000   GOOD       (000)
OK


As you can see in the above example, all modules are in "GOOD" status so no issues detected. You also see that an input module has 1 error. It's normal that with the million of messages happing on the bus, sometimes an error occurs which is nothing to worry about. In the list, you'll also see the health status of the connected Micro CAN's (directly via the internal CAN bus of the Brain(+) or externally via the CAN Control). Each Micro CAN has 3 bytes as an address and as you can see in the above example, you see 4 Bytes:

  • The first byte of the 4 bytes address of the Micro CAN is the Bus number:
    • 100: Internal CAN Bus
    • 000: CAN bus of the first CAN Control
    • 001: CAN bus of the second CAN Control
    • 002: CAN bus of the third CAN Control
    • ...

You can also check the "status" led and the "can bus" led on the Front Panel of the Brain(+):

  • The "status" led will indicate the status of the RS485 bus and the connected RS485 sales modules:
    • OFF: The Power of the RS485 bus is OFF
    • GREEN (short flashing): No RS485 slave modules have been configured but the POWER of the RS485 bus is ON
    • GREEN (no flashing): RS485 modules are communicating correctly and have the health status "GOOD"
    • ORANGE (flashing): RS485 in search mode (looking for new RS485 modules)
    • ORANGE (no flashing): The initialisation mode is active and modules can be added manually
    • RED (flashing): The RS485 bus has a problem and some modules or all modules are not responding. It takes a few minutes to have modules to degrade state.
    • RED (no flashing): No modules are responding and all modules have a "non-good" status
    • The state change from red (blinking) to green can take a few minutes since all modules must upgrade in state and all have the "good" status.
  • The "can bus" led will indicate the status of the CAN bus (modules directly connected):
    • OFF: The power of the CAN bus is OFF
    • GREEN (no flashing): Normal communication on the BUS. Attention, this doesn't mean that all modules are responding. To check if all modules are OK, use CLI instruction "can ping list"
    • RED (no flashing): Bus is in error state, check jumper (on last module) and cabling

To check the health status of all connected uCAN, use following instruction:

can ping list
Nr-Bus-ID2.ID1.ID0-Inp.link0-Inp.link1-Inp.link2-Inp.link3-Inp.link4-Inp.link5-Tem.link0-Tem.link1-Type-Firmware-Boot-ID_NE-Modbus-Type-Model-Speed-Stat1-Stat2-Min-MAX-delay--Volt--
00 000 100.154.092  NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA     NA     NA    NA    NA    NA    NA    NA    NA    NA   NA  NA >500ms  NA
01 100 030.245.232 255(255)  255(255)  010(002)  011(003)  012(004)  013(005)  255(255)  255(255)  000  F06.00.06 255  069   255   255   255   255   000   255  000 255  001ms 23.48V
02 100 232.121.136 255(255)  255(255)  028(020)  029(021)  027(019)  026(018)  006(006)  255(255)  060  F06.00.08 255  069   255   255   255   255   000   255  000 255  001ms 23.18V
OK

As you can see in the above example, one uCAN is not responding. These are the explanations of the different items in the "can ping list":

  • Nr: Micro CAN number
  • Bus: This is the Bus number on which the Micro CAN is connected
    • 100: Internal CAN Bus
    • 000: CAN bus of the first CAN Control
    • 001: CAN bus of the second CAN Control
    • 002: CAN bus of the third CAN Control
    • ...
  • Inp.link0-5: This is system input nr of the Brain(+) that is linked to the input (0-5) of the Micro CAN. The value between parenthesis is the input number on that bus and is for developer purposes only and thus can be ignored.
  • Tem.link0-1: This is the system sensor nr of the Brain(+) that is linked to the sensor (0-1) of the Micro CAN. The value between parenthesis is the sensor number on that bus and is for developer purposes only and thus can be ignored.
  • Type: This is the type sensors connected on the Micro CAN:
    • BIT0=1: Temperature sensor DS1820 1wire found on the first sensor connection
    • BIT1=1: Temperature sensor DS1820 1wire found on the second sensor connection
    • BIT2=1: Honeywell HIH8121 Temp/humidity sensor I2C found
    • BIT3=1: TSL2591 I2C lux sensor found
    • BIT4=1: CCS811 I2C air quality sensor found
    • BIT5=1: T67xx I2C air quality sensor found
  • Firmware: This is the current firmware version
  • Boot: Bootloader mode for next startup
  • ID_NE: 78->New Micro Can, 69->Existing Micro Can
  • Modbus: Modbus address (255-> not configured)
  • Type:
    • .BIT7: =0->Modbus VOC is used, =1->uCAN VOC is used
    • .BIT6: =0->Modbus CO2 is used, =1->uCAN CO2 is used
    • .BIT5: =0->Modbus humidity is used, =1->uCAN humidity is used
    • .BIT4: =0->Modbus temp is used, =1->uCAN temp is used
    • .BIT3: =0->Modbus LUX is used, =1->uCAN LUX is used
  • Model: 0=Heatmiser, 1=MC6 color thermostat
  • Speed: 0=4800, 1=9600, 2=19200, 3=38400, 4=57600, 5=115200
  • Stat1: Modbus: 0=Not Configured, 1=Configured and messages being sent, 2=Configured and thermostat is responding
  • Stat2: Led/Buzzer status
    • .BIT0->Buzzer ON(1)/OFF(0) for all functions
    • .BIT1->Buzzer ON(1)/OFF(0) for non-linked switches
    • .BIT2->TriColor status led ON(1)/OFF(0)
  • Min: Minimum led brightness
  • Max: Maximum led brightness
  • Delay: Trip Round time between request and response
  • Volt: This is the voltage the Micro CAN is measuring. This is an interesting value, when long cables are used, to see how much voltage drop the cables are generating

To check the time the different state machines are consuming, use following instruction:

state machine list
---#----Last----Min-----Max------Description------------------
 00 00 00003ms 00002ms 00031ms  I2C1
 01 01 00001ms 00001ms 00017ms  I2C2
 02 00 00000ms 00000ms 00000ms  UART1 receive
 03 03 00391ms 00007ms 00391ms  UART2 receive
 04 00 00001ms 00001ms 00008ms  UART3 receive
 05 00 00000ms 00000ms 00000ms  UART4 receive
 06 01 00164ms 00105ms 00164ms  Update Time/Date
 07 00 00000ms 00000ms 00015ms  Immediate Queue
 08 00 00000ms 00000ms 00000ms  Group Queue
 09 00 00001ms 00001ms 00002ms  Timer 100ms
 10 00 00001ms 00001ms 00001ms  Timer 1 second
 11 00 00001ms 00001ms 00001ms  Timer 1 minute
 12 00 01899ms 01899ms 02065ms  Perform eeprom activate
 13 01 00380ms 00380ms 00380ms  CLI print text
 14 00 00000ms 00000ms 00000ms  CLI action execute
 15 03 00008ms 00004ms 00017ms  Scan modules over RS485 network
 16 00 00003ms 00002ms 00004ms  RS485 modules health status check
 17 00 00000ms 00000ms 00000ms  Check Error, print, store in FRAM
 18 00 00003ms 00003ms 00003ms  Check input queue and actions
 19 00 00000ms 00000ms 00000ms  Check input delay queue and actions
 20 00 00000ms 00000ms 00000ms  CLI print registers
 21 00 00000ms 00000ms 00002ms  Check CAN1 RX queue
 22 00 00000ms 00000ms 00000ms  Check CAN1 TX queue
 23 00 00000ms 00000ms 00000ms  Check hardware health
 24 00 00001ms 00001ms 00007ms  Check leds
 25 00 00084ms 00084ms 00093ms  Check internal outputs
 26 00 00000ms 00000ms 00001ms  Check internal inputs
 27 00 00000ms 00000ms 00000ms  Check internal dimmers
 28 00 00000ms 00000ms 00000ms  Execute Group Action
 29 00 00000ms 00000ms 00000ms  Execute list of actions every minute
 30 00 00000ms 00000ms 00000ms  Check group delay queue
 31 00 00000ms 00000ms 00000ms  Check sensor health
 32 00 00000ms 00000ms 00000ms  FRAM queue for FRAM writing
 33 00 00000ms 00000ms 00000ms  Check dali sensors
 34 00 00001ms 00001ms 00001ms  Check CAN sensors
 35 00 00000ms 00000ms 00000ms  Check CAN health
OK

Adding additional RS485 modules

Adding modules is fully automatic

  • When the Brain(+) is powered, a check will be done if new modules are found on the RS485 bus. A collision detection and avoidance method is programmed so new modules will automatically be added.
  • A module is successfully added when the status led of this module lights up GREEN indicating that communication is working between the module and the Brain(+)
  • The find procedure can be started by using 1 of the following CLI instructions:
module discover search

or

reset
  • Once a module is added to a system, it will get the label of existing module and cannot be added automatically to another system. If you want to add such a module, you can use the manual procedure (see below)

Modules can also be added manually

  • Use the instruction "module discover start" to start the procedure. All slave modules will be put in discovery mode and the status led should light up orange. If this is not the case, check your cabling.
module discover start
  • Press the init one by one of the modules that needs to be added. A message on the CLI console will appear indicating that a new or existing (when it was already added before) is found
  • A module cannot be added twice so no worries if you push the init button more than once or if your press the button of a module that is already added.
  • To finish the procedure, use the CLI instruction "module discover stop"
module discover stop
  • The status led of the slave modules should light up green now indicating that the communication between the Brain(+) and the corresponding slaves are working now.

Checking if all modules are responding

  • By using CLI instruction "error list", you can verify the status of the module (must have the status GOOD)
error list
  • By using CLI instruction "firmware version", the Brain(+) will request the firmware version of each individual RS485 slave module which also means, if you get a firmware version back of the slave module, the communication is working
firmware version

Finding inputs/outputs/sensors/shutters

  • When you try to locate an input/output/sensor/shutter, following instructions can be used:
input indicate
output indicate
sensor indicate
shutter indicate
  • When you want to find output 14 for example and you want the led of this output to flash for 30 seconds:
output indicate 14
  • When you try to locate an input which is linked to a Micro CAN, you first check the input list
input list
  • Once the input list is checked (Micro CAN input have 'b' between the parenthesis in the input list), you can use following instruction:
input indicate 23
  • The led of the corresponding input will flash and the buzzer of the Micro CAN will be on for +/- 1 minute. If you press a non-linked input of that Micro CAN, the buzzer will be switched off.

Adding uCAN's

Checking if hardware is installed correctly

First check if you jumpers are correctly placed:

  • The first and the last device on the CAN bus needs a termination Jumper
  • On the Micro CAN, a physical jumper needs to be placed when it's at the end of the Bus
  • The Brain(+) has an electronic jumper that can be configured.
  • Set jumper on the Brain(+) when the Brain(+) is at the end of the bus:


Adding uCAN's happens automatically:

  • When you press a switch, the uCAN is added and the switch is configured during the first press.
  • When you press a second time (and third and fourth etc), the beeper should sound briefly and the input led will go ON as long the input is pressed. This means that the communication between the uCAN and Brain(+) works as expected.
  • To know which input is responding, CLI instruction "input debug on" can be used to see which input is pressed.
  • From the moment that an output is linked to an input, the function of brief sound and the led that goes ON during a press is automatically disabled.
  • When the above function doesn't work for a non-linked input, something is wrong and check cabling must be checked.
  • If you want to know which input is linked to which uCAN, you can use the instruction "can ping list". As you can see in the below example, uCAN with ID 100.145.232 has input 10, 11, 12 en 13 linked.
can ping list
Nr-Bus-ID2.ID1.ID0-Inp.link0-Inp.link1-Inp.link2-Inp.link3-Inp.link4-Inp.link5-Tem.link0-Tem.link1-Type-Firmware-Boot-ID_NE-Modbus-Type-Model-Speed-Stat1-Stat2-Min-MAX-delay--Volt--
00 000 100.154.092  NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA     NA     NA    NA    NA    NA    NA    NA    NA    NA   NA  NA >500ms  NA
01 100 030.245.232 255(255)  255(255)  010(002)  011(003)  012(004)  013(005)  255(255)  255(255)  000  F06.00.06 255  069   255   255   255   255   000   255  000 255  001ms 23.48V
02 100 232.121.136 255(255)  255(255)  028(020)  029(021)  027(019)  026(018)  006(006)  255(255)  060  F06.00.08 255  069   255   255   255   255   000   255  000 255  001ms 23.18V
OK
  • If the uCAN is not responding, you will not find back the above values. The Brain(+) however is aware of all the uCAN values. This values can be requested by using CLI instruction "can Eeprom list" (see below)
can eeprom list
-Nr-Bus-ID2.ID1.ID0--Inp.link0-Inp.link1-Inp.link2-Inp.link3-Inp.link4-Inp.link5-Tem.link0-Tem.link1-Modbus-Type
 00 000 100.154.092  009(001)  008(000)  255(255)  255(255)  255(255)  255(255)  000(000)  255(000)   255   255
 01 100 030.245.232  255(255)  255(255)  010(002)  011(003)  012(004)  013(005)  255(100)  255(255)   255   255
 02 100 232.121.136  255(255)  255(255)  036(020)  037(021)  035(019)  034(018)  006(100)  255(006)   255   255
OK

Checking if uCAN's are responding

The Brain(+) has a ping functions to check if a uCAN is responding. At the same time, during the ping, the uCAN will send its basic data like firmware version and others. The CLI instruction used is "can ping list". Below is an example of this instruction:

can ping list
-Nr-Bus-ID2.ID1.ID0-Inp.link0-Inp.link1-Inp.link2-Inp.link3-Inp.link4-Inp.link5-Tem.link0-Tem.link1-Type-Firmware-Boot-ID_NE-Modbus-Type-Model-Speed-Stat1-Stat2-Min-MAX-delay--Volt--
 00 000 100.154.092  NA(NA)   NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA     NA     NA    NA    NA    NA    NA    NA    NA    NA   NA  NA >500ms  NA
 01 100 030.245.232 255(255) 255(255)  010(002)  011(003)  012(004)  013(005)  255(255)  255(255)  000  F06.00.06 255  069   255   255   255   255   000   255  000 255  001ms 23.48V
 02 100 232.121.136 255(255) 255(255)  036(020)  037(021)  035(019)  034(018)  006(006)  255(255)  000  F06.00.06 255  069   255   255   255   255   000   255  000 255  001ms 23.22V
OK

In the above example, the first uCAN is not responding, all the others are working as expected.

Checking if sensors are working

  • To check if sensors are reporting values, you can use the CLI instruction "sensor list". In this list, all possible sensor values can be found. Please note that it can take a few minutes before all values will be displayed.
sensor list
  • To know when a sensor value changes, you can use the CLI instruction "change debug on". This will enable uCAN messages and new values being updated to be printed on the CLI console. "change debug off" can be used to switch this function off.
change debug on
change debug off
  • When change debugging is switched ON, you will also get messages from the uCAN what's going on. For example, restarting the sensor power of the connected sensor will then be reported. The event messages can be found here: Micro CAN Events
  • If you want to know the link between a uCAN and a sensor, use the instruction "can ping list". You see for example that sensor 6 is reporting (or not reporting values) and you want to know which uCAN this is, just look at the above example, look at the column Temp.link0 or Temp.link1 and check the value without brackets that will indicate the sensor nr.

Changing CAN bus speed

The Brain(+) has the possibility to change the CAN bus speed. Changing CAN bus speed can help in bus stability when using long cable and/or cables of bad quality. The lower the speed, the higher the cable length. On the other hand, when the speed is lowered, loading new releases will take more time. Following speeds are available:

  • 20kbps
  • 50kbps
  • 125kbps (default setting)
  • 250kbps

To change the Bus speed, use following process:

First check that all uCAN's are responding by using following instruction:

can ping list
-Nr-Bus-ID2.ID1.ID0--Inp.link0-Inp.link1-Inp.link2-Inp.link3-Inp.link4-Inp.link5-Tem.link0-Tem.link1-Type-Firmware-Boot-ID_NE-CanP1-CanP2-CanP3-CanP4-CanP5-Stat--Min-MAX-delay--Volt--
00 100 221.023.196  255(255)  255(255)  255(255)  017(009)  016(008)  015(007)  255(255)  255(255)  000  F06.00.15 255  069   001   079   231   001   238   247  000 255  001ms 23.58V
OK

Please Check that all connected uCAN's have at least firmware version 6.0.15 or higher. If you have a lower version, please do not use this procedure and first upgrade your uCAN's.

In the above example, I only have 1 uCAN. Let's change the speed to 50kbps:

can speed write 50
CAN P: 001 031 255 002 060
OK

The CAN P parameters must be checked that all uCAN have well received them, if not, the instruction "can speed write" must be repeated. To check the CAN P parameters, use the following instruction again:

can ping list
-Nr-Bus-ID2.ID1.ID0--Inp.link0-Inp.link1-Inp.link2-Inp.link3-Inp.link4-Inp.link5-Tem.link0-Tem.link1-Type-Firmware-Boot-ID_NE-CanP1-CanP2-CanP3-CanP4-CanP5-Stat--Min-MAX-delay--Volt--
00 100 221.023.196  255(255)  255(255)  255(255)  017(009)  016(008)  015(007)  255(255)  255(255)  000  F06.00.15 255  069   001   031   255   002   060   247  000 255  001ms 23.56V

OK

In the can ping list, you'll find parameters CanP1, CanP2 etc. These parameters must be identical to the CAN P parameters received after using the "can speed write" instruction. If all uCAN have the same parameters, you're good to go.

The new CAN speed is only effective after a reset:

reset

After reset, check if all uCAN's are responding:

can ping list

Important Note: New uCAN's are programmed at a speed of 125kbps so when new uCAN's are added to an existing network, change the speed to 125kbps, add the uCAN and then change to the required speed.

In the event that no uCAN's are responding after a reset, it might be that 1 of the uCAN's is still on the old speed resulting that no uCAN's will be able to communicate. This can be easily resolved by executing following instructions:

can speed write 125
reset

Now wait 1 minute. All the connected uCAN's (with firmware version 6.0.15 or higher) will realise that communication is not possible and will switch to the default speed (125kbps) after 40 seconds. This default speed will be available after the next reset.

reset

The uCAN's should become available again.

Linking inputs with outputs

Overview inputs

With the CLI instruction "input list", you can list the overview of all inputs, the name of the input and the output linked.

input list

Overview outputs

With the CLI instruction "output list", you can list the overview of all outputs, the name of the output and the programmed timers.

output list

Linking an input with an output

  • First check which output you want to link. With the CLI instruction "input debug on", you can check the correct input.
input debug on
  • with the CLI instruction "output on" and "output off", you can check if you are looking at the right output. For example, switching on output 5 can be done by using instruction "output on 5".
output on
output off
  • Linking for example input 10 with output 5 can done with following instruction: "input link write 10 5". Verify what output is linked to input 5 can be done with instruction "input link read 5"
input link read
input link write

Set Standard timer value for an output

Each output can be programmed with a standard timer value. 3 type of timer exists:

  • 100ms timer (BA0 13)
  • 1s timer (BA0 14)
  • 1m timer (BA0 15)

In our example, we will give Output 5 a timer value of 1200 seconds and will use the second timer:

baa 0 14 5 1200

You can check the programmed timer values by using following CLI instruction:

output list

Configuring shutters

All configuration and usages of shutters is done by using Basic Actions (BA10), see Action Types AIO

Shutter BA's for configuring

Type (Byte) Action (Byte) DeviceNr (Word) Extra parameter (Word) Description
10
100
x
y
SHUTTER: Shutter x is linked to output duo nr y (if shutter x=5 & output y=8 -> shutter 5 is linked to output duo 8 & 9), if y=255 -> shutter not used
10
101
x
y
SHUTTER: For shutter x, if y=0 -> first output of duo is UP, second is DOWN, if y=1 -> first output of duo is DOWN, second is UP
10
102
x
y
SHUTTER: For shutter x, set timer y (in 100ms, max 65535) for direction UP (time needed from 100% to 0%)
10
103
x
y
SHUTTER: For shutter x, set timer y (in 100ms, max 65535) for direction DOWN (time needed from 0% to 100%)
10
104
x
y
SHUTTER: For output duo x, set duo as OUTPUT when y=1, set duo as SHUTTER when y=0
10
105
x
y
SHUTTER: Link shutter x with shutter group y (y<16)
10
106
x
y
SHUTTER: Unlink shutter x with shutter group y (y<16)
10
200
x
-
SHUTTER: Indicate shutter x (the UP led of the output duo will flash if led is available).

Change outputs to shutters

A shutter has always 2 outputs. 1 output is for the UP direction, the other is for the DOWN direction. In a shutter configuration, both outputs can't be ON at the same time to avoid shutter damage. It's also programmed that always 200ms is between the first output switching off and the second output switching on.

  • Step1: Check your list of output to see which set of outputs needs to be converted to a shutter. To verify the list of your outputs, use instruction "output list".
output list
-Output-Type-Status-lock-Dim-Timer--Type---Dali---Name---------
000 (l) OUTPT  OFF    0  063 65535 ( off )  255
001 (l) OUTPT  OFF    0  063 65535 ( off )  255
002 (l) OUTPT  OFF    0  063 65535 ( off )  255
003 (l) OUTPT  OFF    0  063 65535 ( off )  255
004 (l) OUTPT  OFF    0  063 65535 ( off )  255
005 (l) OUTPT  OFF    0  063 65535 ( off )  255 
006 (l) OUTPT  OFF    0  063 65535 ( off )  255
007 (l) OUTPT  OFF    0  063 65535 ( off )  255
008 (O) OUTPT  OFF    0  255 65535 ( off )  255
009 (O) OUTPT  OFF    0  255 65535 ( off )  255
010 (O) OUTPT  OFF    0  255 65535 ( off )  255
011 (O) OUTPT  OFF    0  255 65535 ( off )  255
012 (O) OUTPT  OFF    0  255 65535 ( off )  255
013 (O) OUTPT  OFF    0  255 65535 ( off )  255
014 (O) OUTPT  OFF    0  255 65535 ( off )  255
015 (O) OUTPT  OFF    0  255 65535 ( off )  255
016 (D) OUTPT  OFF    0  255 65535 ( off )  255
017 (D) OUTPT  OFF    0  255 65535 ( off )  255
018 (D) OUTPT  OFF    0  255 65535 ( off )  255
019 (D) OUTPT  OFF    0  255 65535 ( off )  255
020 (D) OUTPT  OFF    0  255 65535 ( off )  255
021 (D) OUTPT  OFF    0  255 65535 ( off )  255
022 (D) OUTPT  OFF    0  255 65535 ( off )  255
023 (D) OUTPT  OFF    0  255 65535 ( off )  255
OK

In the above example, we will use output 10 (and automatically 11) to be converted as shutter. Please be aware that only 2 consecutive outputs can be used as shutter and the first output has always an even number (0, 2, 4, 6 etc). The instruction "output indicate 10" and "output indicate 11" can be used to verify you're working with the right output.

  • Step2: To convert to a shutter, we will use a BA10 100 to link shutter 0 with output 10 and 11:
baa 10 100 0 10

With the instruction "output list", you can verify that change in output status:

output list
-Output-Type-Status-lock-Dim-Timer--Type---Dali---Name---------
000 (l) OUTPT  OFF    0  063 65535 ( off )  255
001 (l) OUTPT  OFF    0  063 65535 ( off )  255
002 (l) OUTPT  OFF    0  063 65535 ( off )  255
003 (l) OUTPT  OFF    0  063 65535 ( off )  255
004 (l) OUTPT  OFF    0  063 65535 ( off )  255
005 (l) OUTPT  OFF    0  063 65535 ( off )  255  
006 (l) OUTPT  OFF    0  063 65535 ( off )  255
007 (l) OUTPT  OFF    0  063 65535 ( off )  255
008 (O) OUTPT  OFF    0  255 65535 ( off )  255
009 (O) OUTPT  OFF    0  255 65535 ( off )  255
010 (O) SHUTR  OFF    0  255 65535 ( off )  255
011 (O) SHUTR  OFF    0  255 65535 ( off )  255
012 (O) OUTPT  OFF    0  255 65535 ( off )  255
013 (O) OUTPT  OFF    0  255 65535 ( off )  255
014 (O) OUTPT  OFF    0  255 65535 ( off )  255
015 (O) OUTPT  OFF    0  255 65535 ( off )  255
016 (D) OUTPT  OFF    0  255 65535 ( off )  255
017 (D) OUTPT  OFF    0  255 65535 ( off )  255
018 (D) OUTPT  OFF    0  255 65535 ( off )  255
019 (D) OUTPT  OFF    0  255 65535 ( off )  255
020 (D) OUTPT  OFF    0  255 65535 ( off )  255
021 (D) OUTPT  OFF    0  255 65535 ( off )  255
022 (D) OUTPT  OFF    0  255 65535 ( off )  255
023 (D) OUTPT  OFF    0  255 65535 ( off )  255
OK
  • Step3: With the instruction "shutter list", you can verify the shutter configuration:
shutter list
-Shutter-Locked-Up:Outp-Timer-Dwn:Outp-Timer-Position-Req_Pos-Moving----Name-----
  000     NO     010    65535   011    65535  00000   00000   NO
  001     --      --     --      --     --     --     --      --
  002     --      --     --      --     --     --     --      --
  003     --      --     --      --     --     --     --      --
  004     --      --     --      --     --     --     --      --
  005     --      --     --      --     --     --     --      --
  006     --      --     --      --     --     --     --      --
  007     --      --     --      --     --     --     --      --
  008     --      --     --      --     --     --     --      --
  009     --      --     --      --     --     --     --      --
  010     --      --     --      --     --     --     --      --
  011     --      --     --      --     --     --     --      --
  012     --      --     --      --     --     --     --      --
  013     --      --     --      --     --     --     --      --
  014     --      --     --      --     --     --     --      --
  015     --      --     --      --     --     --     --      --
  016     --      --     --      --     --     --     --      --
  017     --      --     --      --     --     --     --      --
  018     --      --     --      --     --     --     --      --
  019     --      --     --      --     --     --     --      --
  020     --      --     --      --     --     --     --      --
  021     --      --     --      --     --     --     --      --
  022     --      --     --      --     --     --     --      --
  023     --      --     --      --     --     --     --      --
  024     --      --     --      --     --     --     --      --
  025     --      --     --      --     --     --     --      --
  026     --      --     --      --     --     --     --      --
  027     --      --     --      --     --     --     --      --
  028     --      --     --      --     --     --     --      --
  029     --      --     --      --     --     --     --      --
  030     --      --     --      --     --     --     --      --
  031     --      --     --      --     --     --     --      --
OK

Note: If you want to change a shutter set back to outputs, do the following (in this example Shutter 0):

baa 10 100 0 65535

Change output for up/down direction

As you can see in the above example with instruction "shutter list", output 10 is the UP direction, output 11 is the down direction. In this example, I would like to configure 10 as DOWN and 11 as UP:

baa 10 101 0 1

Executing instruction "shutter list", you can see the change that did happen:

shutter list
-Shutter-Locked-Up:Outp-Timer-Dwn:Outp-Timer-Position-Req_Pos-Moving----Name-----
  000     NO     011    65535   010    65535  00000   00000   NO
  001     --      --     --      --     --     --     --      --
  002     --      --     --      --     --     --     --      --
  003     --      --     --      --     --     --     --      --
  004     --      --     --      --     --     --     --      --
  005     --      --     --      --     --     --     --      --
  006     --      --     --      --     --     --     --      --
  007     --      --     --      --     --     --     --      --
  008     --      --     --      --     --     --     --      --
  009     --      --     --      --     --     --     --      --
  010     --      --     --      --     --     --     --      --
  011     --      --     --      --     --     --     --      --
  012     --      --     --      --     --     --     --      --
  013     --      --     --      --     --     --     --      --
  014     --      --     --      --     --     --     --      --
  015     --      --     --      --     --     --     --      --
  016     --      --     --      --     --     --     --      --
  017     --      --     --      --     --     --     --      --
  018     --      --     --      --     --     --     --      --
  019     --      --     --      --     --     --     --      --
  020     --      --     --      --     --     --     --      --
  021     --      --     --      --     --     --     --      --
  022     --      --     --      --     --     --     --      --
  023     --      --     --      --     --     --     --      --
  024     --      --     --      --     --     --     --      --
  025     --      --     --      --     --     --     --      --
  026     --      --     --      --     --     --     --      --
  027     --      --     --      --     --     --     --      --
  028     --      --     --      --     --     --     --      --
  029     --      --     --      --     --     --     --      --
  030     --      --     --      --     --     --     --      --
  031     --      --     --      --     --     --     --      --
OK

Giving the Shutter a name

In our example, this can be easily done, for shutter 0, by following instruction:

shutter name write 0 Living
shutter list
-Shutter-Locked-Up:Outp-Timer-Dwn:Outp-Timer-Position-Req_Pos-Moving----Name-----
  000     NO     011    65535   010    65535  00000   00000   NO       Living
  001     --      --     --      --     --     --     --      --
  002     --      --     --      --     --     --     --      --
  003     --      --     --      --     --     --     --      --
  004     --      --     --      --     --     --     --      --
  005     --      --     --      --     --     --     --      --
  006     --      --     --      --     --     --     --      --
  007     --      --     --      --     --     --     --      --
  008     --      --     --      --     --     --     --      --
  009     --      --     --      --     --     --     --      --
  010     --      --     --      --     --     --     --      --
  011     --      --     --      --     --     --     --      --
  012     --      --     --      --     --     --     --      --
  013     --      --     --      --     --     --     --      --
  014     --      --     --      --     --     --     --      --
  015     --      --     --      --     --     --     --      --
  016     --      --     --      --     --     --     --      --
  017     --      --     --      --     --     --     --      --
  018     --      --     --      --     --     --     --      --
  019     --      --     --      --     --     --     --      --
  020     --      --     --      --     --     --     --      --
  021     --      --     --      --     --     --     --      --
  022     --      --     --      --     --     --     --      --
  023     --      --     --      --     --     --     --      --
  024     --      --     --      --     --     --     --      --
  025     --      --     --      --     --     --     --      --
  026     --      --     --      --     --     --     --      --
  027     --      --     --      --     --     --     --      --
  028     --      --     --      --     --     --     --      --
  029     --      --     --      --     --     --     --      --
  030     --      --     --      --     --     --     --      --
  031     --      --     --      --     --     --     --      --
OK

Setting a timer for the Up/Down direction

Every shutter can have it's own timer for up and down direction. For shutter 0, we will set an up timer of 40 seconds (programmed in 100ms) and a down timer of 30 seconds (programmed in 100ms):

baa 10 102 0 400
baa 10 103 0 300

You can see the result by using CLI instruction:

shutter list
-Shutter-Locked-Up:Outp-Timer-Dwn:Outp-Timer-Position-Req_Pos-Moving----Name-----
  000     NO     011    00400   010    00300  00000   00000   NO       Living
  001     --      --     --      --     --     --     --      --
  002     --      --     --      --     --     --     --      --
  003     --      --     --      --     --     --     --      --
  004     --      --     --      --     --     --     --      --
  005     --      --     --      --     --     --     --      --
  006     --      --     --      --     --     --     --      --
  007     --      --     --      --     --     --     --      --
  008     --      --     --      --     --     --     --      --
  009     --      --     --      --     --     --     --      --
  010     --      --     --      --     --     --     --      --
  011     --      --     --      --     --     --     --      --
  012     --      --     --      --     --     --     --      --
  013     --      --     --      --     --     --     --      --
  014     --      --     --      --     --     --     --      --
  015     --      --     --      --     --     --     --      --
  016     --      --     --      --     --     --     --      --
  017     --      --     --      --     --     --     --      --
  018     --      --     --      --     --     --     --      --
  019     --      --     --      --     --     --     --      --
  020     --      --     --      --     --     --     --      --
  021     --      --     --      --     --     --     --      --
  022     --      --     --      --     --     --     --      --
  023     --      --     --      --     --     --     --      --
  024     --      --     --      --     --     --     --      --
  025     --      --     --      --     --     --     --      --
  026     --      --     --      --     --     --     --      --
  027     --      --     --      --     --     --     --      --
  028     --      --     --      --     --     --     --      --
  029     --      --     --      --     --     --     --      --
  030     --      --     --      --     --     --     --      --
  031     --      --     --      --     --     --     --      --
OK

Linking an input to a shutter

In this example, we will link 1 button to perform up-stop-down-stop.

  • Step1: Check the input you want to us:
input debug on

Press the input you want to use for our shutter 0, this will appear on your console:

11:02:37 Input Nr 74 has been pressed
11:02:37 Input Nr 74 has been released

So our goal is to link input 74 to shutter 0.

  • Step2: First check if our input has other actions linked:
input action read 74
----------------Act--Inp-Cnf-Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
0-   PRESS    : Yes  074  0  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
1-  RELEASE   : Yes  074  1  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
2- 1SEC PRESS : No   074  2  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
3- 2SEC PRESS : No   074  3  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
4-DOUBLE PRESS: No   074  4  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
OK

We see that nothing is linked so we can use this input for our shutter.

  • Step3: Link our input 74 (at press) to shutter 0:

BA10 3 will be programmed for the Up-Stop-Down-Stop action.

input action write 74 0 10 5 0 0

Explanation of the above instruction:

    • 74 0: 74 as input nr, 0 because we want this instruction to be executed at press state of the input
    • 10 5: BA10 5 will be executed which means shutter up-stop-down-stop
    • 0 0: The first 0 is the shutter number, the second 0 is not in use for this BA, see Action Types AIO
  • Step4: Check your programming
input action read 74
----------------Act--Inp-Cnf-Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
0-   PRESS    : Yes  074  0  010 005 00000(000.000) 00000(000.000) ->  Shutter 0 up_stop_down...
1-  RELEASE   : Yes  074  1  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
2- 1SEC PRESS : No   074  2  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
3- 2SEC PRESS : No   074  3  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
4-DOUBLE PRESS: No   074  4  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
OK

Creating Shutter groups

It's possible to link multiple shutters into a shutter group. This makes it possible to open/close multiple shutters at the same time.

Let's assume we've configured 5 shutters:

shutter list
-Shutter-Locked-Up:Outp-Timer-Dwn:Outp-Timer-Position-Req_Pos-Moving----Name-----
  000     NO     052    00600   053    00600  00000   65530   NO       Slaapkamer P&W
  001     NO     051    00600   050    00600  00000   00005   NO       Slaapkamer Elise
  002     NO     042    00600   043    00600  00000   65530   NO       Slaapkamer Nick
  003     NO     044    00600   045    00600  00000   00005   NO       Keuken
  004     NO     040    00600   041    00600  00000   00005   NO       Living
  005     --      --     --      --     --     --     --      --
  006     --      --     --      --     --     --     --      --
  007     --      --     --      --     --     --     --      --
  008     --      --     --      --     --     --     --      --
  009     --      --     --      --     --     --     --      --
  010     --      --     --      --     --     --     --      --
  011     --      --     --      --     --     --     --      --
  012     --      --     --      --     --     --     --      --
  013     --      --     --      --     --     --     --      --
  014     --      --     --      --     --     --     --      --
  015     --      --     --      --     --     --     --      --
  016     --      --     --      --     --     --     --      --
  017     --      --     --      --     --     --     --      --
  018     --      --     --      --     --     --     --      --
  019     --      --     --      --     --     --     --      --
  020     --      --     --      --     --     --     --      --
  021     --      --     --      --     --     --     --      --
  022     --      --     --      --     --     --     --      --
  023     --      --     --      --     --     --     --      --
  024     --      --     --      --     --     --     --      --
  025     --      --     --      --     --     --     --      --
  026     --      --     --      --     --     --     --      --
  027     --      --     --      --     --     --     --      --
  028     --      --     --      --     --     --     --      --
  029     --      --     --      --     --     --     --      --
  030     --      --     --      --     --     --     --      --
  031     --      --     --      --     --     --     --      --
OK

Let's now link our 5 shutters (0-4) to shutter group 0:

baa 10 105 0 0
baa 10 105 1 0
baa 10 105 2 0
baa 10 105 3 0
baa 10 105 4 0

With following instruction, you can check what you've programmed:

shutter group link list
-Shutter-GRP-00-01-02-03-04-05-06-07-08-09-10-11-12-13-14-15
  000         Y  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  001         Y  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  002         Y  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  003         Y  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  004         Y  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  005         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  006         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  007         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  008         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  009         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  010         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  011         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  012         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  013         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  014         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  015         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  016         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  017         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  018         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  019         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  020         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  021         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  022         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  023         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  024         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  025         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  026         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  027         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  028         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  029         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  030         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  031         -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
  Lock        -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
OK

Since all the shutters are linked now, the normal shutter BA's can be used but with following modifications:

  • When a shutter number >=256 then a shutter group is addressed
  • Shutter nr x: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)

Using Shutters

Shutter BA's for usage

Type (Byte) Action (Byte) DeviceNr (Word) Extra parameter (Word) Description
10
0
x
-
SHUTTER: Shutter x stop (when x>255 -> Shutter groups are used: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
1
x
-
SHUTTER: Shutter x UP (when x>255 -> Shutter groups are used: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
2
x
-
SHUTTER: Shutter x DOWN (when x>255 -> Shutter groups are used: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
3
x
-
SHUTTER: Shutter x UP-STOP-UP-STOP...(when x>255 -> Shutter groups are used: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
4
x
-
SHUTTER: Shutter x DOWN-STOP-DOWN-STOP...(when x>255 -> Shutter groups are used: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
5
x
-
SHUTTER: Shutter x UP-STOP-DOWN-STOP....(when x>255 -> Shutter groups are used: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
6
x
y
SHUTTER: Move Shutter x to position y (Fully open is 0, fully closed is 65535) -> Not yet operational.
10
20
x
-
SHUTTER: Shutter x Locked (when x>255, all shutters of a Shutter Group will be locked: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
21
x
-
SHUTTER: Shutter x STOP & Locked (when x>255, all shutters of a Shutter Group will be locked: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
22
x
-
SHUTTER: Shutter x UP & Locked (when x>255, all shutters of a Shutter Group will be locked: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
23
x
-
SHUTTER: Shutter x DOWN & Locked (when x>255, all shutters of a Shutter Group will be locked: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)
10
24
x
-
SHUTTER: Shutter x Unlocked (when x>255, all shutters of a Shutter Group will be unlocked: x=256->Group 0, x=257->Group 1, x=258->Group 2 etc)

Group Actions

The system supports group actions. A group action is a set Basic Actions that can be executed. The execution can for example be linked to a sensor being changed, an output status change, a time change, every minute etc. Group actions can be made intelligent by using IF THEN ELSE Basic Actions.

The number of BA's (Basic Actions) can be configured in a flexible a way in other words, as an example, Group 0 can be configured with 10 lines (=10 BA's), Group 1 can be configured with 25 lines.

Group Action Creation

Let's create Group Action 0 with 3 lines (= Max 3 BA's) and Group Action 1 with 10 lines (= Max 10 BA's).

In total, a list of more then 1000 lines (BA's) exist that can be split in multiple group actions. Each group action has a start and end (BA) address. In our example, we will program the following:

  • Group 0: start BA 0 end BA 2 -> 3 lines
  • Group 1: start BA 1 end BA 12 -> 10 lines
group start end write 0 0 2
group start end write 1 3 12

To see the result, you can use following action:

group read 0
group read 1

Write BA's in a Group

Let's have some BA's written in our 2 Groups:

  • Output 5 ON in Group 0 (BA0->First BA in Group 0)
  • Output 6 ON in Group 1 (BA3->First BA in Group 1)
group ba write 0 0 1 5 0
group ba write 3 0 1 6 0

To see the result, you can use:

group read 0
group read 1

To test a group action 1 for example:

baa 19 0 1 0

Give Group Action a name

Every group can have a name:

group write 0 Ventilation ON
group write 1 All screens down

To see the result:

group list

Example: A led follows an output

First create a group action 12 with 3 BA's (start BA33 and end BA35):

group start end write 12 33 35

In this example, we want led 9 (input 9) to follow Output 1. How does this work:

  • When Output 1 changes state, Led 9 should follow the Output state (Output 1 ON -> Led 9 ON, Output 1 OFF -> Led 9 OFF)
  • In Group Action 12, we will activate Led 9
  • Every time Output 1 changes state, it should activate Group Action 12

First we will program in Group 12 (BA33 -> First BA of this group) the activation of Led 9:

group ba write 33 20 50 0 9 255 0

Now, we need to link Output 1 with Group 12:

baa 19 50 0 1 0 12

Example: Input long press to switch all lights off and closes all shutters

First will will create a group action (lets's assume group action 0 with 10 entries: BA0 to BA9):

group start end write 0 0 9

Write in BA0 to switch all lights OFF:

group ba write 0 0 255 1 0

Write in BA1 that Shutter group 0 (shutter group 0->256, shutter group 1 ->257 etc) must go down:

group ba write 1 10 2 256 0

You can give the Group a name:

group name write 0 All Off+shutter dw

You can check you entries by using following instructions:

group list
-Group---------Name---------
 000   ->   All Off+shutter
OK
group read 0
-Grp---BA Nr----Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
 000  0000(00)  000 255 00001(000.001) 00000(000.000) ->  Switch OFF all Outputs(x=0), Lights(x=1) or Lights&Outputs(x>1)
 000  0001(01)  010 002 00256(001.000) 00000(000.000) ->  Shutter 256 down
 000  0002(02)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
 000  0003(03)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
 000  0004(04)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
 000  0005(05)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
 000  0006(06)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
 000  0007(07)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
 000  0008(08)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
 000  0009(09)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
OK

The only thing that needs to happen now is to link as an example input 31 to group 0 when input 31 is pressed during 2 seconds:

input action write 31 3 19 0 0 0

Verify your input:

input action read 31
----------------Act--Inp-Cnf-Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
0-   PRESS    : No   031  0  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
1-  RELEASE   : Yes  031  1  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
2- 1SEC PRESS : No   031  2  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
3- 2SEC PRESS : Yes  031  3  019 000 00000(000.000) 00000(000.000) ->  Execute Group Action 0
4-DOUBLE PRESS: No   031  4  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
OK

When input 31 is now pressed during 2 seconds, all lights will be switched off and all shutters of shutter group 0 will go down.

Example: With 1 input, switch ON/OFF multiple lights, led following the leading output

When you want to switch a group of lights with 1 input, the output follow function must be used. First link input (30) to the leading output (13):

input link write 30 13

Create a group (1) with 3 BA's:

group start end write 1 10 12

Now we're going to use a special basic action (BA0 21) that is used to follow the leading output. We want output 14 and 15 following our leading output (13). We also want LED of input 30 to follow the output state (BA20 50):

group ba write 10 0 21 14 0
OK
group ba write 11 0 21 15 0
OK
group ba write 12 20 50 0 30 255 0
OK

Check your group action:

group read 1
-Grp---BA Nr----Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
 001  0010(00)  000 021 00014(000.014) 00000(000.000) ->  Output 14 follows group arg. (65535)
 001  0011(01)  000 021 00015(000.015) 00000(000.000) ->  Output 15 follows group arg. (65535)
 001  0012(02)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use

The only thing that now needs to happen is to activate the group follow function of output 13 in other words we will tell that, when every change, group action 1 needs to be activated:

output group follow write 13 1 

You can check the group following list:

output group follow list
--Nr--Group Follow----Group Description---------
 000   No Group
 001   No Group
 002   No Group
 003   No Group
 004   No Group
 005   No Group
 006   No Group
 007   No Group
 008   No Group
 009   No Group
 010   No Group
 011   No Group
 012   No Group
 013    00001
 014   No Group
 015   No Group
 016   No Group
 017   No Group
 018   No Group
 019   No Group
 020   No Group
 021   No Group
 022   No Group
 023   No Group
 024   No Group
 025   No Group
 026   No Group
 027   No Group
 028   No Group
 029   No Group
 030   No Group
 031   No Group
 032   No Group
 033   No Group
 034   No Group
 035   No Group
 036   No Group
 037   No Group
 038   No Group
 039   No Group
 040   No Group
 041   No Group
 042   No Group
 043   No Group
 044   No Group
 045   No Group
 046   No Group
 047   No Group
 048   No Group
 049   No Group
 050   No Group
 051   No Group
 052   No Group
 053   No Group
 054   No Group
 055   No Group
 056   No Group
 057   No Group
 058   No Group
 059   No Group
 060   No Group
 061   No Group
 062   No Group
 063   No Group
 064   No Group
 065   No Group
 066   No Group
 067   No Group
 068   No Group
 069   No Group
 070   No Group
 071   No Group
OK

Example: Multiple leds that needs to follow 1 output

In this example, multiple switches can switch ON/OFF the hall lights (output 62) and the appropriate leds needs to follow that light. First create a group that will contain all leds. First check all inputs that will switch ON/OFF the hall lights so the appropriate leds can be programmed.

input debug on

Following leds will be linked to the hall lights:

  • Led 29
  • Led 43
  • Led 52
  • Led 56

First create our group 2. We will make a larger group so we can add leds later on if we want:

group start end write 2 20 40

Let's give the group a name:

group name write 2 Leds Hall

Program the leds in Group 2 (BA20 50):

group ba write 20 20 50 0 29 255 0
OK
group ba write 21 20 50 0 43 255 0
OK
group ba write 22 20 50 0 52 255 0
OK
group ba write 23 20 50 0 56 255 0
OK

With following instruction, you can check your programming:

group read 2

Now we only have to link our Hall lights (output 62) to Group 2:

output group follow write 62 2

Example: 1 or multiple leds indicating if lights are still ON

In this example, a led will blink if somewhere a light is still ON. This can be easily extended to multiple leds giving the same led feedback. We will program the led to blink until all lights are off.

First you need to check that the outputs have the right property in other words a light should be in the list as a light, an output (such as a boiler connection, a valve connection etc) should have the output label:

output list

First create our group 17 (next one that is free). We will make a larger group so we can add leds later on if we want:

group start end write 17 91 95

Let's give the group a name:

group name write 17 Leds lights on

Program the leds in Group 17 (BA20 71 -> Switch led ON when nr of lights > x): In this example, led 31 will start blinking when nr of lights >0

group ba write 91 20 71 0 31 0 2
OK

More lights can be added in this group.

The last step is to link our group 17 with the change of any output in other words, the change of an output should always trigger this group action. An important not is that this group 17 CANNOT contain any output actions to avoid an endless loop.

To link group 17 with any output change, following action must be executed:

baa 19 56 0 17

Example: Output of 2 garage motors that switches a light

In this example, we've 2 garage motors that switches an output (72) when the garage is open. We've connected each motor relay output to an OpenMotics Input (74 & 75). So when one (or both) of the garages is open, the light should be ON, when both are closed, the light should be OFF.

First create our group 14. We will make a larger group so we can add instructions later on if we want:

group start end write 14 71 80

Let's give the group a name:

group name write 14 Garage light

The logic we will write is the following: IF Input 74 is ON (=Pressed state) OR Input 75 is ON (=Pressed state) THEN Output 72 ON for 30 minutes ELSE Output 10 OFF

Program the IF-THEN logic in Group 14:

group ba write 71 100 0 0 0 0 0
OK
group ba write 72 100 12 0 74 0 0
OK
group ba write 73 100 91 0 0 0 0
OK
group ba write 74 100 12 0 75 0 0
OK
group ba write 75 100 150 0 0 0 0
OK
group ba write 76 0 5 0 72 0 30
OK
group ba write 77 100 200 0 0 0 0
OK
group ba write 78 0 0 0 72 0 0
OK
group ba write 79 100 255 0 0 0 0
OK

Let's check if our group is correctly programmed:

group read 14
-Grp---BA Nr----Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
014  0071(00)  100 000 00000(000.000) 00000(000.000) ->  IF
014  0072(01)  100 012 00074(000.074) 00000(000.000) ->  Input 74 is ON
014  0073(02)  100 091 00000(000.000) 00000(000.000) ->  OR
014  0074(03)  100 012 00075(000.075) 00000(000.000) ->  Input 75 is ON
014  0075(04)  100 150 00000(000.000) 00000(000.000) ->  THEN
014  0076(05)  000 005 00072(000.072) 00030(000.030) ->  Output 72 ON and overrule timer with value 30 (30x1m)
014  0077(06)  100 200 00000(000.000) 00000(000.000) ->  ELSE
014  0078(07)  000 000 00072(000.072) 00000(000.000) ->  Output 72 OFF
014  0079(08)  100 255 00000(000.000) 00000(000.000) ->  ENDIF
014  0080(09)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
OK

Next to do is link group 14 to the press and release action of input 74 and 75:

input action write 74 0 19 0 14 0
OK
input action write 74 1 19 0 14 0
OK
input action write 75 0 19 0 14 0
OK
input action write 75 1 19 0 14 0
OK

Check if your inputs (74 & 75) are linked to group 14:

input action read 74
----------------Act--Inp-Cnf-Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
0-   PRESS    : Yes  074  0  019 000 00014(000.014) 00000(000.000) ->  Execute Group Action 14
1-  RELEASE   : Yes  074  1  019 000 00014(000.014) 00000(000.000) ->  Execute Group Action 14
2- 1SEC PRESS : No   074  2  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
3- 2SEC PRESS : No   074  3  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
4-DOUBLE PRESS: No   074  4  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
OK
input action read 75
----------------Act--Inp-Cnf-Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
0-   PRESS    : Yes  075  0  019 000 00014(000.014) 00000(000.000) ->  Execute Group Action 14
1-  RELEASE   : Yes  075  1  019 000 00014(000.014) 00000(000.000) ->  Execute Group Action 14
2- 1SEC PRESS : No   075  2  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
3- 2SEC PRESS : No   075  3  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
4-DOUBLE PRESS: No   075  4  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use
OK

Configuring DALI

On the Brain(+), DALI modules can be connected. The detailed instructions can be found here: Dali AIO

Configuring MODBUS thermostats

The uCAN's have the possibility to connect Modbus thermostat by using a special uCAN-Modbus interface. This function however is not yet release. The detailed instructions can be found here: MODBUS AIO

Checking firmware

  • The firmware of the Brain(+) and the RS485 slaves can be checked by using CLI instruction "firmware version". Example:
firmware version
--- Fw version Brain(+): V1.0.69 ---
Output:
 00 (l I) 108.000.000.000 -> Internal/Virtual
 01 (O E) 079.222.189.122 -> V6.0.7
 02 (D E) 068.072.145.035 -> V6.0.7
Input:
 00 (i I) 105.000.000.000 -> Internal/Virtual
 01 (b C) 098.000.000.001 -> Internal/Virtual
 02 (b C) 098.000.000.002 -> Internal/Virtual
 03 (I E) 073.195.134.013 -> V6.0.12
 04 (b C) 098.000.000.004 -> Internal/Virtual
Sensor:
 00 (s C) 115.000.000.000 -> Internal/Virtual
 01 (s C) 115.000.000.001 -> Internal/Virtual
 02 (T E) 084.001.003.007 -> V6.0.6
Can:
 00 (C E) 067.131.006.013 -> V6.0.27
OK
  • The firmware of the uCAN's can be checked by using CLI instruction "can ping list"
can ping list
-Nr-Bus-ID2.ID1.ID0-Inp.link0-Inp.link1-Inp.link2-Inp.link3-Inp.link4-Inp.link5-Tem.link0-Tem.link1-Type-Firmware-Boot-ID_NE-Modbus-Type-Model-Speed-Stat1-Stat2-Min-MAX-delay--Volt--
 00 000 100.154.092  NA(NA)   NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA(NA)    NA     NA     NA    NA    NA    NA    NA    NA    NA    NA   NA  NA >500ms  NA
 01 100 030.245.232 255(255) 255(255)  010(002)  011(003)  012(004)  013(005)  255(255)  255(255)  000  F06.00.06 255  069   255   255   255   255   000   255  000 255  001ms 23.48V
 02 100 232.121.136 255(255) 255(255)  036(020)  037(021)  035(019)  034(018)  006(006)  255(255)  000  F06.00.06 255  069   255   255   255   255   000   255  000 255  001ms 23.22V
OK