Difference between revisions of "AIO Tips & tricks during installation and troubleshooting"
Line 331: | Line 331: | ||
reset | reset | ||
The uCAN's should become available again. | The uCAN's should become available again. | ||
+ | |||
+ | ===Adding Micro CAN's is not working=== | ||
+ | |||
+ | Some Micro CAN's with firmware older than V6.0.26 have a bug that discovery after a few minutes won't be possible anymore. A simple workaround solves this issue: | ||
+ | * Switch off the power of the CAN bus (in case of the built-in CAN control): | ||
+ | baa 253 1 0 0 | ||
+ | * Switch off the power of the CAN bus (in case of an external CAN control): | ||
+ | baa 253 3 0 0 | ||
+ | * Switch on the power of the CAN bus (in case of the built-in CAN control): | ||
+ | baa 253 1 1 0 | ||
+ | * Switch on the power of the CAN bus (in case of an external CAN control): | ||
+ | baa 253 3 1 0 | ||
+ | |||
+ | Now, you've a few minutes to add Micro CAN's. After those few minutes and additional Micro CAN's (or inputs) needs to be added, do the above procedure again. | ||
==Linking inputs with outputs== | ==Linking inputs with outputs== |
Revision as of 12:54, 20 January 2022
Contents
- 1 Introduction
- 2 Using the CLI
- 3 Check status of the Brain(+)
- 4 Adding additional RS485 modules
- 5 Adding uCAN's
- 6 Linking inputs with outputs
- 7 Configuring shutters
- 8 Using Shutters
- 9 Group Actions
- 9.1 Group Action Creation
- 9.2 Write BA's in a Group
- 9.3 Give Group Action a name
- 9.4 Example: A led follows an output
- 9.5 Example: Input long press to switch all lights off and closes all shutters
- 9.6 Example: With 1 input, switch ON/OFF multiple lights, led following the leading output
- 9.7 Example: Multiple leds that needs to follow 1 output
- 9.8 Example: 1 or multiple leds indicating if lights are still ON
- 9.9 Example: Output of 2 garage motors that switches a light
- 10 Configuring DALI
- 11 Configuring HVAC module
- 12 Configuring MODBUS thermostats
- 13 Checking firmware
- 14 Factory Reset
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.
- 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.
Adding Micro CAN's is not working
Some Micro CAN's with firmware older than V6.0.26 have a bug that discovery after a few minutes won't be possible anymore. A simple workaround solves this issue:
- Switch off the power of the CAN bus (in case of the built-in CAN control):
baa 253 1 0 0
- Switch off the power of the CAN bus (in case of an external CAN control):
baa 253 3 0 0
- Switch on the power of the CAN bus (in case of the built-in CAN control):
baa 253 1 1 0
- Switch on the power of the CAN bus (in case of an external CAN control):
baa 253 3 1 0
Now, you've a few minutes to add Micro CAN's. After those few minutes and additional Micro CAN's (or inputs) needs to be added, do the above procedure 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 remove a shutter from the shutter list, do the following (in this example Shutter 0):
baa 10 100 0 65535
Please note, by using the above instruction, both outputs will remain configured as shutter type. To undo that, please use BA10 104.
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 HVAC module
On the Brain(+), HVAC modules can be connected. The detailed instructions can be found here: HP Tips & tricks during installation and troubleshooting
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
Factory Reset
Factory Reset of a full installation
To perform a factory reset including all connected RS485 & CAN modules, 2 instructions needs to be executed:
- Prepare the Master for a factory reset
baa 254 2 0 0
- Execute the Factory reset
baa 254 3 1769 28883
- The execution of the last instruction can take a few minutes, once done, you get following message on the CLI console:
Factory Reset done
- When you restart the processor, the connected and erased modules will be added again in a clean environment
reset
- All steps during Factory reset are sent as events to the BB and the logging is also kept in FRAM:
fram logging
Notes:
- A factory reset is irreversible, all configuration will be lost
- FRAM logging, EEPROM logging and Factory settings will not be erased
- When a factory Reset is performed, errors might appear on the CLI console (input error, output error etc), this is normal and can be ignored
- Factory reset is available in following firmwares:
- Master: V1.0.115 or higher
- Input Module: V6.0.25 or higher
- Output Module: V6.0.18 or higher
- Temperature Module: V6.0.16 or higher
- Dim Control Module: V6.0.19 or higher
- CAN Control Module: V6.0.43 or higher
Factory Reset of all uCAN slave modules
The below instruction will erase the full uCAN configuration and addresses of all connected uCAN's:
can config delete
Once this instruction is executed, a reset needs to be performed:
reset
Notes:
- This instruction will do a full wipe of the eeprom of the uCAN without erasing the reserved eeprom part (which contains production data like serial number)
- The uCAN as objects will be deleted in the Master, the virtual modules linked to the uCAN's (input and sensor modules) will not be erased) and will be used again once uCAN's are added again
Factory Reset of all RS485 slave modules
The below instruction will erase the full uCAN configuration and addresses of all connected uCAN's:
- First prepare the Master for a Factory Reset:
baa 254 2 0 0
- Perform the instruction to erase the RS485 slaves (erasing the ID is done for all the modules)
baa 254 4 1769 28883
Important notes:
- The erase of the RS485 slave modules will not erase the modules in the Master, this must be done manually with below instructions:
input number modules write output number modules write can control number modules write
Factory Reset of 1 uCAN slave module
The eeprom of every uCAN can be managed by using CLI instructions in other words, from the CLI, we can change eeprom settings which means that we can erase a uCAN or change for example the CAN ID of a certain uCAN. To perform a factory reset of 1 uCAN, following steps needs to be performed:
- First check the modules that are known by the Master:
can ping list -Nr-Bus-ID2.ID1.ID0-Hw_Rev----Serial----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 042.193.007 000 000000000000 021(005) 020(004) 019(003) 018(002) 017(001) 016(000) 000(000) 255(255) 004 F06.00.26 255 069 255 255 255 255 255 247 000 255 001ms 20.04V 01 000 150.163.190 000 000000000000 024(008) 023(007) 022(006) 027(011) 026(010) 025(009) 255(255) 255(255) 000 F06.00.25 255 069 255 255 255 255 255 247 000 255 031ms 22.82V OK
- In this example, we will factory reset the second uCAN with ID 150.163.190. First check if you can read the eeprom of this uCAN (location 0):
eeprom read 150 163 190 0 8 OK
- All eeprom locations can be found on this page (see GEN3): https://wiki.openmotics.com/index.php/CAN_Eeprom_pages
- Let's read the ID of this uCAN:
eeprom read 150 163 190 12 150 OK eeprom read 150 163 190 13 163 OK eeprom read 150 163 190 14 190 OK
- To perform a factory reset of uCAN with ID 150.163.190, execute following instructions:
eeprom write 150 163 190 0 255 OK eeprom write 150 163 190 1 255 OK eeprom write 150 163 190 2 255 OK eeprom write 150 163 190 3 255 OK eeprom write 150 163 190 4 255 OK eeprom write 150 163 190 5 255 OK eeprom write 150 163 190 6 255 OK eeprom write 150 163 190 7 255 OK eeprom write 150 163 190 8 255 OK eeprom write 150 163 190 9 255 OK eeprom write 150 163 190 10 255 OK eeprom write 150 163 190 11 255 OK eeprom write 150 163 190 12 255 OK eeprom write 150 163 190 13 255 OK eeprom write 150 163 190 14 255 OK
- Perform a reset to load the new value from eeprom in to RAM:
reset
- Note that the uCAN will now act as a new uCAN and will be added when a button is pushed.
- Also note that these above instructions will NOT erase the uCAN from the Master
Factory Reset history
When a factory reset has been performed and when modules (uCAN, RS485 & virtual) have been added, this information is stored in a protected area of the Master. This information can be retrieved by using following instruction:
eeprom logging 0000(P510/B064): 19/12/21 08:25:17 EV 030 001 001 079 190 129 000 065 0001(P510/B048): 19/12/21 08:25:17 EV 030 001 000 067 128 047 000 065 0002(P510/B032): 19/12/21 08:25:16 EV 030 001 001 073 206 182 000 065 0003(P510/B016): 19/12/21 08:19:45 EV 200 000 000 008 000 001 000 118 0004(P510/B000): 18/12/21 19:42:44 EV 030 001 001 079 250 007 000 065 0005(P509/B240): 18/12/21 19:42:44 EV 030 001 000 067 160 047 000 065 0006(P509/B224): 18/12/21 19:42:27 EV 200 000 000 008 000 001 000 118 0007(P509/B208): 18/12/21 19:29:22 EV 030 001 001 079 125 003 000 065 0008(P509/B192): 18/12/21 19:29:22 EV 030 001 000 067 032 047 000 065 0009(P509/B176): 18/12/21 19:28:57 EV 200 000 000 008 000 001 000 118 0010(P509/B160): 18/12/21 19:01:11 EV 030 001 001 079 190 129 000 077 0011(P509/B144): 18/12/21 18:59:19 EV 030 001 000 067 064 223 000 065 0012(P509/B128): 18/12/21 18:59:18 EV 030 001 001 079 190 129 000 065 0013(P509/B112): 18/12/21 18:53:37 EV 200 000 000 008 000 001 000 118 0014(P509/B096): 18/12/21 18:50:04 EV 200 000 000 008 000 001 000 118 0015(P509/B080): 18/12/21 08:49:15 EV 200 000 000 008 000 001 000 118 0016(P509/B064): 18/12/21 08:45:43 EV 200 000 000 008 000 001 000 118 0017(P509/B048): 18/12/21 08:30:10 EV 200 000 000 008 000 001 000 118 0018(P509/B032): 18/12/21 08:26:39 EV 200 000 000 008 000 001 000 118 0019(P509/B016): 18/12/21 08:23:24 EV 030 001 002 079 125 003 000 065 0020(P509/B000): 18/12/21 08:23:24 EV 030 001 001 067 160 047 000 065 0021(P508/B240): 18/12/21 08:19:36 EV 200 000 000 008 000 001 000 118 0022(P508/B224): 18/12/21 08:16:05 EV 200 000 000 008 000 001 000 118 0023(P508/B208): 16/12/21 07:47:41 EV 030 001 000 105 000 000 000 077 0024(P508/B192): 16/12/21 07:47:41 EV 030 001 000 108 000 000 000 077 0025(P508/B176): 16/12/21 07:47:41 EV 200 000 000 008 000 001 000 118 0026(P508/B160): 16/12/21 07:44:08 EV 200 000 000 008 000 001 000 118 0027(P508/B144): 15/12/21 17:44:06 EV 030 001 002 079 158 128 000 077 0028(P508/B128): 15/12/21 17:14:17 EV 030 001 001 067 252 255 000 065 0029(P508/B112): 15/12/21 17:13:51 EV 200 000 000 008 000 001 000 118 0030(P508/B096): 15/12/21 17:10:20 EV 200 000 000 008 000 001 000 118 0031(P508/B080): 15/12/21 17:08:20 EV 030 001 001 079 093 002 000 077 OK
Doing an "error list" will give you the link between the modules being added and the eeprom logging:
el --- Total Uptime: 000407 Hours, Last Startup: 09:43:29 19/12/21 --- --- Module Type: BRAIN, RS485 mode: 0, Board: 24'C --.--V --.--A --- --- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.118 --- -------Output------------ID---------Err-------Status--------Pwr--- 00 (l I 000->007) 108.000.000.000 00000 GOOD (000) 1 01 (O E 008->015) 079.190.129.000 00000 GOOD (000) 1 -------Input-------------ID---------Err-------Status--------Pwr--- 00 (i I 000->007) 105.000.000.000 00000 GOOD (000) 1 01 (I E 008->015) 073.206.182.000 00000 GOOD (016) 1 02 (b C 016->023) 098.000.000.002 00000 GOOD (000) 1 03 (b C 024->031) 098.000.000.003 00000 GOOD (000) 1 -------Sensor------------ID---------Err-------Status--------Pwr--- 00 (s C 000->007) 115.000.000.000 00000 GOOD (000) 1 -------CAN Control-------ID---------Err-------Status--------Pwr--- 00 (C E 000->000) 067.128.047.000 00001 GOOD (016) 1 -------Micro CAN---------ID---------Err-------Status--------Pwr--- 00 (m C 000->000) 100.042.193.007 00000 GOOD (000) 1 01 (m C 001->001) 000.150.163.190 00000 GOOD (000) 1 OK
In the eeprom logging list, you can see that multiple Events are stored of which details can be found here: https://wiki.openmotics.com/index.php/AIO_API_Event_Codes
The following events will appear in the eeprom logging:
- Factory reset performed (EV200)
- Module (RS485, virtual or uCAN) being added (EV30)