Difference between revisions of "CLI Reference Guide AIO"

From OpenMotics
Jump to navigation Jump to search
 
(375 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
Information about the All In One (AIO) can be found in [[AIO General Information]].
 +
 
The Gateway has 2 computer systems built-in: A Master Controller (Microchip DSPIC33) and a Gateway Controller (Linux Based Beagle Bone). The Master controller is connected with the Gateway Controller over RS232. The Master Controller has a built-in CLI interface allowing the user to configure and control the Master controller to his full extend.
 
The Gateway has 2 computer systems built-in: A Master Controller (Microchip DSPIC33) and a Gateway Controller (Linux Based Beagle Bone). The Master controller is connected with the Gateway Controller over RS232. The Master Controller has a built-in CLI interface allowing the user to configure and control the Master controller to his full extend.
  
Line 7: Line 9:
 
* Advanced Mode: API (The Master controller and Gateway controller will use Advanced mode to communicate)
 
* Advanced Mode: API (The Master controller and Gateway controller will use Advanced mode to communicate)
 
* Simple Mode: CLI (Simple Mode will be used by Maintenance mode in the cloud or when a direct RS232 connection is established)
 
* Simple Mode: CLI (Simple Mode will be used by Maintenance mode in the cloud or when a direct RS232 connection is established)
 +
 +
The advantages of the AIO (All In One) design is that API and CLI mode can be used simultaneously (on 2 different UART ports).
  
 
=== Notes ===
 
=== Notes ===
Line 16: Line 20:
 
# Every successful instruction will return the requested information (or perform requested action) followed by OK, otherwise ERROR is returned (wrong format, wrong parameters,…). All error codes are listed in the [[Error Codes AIO]] section.
 
# Every successful instruction will return the requested information (or perform requested action) followed by OK, otherwise ERROR is returned (wrong format, wrong parameters,…). All error codes are listed in the [[Error Codes AIO]] section.
 
# An instruction will only be executed if the Master has responded with “OK”
 
# An instruction will only be executed if the Master has responded with “OK”
 +
 +
For the Release Notes of the AIO, please see [[AIO Release Notes]].
  
 
===Notation===
 
===Notation===
Line 39: Line 45:
  
 
==Instruction Set==
 
==Instruction Set==
 +
===General instructions===
 +
====change debug off====
 +
 +
:''This instruction will disable the debug function for changes. When the debug function is activate, every time a sensor value changes (but could also be output or validation bit etc), the changed device number (like sensor) and the new value will be printed.''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Deactivate change debug mode
 +
 +
:;Instruction:
 +
::<code>change debug off</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====change debug on====
 +
 +
:''This instruction will enable the debug function for changes. When the debug function is activate, every time a sensor value changes (but could also be output or validation bit etc), the changed device number (like sensor) and the new value will be printed.''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Activate change debug mode
 +
 +
:;Instruction:
 +
::<code>change debug on</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
====error list ====
 +
====el ====
 +
:''This instruction will list all configured modules, their ID's, the number off errors on this module and the status of each module (Good, Degraded1, Degraded2, Degraded3, Offline, Forced Offline)''
 +
 +
:;Returns
 +
 +
--- 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, BB debug: 0, Fw: 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 00000  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
 +
 +
:Below, you can find a short explanation what the different items mean:
 +
:*First parenthesis first character: module type1 ('O'->RS485 module, 'D'->RS485 dim (0-10V) module, 'l'->Brain(+) internal open collector output, 'i'->Input module, 'o'->output module, 'b'->Micro Can virtual input module, 's'-> Can virtual sensor module, 'T'->RS485 temperature module, 'R'->RS485 output module fully configured as Roller/Shutter module, 'm'->Micro Can module)
 +
:*First parenthesis second character: module type2 ('I'-> Internal inputs/outputs of the Brain(+), 'E'->External RS485 module, 'C'->Linked to External Micro CAN module, 'V'->Virtual module)
 +
:*First parenthesis 000->007: indicate from for example which input nr is the first and last input of that module
 +
:*ID: this is the unique ID of this module
 +
:*Err: Number of errors for each of the modules. CLI instruction "error clear" can be used to reset all errors
 +
:*Status: 4 status possibilities (GOOD, DEGRADED 1, DEGRADED 2, DEGRADED 3, OFFLINE)
 +
:*Second parenthesis: indicates the type of scanning the module will have.
 +
:*BB debug: When 1, debug mode is ON and all BA's that are executed will also be forwarded to the BB over UART API
 +
: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 in the above list 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
 +
:** ...
 +
----
 +
 +
====error clear====
 +
 +
:''This instruction will delete all the errors and will start communicating again with the RS485 modules at the normal pace''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>error clear</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====firmware version====
 +
 +
:''This instruction will display the firmware of the Master and all connected slaves. The firmware version of slaves is requested directly via the RS485 bus in other words, when a slave is not online, the firmware version will not be displayed''
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>firmware version</code>
 +
 +
:;Returns
 +
--- Fw version Brain(+): V1.0.68 ---
 +
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
 +
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
 +
 +
 +
----
 +
 +
====health debug off ====
 +
 +
:''This instruction will disable the CLI console debug function for health related matters. When for example a sensor is not responding for 2 minutes, a debug message will appear when this debug function is enabled''
 +
 +
:;Returns
 +
::OK
 +
 +
----
 +
 +
====health debug on ====
 +
 +
:''This instruction will enable the CLI console debug function for health related matters. When for example a sensor is not responding for 2 minutes, a debug message will appear when this debug function is enabled''
 +
 +
:;Returns
 +
::OK
 +
 +
----
 +
 +
====logging list [number of lines*]====
 +
 +
:''* is an optional value, if the optional value is not used, the system will print the last 32 lines of the FRAM logging''
 +
 +
:''This instruction will print the FRAM logging. Events, Errors and BA's can be logged depending on the settings in Eeprom, see Memory Model Page0/Byte13''
 +
 +
:;Returns
 +
logging list
 +
0000(P056/B048): 21/04/19 17:22:11 BA 001 000 000 027 000 000 000 000
 +
0001(P056/B032): 21/04/19 17:22:11 BA 000 016 000 010 000 000 000 000
 +
0002(P056/B016): 21/04/19 17:22:11 BA 001 001 000 027 000 000 000 000
 +
0003(P056/B000): 21/04/19 17:22:10 BA 001 000 000 027 000 000 000 000
 +
0004(P055/B240): 21/04/19 17:22:10 BA 000 016 000 010 000 000 000 000
 +
0005(P055/B224): 21/04/19 17:22:10 BA 001 001 000 027 000 000 000 000
 +
0006(P055/B208): 21/04/19 17:22:10 BA 001 000 000 027 000 000 000 000
 +
0007(P055/B192): 21/04/19 17:22:10 BA 000 016 000 010 000 000 000 000
 +
0008(P055/B176): 21/04/19 17:22:10 BA 001 001 000 027 000 000 000 000
 +
0009(P055/B160): 21/04/19 17:22:10 BA 001 000 000 027 000 000 000 000
 +
0010(P055/B144): 21/04/19 17:22:09 BA 000 016 000 010 000 000 000 000
 +
0011(P055/B128): 21/04/19 17:22:09 BA 001 001 000 027 000 000 000 000
 +
0012(P055/B112): 21/04/19 17:22:08 BA 001 000 000 027 000 000 000 000
 +
0013(P055/B096): 21/04/19 17:22:08 BA 000 016 000 010 000 000 000 000
 +
0014(P055/B080): 21/04/19 17:22:08 BA 001 001 000 027 000 000 000 000
 +
0015(P055/B064): 21/04/19 17:22:07 BA 001 000 000 027 000 000 000 000
 +
0016(P055/B048): 21/04/19 17:22:07 BA 000 016 000 010 000 000 000 000
 +
0017(P055/B032): 21/04/19 17:22:07 BA 001 001 000 027 000 000 000 000
 +
0018(P055/B016): 21/04/19 17:21:49 BA 001 000 000 027 000 000 000 000
 +
0019(P055/B000): 21/04/19 17:21:49 BA 001 001 000 027 000 000 000 000
 +
0020(P054/B240): 21/04/19 17:21:31 BA 000 000 000 010 000 000 000 000
 +
0021(P054/B224): 21/04/19 17:21:22 BA 000 001 000 011 000 000 000 000
 +
0022(P054/B208): 21/04/19 17:21:15 BA 000 001 000 010 000 000 000 000
 +
0023(P054/B192): 21/04/19 17:20:22 BA 000 255 000 255 000 000 000 000
 +
0024(P054/B176): 21/04/19 17:17:05 EV 254 003 000 000 002 004 000 000
 +
0025(P054/B160): 21/04/19 17:16:11 EV 254 002 000 000 000 000 000 000
 +
0026(P054/B144): 21/04/19 16:35:16 ER 005 001 000 004 000 000 000 000
 +
0027(P054/B128): 21/04/19 16:24:07 ER 005 001 000 004 000 000 000 000
 +
0028(P054/B112): 21/04/19 14:40:59 ER 005 001 000 004 000 000 000 000
 +
0029(P054/B096): 21/04/19 13:57:05 ER 005 001 000 004 000 000 000 000
 +
0030(P054/B080): 21/04/19 13:53:07 ER 006 001 011 083 011 083 000 000
 +
0031(P054/B064): 21/04/19 12:48:39 ER 006 001 011 083 011 083 000 000
 +
OK
 +
 +
 +
----
 +
 +
====pid debug off ====
 +
 +
:''This instruction will disable the CLI console debug function for PID related matters (only used in combination with HVAC module).
 +
 +
:;Returns
 +
::OK
 +
 +
----
 +
 +
====pid debug on ====
 +
 +
:''This instruction will enable the CLI console debug function for PID related matters (only used in combination with HVAC module).
 +
 +
:;Returns
 +
::OK
 +
 +
To enable debugging, use following instruction:
 +
pid debug on
 +
When a PID filter is enabled (when disabled, nothing will be displayed) on 1 of the connected HVAC modules, following will appear on the console (example):
 +
17:51:15 084.075.215.000 pid:0 En:1(H) sensor:19.0(3) setpt:22.5 Err:7 P:49 I:0 D:0 Drive=49 Out=49(0)
 +
Explanation:
 +
* 17:51:15 -> Time
 +
* 084.075.215.000 -> ID of the HVAC module (important when more then 1 HVAC module is connected)
 +
* pid:0 -> PID 0 of the HVAC module is used
 +
* En:1(H) -> Module is enabled (=1) and PÏD filter is in Heating(H) mode. Cooling(C) is also possible
 +
* sensor:19:0(3) -> Sensor is measuring 19.0 degree celsius en Sensor (3) of this HVAC module is used for this PID filter
 +
* sept:22.5 -> The thermostat setpoint is now set at 22.5 degree Celsius
 +
* Err: 7 -> The calculated PID error is 7
 +
* P:49 -> The calculated P result is 49
 +
* I:0 -> The calculated I result is 0
 +
* D:0 -> The calculated D result is 0
 +
* Drive=49 -> The calculated PID drive (P+I+D) is 49
 +
* Out=49(0) -> Analog output (0) will be driven with value 49 (0-255)
 +
 +
When the display rate of the debug information is not high enough, the sampling frequency of the HVAC module can be increased by using eeprom memory location 0/4. For example, increase the speed to display every 8 seconds the PID information:
 +
eeprom write 0 4 10
 +
 +
----
 +
 +
====register list ====
 +
 +
:''This instruction will list all processor registers and the present values. This is for debug purposes''
 +
 +
:;Returns
 +
 +
---Register Values---
 +
  00 00000 00000 00000 00087 00064 00658 16385 00128 00514 00000 00000 00000
 +
  01 00003 00000 00000 00000 00000 00000 32776 32776 32776 32776 01296 01040
 +
  02 01040 01296 00131 00272 15376 00960 08252 00000 00195 26115 13088 12290
 +
  03 00390 00129 00129 00129 16400 00000 00004 00000 00064 00000 00000 00000
 +
  04 00064 00000 00000 00000 00000 06280 49154 00008 00004 00000 00780 00000
 +
  05 00000 00000 05188 05188 25668 01089 17476 17476 17476 04676 17476 17476
 +
  06 17476 16452 17476 17476 17476 01028 17472 16448 00064 05952 16384 17429
 +
  07 17408 17476 17408 17472 17472 01092 00271 32768 32768 00000 00000 00000
 +
  08 00000 00000 00000 00000 36896 36896 00016 00016 00000 32768 00000 00000
 +
  09 00046 00000 00010 00010 00000 00000 00000 00000 00006 00006
 +
OK
 +
 +
 +
----
 +
 +
====reset ====
 +
 +
:''reset the CAN stack see https://wiki.openmotics.com/index.php/AIO_Release_Notes#Factory_Reset_of_a_full_installation_can_be_done_with_following_guideline''
 +
 +
:;Returns
 +
::OK
 +
 +
 +
----
 +
 +
====state machine list ====
 +
 +
:''This instruction will list all main state machines with the last, the minimum and maximum execution time''
 +
 +
:;Returns
 +
  #----Last----Min-----Max------Description------------------
 +
00 03 00004ms 00002ms 01402ms  UART1 receive
 +
01 00 00000ms 00000ms 00000ms  UART2 receive
 +
02 00 00000ms 00000ms 00000ms  UART3 receive
 +
03 01 00000ms 00000ms 00000ms  UART4 receive
 +
04 00 00061ms 00001ms 00238ms  I2C1
 +
05 00 00002ms 00001ms 00052ms  I2C2
 +
06 02 00205ms 00202ms 00258ms  Update Time/Date
 +
07 00 00001ms 00001ms 00016ms  Immediate Queue
 +
08 00 00002ms 00002ms 00006ms  Timer 100ms
 +
09 00 00001ms 00001ms 00005ms  Timer 1 second
 +
10 00 00005ms 00001ms 00005ms  Timer 1 minute
 +
11 00 15444ms 15444ms 15444ms  Perform eeprom activate
 +
12 01 00387ms 00116ms 00822ms  CLI print text
 +
13 00 00000ms 00000ms 00000ms  CLI action execute
 +
14 05 00001ms 00001ms 00016ms  Scan modules over RS485 network
 +
15 00 00035ms 00001ms 00063ms  RS485 modules health status check
 +
16 00 00001ms 00001ms 00003ms  Check Error, print, store in FRAM
 +
17 00 00001ms 00001ms 00024ms  Check input queue and actions
 +
18 00 00000ms 00000ms 00000ms  Check input delay queue and actions
 +
19 00 01391ms 01391ms 01391ms  CLI print registers
 +
20 00 00002ms 00002ms 00010ms  Check CAN1 RX queue
 +
21 00 00013ms 00001ms 00069ms  Check CAN1 TX queue
 +
22 00 00000ms 00000ms 00000ms  Check hardware health
 +
23 00 00000ms 00000ms 00000ms  Check leds
 +
24 00 00001ms 00001ms 00084ms  Check internal outputs
 +
25 00 00002ms 00001ms 00009ms  Check internal inputs
 +
26 00 00000ms 00000ms 00000ms  Execute Group Action
 +
27 00 00002ms 00001ms 00004ms  Execute list of actions every minute
 +
 +
 +
----
 +
 +
====module discover start====
 +
 +
:''This instruction will start the discovery mode of the RS485 Bus for the non-energy modules. When this instruction is executed, the normal function of the bus is stopped to be able to add new modules.''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>module discover start</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====module discover stop====
 +
 +
:''This instruction will stop the discovery mode of the RS485 Bus for the non-energy modules''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>module discover stop</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====startup group read====
 +
 +
:''A group Action can be defined that needs to be executed when the system starts. This instruction will read the group nr (0-254) that will be executed at startup.''
 +
 +
:;Returns
 +
::<code>group nr</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>startup group read</code>
 +
 +
:;Returns
 +
::<code>5</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====startup group write [group nr]====
 +
 +
:''A group Action can be defined that needs to be executed when the system starts. This instruction will write the group nr (0-254) that will be executed at startup.''
 +
 +
:;[group nr]
 +
::Indicates which group nr that needs to be executed at startup.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>startup group write 5</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====queue list====
 +
 +
:''This instruction will print on console the immediate buffer queue. This instruction can also be used to see what's been happening recently and see the instruction that have just been executed.''
 +
 +
:;Returns
 +
:: Full list of the immediate queue including values of all pointers used
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>queue list</code>
 +
 +
:;Returns
 +
:: Queue list
 +
::<code>OK</code>
 +
 +
----
 +
 +
====digital output chip read====
 +
AS OF VERSION 1.0.150
 +
:''This instruction will print on console the type of digital output chip that is configured (PCA9534 VS PCF8574). Default value is the PCA variant''
 +
 +
:;Returns
 +
:: setting of the configured chip
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>digital output chip read</code>
 +
 +
:;Returns
 +
:: 0x55 == PCF8574
 +
::<code>OK</code>
 +
 +
----
 +
 +
====digital output chip write [chip type]====
 +
AS OF VERSION 1.0.150
 +
:''This instruction will write the type of digital output chip that is configured (PCA9534 VS PCF8574).''
 +
 +
:;[chip type]
 +
::The type of chip that is placed on the PCB for controlling the digital outputs
 +
:: - 0x55 == 85  == PCF8574
 +
:: - 0xff == 255 == PCA9534
 +
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>digital output chip write 85</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
===Time & Date instructions===
 +
====days group follow read====
 +
 +
:''A group Action can be defined that needs to be executed when the date (day) changes. This instruction will read the group nr (0-254) that will be executed at day change.''
 +
 +
:;Returns
 +
::<code>group nr</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>days group follow read</code>
 +
 +
:;Returns
 +
::<code>5</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====days group follow write [group nr]====
 +
 +
:''A group Action can be defined that needs to be executed when the date (day) changes. This instruction will write the group nr (0-254) that will be executed at day change.''
 +
 +
:;[group nr]
 +
::Indicates which group nr that needs to be executed at day change.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>days group follow write 6</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
----
 +
====hours group follow read====
 +
 +
:''A group Action can be defined that needs to be executed when the time (hour) changes. This instruction will read the group nr (0-254) that will be executed at hour change.''
 +
 +
:;Returns
 +
::<code>group nr</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>hours group follow read</code>
 +
 +
:;Returns
 +
::<code>5</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====hours group follow write [group nr]====
 +
 +
:''A group Action can be defined that needs to be executed when the time (hour) changes. This instruction will write the group nr (0-254) that will be executed at hour change.''
 +
 +
:;[group nr]
 +
::Indicates which group nr that needs to be executed at hour change.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>hours group follow write 6</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
====minutes group follow read====
 +
 +
:''A group Action can be defined that needs to be executed when the time (minutes) changes. This instruction will read the group nr (0-254) that will be executed at minute change.''
 +
 +
:;Returns
 +
::<code>group nr</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>minutes group follow read</code>
 +
 +
:;Returns
 +
::<code>5</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====minutes group follow write [group nr]====
 +
 +
:''A group Action can be defined that needs to be executed when the time (minutes) changes. This instruction will write the group nr (0-254) that will be executed at minute change.''
 +
 +
:;[group nr]
 +
::Indicates which group nr that needs to be executed at minute change.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>minutes group follow write 6</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
====time read====
 +
 +
:''This instruction will read the time of the internal Real Time Clock.''
 +
 +
:;Returns
 +
:: The time
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>time read</code>
 +
 +
:;Returns
 +
::<code>20:13:19</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====time write [hours][minutes][seconds]====
 +
 +
:''This instruction will write the time in the Real Time Chip''
 +
 +
:;[hours]
 +
::Value 0 to 23
 +
:;[minutes]
 +
::Value 0 to 59
 +
:;[seconds]
 +
::Value 0 to 99
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>time write 19 25 57</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====date read====
 +
 +
:''This instruction will read the date of the internal Real Time Clock.''
 +
 +
:;Returns
 +
:: The date
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>date read</code>
 +
 +
:;Returns
 +
::<code>2 25-12-18</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====date write [day of the week][day][month][year]====
 +
 +
:''This instruction will write the date in the Real Time Chip''
 +
 +
:;[day of the week]
 +
::Value 1 to 7 represents Monday to Sunday.
 +
:;[day]
 +
::Value 1 to 31, day of the month.
 +
:;[month]
 +
::Value 1 to 12
 +
:;[year]
 +
::Value 0 to 99
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>date write 2 25 12 18</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
===Basic Action instructions===
 +
====basic action debug off====
 +
 +
:''This instruction will disable the debug function for Basic Actions. When the debug function is activate, every time a Basic Action is executed, the Basic Action Number and Basic Action explanation will be printed on the console.''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Deactivate Basic Action debug mode
 +
 +
:;Instruction:
 +
::<code>basic action debug off</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====basic action debug on====
 +
 +
:''This instruction will enable the debug function for Basic Actions. When the debug function is activate, every time a Basic Action is executed, the Basic Action Number and Basic Action explanation will be printed on the console.''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Activate Basic Action debug mode
 +
 +
:;Instruction:
 +
::<code>basic action debug on</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====basic action activate [Type] [Action] [Device Nr] [Extra parameter]====
 +
 +
:''This instruction will execute a Basic Action. For a full list of basic actions, see [[Action Types AIO]]''
 +
 +
:;[Type]
 +
::This is the Type of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Action]
 +
::This is the Action of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Device Nr]
 +
::This is the Device Nr of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Extra Parameter]
 +
::This is the Extra Parameter of a Basic Action, see [Action Types AIO]].
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Toggle output 12
 +
 +
:;Instruction:
 +
::<code>basic action activate 0 16 12 0</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====basic action activate [Type] [Action] [Device Nr.MSB] [Device Nr.LSB] [Extra parameter.MSB] [Extra parameter.LSB]====
 +
 +
:''This instruction will execute a Basic Action. Since Device Nr and Extra Parameter contains word value, it's sometime needed for ease of use to be able to use the MSB (Most Significant Byte) and LSB (Least Significant Byte) values. For a full list of basic actions, see [[Action Types AIO]]''
 +
 +
:;[Type]
 +
::This is the Type of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Action]
 +
::This is the Action of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Device Nr.MSB]
 +
::This is the MSB Device Nr of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Device Nr.LSB]
 +
::This is the LSB Device Nr of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Extra Parameter.MSB]
 +
::This is the MSB Extra Parameter of a Basic Action, see [Action Types AIO]].
 +
 +
:;[Extra Parameter.LSB]
 +
::This is the LSB Extra Parameter of a Basic Action, see [Action Types AIO]].
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Program in the uCAN (ID 26 88 120) for Sensor0 the sensor nr 15
 +
 +
:;Instruction:
 +
::<code>basic action activate 20 18 26 88 120 15</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
===Eeprom & Fram instructions===
 +
====eeprom erase [start page][end page][security code]====
 +
 +
:''This instruction will erase 1 or more pages of the eeprom. With the start and end page, you can indicate which pages must be erased''
 +
 +
:;[start page]
 +
::Indicates the start page (0-511) of the pages that must be erased.
 +
 +
:;[end page]
 +
::Indicates the end page (0-511) of the pages that must be erased.
 +
 +
:;[security code]
 +
::Security code "28883" must be used to be able to activate the erase function
 +
 +
:;Returns
 +
::delete progress information
 +
::<code>OK</code>
 +
 +
Example: Delete eeprom page 256
 +
 +
:;Instruction:
 +
::<code>eeprom erase 256 256 28883</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Important: It's NOT possible to undo this instruction. Once the erase is executed, the data is erased and can't be retrieved anymore.
 +
----
 +
 +
====eeprom read [page][byte][Opt: Nr of byte]====
 +
 +
:''This instruction will read 1 of more bytes from eeprom. Maximum 30 bytes can be read''
 +
 +
:;[page]
 +
::This is the page (0-511) of the eeprom to be read.
 +
 +
:;[byte]
 +
::This is the byte nr to be read (or the start byte when more then 1 byte is requested)
 +
 +
:;[Opt: Nr of byte]
 +
::This optional parameter (2-30) can be added when more then 1 byte must be read
 +
 +
:;Returns
 +
::<code>eeprom read bytes</code>
 +
::<code>OK</code>
 +
 +
Example: Read from page 0 start at byte 2 the next 10 bytes
 +
 +
:;Instruction:
 +
::<code>eeprom read 0 2 20</code>
 +
 +
:;Returns
 +
::<code>0 2 -> 5 ( )</code>
 +
::<code>0 3 -> 1 ( )</code>
 +
::<code>0 4 -> 255 ( )</code>
 +
::<code>0 5 -> 13 ( )</code>
 +
::<code>0 6 -> 7 ( )</code>
 +
::<code>0 7 -> 4 ( )</code>
 +
::<code>0 8 -> 255 ( )</code>
 +
::<code>0 9 -> 255 ( )</code>
 +
::<code>0 10 -> 255 ( )</code>
 +
::<code>0 11 -> 255 ( )</code>
 +
::<code>0 12 -> 255 ( )</code>
 +
::<code>0 13 -> 255 ( )</code>
 +
::<code>0 14 -> 255 ( )</code>
 +
::<code>0 15 -> 255 ( )</code>
 +
::<code>0 16 -> 255 ( )</code>
 +
::<code>0 17 -> 255 ( )</code>
 +
::<code>0 18 -> 255 ( )</code>
 +
::<code>0 19 -> 255 ( )</code>
 +
::<code>0 20 -> 255 ( )</code>
 +
::<code>OK</code>
 +
 +
----
 +
====eeprom read [Id0][Id1][Id2][location]====
 +
:''CLI instruction "eeprom read" also supports reading the eeprom of uCAN slave modules. This function requires uCAN Firmware Version 6.0.21 or higher. Instead of 2 or 3 arguments being used (for internal eeprom read), 4 arguments are used to read the eeprom of a uCAN.''
 +
eeprom read Id0 Id1 Id2 location
 +
 +
:;[Id0..Id2]
 +
::This is the 3 bytes ID (without CAN Bus number) of the uCAN
 +
 +
:;[location]
 +
::Indicates the eeprom memory read location (0-1023) of the uCAN
 +
 +
:;Returns
 +
::Read Byte
 +
::<code>OK</code>
 +
Example: Read the value of eeprom location 29 of the uCAN with ID 91.59.166
 +
el
 +
--- Total Uptime: 000216 Hours, Last Startup: 08:02:09 02/09/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.109      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  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
 +
  04 (b C 032->039) 098.000.000.004 00000  GOOD      (000)  1
 +
-------Sensor------------ID---------Err-------Status--------Pwr---
 +
  00 (s C 000->007) 115.000.000.000 00000  GOOD      (000)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 100.069.253.220 00001  GOOD      (000)  1
 +
  01 (m C 001->001) 100.052.078.228 00000  GOOD      (000)  1
 +
  02 (m C 002->002) 100.135.225.126 00000  GOOD      (000)  1
 +
  03 (m C 003->003) 100.091.059.166 00000  GOOD      (000)  1
 +
OK
 +
eeprom read 91 59 166 29
 +
15
 +
OK
 +
----
 +
====eeprom read [Id0][Id1][Id2][Id3][location]====
 +
:''CLI instruction "eeprom read" also supports reading the internal processor eeprom of RS485 slave modules. Instead of 2 or 3 arguments being used (for internal eeprom read) or 4 arguments (reading uCAN), 5 arguments are used to read the eeprom of a RS485 slave module.''
 +
eeprom read Id0 Id1 Id2 Id3 location
 +
 +
:;[Id0..Id3]
 +
::This is the 4 bytes ID of the RS485 slave module
 +
 +
:;[location]
 +
::Indicates the eeprom memory read location (0-1023) of the RS485 slave
 +
 +
:;Returns
 +
::Location -> Read Byte
 +
::<code>OK</code>
 +
Example: Read the value of eeprom location 2 of input module with ID 73.20.51.10
 +
eeprom read 73 20 51 10 2
 +
2 -> 20
 +
OK
 +
----
 +
 +
====eeprom write [page][byte][data byte]====
 +
 +
:''This instruction will write 1 byte in eeprom.''
 +
 +
:;[page]
 +
::Indicates the eeprom page (0-511) where the byte will be written.
 +
 +
:;[byte]
 +
::Indicates the eeprom byte (0-255) where the byte will be written.
 +
 +
:;[data byte]
 +
::This is the byte that will be written
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Write at page 10 byte 200 value 33
 +
 +
:;Instruction:
 +
::<code>eeprom write 10 200 33</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Note: Your full configuration is stored in eeprom. Programming bytes in eeprom can make your system non-functional so please be careful using this instruction unless you know what you're doing.
 +
----
 +
====eeprom write [Id0][Id1][Id2][location][data_byte]====
 +
:''CLI instruction "eeprom write" also supports writing the eeprom of RS485 slave modules. Instead of 3 arguments used (for internal eeprom write), 5 arguments are used to write the eeprom of a uCAN.''
 +
eeprom write Id0 Id1 Id2 location data_byte
 +
 +
:;[Id0..Id2]
 +
::This is the 3 bytes ID (without CAN Bus number) of the uCAN
 +
 +
:;[location]
 +
::Indicates the eeprom memory location (0-1023) of the uCAN where the byte will be written.
 +
 +
:;[data byte]
 +
::This is the byte (0-255) that will be written in the eeprom of the uCAN
 +
 +
:;Returns
 +
::Written Byte
 +
::<code>OK</code>
 +
Example: Write a value (20) in eeprom location 29 of the eeprom of the uCAN with ID 91.59.166
 +
el
 +
--- Total Uptime: 000216 Hours, Last Startup: 08:02:09 02/09/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.109      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  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
 +
  04 (b C 032->039) 098.000.000.004 00000  GOOD      (000)  1
 +
-------Sensor------------ID---------Err-------Status--------Pwr---
 +
  00 (s C 000->007) 115.000.000.000 00000  GOOD      (000)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 100.069.253.220 00001  GOOD      (000)  1
 +
  01 (m C 001->001) 100.052.078.228 00000  GOOD      (000)  1
 +
  02 (m C 002->002) 100.135.225.126 00000  GOOD      (000)  1
 +
  03 (m C 003->003) 100.091.059.166 00000  GOOD      (000)  1
 +
OK
 +
eeprom write 91 59 166 29 20
 +
20
 +
OK
 +
eeprom read 91 59 166 29
 +
20
 +
OK
 +
----
 +
 +
====eeprom write [Id0][Id1][Id2][Id3][location][data_byte]====
 +
:''CLI instruction "eeprom write" also supports writing the eeprom of RS485 slave modules. Instead of 3 arguments used (for internal eeprom write) or 5 arguments are used to write the eeprom of a uCAN, this instruction uses 6 arguments to write the eeprom of a RS485 slave module.''
 +
eeprom write Id0 Id1 Id2 Id3 location data_byte
 +
 +
:;[Id0..Id3]
 +
::This is the 4 bytes ID of the RS485 slave module
 +
 +
:;[location]
 +
::Indicates the eeprom memory location (0-1023) of the RS485 slave module where the byte will be written.
 +
 +
:;[data byte]
 +
::This is the byte (0-255) that will be written in the eeprom of the RS485 slave module
 +
 +
:;Returns
 +
::Written Byte
 +
::<code>OK</code>
 +
Example: Write a value (20) in eeprom location 29 of the eeprom of the input module with ID 73.10.22.58
 +
eeprom write 73 10 22 58 29 20
 +
20 (29)
 +
OK
 +
eeprom read 73 10 22 58 29
 +
20 (29)
 +
OK
 +
----
 +
 +
====eeprom search [start page][stop page][data byte0][Opt: data byte1][Opt: data byte2][Opt: data byte3][Opt: data byte4][Opt: data byte5]====
 +
 +
:''This instruction will read search for data bytes in eeprom. The data bytes will indicate which bytes are being searched. The start and end page defines in which pages of the eeprom the search instruction has to be performed. The eeprom has 512 pages (0-511), each page contains 256 bytes of data. You can select 1 or more (up to 6) data bytes to be searched.''
 +
 +
:;[start page]
 +
::This is the start page (0-511) of the eeprom where the search will start.
 +
 +
:;[stop page]
 +
::This is the stop page (0-511) of the eeprom where the search will stop.
 +
 +
:;[data byte0..5]
 +
::This is the data byte that will be searched in eeprom
 +
 +
:;Returns
 +
::<code>eeprom search result</code>
 +
::<code>OK</code>
 +
 +
Example: (search page 0 to 10 in eeprom to find the location where 7 or 13 is written)
 +
 +
:;Instruction:
 +
::<code>eeprom search 0 10 7 13</code>
 +
 +
:;Returns
 +
::<code> 0 5 -> 13</code>
 +
::<code> 0 6 -> 7 </code>
 +
::<code>OK</code>
 +
 +
As you can see, on page 0 Byte 5 and 6, the system did found results.
 +
 +
----
 +
====fram erase [start page][end page][security code]====
 +
 +
:''This instruction will erase 1 or more pages of the FRAM. With the start and end page, you can indicate which pages must be erased''
 +
 +
:;[start page]
 +
::Indicates the start page (0-127) of the pages that must be erased.
 +
 +
:;[end page]
 +
::Indicates the end page (0-127) of the pages that must be erased.
 +
 +
:;[security code]
 +
::Security code "28883" must be used to be able to activate the erase function
 +
 +
:;Returns
 +
::delete progress information
 +
::<code>OK</code>
 +
 +
Example: Delete fram page 30 till 35 (including 35)
 +
 +
:;Instruction:
 +
::<code>fram erase 30 35 28883</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Important: It's NOT possible to undo this instruction. Once the erase is executed, the data is erased and can't be retrieved anymore.
 +
----
 +
 +
====fram read [page][byte][Opt: Nr of byte]====
 +
 +
:''This instruction will read 1 of more bytes from FRAM. Maximum 30 bytes can be read''
 +
 +
:;[page]
 +
::This is the page (0-127) of the FRAM to be read.
 +
 +
:;[byte]
 +
::This is the byte nr to be read (or the start byte when more then 1 byte is requested)
 +
 +
:;[Opt: Nr of byte]
 +
::This optional parameter (2-30) can be added when more then 1 byte must be read
 +
 +
:;Returns
 +
::<code>Fram read bytes</code>
 +
::<code>OK</code>
 +
 +
Example: Read from page 0 start at byte 2 the next 10 bytes
 +
 +
:;Instruction:
 +
::<code>fram read 0 2 20</code>
 +
 +
:;Returns
 +
::<code>0 2 -> 5 ( )</code>
 +
::<code>0 3 -> 1 ( )</code>
 +
::<code>0 4 -> 255 ( )</code>
 +
::<code>0 5 -> 13 ( )</code>
 +
::<code>0 6 -> 7 ( )</code>
 +
::<code>0 7 -> 4 ( )</code>
 +
::<code>0 8 -> 255 ( )</code>
 +
::<code>0 9 -> 255 ( )</code>
 +
::<code>0 10 -> 255 ( )</code>
 +
::<code>0 11 -> 255 ( )</code>
 +
::<code>0 12 -> 255 ( )</code>
 +
::<code>0 13 -> 255 ( )</code>
 +
::<code>0 14 -> 255 ( )</code>
 +
::<code>0 15 -> 255 ( )</code>
 +
::<code>0 16 -> 255 ( )</code>
 +
::<code>0 17 -> 255 ( )</code>
 +
::<code>0 18 -> 255 ( )</code>
 +
::<code>0 19 -> 255 ( )</code>
 +
::<code>0 20 -> 255 ( )</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====fram write [page][byte][data byte]====
 +
 +
:''This instruction will write 1 byte in FRAM.''
 +
 +
:;[page]
 +
::Indicates the FRAM page (1-127) where the byte will be written.
 +
 +
:;[byte]
 +
::Indicates the FRAM byte (0-255) where the byte will be written.
 +
 +
:;[data byte]
 +
::This is the byte that will be written
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Write at page 10 byte 200 value 33
 +
 +
:;Instruction:
 +
::<code>fram write 10 200 33</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Note: Please note that page 0 is protected and can't be written by the user.
 +
----
 +
 +
===Input instructions===
 +
====add virtual input module [id1] [id2] [id3] ====
 +
 +
:''This instruction will add a virtual input module (id0="i") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the input list is unique and not yet used.''
 +
:Example:
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 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.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
add virtual input module 0 0 2
 +
OK
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  1
 +
  02 (i V 016->023) 105.000.000.002 00000  GOOD      (000)  0
 +
-------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.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
 +
====input action read [input nr] ====
 +
 +
:''This instruction will read the BA's that are linked to an input''
 +
 +
:Following input actions with associated BA can be linked to an input:
 +
:*Action 0: Press Action
 +
:*Action 1: Release Action
 +
:*Action 2: 1 Sec Press
 +
:*Action 3: 2 Sec Press
 +
:*Action 4: Double Press
 +
 +
:;Returns
 +
::<code>----------------Act--Inp-Cnf-Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----</code>
 +
::<code>0-  PRESS              : Yes  001  0  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code>1-  RELEASE            : Yes  001  1  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code>2- 1SEC PRESS : No  001  2  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code>3- 2SEC PRESS : No  001  3  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code>4-DOUBLE PRESS: No  001  4  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code>OK</code>
 +
 +
----
 +
====input action write [input nr] [input action] [BA Type] [BA Action] [BA Device Nr] [BA Extra parameter] ====
 +
 +
:''This instruction will program for an input and for a certain input action the associated BA''
 +
 +
:Input Nr: This is the input number to be programmed
 +
:Input action: Following input actions can be used
 +
:*0: Press Action
 +
:*1: Release Action
 +
:*2: 1 Sec Press
 +
:*3: 2 Sec Press
 +
:*4: Double Press
 +
:BA type, BA action, BA device etc: This is the BA to be executed when an input action occurs, see [[Action Types AIO]]
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
====input action write [input nr] [input action] [BA Type] [BA Action] [BA Device Nr.MSB] [BA Device Nr.LSB] [BA Extra parameter.MSB] [BA Extra parameter.LSB]====
 +
 +
:''This instruction will program for an input and for a certain input action the associated BA. This instruction is equal then the above instruction excepts that BA Device Nr and BA Extra Parameter are split in a MSB byte and a LSB byte''
 +
 +
:Input Nr: This is the input number to be programmed
 +
:Input action: Following input actions can be used
 +
:*0: Press Action
 +
:*1: Release Action
 +
:*2: 1 Sec Press
 +
:*3: 2 Sec Press
 +
:*4: Double Press
 +
:BA type, BA action, BA device etc: This is the BA to be executed when an input action occurs, see [[Action Types AIO]]
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====input debug off ====
 +
 +
:''This instruction will disable the CLI console debug function for inputs. When an input is pressed or released, a debug message will appear when this debug function is enabled''
 +
 +
:;Returns
 +
::OK
 +
 +
----
 +
 +
====input debug on ====
 +
 +
:''This instruction will enable the CLI console debug function for inputs. When an input is pressed or released, a debug message will appear when this debug function is enabled''
 +
 +
:;Returns
 +
::OK
 +
 +
----
 +
 +
====input link read [input nr]====
 +
 +
:''This instruction will read, for an input, which output or action is linked to it.''
 +
 +
:;[input nr]
 +
::Indicates which input (0-631) that the link has to be read.
 +
 +
:;Returns
 +
::<code>output nr or link</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>input link read 15</code>
 +
 +
:;Returns
 +
::<code>12</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====input link write [input nr][output link nr]====
 +
 +
:''This instruction will write, for an input (0-479), which output (0-479) or action is linked to it.''
 +
 +
:;[input nr]
 +
::Indicates which input that the link has to be written.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example: Link input 15 with output 12
 +
 +
:;Instruction:
 +
::<code>input link write 15 12</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
To unconfigure an input from an output:
 +
 +
input link read 32
 +
Input 32 is linked to Output 14
 +
OK
 +
 +
input link write 32 65535
 +
OK
 +
 +
input link read 32
 +
Input 32 has no Output nor any action(s) linked
 +
OK
 +
 +
----
 +
 +
====input list ====
 +
 +
:''This instruction will display the list of inputs, the status (0-> release state, 1-> press state), the link (is an action configured or an output linked) and the name of each input''
 +
 +
:;Returns
 +
::The input list
 +
 +
----
 +
 +
====input release [input nr]====
 +
 +
:''Switch input to release state for virtual modules.''
 +
 +
:;[input nr]
 +
::Indicates which input that needs to be put in release state, a maximum of 632 (0 - 631) inputs can be used.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>input release 28</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====input press [input nr]====
 +
 +
:''Switch input to press state for virtual modules.''
 +
 +
:;[input nr]
 +
::Indicates which input that needs to be put in press state, a maximum of 632 (0 - 631) inputs can be used.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>input press 28</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====input name write [input nr][input name]====
 +
 +
:''Write the name of an input, max 16 characters.''
 +
 +
:;[input nr]
 +
::Indicates which input (0-631) the name has to be written.
 +
 +
:;[input name]
 +
::the ascii name of the input (maximum 16 characters).
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>input name write 28 Bedroom parents</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 +
====input name read [input nr]====
 +
 +
:''Read the name of an input''
 +
 +
:;[input nr]
 +
::Indicates which input (0-631) the name has to be displayed.
 +
 +
:;Returns
 +
::<code>Input Name</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>input name read 28</code>
 +
 +
:;Returns
 +
::<code>Bedroom Parents</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====pulse counter read [input nr]====
 +
 +
:''Read the pulse counter number of an input''
 +
 +
:;[input nr]
 +
::Indicates which input (0-631) the pulse counter number has to be displayed.
 +
 +
:;Returns
 +
::<code>pulse counter number</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>pulse counter read 3</code>
 +
 +
:;Returns
 +
::<code>2546678</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====input number modules read====
 +
 +
:''Read the number of input modules that are programmed and active''
 +
 +
:;Returns
 +
::<code>Number Of Input Modules</code>
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>input number modules read</code>
 +
 +
:;Returns
 +
::<code>6</code>
 +
::<code>OK</code>
 +
 +
----
 +
 +
====input number modules write [number of input modules]====
 +
 +
:''Writes the number of input modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM''
 +
 +
:;[number of input modules]
 +
::Indicates the number of input modules that are active and programmed.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>input number modules write 7</code>
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
----
 +
 
===Output instructions===
 
===Output instructions===
 +
====add virtual dimmer module [id1] [id2] [id3] ====
 +
 +
:''This instruction will add a virtual dimmer module (id0="d") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the output list is unique and not yet used.''
 +
:Important Note: id1..id3 0.0.0, 0.0.1, 0.0.2 and 0.0.3 are reserved for internal use and cannot be used.
 +
:Example:
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  1
 +
  02 (i V 016->023) 105.000.000.002 00000  GOOD      (000)  0
 +
-------Sensor------------ID---------Err-------Status--------Pwr---
 +
  00 (s C 000->007) 115.000.000.000 00000  GOOD      (000)  1
 +
  01 (s C 008->015) 115.000.000.001 00000  GOOD      (000)  1
 +
-------CAN Control-------ID---------Err-------Status--------Pwr---
 +
  00 (C E 000->000) 067.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
add virtual dimmer module 0 0 4
 +
OK
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
  01 (d V 008->015) 100.000.000.004 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  1
 +
  02 (i V 016->023) 105.000.000.002 00000  GOOD      (000)  0
 +
-------Sensor------------ID---------Err-------Status--------Pwr---
 +
  00 (s C 000->007) 115.000.000.000 00000  GOOD      (000)  1
 +
  01 (s C 008->015) 115.000.000.001 00000  GOOD      (000)  1
 +
-------CAN Control-------ID---------Err-------Status--------Pwr---
 +
  00 (C E 000->000) 067.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
 +
====add virtual output module [id1] [id2] [id3] ====
 +
 +
:''This instruction will add a virtual dimmer module (id0="o") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the output list is unique and not yet used.''
 +
:Important Note: id1..id3 0.0.0, 0.0.1, 0.0.2 and 0.0.3 are reserved for internal use and cannot be used.
 +
:Example:
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
  01 (d V 008->015) 100.000.000.004 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  1
 +
  02 (i V 016->023) 105.000.000.002 00000  GOOD      (000)  0
 +
-------Sensor------------ID---------Err-------Status--------Pwr---
 +
  00 (s C 000->007) 115.000.000.000 00000  GOOD      (000)  1
 +
  01 (s C 008->015) 115.000.000.001 00000  GOOD      (000)  1
 +
-------CAN Control-------ID---------Err-------Status--------Pwr---
 +
  00 (C E 000->000) 067.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
add virtual output module 0 0 5
 +
OK
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
  01 (d V 008->015) 100.000.000.004 00000  GOOD      (000)  1
 +
  02 (o V 016->023) 111.000.000.005 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  1
 +
  02 (i V 016->023) 105.000.000.002 00000  GOOD      (000)  0
 +
-------Sensor------------ID---------Err-------Status--------Pwr---
 +
  00 (s C 000->007) 115.000.000.000 00000  GOOD      (000)  1
 +
  01 (s C 008->015) 115.000.000.001 00000  GOOD      (000)  1
 +
-------CAN Control-------ID---------Err-------Status--------Pwr---
 +
  00 (C E 000->000) 067.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
 +
====output all off====
 +
====aoff====
 +
:''Switch all outputs off.''
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>output all off</code> will switch all outputs OFF.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
:;Instruction:
 +
::<code>oaoff</code> will switch all outputs OFF.
 +
 +
:;Returns
 +
::<code>OK</code> 
 +
 +
----
 +
====output status on====
 +
====oso====
 +
:''Returns the list of all outputs that are ON.''
 +
 +
:;Returns
 +
::List of outputs that are ON
 +
 +
----
 +
 +
====output list ====
 +
 +
:''This instruction will display the list of outputs, the status (On or Off), the dim value, the configured timer value, the timer type (Off, , 100ms timer, 1s timer or 1m timer) and the name of each output''
 +
 +
:;Returns
 +
::The output list
 +
 +
----
 +
 
====output on [output nr] [dimmer value*] [timer value*]====
 
====output on [output nr] [dimmer value*] [timer value*]====
 
+
====on [output nr] [dimmer value*] [timer value*]====
 
:''Switch ON an output. * are optional values''
 
:''Switch ON an output. * are optional values''
 
  
 
:;[output nr]
 
:;[output nr]
::Indicates which output that needs to be switched ON, a maximum of 480 (0 - 479) outputs can be used.
+
::Indicates which output that needs to be switched ON, a maximum of 640 (0 - 639) outputs can be used.
  
 
:;[dimmer value*]
 
:;[dimmer value*]
Line 55: Line 1,613:
  
 
:;Returns
 
:;Returns
::''OK''
+
::<code>OK</code>
 +
 
 +
Examples:
  
 +
:;Instruction:
 +
:<code>output on 127</code> 
 +
::will switch ON output 127.
  
Example:
+
:;Returns
 +
::<code>OK</code>
  
:<code>output on 127</code> will switch ON output 127.
+
:;Instruction:
 +
::<code>output on 127 56</code>
 +
::will switch ON output 127 with dimmer value 56.
  
::output: ''OK''
+
:;Returns
 +
::<code>OK</code>
  
:<code>output on 127 56</code> will switch ON output 127 with dimmer value 56.
+
:;Instruction:
 +
::<code>output on 127 56 3600</code>  
 +
::will switch ON output 127 with dimmer value 56 for 3600 seconds.
  
::output: ''OK''
+
:;Returns
 +
::<code>OK</code>
  
:<code>output on 127 56 3600</code> will switch ON output 127 with dimmer value 56 for 3600 seconds.
+
:;Instruction:
 +
::<code>oon 127 56 3600</code>  
 +
::will switch ON output 127 with dimmer value 56 for 3600 seconds.
  
::output: ''OK''
+
:;Returns
 +
::<code>OK</code>
  
 
----
 
----
  
 
====output off [output nr]====
 
====output off [output nr]====
 +
====off [output nr]====
 +
:''Switch OFF an output.''
 +
 +
:;[output nr]
 +
::Indicates which output that needs to be switched OFF, a maximum of 640 (0 - 639) outputs can be used.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
Example:
 +
 +
:;Instruction:
 +
::<code>output off 127</code> will switch OFF output 127.
 +
 +
:;Returns
 +
::<code>OK</code>
 +
 +
:;Instruction:
 +
::<code>ooff 127</code> will switch OFF output 127.
 +
 +
:;Returns
 +
::<code>OK</code> 
 +
 +
----
  
:''Switch OFF an output.''
+
====output name write [output nr][output name]====
  
 +
:''Write the name of an output, max 16 characters.''
  
 
:;[output nr]
 
:;[output nr]
::Indicates which output that needs to be switched OFF, a maximum of 480 (0 - 479) outputs can be used.
+
::Indicates which output (0-639) the name has to be written.
 +
 
 +
:;[output name]
 +
::the ascii name of the output (maximum 16 characters).
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>output name write 24 Bedroom 4</code>
  
 
:;Returns
 
:;Returns
::''OK''
+
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====output name read [output nr]====
  
 +
:''Read the name of an output''
 +
 +
:;[output nr]
 +
::Indicates which output (0-639) the name has to be displayed.
 +
 +
:;Returns
 +
::<code>output Name</code>
 +
::<code>OK</code>
  
 
Example:
 
Example:
  
:<code>output off 127</code> will switch OFF output 127.
+
:;Instruction:
 +
::<code>output name read 24</code>
  
::output: ''OK''
+
:;Returns
 +
::<code>Bedroom 4</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====output number modules read====
 +
 
 +
:''Read the number of output modules that are programmed and active''
 +
 
 +
:;Returns
 +
::<code>Number Of Output Modules</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>output number modules read</code>
 +
 
 +
:;Returns
 +
::<code>6</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====output number modules write [number of output modules]====
 +
 
 +
:''Writes the number of output modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM''
 +
 
 +
:;[number of output modules]
 +
::Indicates the number of output modules that are active and programmed.
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>output number modules write 7</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====output group follow read [Output Nr] ====
 +
 
 +
: ''An output activation (switch on, off or change dimmer value) can be programmed to trigger a group action. With this instruction, you can read, for Output Nr, when an output activation occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example: Read the group linked to output 35
 +
 
 +
:;Instruction:
 +
::<code>output group follow read 35</code>
 +
 
 +
:;Returns 
 +
::<code>10</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====output group follow write [Output Nr] [Group Nr] ====
 +
 
 +
: ''An output activation (switch on, off or change dimmer value) can be programmed to trigger a group action. With this instruction, you can write, for Output Nr, when an output activation occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write group nr 10 must be linked to output 35
 +
 
 +
:;Instruction:
 +
::<code>output group follow write 35 10</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====output group follow list ====
 +
 
 +
: ''An output activation (switch on, off or change dimmer value) can be programmed to trigger a group action. With this instruction, you can list, for all outputs in use, which Group Actions are linked. ''
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code>
 +
 
 +
 
 +
:;Instruction:
 +
::<code>output group follow list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====output all off group follow read ====
 +
 
 +
: ''An output all off instruction (like BA????) can be programmed to trigger a group action. With this instruction, you can read which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>output all off group follow read</code>
 +
 
 +
:;Returns 
 +
::<code>30</code>
 +
::<code>OK</code>
 +
 
 +
Remark:
 +
::* When an output all off instruction is executed, only the all off group nr will be executed and not all the individual output group follow actions.
 +
 
 +
----
 +
 
 +
====output all off group follow write [Group Nr] ====
 +
 
 +
: ''An output all off instruction (like BA????) can be programmed to trigger a group action. With this instruction, you can write which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>output all off group follow write 30</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
Remark:
 +
::* When an output all off instruction is executed, only the all off group nr will be executed and not all the individual output group follow actions.
 +
 
 +
----
 +
 
 +
===Sensor instructions===
 +
====add virtual sensor module [id1] [id2] [id3] ====
 +
 
 +
:''This instruction will add a virtual sensor module (id0="t") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the sensor list is unique and not yet used.''
 +
:Example:
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  1
 +
  02 (i V 016->023) 105.000.000.002 00000  GOOD      (000)  0
 +
-------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.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
add virtual sensor module 0 0 1
 +
OK
 +
el
 +
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21  ---
 +
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
 +
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113      ---
 +
-------Output------------ID---------Err-------Status--------Pwr---
 +
  00 (l I 000->007) 108.000.000.000 00000  GOOD      (000)  1
 +
-------Input-------------ID---------Err-------Status--------Pwr---
 +
  00 (i I 000->007) 105.000.000.000 00000  GOOD      (000)  1
 +
  01 (b C 008->015) 098.000.000.001 00000  GOOD      (000)  1
 +
  02 (i V 016->023) 105.000.000.002 00000  GOOD      (000)  0
 +
-------Sensor------------ID---------Err-------Status--------Pwr---
 +
  00 (s C 000->007) 115.000.000.000 00000  GOOD      (000)  1
 +
  01 (t V 008->015) 116.000.000.001 00000  GOOD      (000)  1
 +
-------CAN Control-------ID---------Err-------Status--------Pwr---
 +
  00 (C E 000->000) 067.001.230.000 00000  GOOD      (016)  1
 +
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 +
  00 (m C 000->000) 000.248.090.233 00000  GOOD      (000)  1
 +
OK
 +
 
 +
====sensor extra list ====
 +
 
 +
:''This instruction will display the list of Extra Sensors. Extra Sensors (max 64, 0-63) can be freely used for example to store the wind direction, windspeed etc of a weather station, power measurement and others. Extra Sensors can also trigger group actions and can be used with IF THEN instructions. The values are being set by using BA instructions. Sensor value used are 16bits.''
 +
 
 +
:;Returns
 +
::The sensor extra list
 +
 
 +
----
 +
 
 +
====sensor extra name write [sensor nr][sensor name]====
 +
 
 +
:''Write the name of an extra sensor, max 16 characters.''
 +
 
 +
:;[sensor nr]
 +
::Indicates which sensor (0-63) the name has to be written.
 +
 
 +
:;[sensor name]
 +
::the ascii name of the sensor (maximum 16 characters).
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>sensor extra name write 15 Windspeed</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====sensor extra name read [sensor nr]====
 +
 
 +
:''Read the name of an extra sensor''
 +
 
 +
:;[sensor nr]
 +
::Indicates which sensor (0-63) the name has to be displayed.
 +
 
 +
:;Returns
 +
::<code>Sensor Name</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>sensor extra name read 15</code>
 +
 
 +
:;Returns
 +
::<code>Windspeed</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====sensor extra group follow read [Sensor Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor extra Nr (0-63), when a value change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example: Read the group linked to sensor extra 30
 +
 
 +
:;Instruction:
 +
::<code>sensor extra group follow read 30</code>
 +
 
 +
:;Returns 
 +
::<code>20</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====sensor extra group follow write [Sensor Nr] [Group Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Extra Nr (0-63), when a value change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write group nr 20 must be linked to sensor extra 30
 +
 
 +
:;Instruction:
 +
::<code>sensor extra group follow write 30 20</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====sensor extra group follow list ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all Extra Sensors, which Group Actions are linked. ''
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code>
 +
 
 +
:;Instruction:
 +
::<code>sensor extra group follow list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
----
 +
 
 +
====sensor list ====
 +
 
 +
:''This instruction will display the list of sensors, the temperature, the humidity, the brightness and the name of each sensor''
 +
 
 +
:;Returns
 +
::The sensor list
 +
 
 +
----
 +
 
 +
====sensor name write [sensor nr][sensor name]====
 +
 
 +
:''Write the name of a sensor, max 16 characters.''
 +
 
 +
:;[sensor nr]
 +
::Indicates which sensor (0-127) the name has to be written.
 +
 
 +
:;[sensor name]
 +
::the ascii name of the sensor (maximum 16 characters).
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>sensor name write 12 Bedroom 1</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====sensor name read [sensor nr]====
 +
 
 +
:''Read the name of a sensor''
 +
 
 +
:;[sensor nr]
 +
::Indicates which sensor (0-127) the name has to be displayed.
 +
 
 +
:;Returns
 +
::<code>Sensor Name</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>sensor name read 12</code>
 +
 
 +
:;Returns
 +
::<code>Bedroom 1</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====sensor number modules read====
 +
 
 +
:''Read the number of sensor modules that are programmed and active''
 +
 
 +
:;Returns
 +
::<code>Number Of Sensor Modules</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>sensor number modules read</code>
 +
 
 +
:;Returns
 +
::<code>6</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====sensor number modules write [number of sensor modules]====
 +
 
 +
:''Writes the number of sensor modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM''
 +
 
 +
:;[number of sensor modules]
 +
::Indicates the number of sensor modules that are active and programmed.
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>sensor number modules write 7</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====temperature group follow read [Sensor Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when a temperature change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example: Read the group linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code>temperature group follow read 17</code>
 +
 
 +
:;Returns 
 +
::<code>3</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====temperature group follow write [Sensor Nr] [Group Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when a temperature change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write group nr 3 must be linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code>temperature group follow write 17 3</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====temperature group follow list ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked. ''
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code>
 +
 
 +
 
 +
:;Instruction:
 +
::<code>temperature group follow list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
----
 +
 
 +
====humidity group follow read [Sensor Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when a humidity change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example: Read the group linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code>humidity group follow read 17</code>
 +
 
 +
:;Returns 
 +
::<code>4</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====humidity group follow write [Sensor Nr] [Group Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when a humidity change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write group nr 4 must be linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code>humidity group follow write 17 4</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====humidity group follow list ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked. ''
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code>
 +
 
 +
 
 +
:;Instruction:
 +
::<code> humidity group follow list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
----
 +
 
 +
====brightness group follow read [Sensor Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when a brightness change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example: Read the group linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code> brightness group follow read 17</code>
 +
 
 +
:;Returns 
 +
::<code>5</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
==== brightness group follow write [Sensor Nr] [Group Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when a brightness change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write group nr 5 must be linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code> brightness group follow write 17 5</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
==== brightness group follow list ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked. ''
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code>
 +
 
 +
:;Instruction:
 +
::<code> brightness group follow list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
----
 +
 
 +
====airquality group follow read [Sensor Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when an air quality (CO2) change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example: Read the group linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code> airquality group follow read 17</code>
 +
 
 +
:;Returns 
 +
::<code>6</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
==== airquality group follow write [Sensor Nr] [Group Nr] ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when an air quality (CO2) change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write group nr 6 must be linked to sensor 17
 +
 
 +
:;Instruction:
 +
::<code> airquality group follow write 17 6</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
==== airquality group follow list ====
 +
 
 +
: ''A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked. ''
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code>
 +
 
 +
:;Instruction:
 +
::<code> airquality group follow list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
----
 +
 
 +
===CAN module instructions===
 +
====can control number modules read====
 +
 
 +
:''Read the number of CAN Control modules that are programmed and active''
 +
 
 +
:;Returns
 +
::<code>Number Of CAN Control Modules</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can control number modules read</code>
 +
 
 +
:;Returns
 +
::<code>2</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can control number modules write [number of can control modules]====
 +
 
 +
:''Writes the number of CAN Control modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM''
 +
 
 +
:;[number of CAN Control modules]
 +
::Indicates the number of CAN Control modules that are active and programmed.
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can control number modules write 2</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
====can debug off====
 +
 
 +
:''This instruction will disable the debug function for CAN messages sent and received on the CAN bus.''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: Deactivate CAN debug mode
 +
 
 +
:;Instruction:
 +
::<code>can debug off</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can debug on====
 +
 
 +
:''This instruction will enable the debug function for CAN messages sent and received on the CAN bus.''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: Activate CAN debug mode
 +
 
 +
:;Instruction:
 +
::<code>can debug on</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
====can eeprom list====
 +
 
 +
:''This instruction will list the programmed configuration stored in the Brain(+) of all connected Micro CAN's.''
 +
 
 +
:;Returns
 +
::Configuration list of all programmed Micro CAN's
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can eeprom list</code>
 +
 
 +
:;Returns
 +
-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
 +
 
 +
:As you can see in the above example, 1 Micro Can is not responding. If you still want to know the configuration of this Micro Can, you can use the CLI instruction <code>can eeprom list</code>
 +
 
 +
: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.
 +
:* 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
 +
----
 +
====can ping list====
 +
 
 +
:''This instruction will request to all connected Micro CAN's the full status and configuration.''
 +
 
 +
:;Returns
 +
::The detailed answers of the connected Micro CAN's
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can ping list</code>
 +
 
 +
:;Returns
 +
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, 1 Micro Can is not responding. If you still want to know the configuration of this Micro Can, you can use the CLI instruction <code>can eeprom list</code>
 +
 
 +
: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
 +
:* CanP1: =1->CanP parameters are validated and ready to be used
 +
:* CanP2: BRGCON1 (18F46K80)
 +
:* CanP3: BRGCON2 (18F46K80)
 +
:* CanP4: BRGCON3 (18F46K80)
 +
:* CanP5: CRC8 of CanP2-CanP4
 +
:* Stat: 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
 +
----
 +
====can config delete ====
 +
 
 +
:''This instruction will perform a factory reset of the CAN config in the master as well as in the micro CAN slaves. After this instruction, the micro CAN config is deleted from the eeprom of the master and the micro CAN slaves. 
 +
 
 +
:;Returns
 +
::<code>can config delete</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can config delete</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can module number read====
 +
 
 +
:''Read the number of CAN modules that are programmed and active''
 +
 
 +
:;Returns
 +
::<code>Number Of CAN Modules</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can module number read</code>
 +
 
 +
:;Returns
 +
::<code>6</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can module number write [number of CAN modules]====
 +
 
 +
:''Writes the number of CAN modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM''
 +
 
 +
:;[number of CAN modules]
 +
::Indicates the number of CAN modules that are active and programmed.
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can module number write 7</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can input number read====
 +
 
 +
:''Read the number of CAN inputs that are programmed and active''
 +
 
 +
:;Returns
 +
::<code>Number Of CAN inputs</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can input number read</code>
 +
 
 +
:;Returns
 +
::<code>12</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can input number write [number of CAN inputs]====
 +
 
 +
:''Writes the number of CAN inputs that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM''
 +
 
 +
:;[number of CAN inputs]
 +
::Indicates the number of CAN inputs that are active and programmed.
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can input number write 13</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can sensor number read====
 +
 
 +
:''Read the number of CAN sensors that are programmed and active''
 +
 
 +
:;Returns
 +
::<code>Number Of CAN sensors</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can sensor number read</code>
 +
 
 +
:;Returns
 +
::<code>4</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can sensor number write [number of CAN sensors]====
 +
 
 +
:''Writes the number of CAN sensors that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM''
 +
 
 +
:;[number of CAN inputs]
 +
::Indicates the number of CAN sensors that are active and programmed.
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can sensor number write 6</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====can speed read====
 +
:''This instruction will display the CAN bus speed currently in use.''
 +
 
 +
:;Returns
 +
::CAN bus speed
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can speed read</code>
 +
 
 +
:;Returns
 +
125kbps
 +
OK
 +
----
 +
 
 +
====can speed write [speed]====
 +
:''This instruction will write the new CAN bus speed that will be effective after reset. Supported speeds are 20kbps, 50kbps, 125kbps and 250kbps.''
 +
 
 +
:;Returns
 +
::CAN bus parameters
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>can speed write 50</code>
 +
 
 +
:;Returns
 +
CAN P: 001 031 255 002 060
 +
OK
 +
:;See https://wiki.openmotics.com/index.php/AIO_Tips_%26_tricks_during_installation_and_troubleshooting#Changing_CAN_bus_speed for detailed use
 +
 
 +
Notes:
 +
* 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.
 +
* The instruction "can speed write" can also be executed without any parameter. Without parameter, the Master will take the values programmed in Eeprom starting at Page0/Byte14 and verify integrity of those values. When the integrity is OK, these values will be distributed towards the uCAN and programmed in the Master to be used after the next reset. This allows custom CAN parameters to be used in a system.
 +
* The speed that a CAN bus is able to support depends on the cable used and the length: Increase in cable length means decrease in CAN speed, decrease in cable quality means decrease in CAN speed. A good quality cable (for example UTP CAT6) at CAN speed of 125kbps can easily support 250 meter.
 +
----
 +
====can message [Bus Nr] [SID] [B0] [B1] [B2] [B3] [B4] [B5] [B6] [B7]====
 +
 
 +
: ''This instruction allows to sent direct messages to the CAN bus. To see the response on these messages, turn on the CAN debug functionality ("can debug on").
 +
:;[Bus Nr]
 +
::Indicates the Bus Nr on which the CAN message must be sent:100->internal CAN bus, 0->First CAN Control, 1->Second CAN Control etc, 255->Broadcast message on all available CAN busses.
 +
:;[Bx]
 +
::B1..B8 are the bytes that forms the CAN message, length of the CAN message (Minimum 2, maximum 8 bytes (B1..B8))
 +
 
 +
Example: Sent message on the internal CAN bus with SID=6, 5 bytes long message 1 100 0 0 101
 +
 
 +
:;Instruction:
 +
::<code>can message 0 6 1 100 0 0 101</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
----
 +
 
 +
===DALI instructions===
 +
====dali debug off====
 +
 
 +
:''This instruction will disable the debug function for Dali message sent and received on the Dali bus.''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: Deactivate Dali debug mode
 +
 
 +
:;Instruction:
 +
::<code>dali debug off</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====dali debug on====
 +
 
 +
:''This instruction will enable the debug function for Dali message sent and received on the Dali bus.''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: Activate Dali debug mode
 +
 
 +
:;Instruction:
 +
::<code>dali debug on</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example of received info:
 +
16:43:48 CAN RX(100) SID=6 L=7 -> 1 96 151 12 143 1 148 2
 +
Some info of the above example:
 +
* RX -> Received CAN information, TX -> Transmit CAN information
 +
* (100) -> Bus: 100 -> internal can bus, 0 -> first Can Control, 1 -> second Can Control, ...
 +
* L -> length of the CAN message
 +
 
 +
----
 +
 
 +
====dali input link write [input_nr] [bus_nr] [dali_id]====
 +
 
 +
:''This instruction will link a virtual input (input_nr) to a Dali_id on a Dali Bus_nr.''
 +
:;[bus_nr]
 +
:;*bus_nr=0: Lunatone SCI directly connected to the Brain(+)
 +
 
 +
:;*bus_nr=1: Lunatone SCI is connected to the first CAN Control
 +
 
 +
:;*bus_nr=2: Lunatone SCI is connected to the second CAN Control
 +
 
 +
:;...
 +
 
 +
:;[input_nr]
 +
::This is the input nr (of a virtual module created by using instruction "add virtual input module") that will be linked to the Dali_id.
 +
 
 +
:;[dali_id]
 +
::dali_id is the address found of the "to be linked" device in the Lunatone cockpit software
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: Link input 8 with Dali device on Bus 0 (SCI connected with Brain(+)) with Dali ID 1
 +
 
 +
:;Instruction:
 +
::<code>dali input link write 8 0 1</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====dali input link read [input_nr]====
 +
 
 +
:''This instruction will read which bus and Dali ID is linked to virtual input (input_nr).''
 +
 
 +
:;[input_nr]
 +
::This is the input nr (of a virtual module created by using instruction "add virtual input module") that will be linked to the Dali_id.
 +
 
 +
 
 +
:;Returns
 +
::<code>bus_nr dali_id</code>
 +
 
 +
Example: Check which bus and Dali ID is linked to output 8. Returns that output 8 is linked to bus 0 (SCI connected to Brain(+)) Dali ID 1.
 +
 
 +
:;Instruction:
 +
::<code>dali input link read 8</code>
 +
 
 +
:;Returns
 +
::<code>0 1</code>
 +
::<code>OK</code> 
 +
 
 +
----
 +
 
 +
====dali output link write [output_nr] [bus_nr] [dali_id]====
 +
 
 +
:''This instruction will link a virtual output (output_nr) to a Dali_id on a Dali Bus_nr.''
 +
:;[bus_nr]
 +
:;*bus_nr=0: Lunatone SCI directly connected to the Brain(+)
 +
 
 +
:;*bus_nr=1: Lunatone SCI is connected to the first CAN Control
 +
 
 +
:;*bus_nr=2: Lunatone SCI is connected to the second CAN Control
 +
 
 +
:;...
 +
 
 +
:;[output_nr]
 +
::This is the output nr (of a virtual module created by using instruction "add virtual output module" or "add virtual dimmer module") that will be linked to the Dali_id.
 +
 
 +
:;[dali_id]
 +
::dali_id is the address found of the "to be linked" device in the Lunatone cockpit software
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: Link output 8 with Dali device on Bus 0 (SCI connected with Brain(+)) with Dali ID 1
 +
 
 +
:;Instruction:
 +
::<code>dali output link write 8 0 1</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====dali output link read [output_nr]====
 +
 
 +
:''This instruction will read which bus and Dali ID is linked to virtual output (output_nr).''
 +
 
 +
:;[output_nr]
 +
::This is the output nr (of a virtual module created by using instruction "add virtual output module" or "add virtual dimmer module") that will be linked to the Dali_id.
 +
 
 +
 
 +
:;Returns
 +
::<code>bus_nr dali_id</code>
 +
 
 +
Example: Check which bus and Dali ID is linked to output 8. Returns that output 8 is linked to bus 0 (SCI connected to Brain(+)) Dali ID 1.
 +
 
 +
:;Instruction:
 +
::<code>dali output link read 8</code>
 +
 
 +
:;Returns
 +
::<code>0 1</code>
 +
::<code>OK</code> 
 +
 
 +
----
 +
 
 +
====dali group discover====
 +
 
 +
:''This instruction will start of the group discovery for all the individual (non group) dali outputs''
 +
 
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
----
 +
 
 +
===GROUP instructions===
 +
 
 +
A group action is composed of multiple actions that can be executed. Each group action can call other group actions. Group actions can be nested up to 16 levels deep, if you go deeper, those group actions will be ignored. IF THEN ENDIF instructions used inside a group can be nested as well up to 16 levels deep.
 +
The most easy way, when nested group actions including IF THEN ENDIF instructions are used is to use the CLI instruction "group simulate" which gives you a CLI representation of the result of a group action with the included nested group actions (if any).
 +
 
 +
A group action doesn't have a fixed length, the length and thus the number of group action can be defined at creation by defining the start and end BA. In total, 4200 (BA0 to BA4199) actions can be placed in 255 (0-254) different groups. Each group have a start address and end address.
 +
 
 +
Start address and end addresses can be changed even when a group has been programmed.
 +
 
 +
How does group actions work: A normal group action with format 19 0 x y will be added to the queue of immediate action. This queue will process this group action immediately. A group action with format 19 1 x y will not be executed but only simulated and the result will be printed in the CLI screen which is easy to troubleshoot complex group actions.
 +
 
 +
Group actions can also be delayed in time and only be executed when the defined time trigger has expired (expired seconds or day/hour/minute reached). For example, delayed group action BA 18 0 15 240 will execute BA19 0 15 0 after 240 seconds.
 +
 
 +
It’s important to note that delayed group actions will be put in the delay queue until the time trigger expires, then this delayed group action will be deleted from the delayed group queue (after executing the related group action). When for example a group action must be executed every 120 seconds, the group delay BA instruction (BA18) that adds the group action to be executed after 120 seconds must be added in the original group action.
 +
 
 +
When a time trigger occurred and the group action has been executed, the delayed group action is removed from the queue so if you want an action to be executed on a certain hour every day of the week, the delayed group action must be added on the delayed queue after every execution in the group action. The easiest way to do this is to create a group action with a list of instructions including the instruction to put this group on the delayed group. To get the delayed action in the queue for the first time, you can use the startup group action which executes at each processor start or reset.
 +
 
 +
----
 +
 
 +
====group list====
 +
 
 +
:''This instruction will display the list of all programmed group actions (group actions with a valid begin and end address and the first BA programmed) with their name.''
 +
 
 +
:;Returns
 +
::List of programmed group actions
 +
::<code>OK</code>
 +
 
 +
Example: 
 +
 
 +
:;Instruction:
 +
::<code>group list</code>
 +
 
 +
:;Returns
 +
::<code>-Group---------Name---------</code>
 +
::<code> 000  ->  test</code>
 +
::<code> 001  -></code>
 +
::<code> 002  -></code>
 +
::<code> 003  -></code>
 +
::<code> 004  -></code>
 +
::<code> 139  -></code>
 +
::<code> 167  -></code>
 +
::<code> 170  -></code>
 +
::<code> 173  -></code>
 +
::<code> 176  -></code>
 +
::<code> 179  -></code>
 +
::<code> 182  -></code>
 +
::<code> 185  -></code>
 +
::<code> 188  -></code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====group name read [group nr]====
 +
 
 +
:''This instruction will read the name of a group action (0-254).''
 +
 
 +
:;Returns
 +
:: name of group action
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>group name read 0</code>
 +
 
 +
:;Returns
 +
::<code>test</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====group name write [group nr] [group name]====
 +
 
 +
:''This instruction will program the name of group action (0-254).''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>group name write 0 test</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
----
 +
 
 +
====group search [Type] [opt: Action] [opt: Device Nr] [opt: Extra]====
 +
 
 +
:''This instruction will do a search in all active group actions to see if a certain group action or group family has been used. You can do a search with only 1 parameter (BA Type) or you can add additional optional parameters (Action, Device Nr, Extra) to narrow down the search''
 +
 
 +
:;Returns
 +
::List of all groups and the search result for each group
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction: (Example: Search in all groups for outputs that are toggled)
 +
::<code>group search 0 16</code>
 +
 
 +
:;Returns
 +
::<code>Group 000 : test</code>
 +
::<code> -> BA0001 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0010 - 000 016 00015 00000  Toggle output 15 with std timer/dimmer</code>
 +
::<code>Group 001 :</code>
 +
::<code>Group 002 :</code>
 +
::<code>Group 003 :</code>
 +
::<code>Group 004 :</code>
 +
::<code>Group 005 : Output Follow</code>
 +
::<code>Group 006 :</code>
 +
::<code>Group 007 : Temp follow test</code>
 +
::<code> -> BA0075 - 000 016 00002 00000  Toggle output 2 with std timer/dimmer</code>
 +
::<code> -> BA0076 - 000 016 00003 00000  Toggle output 3 with std timer/dimmer</code>
 +
::<code> -> BA0077 - 000 016 00004 00000  Toggle output 4 with std timer/dimmer</code>
 +
::<code> -> BA0078 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0079 - 000 016 00006 00000  Toggle output 6 with std timer/dimmer</code>
 +
::<code>Group 139 :</code>
 +
::<code>Group 167 :</code>
 +
::<code> -> BA0001 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0010 - 000 016 00015 00000  Toggle output 15 with std timer/dimmer</code>
 +
::<code>Group 170 :</code>
 +
::<code> -> BA0001 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0010 - 000 016 00015 00000  Toggle output 15 with std timer/dimmer</code>
 +
::<code>Group 173 :</code>
 +
::<code> -> BA0001 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0010 - 000 016 00015 00000  Toggle output 15 with std timer/dimmer</code>
 +
::<code>Group 176 :</code>
 +
::<code> -> BA0001 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0010 - 000 016 00015 00000  Toggle output 15 with std timer/dimmer</code>
 +
::<code>Group 179 :</code>
 +
::<code> -> BA0001 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0010 - 000 016 00015 00000  Toggle output 15 with std timer/dimmer</code>
 +
::<code>Group 188 :</code>
 +
::<code> -> BA0001 - 000 016 00005 00000  Toggle output 5 with std timer/dimmer</code>
 +
::<code> -> BA0010 - 000 016 00015 00000  Toggle output 15 with std timer/dimmer</code>
 +
::<code>OK</code>
 +
----
 +
 
 +
====group start list====
 +
 
 +
:''This instruction will list all the start addresses of each group action.''
 +
 
 +
:;Returns
 +
:: List of all start addresses of each group action
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>group start list</code>
 +
 
 +
:;Returns
 +
-Group nr---BA Start--BA Stop-----Name---------
 +
::<code>  000      0000      0022  ->  test</code>
 +
::<code>  001      0023      0029  -></code>
 +
::<code>  002      0030      0034  -></code>
 +
::<code>  003      0035      0041  -></code>
 +
::<code>  004      0042      0061  -></code>
 +
::<code>  005      0062      ----  -></code>
 +
::<code>  006      ----      ----  -></code>
 +
::<code>  007      ----      ----  -></code>
 +
::<code>  008      ----      ----  -></code>
 +
::<code>  009      ----      ----  -></code>
 +
::<code>  010      ----      ----  -></code>
 +
::<code>  011      ----      ----  -></code>
 +
::<code>  012      ----      ----  -></code>
 +
::<code>  013      ----      ----  -></code>
 +
::<code>  014      ----      ----  -></code>
 +
::<code>  015      ----      ----  -></code>
 +
::<code>  016      ----      ----  -></code>
 +
::<code>  017      ----      ----  -></code>
 +
::<code>  018      ----      ----  -></code>
 +
::<code>  019      ----      ----  -></code>
 +
::<code>  020      ----      ----  -></code>
 +
::<code>  ...</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====group start end write [group nr] [start ba nr] [end ba nr]====
 +
 
 +
:''This instruction will write the start address (0-4199) and end address of group nr x (0-254).''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: write start address BA35 and end address BA46 of group nr 5
 +
 
 +
:;Instruction:
 +
::<code>group start write 5 35 46</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====group read [group nr]====
 +
 
 +
:''This instruction will read a group action (0-254) and display all BA's that this group action contains.''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>group read 0</code>
 +
 
 +
:;Returns
 +
::<code>-Grp--BA Nr---Typ-Act--x--(MSB.LSB)--y--(MSB.LSB)-------BA Description----</code>
 +
::<code> 000  0000(00)  000 007 00013(000.013) 00000(000.000) ->  Output 13 ON and only overrule timer with value 0 (0x1s) when output is not yet on</code>
 +
::<code> 000  0001(01)  000 016 00005(000.005) 00000(000.000) ->  Toggle output 5 with std timer/dimmer</code>
 +
::<code> 000  0002(02)  000 004 00011(000.011) 00020(000.020) ->  Output 11 ON and overrule timer with value 20 (20x1s)</code>
 +
::<code> 000  0003(03)  100 000 00000(000.000) 00000(000.000) ->  IF</code>
 +
::<code> 000  0004(04)  100 010 00012(000.012) 00000(000.000) ->  Output 12 is ON</code>
 +
::<code> 000  0005(05)  100 150 00000(000.000) 00000(000.000) ->  THEN</code>
 +
::<code> 000  0006(06)  000 001 00005(000.005) 00000(000.000) ->  Output 5 ON with std timer/dimmer</code>
 +
::<code> 000  0007(07)  100 200 00000(000.000) 00000(000.000) ->  ELSE</code>
 +
::<code> 000  0008(08)  019 000 00001(000.001) 00000(000.000) ->  Execute Group Action 1</code>
 +
::<code> 000  0009(09)  100 255 00000(000.000) 00000(000.000) ->  ENDIF</code>
 +
::<code> 000  0010(10)  000 016 00015(000.015) 00000(000.000) ->  Toggle output 15 with std timer/dimmer</code>
 +
::<code> 000  0011(11)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0012(12)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0013(13)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0014(14)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0015(15)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0016(16)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0017(17)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0018(18)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0019(19)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0020(20)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0021(21)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code> 000  0022(22)  255 255 65535(255.255) 65535(255.255) ->  Instruction not in use</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====group ba write [ba nr] [Type] [Action] [Device Nr] [Extra parameter]====
 +
 
 +
:''This instruction will write the Basic Action (Type, Action, Device Nr & Extra Parameter) of BA nr (0-4199) for a list of the different BA types that can be used, see [[Action Types AIO]].''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example: write BA 35 with instruction output 17 off
 +
 
 +
:;Instruction:
 +
::<code>group ba write 35 0 0 17 0</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Remark:
 +
::* This instruction exist in a 5 and 7 parameter version
 +
::* The 5 parameter version has following format: "group ba write [ba nr] [Type] [Action] [Device Nr] [Extra parameter]"
 +
::* The 7 parameter version has following format: "group ba write [ba nr] [Type] [Action] [Device Nr.MSB] [Device Nr.LSB] [Extra parameter.MSB] [Extra parameter.LSB]"
 +
::* In the 7 parameter version, you split Device Nr and Extra parameter is his Most significant Byte (MSB) and his Least Significant Byte.
 +
 
 +
----
 +
 
 +
====group ba read [ba nr]====
 +
 
 +
:''This instruction will read the Basic Action (Type, Action, Device Nr & Extra Parameter) of BA nr (0-4199). For a list of the different BA types that can be used, see [[Action Types AIO]].''
 +
 
 +
:;Returns
 +
::BA details
 +
 
 +
Example: read BA 100
 +
 
 +
:;Instruction:
 +
::<code>group ba read 100</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
::<code>-BA Nr----Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----</code>
 +
::<code>  0100    000 016 00026(000.026) 00000(000.000) ->  Toggle output 26 with std timer/dimmer</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====group simulate [group nr] ====
 +
 
 +
:''This instruction will simulate the result of a group action (0-254) including nested group actions. Below is an example of 4 nested group actions. As you can see in the below example, abstraction is made of the different group action and everything is represented in one consolidated view.''
 +
 
 +
:;Returns
 +
::Consolidated view of the group action
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>group simulate 0</code>
 +
 
 +
:;Returns
 +
::<code>15:15:23 BA 000 007 00013(000.013) 00000(000.000) EXEC SIM -> Output 13 ON and only overrule timer with value 0 (0x1s) when output is not yet on</code>
 +
::<code>15:15:23 BA 000 016 00005(000.005) 00000(000.000) EXEC SIM -> Toggle output 5 with std timer/dimmer</code>
 +
::<code>15:15:23 BA 000 004 00011(000.011) 00020(000.020) EXEC SIM -> Output 11 ON and overrule timer with value 20 (20x1s)</code>
 +
::<code>15:15:23 BA 100 000 00000(000.000) 00000(000.000)                      IF</code>
 +
::<code>15:15:23 BA 100 010 00012(000.012) 00000(000.000)              Output 12 is ON</code>
 +
::<code>15:15:24 BA 100 150 00000(000.000) 00000(000.000)            THEN</code>
 +
::<code>15:15:24 BA 000 001 00005(000.005) 00000(000.000) SKIP INSTR    Output 5 ON with std timer/dimmer</code>
 +
::<code>15:15:24 BA 100 200 00000(000.000) 00000(000.000)            ELSE</code>
 +
::<code>15:15:24 BA 000 001 00004(000.004) 00000(000.000) EXEC SIM ->  Output 4 ON with std timer/dimmer</code>
 +
::<code>15:15:24 BA 100 000 00000(000.000) 00000(000.000)              IF</code>
 +
::<code>15:15:24 BA 100 011 00013(000.013) 00000(000.000)                Output 13 is OFF</code>
 +
::<code>15:15:24 BA 100 150 00000(000.000) 00000(000.000)              THEN</code>
 +
::<code>15:15:24 BA 100 000 00000(000.000) 00000(000.000)                IF</code>
 +
::<code>15:15:24 BA 100 010 00014(000.014) 00000(000.000)                  Output 14 is ON</code>
 +
::<code>15:15:24 BA 100 150 00000(000.000) 00000(000.000)                THEN</code>
 +
::<code>15:15:24 BA 100 000 00000(000.000) 00000(000.000)                  IF</code>
 +
::<code>15:15:24 BA 100 010 00007(000.007) 00000(000.000)                    Output 7 is ON</code>
 +
::<code>15:15:24 BA 100 090 00000(000.000) 00000(000.000)                    AND</code>
 +
::<code>15:15:24 BA 100 011 00008(000.008) 00000(000.000)                    Output 8 is OFF</code>
 +
::<code>15:15:24 BA 100 150 00000(000.000) 00000(000.000)                  THEN</code>
 +
::<code>15:15:24 BA 000 255 00255(000.255) 00000(000.000) SKIP INSTR          Switch OFF all Outputs(x=0), Lights(x=1) or Lights&Outputs(x>1)</code>
 +
::<code>15:15:24 BA 100 200 00000(000.000) 00000(000.000)                  ELSE</code>
 +
::<code>15:15:24 BA 000 001 00010(000.010) 00000(000.000) EXEC SIM ->        Output 10 ON with std timer/dimmer</code>
 +
::<code>15:15:24 BA 000 001 00009(000.009) 00000(000.000) EXEC SIM ->        Output 9 ON with std timer/dimmer</code>
 +
::<code>15:15:24 BA 100 255 00000(000.000) 00000(000.000)                  ENDIF</code>
 +
::<code>15:15:24 BA 100 200 00000(000.000) 00000(000.000)                ELSE</code>
 +
::<code>15:15:24 BA 000 001 00003(000.003) 00000(000.000) SKIP INSTR        Output 3 ON with std timer/dimmer</code>
 +
::<code>15:15:24 BA 100 255 00000(000.000) 00000(000.000)                ENDIF</code>
 +
::<code>15:15:24 BA 100 255 00000(000.000) 00000(000.000)              ENDIF</code>
 +
::<code>15:15:24 BA 000 000 00020(000.020) 00000(000.000) EXEC SIM ->  Output 20 OFF</code>
 +
::<code>15:15:24 BA 100 255 00000(000.000) 00000(000.000)            ENDIF</code>
 +
::<code>15:15:25 BA 000 016 00015(000.015) 00000(000.000) EXEC SIM -> Toggle output 15 with std timer/dimmer</code>
 +
 
 +
:Some remarks:
 +
:- SKIP INSTR: This instruction in the consolidated group view will not be executed when running in execution mode ("group activate") due to the conditions being set (IF THEN ENDIF)
 +
:- EXEC SIM: This instruction will be executed when the group will be running in execution mode
 +
 
 +
----
 +
 
 +
====group activate [group nr] ====
 +
 
 +
:''This instruction will execute a group action (0-254). If you want to see what's happening during execution, you can activate verbose mode by using instruction "basic action debug on". Please note that the instruction "basic action debug on" can slow down the processor due to more console printing that needs to be done.''
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>group activate 5</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====group delay queue list====
 +
 
 +
:''With BA17 and BA18, Group Actions can be executed at a later stage. This instruction give you an overview which group actions are planned to be executed in the future.
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code> 
 +
 
 +
:;Instruction:
 +
::<code>group delay queue list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
===VALIDATION Bit instructions===
 +
 
 +
====validation bit group follow read [Bit Nr] ====
 +
 
 +
: ''A validation bit (0-255) can trigger a group action when the validation bit value changes. With this instruction, you can read, for validation bit Nr, when a value change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::Group Nr
 +
::<code>OK</code> 
 +
 
 +
Example: Read the group linked to validation bit 210
 +
 
 +
:;Instruction:
 +
::<code>validation bit group follow read 210</code>
 +
 
 +
:;Returns 
 +
::<code>63</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====validation bit group follow write [Bit Nr] [Group Nr] ====
 +
 
 +
: ''A validation bit (0-255) can trigger a group action when the validation bit value changes. With this instruction, you can write, for validation bit Nr, when a value change occurs, which Group Action will be executed. ''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write group nr 63 must be linked to validation bit 210
 +
 
 +
:;Instruction:
 +
::<code>validation bit group follow write 210 63</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====validation bit group follow list ====
 +
 
 +
: ''A validation bit (0-255) can trigger a group action when the validation bit value changes. With this instruction, you can list, for all validation bits, which Group Actions are linked. ''
 +
 
 +
:;Returns
 +
:;List
 +
::<code>OK</code>
 +
 
 +
:;Instruction:
 +
::<code>validation bit group follow list</code>
 +
 
 +
:;Returns
 +
::list 
 +
::<code>OK</code>
 +
----
 +
 
 +
====validation bit list====
 +
 
 +
:''This instruction will display the list of all Validation Bits, the associated value and name.''
 +
 
 +
:;Returns
 +
::List of Validation Bits
 +
::<code>OK</code>
 +
 
 +
Example: 
 +
 
 +
:;Instruction:
 +
::<code>Validation bit list</code>
 +
 
 +
:;Returns
 +
::Validation Bit List
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====validation bit name read [Bit Nr] ====
 +
 
 +
: ''With this instruction, you can read, for validation bit nr (0-255), the name of this validation bit ''
 +
 
 +
:;Returns
 +
::Validation Bit Name
 +
::<code>OK</code> 
 +
 
 +
Example: validation bit name read
 +
 
 +
:;Instruction:
 +
::<code>validation bit name read 10</code>
 +
 
 +
:;Returns 
 +
::<code>test bit name1</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====validation bit name write [Bit Nr] [Bit Name]====
 +
 
 +
: ''With this instruction, you can write the name of a validation bit (0-255)''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write the name "test123" for validation bit nr 10
 +
 
 +
:;Instruction:
 +
::<code>validation bit name write 10 test123</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====validation bit read [Bit Nr] ====
 +
 
 +
: ''This instruction will read the value (0 or 1) of a validation bit. Validation bits can be freely used and are often applied to remember certain events.''
 +
 
 +
:;Returns
 +
::Validation bit value
 +
::<code>OK</code> 
 +
 
 +
Example: Read bit 230
 +
 
 +
:;Instruction:
 +
::<code>validation bit read 230</code>
 +
 
 +
:;Returns 
 +
::<code>1</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====validation bit write [Bit Nr] [Bit Value] ====
 +
 
 +
: ''This instruction will write Bit Value (0 or 1) in validation bit nr. Validation bits can be freely used and are often applied to remember certain events.''
 +
 
 +
:;Returns
 +
::<code>OK</code> 
 +
 
 +
Example: Write value 0 in validation bit 230
 +
 
 +
:;Instruction:
 +
::<code>validation bit write 230 0</code>
 +
 
 +
:;Returns 
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
===SHUTTER instructions===
 +
====shutter group link list ====
 +
 
 +
: ''This instruction will display a list of all shutters. For every shutter, a Y (YES) or N (NO) indicates if this shutter is linked to each of the 16 shutter groups''
 +
 
 +
:;Returns
 +
::shutter group link list
 +
::<code>OK</code> 
 +
 
 +
----
 +
 
 +
====shutter list ====
 +
 
 +
: ''This instruction will display a list of all shutters with their lock status, output up & down linked, if the shutter is moving as well as the programmed timer setting for up and down ''
 +
 
 +
:;Returns
 +
::shutter list
 +
::<code>OK</code> 
 +
 
 +
----
 +
 
 +
====shutter name read [shutter nr]====
 +
 
 +
:''Read the name of ashutter''
 +
 
 +
:;[input nr]
 +
::Indicates which shutter (0-31) the name has to be displayed.
 +
 
 +
:;Returns
 +
::<code>Shutter Name</code>
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>shutter name read 15</code>
 +
 
 +
:;Returns
 +
::<code>Bedroom Parents</code>
 +
::<code>OK</code>
 +
 
 +
----
 +
 
 +
====shutter name write [shutter nr][shutter name]====
 +
 
 +
:''Write the name of a shutter, max 16 characters.''
 +
 
 +
:;[shutter nr]
 +
::Indicates which shutter (0-31) the name has to be written.
 +
 
 +
:;[shutter name]
 +
::the ascii name of the shutter (maximum 16 characters).
 +
 
 +
:;Returns
 +
::<code>OK</code>
 +
 
 +
Example:
 +
 
 +
:;Instruction:
 +
::<code>shutter name write 15 Bedroom parents</code>
 +
 
 +
:;Returns
 +
::<code>OK</code>
  
 
----
 
----

Latest revision as of 13:48, 2 March 2023

Information about the All In One (AIO) can be found in AIO General Information.

The Gateway has 2 computer systems built-in: A Master Controller (Microchip DSPIC33) and a Gateway Controller (Linux Based Beagle Bone). The Master controller is connected with the Gateway Controller over RS232. The Master Controller has a built-in CLI interface allowing the user to configure and control the Master controller to his full extend.

This CLI can be accessed by using the Maintenance function in the OpenMotics cloud or by using a RS232 TTL cable (Baud rate 115200, 8 databits, no parity, 1 stop bit, no flow control) that is connected directly on the Gateway on the extern RS232 connector.

Possible modes of communication:

  • Advanced Mode: API (The Master controller and Gateway controller will use Advanced mode to communicate)
  • Simple Mode: CLI (Simple Mode will be used by Maintenance mode in the cloud or when a direct RS232 connection is established)

The advantages of the AIO (All In One) design is that API and CLI mode can be used simultaneously (on 2 different UART ports).

Contents

Notes

  1. In CLI mode, characters sent through RS232 can be echoed. In API mode they are never echoed.
  2. Instructions are case sensitive.
  3. As opposed to API mode, CLI mode has a variable instruction length.
  4. Every instruction must be followed by a Carriage return (<CR>, DEC 13).
  5. Every successful instruction will return the requested information (or perform requested action) followed by OK, otherwise ERROR is returned (wrong format, wrong parameters,…). All error codes are listed in the Error Codes AIO section.
  6. An instruction will only be executed if the Master has responded with “OK”

For the Release Notes of the AIO, please see AIO Release Notes.

Notation

Instruction [required parameter] {optional parameter}

Instruction description.

[param]
Parameter description


Returns
[return value]

Versioning

This document describes the available CLI commands available on the All In One CLI interface. The All In One module is not yet available and not yet in production so please use CLI Reference Guide used in the current gateway.

Gateway Module FW version
NOT IN PRODUCTION V0.03

Instruction Set

General instructions

change debug off

This instruction will disable the debug function for changes. When the debug function is activate, every time a sensor value changes (but could also be output or validation bit etc), the changed device number (like sensor) and the new value will be printed.
Returns
OK

Example: Deactivate change debug mode

Instruction
change debug off
Returns
OK

change debug on

This instruction will enable the debug function for changes. When the debug function is activate, every time a sensor value changes (but could also be output or validation bit etc), the changed device number (like sensor) and the new value will be printed.
Returns
OK

Example: Activate change debug mode

Instruction
change debug on
Returns
OK

error list

el

This instruction will list all configured modules, their ID's, the number off errors on this module and the status of each module (Good, Degraded1, Degraded2, Degraded3, Offline, Forced Offline)
Returns
--- 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, BB debug: 0, Fw: 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 00000   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
Below, you can find a short explanation what the different items mean:
  • First parenthesis first character: module type1 ('O'->RS485 module, 'D'->RS485 dim (0-10V) module, 'l'->Brain(+) internal open collector output, 'i'->Input module, 'o'->output module, 'b'->Micro Can virtual input module, 's'-> Can virtual sensor module, 'T'->RS485 temperature module, 'R'->RS485 output module fully configured as Roller/Shutter module, 'm'->Micro Can module)
  • First parenthesis second character: module type2 ('I'-> Internal inputs/outputs of the Brain(+), 'E'->External RS485 module, 'C'->Linked to External Micro CAN module, 'V'->Virtual module)
  • First parenthesis 000->007: indicate from for example which input nr is the first and last input of that module
  • ID: this is the unique ID of this module
  • Err: Number of errors for each of the modules. CLI instruction "error clear" can be used to reset all errors
  • Status: 4 status possibilities (GOOD, DEGRADED 1, DEGRADED 2, DEGRADED 3, OFFLINE)
  • Second parenthesis: indicates the type of scanning the module will have.
  • BB debug: When 1, debug mode is ON and all BA's that are executed will also be forwarded to the BB over UART API
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 in the above list 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
    • ...

error clear

This instruction will delete all the errors and will start communicating again with the RS485 modules at the normal pace
Returns
OK

Example:

Instruction
error clear
Returns
OK

firmware version

This instruction will display the firmware of the Master and all connected slaves. The firmware version of slaves is requested directly via the RS485 bus in other words, when a slave is not online, the firmware version will not be displayed

Example:

Instruction
firmware version
Returns
--- Fw version Brain(+): V1.0.68 ---
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
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


health debug off

This instruction will disable the CLI console debug function for health related matters. When for example a sensor is not responding for 2 minutes, a debug message will appear when this debug function is enabled
Returns
OK

health debug on

This instruction will enable the CLI console debug function for health related matters. When for example a sensor is not responding for 2 minutes, a debug message will appear when this debug function is enabled
Returns
OK

logging list [number of lines*]

* is an optional value, if the optional value is not used, the system will print the last 32 lines of the FRAM logging
This instruction will print the FRAM logging. Events, Errors and BA's can be logged depending on the settings in Eeprom, see Memory Model Page0/Byte13
Returns
logging list
0000(P056/B048): 21/04/19 17:22:11 BA 001 000 000 027 000 000 000 000
0001(P056/B032): 21/04/19 17:22:11 BA 000 016 000 010 000 000 000 000
0002(P056/B016): 21/04/19 17:22:11 BA 001 001 000 027 000 000 000 000
0003(P056/B000): 21/04/19 17:22:10 BA 001 000 000 027 000 000 000 000
0004(P055/B240): 21/04/19 17:22:10 BA 000 016 000 010 000 000 000 000
0005(P055/B224): 21/04/19 17:22:10 BA 001 001 000 027 000 000 000 000
0006(P055/B208): 21/04/19 17:22:10 BA 001 000 000 027 000 000 000 000
0007(P055/B192): 21/04/19 17:22:10 BA 000 016 000 010 000 000 000 000
0008(P055/B176): 21/04/19 17:22:10 BA 001 001 000 027 000 000 000 000
0009(P055/B160): 21/04/19 17:22:10 BA 001 000 000 027 000 000 000 000
0010(P055/B144): 21/04/19 17:22:09 BA 000 016 000 010 000 000 000 000
0011(P055/B128): 21/04/19 17:22:09 BA 001 001 000 027 000 000 000 000
0012(P055/B112): 21/04/19 17:22:08 BA 001 000 000 027 000 000 000 000
0013(P055/B096): 21/04/19 17:22:08 BA 000 016 000 010 000 000 000 000
0014(P055/B080): 21/04/19 17:22:08 BA 001 001 000 027 000 000 000 000
0015(P055/B064): 21/04/19 17:22:07 BA 001 000 000 027 000 000 000 000
0016(P055/B048): 21/04/19 17:22:07 BA 000 016 000 010 000 000 000 000
0017(P055/B032): 21/04/19 17:22:07 BA 001 001 000 027 000 000 000 000
0018(P055/B016): 21/04/19 17:21:49 BA 001 000 000 027 000 000 000 000
0019(P055/B000): 21/04/19 17:21:49 BA 001 001 000 027 000 000 000 000
0020(P054/B240): 21/04/19 17:21:31 BA 000 000 000 010 000 000 000 000
0021(P054/B224): 21/04/19 17:21:22 BA 000 001 000 011 000 000 000 000
0022(P054/B208): 21/04/19 17:21:15 BA 000 001 000 010 000 000 000 000
0023(P054/B192): 21/04/19 17:20:22 BA 000 255 000 255 000 000 000 000
0024(P054/B176): 21/04/19 17:17:05 EV 254 003 000 000 002 004 000 000
0025(P054/B160): 21/04/19 17:16:11 EV 254 002 000 000 000 000 000 000
0026(P054/B144): 21/04/19 16:35:16 ER 005 001 000 004 000 000 000 000
0027(P054/B128): 21/04/19 16:24:07 ER 005 001 000 004 000 000 000 000
0028(P054/B112): 21/04/19 14:40:59 ER 005 001 000 004 000 000 000 000
0029(P054/B096): 21/04/19 13:57:05 ER 005 001 000 004 000 000 000 000
0030(P054/B080): 21/04/19 13:53:07 ER 006 001 011 083 011 083 000 000
0031(P054/B064): 21/04/19 12:48:39 ER 006 001 011 083 011 083 000 000
OK



pid debug off

This instruction will disable the CLI console debug function for PID related matters (only used in combination with HVAC module).
Returns
OK

pid debug on

This instruction will enable the CLI console debug function for PID related matters (only used in combination with HVAC module).
Returns
OK

To enable debugging, use following instruction:

pid debug on

When a PID filter is enabled (when disabled, nothing will be displayed) on 1 of the connected HVAC modules, following will appear on the console (example):

17:51:15 084.075.215.000 pid:0 En:1(H) sensor:19.0(3) setpt:22.5 Err:7 P:49 I:0 D:0 Drive=49 Out=49(0)

Explanation:

  • 17:51:15 -> Time
  • 084.075.215.000 -> ID of the HVAC module (important when more then 1 HVAC module is connected)
  • pid:0 -> PID 0 of the HVAC module is used
  • En:1(H) -> Module is enabled (=1) and PÏD filter is in Heating(H) mode. Cooling(C) is also possible
  • sensor:19:0(3) -> Sensor is measuring 19.0 degree celsius en Sensor (3) of this HVAC module is used for this PID filter
  • sept:22.5 -> The thermostat setpoint is now set at 22.5 degree Celsius
  • Err: 7 -> The calculated PID error is 7
  • P:49 -> The calculated P result is 49
  • I:0 -> The calculated I result is 0
  • D:0 -> The calculated D result is 0
  • Drive=49 -> The calculated PID drive (P+I+D) is 49
  • Out=49(0) -> Analog output (0) will be driven with value 49 (0-255)

When the display rate of the debug information is not high enough, the sampling frequency of the HVAC module can be increased by using eeprom memory location 0/4. For example, increase the speed to display every 8 seconds the PID information:

eeprom write 0 4 10

register list

This instruction will list all processor registers and the present values. This is for debug purposes
Returns
---Register Values---
 00 00000 00000 00000 00087 00064 00658 16385 00128 00514 00000 00000 00000
 01 00003 00000 00000 00000 00000 00000 32776 32776 32776 32776 01296 01040
 02 01040 01296 00131 00272 15376 00960 08252 00000 00195 26115 13088 12290
 03 00390 00129 00129 00129 16400 00000 00004 00000 00064 00000 00000 00000
 04 00064 00000 00000 00000 00000 06280 49154 00008 00004 00000 00780 00000
 05 00000 00000 05188 05188 25668 01089 17476 17476 17476 04676 17476 17476
 06 17476 16452 17476 17476 17476 01028 17472 16448 00064 05952 16384 17429
 07 17408 17476 17408 17472 17472 01092 00271 32768 32768 00000 00000 00000
 08 00000 00000 00000 00000 36896 36896 00016 00016 00000 32768 00000 00000
 09 00046 00000 00010 00010 00000 00000 00000 00000 00006 00006
OK



reset

reset the CAN stack see https://wiki.openmotics.com/index.php/AIO_Release_Notes#Factory_Reset_of_a_full_installation_can_be_done_with_following_guideline
Returns
OK



state machine list

This instruction will list all main state machines with the last, the minimum and maximum execution time
Returns
 #----Last----Min-----Max------Description------------------
00 03 00004ms 00002ms 01402ms  UART1 receive
01 00 00000ms 00000ms 00000ms  UART2 receive
02 00 00000ms 00000ms 00000ms  UART3 receive
03 01 00000ms 00000ms 00000ms  UART4 receive
04 00 00061ms 00001ms 00238ms  I2C1
05 00 00002ms 00001ms 00052ms  I2C2
06 02 00205ms 00202ms 00258ms  Update Time/Date
07 00 00001ms 00001ms 00016ms  Immediate Queue
08 00 00002ms 00002ms 00006ms  Timer 100ms
09 00 00001ms 00001ms 00005ms  Timer 1 second
10 00 00005ms 00001ms 00005ms  Timer 1 minute
11 00 15444ms 15444ms 15444ms  Perform eeprom activate
12 01 00387ms 00116ms 00822ms  CLI print text
13 00 00000ms 00000ms 00000ms  CLI action execute
14 05 00001ms 00001ms 00016ms  Scan modules over RS485 network
15 00 00035ms 00001ms 00063ms  RS485 modules health status check
16 00 00001ms 00001ms 00003ms  Check Error, print, store in FRAM
17 00 00001ms 00001ms 00024ms  Check input queue and actions
18 00 00000ms 00000ms 00000ms  Check input delay queue and actions
19 00 01391ms 01391ms 01391ms  CLI print registers
20 00 00002ms 00002ms 00010ms  Check CAN1 RX queue
21 00 00013ms 00001ms 00069ms  Check CAN1 TX queue
22 00 00000ms 00000ms 00000ms  Check hardware health
23 00 00000ms 00000ms 00000ms  Check leds
24 00 00001ms 00001ms 00084ms  Check internal outputs
25 00 00002ms 00001ms 00009ms  Check internal inputs
26 00 00000ms 00000ms 00000ms  Execute Group Action
27 00 00002ms 00001ms 00004ms  Execute list of actions every minute



module discover start

This instruction will start the discovery mode of the RS485 Bus for the non-energy modules. When this instruction is executed, the normal function of the bus is stopped to be able to add new modules.
Returns
OK

Example:

Instruction
module discover start
Returns
OK

module discover stop

This instruction will stop the discovery mode of the RS485 Bus for the non-energy modules
Returns
OK

Example:

Instruction
module discover stop
Returns
OK

startup group read

A group Action can be defined that needs to be executed when the system starts. This instruction will read the group nr (0-254) that will be executed at startup.
Returns
group nr
OK

Example:

Instruction
startup group read
Returns
5
OK

startup group write [group nr]

A group Action can be defined that needs to be executed when the system starts. This instruction will write the group nr (0-254) that will be executed at startup.
[group nr]
Indicates which group nr that needs to be executed at startup.
Returns
OK

Example:

Instruction
startup group write 5
Returns
OK

queue list

This instruction will print on console the immediate buffer queue. This instruction can also be used to see what's been happening recently and see the instruction that have just been executed.
Returns
Full list of the immediate queue including values of all pointers used
OK

Example:

Instruction
queue list
Returns
Queue list
OK

digital output chip read

AS OF VERSION 1.0.150

This instruction will print on console the type of digital output chip that is configured (PCA9534 VS PCF8574). Default value is the PCA variant
Returns
setting of the configured chip
OK

Example:

Instruction
digital output chip read
Returns
0x55 == PCF8574
OK

digital output chip write [chip type]

AS OF VERSION 1.0.150

This instruction will write the type of digital output chip that is configured (PCA9534 VS PCF8574).
[chip type]
The type of chip that is placed on the PCB for controlling the digital outputs
- 0x55 == 85 == PCF8574
- 0xff == 255 == PCA9534


Returns
OK

Example:

Instruction
digital output chip write 85
Returns
OK

Time & Date instructions

days group follow read

A group Action can be defined that needs to be executed when the date (day) changes. This instruction will read the group nr (0-254) that will be executed at day change.
Returns
group nr
OK

Example:

Instruction
days group follow read
Returns
5
OK

days group follow write [group nr]

A group Action can be defined that needs to be executed when the date (day) changes. This instruction will write the group nr (0-254) that will be executed at day change.
[group nr]
Indicates which group nr that needs to be executed at day change.
Returns
OK

Example:

Instruction
days group follow write 6
Returns
OK


hours group follow read

A group Action can be defined that needs to be executed when the time (hour) changes. This instruction will read the group nr (0-254) that will be executed at hour change.
Returns
group nr
OK

Example:

Instruction
hours group follow read
Returns
5
OK

hours group follow write [group nr]

A group Action can be defined that needs to be executed when the time (hour) changes. This instruction will write the group nr (0-254) that will be executed at hour change.
[group nr]
Indicates which group nr that needs to be executed at hour change.
Returns
OK

Example:

Instruction
hours group follow write 6
Returns
OK

minutes group follow read

A group Action can be defined that needs to be executed when the time (minutes) changes. This instruction will read the group nr (0-254) that will be executed at minute change.
Returns
group nr
OK

Example:

Instruction
minutes group follow read
Returns
5
OK

minutes group follow write [group nr]

A group Action can be defined that needs to be executed when the time (minutes) changes. This instruction will write the group nr (0-254) that will be executed at minute change.
[group nr]
Indicates which group nr that needs to be executed at minute change.
Returns
OK

Example:

Instruction
minutes group follow write 6
Returns
OK

time read

This instruction will read the time of the internal Real Time Clock.
Returns
The time
OK

Example:

Instruction
time read
Returns
20:13:19
OK

time write [hours][minutes][seconds]

This instruction will write the time in the Real Time Chip
[hours]
Value 0 to 23
[minutes]
Value 0 to 59
[seconds]
Value 0 to 99
Returns
OK

Example:

Instruction
time write 19 25 57
Returns
OK

date read

This instruction will read the date of the internal Real Time Clock.
Returns
The date
OK

Example:

Instruction
date read
Returns
2 25-12-18
OK

date write [day of the week][day][month][year]

This instruction will write the date in the Real Time Chip
[day of the week]
Value 1 to 7 represents Monday to Sunday.
[day]
Value 1 to 31, day of the month.
[month]
Value 1 to 12
[year]
Value 0 to 99
Returns
OK

Example:

Instruction
date write 2 25 12 18
Returns
OK

Basic Action instructions

basic action debug off

This instruction will disable the debug function for Basic Actions. When the debug function is activate, every time a Basic Action is executed, the Basic Action Number and Basic Action explanation will be printed on the console.
Returns
OK

Example: Deactivate Basic Action debug mode

Instruction
basic action debug off
Returns
OK

basic action debug on

This instruction will enable the debug function for Basic Actions. When the debug function is activate, every time a Basic Action is executed, the Basic Action Number and Basic Action explanation will be printed on the console.
Returns
OK

Example: Activate Basic Action debug mode

Instruction
basic action debug on
Returns
OK

basic action activate [Type] [Action] [Device Nr] [Extra parameter]

This instruction will execute a Basic Action. For a full list of basic actions, see Action Types AIO
[Type]
This is the Type of a Basic Action, see [Action Types AIO]].
[Action]
This is the Action of a Basic Action, see [Action Types AIO]].
[Device Nr]
This is the Device Nr of a Basic Action, see [Action Types AIO]].
[Extra Parameter]
This is the Extra Parameter of a Basic Action, see [Action Types AIO]].
Returns
OK

Example: Toggle output 12

Instruction
basic action activate 0 16 12 0
Returns
OK

basic action activate [Type] [Action] [Device Nr.MSB] [Device Nr.LSB] [Extra parameter.MSB] [Extra parameter.LSB]

This instruction will execute a Basic Action. Since Device Nr and Extra Parameter contains word value, it's sometime needed for ease of use to be able to use the MSB (Most Significant Byte) and LSB (Least Significant Byte) values. For a full list of basic actions, see Action Types AIO
[Type]
This is the Type of a Basic Action, see [Action Types AIO]].
[Action]
This is the Action of a Basic Action, see [Action Types AIO]].
[Device Nr.MSB]
This is the MSB Device Nr of a Basic Action, see [Action Types AIO]].
[Device Nr.LSB]
This is the LSB Device Nr of a Basic Action, see [Action Types AIO]].
[Extra Parameter.MSB]
This is the MSB Extra Parameter of a Basic Action, see [Action Types AIO]].
[Extra Parameter.LSB]
This is the LSB Extra Parameter of a Basic Action, see [Action Types AIO]].
Returns
OK

Example: Program in the uCAN (ID 26 88 120) for Sensor0 the sensor nr 15

Instruction
basic action activate 20 18 26 88 120 15
Returns
OK

Eeprom & Fram instructions

eeprom erase [start page][end page][security code]

This instruction will erase 1 or more pages of the eeprom. With the start and end page, you can indicate which pages must be erased
[start page]
Indicates the start page (0-511) of the pages that must be erased.
[end page]
Indicates the end page (0-511) of the pages that must be erased.
[security code]
Security code "28883" must be used to be able to activate the erase function
Returns
delete progress information
OK

Example: Delete eeprom page 256

Instruction
eeprom erase 256 256 28883
Returns
OK

Important: It's NOT possible to undo this instruction. Once the erase is executed, the data is erased and can't be retrieved anymore.


eeprom read [page][byte][Opt: Nr of byte]

This instruction will read 1 of more bytes from eeprom. Maximum 30 bytes can be read
[page]
This is the page (0-511) of the eeprom to be read.
[byte]
This is the byte nr to be read (or the start byte when more then 1 byte is requested)
[Opt
Nr of byte]
This optional parameter (2-30) can be added when more then 1 byte must be read
Returns
eeprom read bytes
OK

Example: Read from page 0 start at byte 2 the next 10 bytes

Instruction
eeprom read 0 2 20
Returns
0 2 -> 5 ( )
0 3 -> 1 ( )
0 4 -> 255 ( )
0 5 -> 13 ( )
0 6 -> 7 ( )
0 7 -> 4 ( )
0 8 -> 255 ( )
0 9 -> 255 ( )
0 10 -> 255 ( )
0 11 -> 255 ( )
0 12 -> 255 ( )
0 13 -> 255 ( )
0 14 -> 255 ( )
0 15 -> 255 ( )
0 16 -> 255 ( )
0 17 -> 255 ( )
0 18 -> 255 ( )
0 19 -> 255 ( )
0 20 -> 255 ( )
OK

eeprom read [Id0][Id1][Id2][location]

CLI instruction "eeprom read" also supports reading the eeprom of uCAN slave modules. This function requires uCAN Firmware Version 6.0.21 or higher. Instead of 2 or 3 arguments being used (for internal eeprom read), 4 arguments are used to read the eeprom of a uCAN.
eeprom read Id0 Id1 Id2 location
[Id0..Id2]
This is the 3 bytes ID (without CAN Bus number) of the uCAN
[location]
Indicates the eeprom memory read location (0-1023) of the uCAN
Returns
Read Byte
OK

Example: Read the value of eeprom location 29 of the uCAN with ID 91.59.166

el
--- Total Uptime: 000216 Hours, Last Startup: 08:02:09 02/09/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.109       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  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
 04 (b C 032->039) 098.000.000.004 00000   GOOD       (000)  1
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 100.069.253.220 00001   GOOD       (000)  1
 01 (m C 001->001) 100.052.078.228 00000   GOOD       (000)  1
 02 (m C 002->002) 100.135.225.126 00000   GOOD       (000)  1
 03 (m C 003->003) 100.091.059.166 00000   GOOD       (000)  1
OK
eeprom read 91 59 166 29
15
OK

eeprom read [Id0][Id1][Id2][Id3][location]

CLI instruction "eeprom read" also supports reading the internal processor eeprom of RS485 slave modules. Instead of 2 or 3 arguments being used (for internal eeprom read) or 4 arguments (reading uCAN), 5 arguments are used to read the eeprom of a RS485 slave module.
eeprom read Id0 Id1 Id2 Id3 location
[Id0..Id3]
This is the 4 bytes ID of the RS485 slave module
[location]
Indicates the eeprom memory read location (0-1023) of the RS485 slave
Returns
Location -> Read Byte
OK

Example: Read the value of eeprom location 2 of input module with ID 73.20.51.10

eeprom read 73 20 51 10 2
2 -> 20
OK

eeprom write [page][byte][data byte]

This instruction will write 1 byte in eeprom.
[page]
Indicates the eeprom page (0-511) where the byte will be written.
[byte]
Indicates the eeprom byte (0-255) where the byte will be written.
[data byte]
This is the byte that will be written
Returns
OK

Example: Write at page 10 byte 200 value 33

Instruction
eeprom write 10 200 33
Returns
OK

Note: Your full configuration is stored in eeprom. Programming bytes in eeprom can make your system non-functional so please be careful using this instruction unless you know what you're doing.


eeprom write [Id0][Id1][Id2][location][data_byte]

CLI instruction "eeprom write" also supports writing the eeprom of RS485 slave modules. Instead of 3 arguments used (for internal eeprom write), 5 arguments are used to write the eeprom of a uCAN.
eeprom write Id0 Id1 Id2 location data_byte
[Id0..Id2]
This is the 3 bytes ID (without CAN Bus number) of the uCAN
[location]
Indicates the eeprom memory location (0-1023) of the uCAN where the byte will be written.
[data byte]
This is the byte (0-255) that will be written in the eeprom of the uCAN
Returns
Written Byte
OK

Example: Write a value (20) in eeprom location 29 of the eeprom of the uCAN with ID 91.59.166

el
--- Total Uptime: 000216 Hours, Last Startup: 08:02:09 02/09/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.109       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  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
 04 (b C 032->039) 098.000.000.004 00000   GOOD       (000)  1
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 100.069.253.220 00001   GOOD       (000)  1
 01 (m C 001->001) 100.052.078.228 00000   GOOD       (000)  1
 02 (m C 002->002) 100.135.225.126 00000   GOOD       (000)  1
 03 (m C 003->003) 100.091.059.166 00000   GOOD       (000)  1
OK
eeprom write 91 59 166 29 20
20
OK
eeprom read 91 59 166 29
20
OK

eeprom write [Id0][Id1][Id2][Id3][location][data_byte]

CLI instruction "eeprom write" also supports writing the eeprom of RS485 slave modules. Instead of 3 arguments used (for internal eeprom write) or 5 arguments are used to write the eeprom of a uCAN, this instruction uses 6 arguments to write the eeprom of a RS485 slave module.
eeprom write Id0 Id1 Id2 Id3 location data_byte
[Id0..Id3]
This is the 4 bytes ID of the RS485 slave module
[location]
Indicates the eeprom memory location (0-1023) of the RS485 slave module where the byte will be written.
[data byte]
This is the byte (0-255) that will be written in the eeprom of the RS485 slave module
Returns
Written Byte
OK

Example: Write a value (20) in eeprom location 29 of the eeprom of the input module with ID 73.10.22.58

eeprom write 73 10 22 58 29 20
20 (29)
OK
eeprom read 73 10 22 58 29
20 (29)
OK

eeprom search [start page][stop page][data byte0][Opt: data byte1][Opt: data byte2][Opt: data byte3][Opt: data byte4][Opt: data byte5]

This instruction will read search for data bytes in eeprom. The data bytes will indicate which bytes are being searched. The start and end page defines in which pages of the eeprom the search instruction has to be performed. The eeprom has 512 pages (0-511), each page contains 256 bytes of data. You can select 1 or more (up to 6) data bytes to be searched.
[start page]
This is the start page (0-511) of the eeprom where the search will start.
[stop page]
This is the stop page (0-511) of the eeprom where the search will stop.
[data byte0..5]
This is the data byte that will be searched in eeprom
Returns
eeprom search result
OK

Example: (search page 0 to 10 in eeprom to find the location where 7 or 13 is written)

Instruction
eeprom search 0 10 7 13
Returns
0 5 -> 13
0 6 -> 7
OK

As you can see, on page 0 Byte 5 and 6, the system did found results.


fram erase [start page][end page][security code]

This instruction will erase 1 or more pages of the FRAM. With the start and end page, you can indicate which pages must be erased
[start page]
Indicates the start page (0-127) of the pages that must be erased.
[end page]
Indicates the end page (0-127) of the pages that must be erased.
[security code]
Security code "28883" must be used to be able to activate the erase function
Returns
delete progress information
OK

Example: Delete fram page 30 till 35 (including 35)

Instruction
fram erase 30 35 28883
Returns
OK

Important: It's NOT possible to undo this instruction. Once the erase is executed, the data is erased and can't be retrieved anymore.


fram read [page][byte][Opt: Nr of byte]

This instruction will read 1 of more bytes from FRAM. Maximum 30 bytes can be read
[page]
This is the page (0-127) of the FRAM to be read.
[byte]
This is the byte nr to be read (or the start byte when more then 1 byte is requested)
[Opt
Nr of byte]
This optional parameter (2-30) can be added when more then 1 byte must be read
Returns
Fram read bytes
OK

Example: Read from page 0 start at byte 2 the next 10 bytes

Instruction
fram read 0 2 20
Returns
0 2 -> 5 ( )
0 3 -> 1 ( )
0 4 -> 255 ( )
0 5 -> 13 ( )
0 6 -> 7 ( )
0 7 -> 4 ( )
0 8 -> 255 ( )
0 9 -> 255 ( )
0 10 -> 255 ( )
0 11 -> 255 ( )
0 12 -> 255 ( )
0 13 -> 255 ( )
0 14 -> 255 ( )
0 15 -> 255 ( )
0 16 -> 255 ( )
0 17 -> 255 ( )
0 18 -> 255 ( )
0 19 -> 255 ( )
0 20 -> 255 ( )
OK

fram write [page][byte][data byte]

This instruction will write 1 byte in FRAM.
[page]
Indicates the FRAM page (1-127) where the byte will be written.
[byte]
Indicates the FRAM byte (0-255) where the byte will be written.
[data byte]
This is the byte that will be written
Returns
OK

Example: Write at page 10 byte 200 value 33

Instruction
fram write 10 200 33
Returns
OK

Note: Please note that page 0 is protected and can't be written by the user.


Input instructions

add virtual input module [id1] [id2] [id3]

This instruction will add a virtual input module (id0="i") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the input list is unique and not yet used.
Example:
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 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.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK
add virtual input module 0 0 2
OK
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  1
 02 (i V 016->023) 105.000.000.002 00000   GOOD       (000)  0
-------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.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK

input action read [input nr]

This instruction will read the BA's that are linked to an input
Following input actions with associated BA can be linked to an input:
  • Action 0: Press Action
  • Action 1: Release Action
  • Action 2: 1 Sec Press
  • Action 3: 2 Sec Press
  • Action 4: Double Press
Returns
----------------Act--Inp-Cnf-Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
0- PRESS : Yes 001 0 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
1- RELEASE : Yes 001 1 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
2- 1SEC PRESS : No 001 2 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
3- 2SEC PRESS : No 001 3 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
4-DOUBLE PRESS: No 001 4 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
OK

input action write [input nr] [input action] [BA Type] [BA Action] [BA Device Nr] [BA Extra parameter]

This instruction will program for an input and for a certain input action the associated BA
Input Nr: This is the input number to be programmed
Input action: Following input actions can be used
  • 0: Press Action
  • 1: Release Action
  • 2: 1 Sec Press
  • 3: 2 Sec Press
  • 4: Double Press
BA type, BA action, BA device etc: This is the BA to be executed when an input action occurs, see Action Types AIO
Returns
OK

input action write [input nr] [input action] [BA Type] [BA Action] [BA Device Nr.MSB] [BA Device Nr.LSB] [BA Extra parameter.MSB] [BA Extra parameter.LSB]

This instruction will program for an input and for a certain input action the associated BA. This instruction is equal then the above instruction excepts that BA Device Nr and BA Extra Parameter are split in a MSB byte and a LSB byte
Input Nr: This is the input number to be programmed
Input action: Following input actions can be used
  • 0: Press Action
  • 1: Release Action
  • 2: 1 Sec Press
  • 3: 2 Sec Press
  • 4: Double Press
BA type, BA action, BA device etc: This is the BA to be executed when an input action occurs, see Action Types AIO
Returns
OK

input debug off

This instruction will disable the CLI console debug function for inputs. When an input is pressed or released, a debug message will appear when this debug function is enabled
Returns
OK

input debug on

This instruction will enable the CLI console debug function for inputs. When an input is pressed or released, a debug message will appear when this debug function is enabled
Returns
OK

input link read [input nr]

This instruction will read, for an input, which output or action is linked to it.
[input nr]
Indicates which input (0-631) that the link has to be read.
Returns
output nr or link
OK

Example:

Instruction
input link read 15
Returns
12
OK

input link write [input nr][output link nr]

This instruction will write, for an input (0-479), which output (0-479) or action is linked to it.
[input nr]
Indicates which input that the link has to be written.
Returns
OK

Example: Link input 15 with output 12

Instruction
input link write 15 12
Returns
OK

To unconfigure an input from an output:

input link read 32
Input 32 is linked to Output 14
OK
input link write 32 65535
OK
input link read 32
Input 32 has no Output nor any action(s) linked
OK

input list

This instruction will display the list of inputs, the status (0-> release state, 1-> press state), the link (is an action configured or an output linked) and the name of each input
Returns
The input list

input release [input nr]

Switch input to release state for virtual modules.
[input nr]
Indicates which input that needs to be put in release state, a maximum of 632 (0 - 631) inputs can be used.
Returns
OK

Example:

Instruction
input release 28
Returns
OK

input press [input nr]

Switch input to press state for virtual modules.
[input nr]
Indicates which input that needs to be put in press state, a maximum of 632 (0 - 631) inputs can be used.
Returns
OK

Example:

Instruction
input press 28
Returns
OK

input name write [input nr][input name]

Write the name of an input, max 16 characters.
[input nr]
Indicates which input (0-631) the name has to be written.
[input name]
the ascii name of the input (maximum 16 characters).
Returns
OK

Example:

Instruction
input name write 28 Bedroom parents
Returns
OK

input name read [input nr]

Read the name of an input
[input nr]
Indicates which input (0-631) the name has to be displayed.
Returns
Input Name
OK

Example:

Instruction
input name read 28
Returns
Bedroom Parents
OK

pulse counter read [input nr]

Read the pulse counter number of an input
[input nr]
Indicates which input (0-631) the pulse counter number has to be displayed.
Returns
pulse counter number
OK

Example:

Instruction
pulse counter read 3
Returns
2546678
OK

input number modules read

Read the number of input modules that are programmed and active
Returns
Number Of Input Modules
OK

Example:

Instruction
input number modules read
Returns
6
OK

input number modules write [number of input modules]

Writes the number of input modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM
[number of input modules]
Indicates the number of input modules that are active and programmed.
Returns
OK

Example:

Instruction
input number modules write 7
Returns
OK

Output instructions

add virtual dimmer module [id1] [id2] [id3]

This instruction will add a virtual dimmer module (id0="d") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the output list is unique and not yet used.
Important Note: id1..id3 0.0.0, 0.0.1, 0.0.2 and 0.0.3 are reserved for internal use and cannot be used.
Example:
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  1
 02 (i V 016->023) 105.000.000.002 00000   GOOD       (000)  0
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)  1
 01 (s C 008->015) 115.000.000.001 00000   GOOD       (000)  1
-------CAN Control-------ID---------Err-------Status--------Pwr---
 00 (C E 000->000) 067.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK
add virtual dimmer module 0 0 4
OK
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
 01 (d V 008->015) 100.000.000.004 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  1
 02 (i V 016->023) 105.000.000.002 00000   GOOD       (000)  0
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)  1
 01 (s C 008->015) 115.000.000.001 00000   GOOD       (000)  1
-------CAN Control-------ID---------Err-------Status--------Pwr---
 00 (C E 000->000) 067.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK

add virtual output module [id1] [id2] [id3]

This instruction will add a virtual dimmer module (id0="o") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the output list is unique and not yet used.
Important Note: id1..id3 0.0.0, 0.0.1, 0.0.2 and 0.0.3 are reserved for internal use and cannot be used.
Example:
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
 01 (d V 008->015) 100.000.000.004 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  1
 02 (i V 016->023) 105.000.000.002 00000   GOOD       (000)  0
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)  1
 01 (s C 008->015) 115.000.000.001 00000   GOOD       (000)  1
-------CAN Control-------ID---------Err-------Status--------Pwr---
 00 (C E 000->000) 067.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK
add virtual output module 0 0 5
OK
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
 01 (d V 008->015) 100.000.000.004 00000   GOOD       (000)  1
 02 (o V 016->023) 111.000.000.005 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  1
 02 (i V 016->023) 105.000.000.002 00000   GOOD       (000)  0
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)  1
 01 (s C 008->015) 115.000.000.001 00000   GOOD       (000)  1
-------CAN Control-------ID---------Err-------Status--------Pwr---
 00 (C E 000->000) 067.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK

output all off

aoff

Switch all outputs off.
Returns
OK

Example:

Instruction
output all off will switch all outputs OFF.
Returns
OK
Instruction
oaoff will switch all outputs OFF.
Returns
OK

output status on

oso

Returns the list of all outputs that are ON.
Returns
List of outputs that are ON

output list

This instruction will display the list of outputs, the status (On or Off), the dim value, the configured timer value, the timer type (Off, , 100ms timer, 1s timer or 1m timer) and the name of each output
Returns
The output list

output on [output nr] [dimmer value*] [timer value*]

on [output nr] [dimmer value*] [timer value*]

Switch ON an output. * are optional values
[output nr]
Indicates which output that needs to be switched ON, a maximum of 640 (0 - 639) outputs can be used.
[dimmer value*]
Optional parameter to set the dimmer value (0-255)
[timer value*]
Optional parameter to set the timer value (0-65535s)
Returns
OK

Examples:

Instruction
output on 127
will switch ON output 127.
Returns
OK
Instruction
output on 127 56
will switch ON output 127 with dimmer value 56.
Returns
OK
Instruction
output on 127 56 3600
will switch ON output 127 with dimmer value 56 for 3600 seconds.
Returns
OK
Instruction
oon 127 56 3600
will switch ON output 127 with dimmer value 56 for 3600 seconds.
Returns
OK

output off [output nr]

off [output nr]

Switch OFF an output.
[output nr]
Indicates which output that needs to be switched OFF, a maximum of 640 (0 - 639) outputs can be used.
Returns
OK

Example:

Instruction
output off 127 will switch OFF output 127.
Returns
OK
Instruction
ooff 127 will switch OFF output 127.
Returns
OK

output name write [output nr][output name]

Write the name of an output, max 16 characters.
[output nr]
Indicates which output (0-639) the name has to be written.
[output name]
the ascii name of the output (maximum 16 characters).
Returns
OK

Example:

Instruction
output name write 24 Bedroom 4
Returns
OK

output name read [output nr]

Read the name of an output
[output nr]
Indicates which output (0-639) the name has to be displayed.
Returns
output Name
OK

Example:

Instruction
output name read 24
Returns
Bedroom 4
OK

output number modules read

Read the number of output modules that are programmed and active
Returns
Number Of Output Modules
OK

Example:

Instruction
output number modules read
Returns
6
OK

output number modules write [number of output modules]

Writes the number of output modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM
[number of output modules]
Indicates the number of output modules that are active and programmed.
Returns
OK

Example:

Instruction
output number modules write 7
Returns
OK

output group follow read [Output Nr]

An output activation (switch on, off or change dimmer value) can be programmed to trigger a group action. With this instruction, you can read, for Output Nr, when an output activation occurs, which Group Action will be executed.
Returns
Group Nr
OK 

Example: Read the group linked to output 35

Instruction
output group follow read 35
Returns 
10
OK

output group follow write [Output Nr] [Group Nr]

An output activation (switch on, off or change dimmer value) can be programmed to trigger a group action. With this instruction, you can write, for Output Nr, when an output activation occurs, which Group Action will be executed.
Returns
OK 

Example: Write group nr 10 must be linked to output 35

Instruction
output group follow write 35 10
Returns 
OK

output group follow list

An output activation (switch on, off or change dimmer value) can be programmed to trigger a group action. With this instruction, you can list, for all outputs in use, which Group Actions are linked.
Returns
List
OK


Instruction
output group follow list
Returns
list 
OK

 


output all off group follow read

An output all off instruction (like BA????) can be programmed to trigger a group action. With this instruction, you can read which Group Action will be executed.
Returns
Group Nr
OK 

Example:

Instruction
output all off group follow read
Returns 
30
OK

Remark:

  • When an output all off instruction is executed, only the all off group nr will be executed and not all the individual output group follow actions.

output all off group follow write [Group Nr]

An output all off instruction (like BA????) can be programmed to trigger a group action. With this instruction, you can write which Group Action will be executed.
Returns
OK 

Example:

Instruction
output all off group follow write 30
Returns 
OK

Remark:

  • When an output all off instruction is executed, only the all off group nr will be executed and not all the individual output group follow actions.

Sensor instructions

add virtual sensor module [id1] [id2] [id3]

This instruction will add a virtual sensor module (id0="t") with id1, id2 and id3. When using this instruction, please make sure that the combination id1, id2 and id3 for the sensor list is unique and not yet used.
Example:
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  1
 02 (i V 016->023) 105.000.000.002 00000   GOOD       (000)  0
-------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.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK
add virtual sensor module 0 0 1
OK
el
--- Total Uptime: 000259 Hours, Last Startup: 16:26:54 24/10/21   ---
--- Module Type: BRAIN, RS485 mode: 0, Board: 27'C  --.--V --.--A ---
--- PWR RS485/CAN: 1/1, CANTERM: 1, BB Debug: 255, Fw: 1.0.113       ---
-------Output------------ID---------Err-------Status--------Pwr---
 00 (l I 000->007) 108.000.000.000 00000   GOOD       (000)  1
-------Input-------------ID---------Err-------Status--------Pwr---
 00 (i I 000->007) 105.000.000.000 00000   GOOD       (000)  1
 01 (b C 008->015) 098.000.000.001 00000   GOOD       (000)  1
 02 (i V 016->023) 105.000.000.002 00000   GOOD       (000)  0
-------Sensor------------ID---------Err-------Status--------Pwr---
 00 (s C 000->007) 115.000.000.000 00000   GOOD       (000)  1
 01 (t V 008->015) 116.000.000.001 00000   GOOD       (000)  1
-------CAN Control-------ID---------Err-------Status--------Pwr---
 00 (C E 000->000) 067.001.230.000 00000   GOOD       (016)  1
-------Micro CAN---------ID---------Err-------Status--------Pwr---
 00 (m C 000->000) 000.248.090.233 00000   GOOD       (000)  1
OK

sensor extra list

This instruction will display the list of Extra Sensors. Extra Sensors (max 64, 0-63) can be freely used for example to store the wind direction, windspeed etc of a weather station, power measurement and others. Extra Sensors can also trigger group actions and can be used with IF THEN instructions. The values are being set by using BA instructions. Sensor value used are 16bits.
Returns
The sensor extra list

sensor extra name write [sensor nr][sensor name]

Write the name of an extra sensor, max 16 characters.
[sensor nr]
Indicates which sensor (0-63) the name has to be written.
[sensor name]
the ascii name of the sensor (maximum 16 characters).
Returns
OK

Example:

Instruction
sensor extra name write 15 Windspeed
Returns
OK

sensor extra name read [sensor nr]

Read the name of an extra sensor
[sensor nr]
Indicates which sensor (0-63) the name has to be displayed.
Returns
Sensor Name
OK

Example:

Instruction
sensor extra name read 15
Returns
Windspeed
OK

sensor extra group follow read [Sensor Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor extra Nr (0-63), when a value change occurs, which Group Action will be executed.
Returns
Group Nr
OK 

Example: Read the group linked to sensor extra 30

Instruction
sensor extra group follow read 30
Returns 
20
OK

sensor extra group follow write [Sensor Nr] [Group Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Extra Nr (0-63), when a value change occurs, which Group Action will be executed.
Returns
OK 

Example: Write group nr 20 must be linked to sensor extra 30

Instruction
sensor extra group follow write 30 20
Returns 
OK

sensor extra group follow list

A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all Extra Sensors, which Group Actions are linked.
Returns
List
OK
Instruction
sensor extra group follow list
Returns
list 
OK

sensor list

This instruction will display the list of sensors, the temperature, the humidity, the brightness and the name of each sensor
Returns
The sensor list

sensor name write [sensor nr][sensor name]

Write the name of a sensor, max 16 characters.
[sensor nr]
Indicates which sensor (0-127) the name has to be written.
[sensor name]
the ascii name of the sensor (maximum 16 characters).
Returns
OK

Example:

Instruction
sensor name write 12 Bedroom 1
Returns
OK

sensor name read [sensor nr]

Read the name of a sensor
[sensor nr]
Indicates which sensor (0-127) the name has to be displayed.
Returns
Sensor Name
OK

Example:

Instruction
sensor name read 12
Returns
Bedroom 1
OK

sensor number modules read

Read the number of sensor modules that are programmed and active
Returns
Number Of Sensor Modules
OK

Example:

Instruction
sensor number modules read
Returns
6
OK

sensor number modules write [number of sensor modules]

Writes the number of sensor modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM
[number of sensor modules]
Indicates the number of sensor modules that are active and programmed.
Returns
OK

Example:

Instruction
sensor number modules write 7
Returns
OK

temperature group follow read [Sensor Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when a temperature change occurs, which Group Action will be executed.
Returns
Group Nr
OK 

Example: Read the group linked to sensor 17

Instruction
temperature group follow read 17
Returns 
3
OK

temperature group follow write [Sensor Nr] [Group Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when a temperature change occurs, which Group Action will be executed.
Returns
OK 

Example: Write group nr 3 must be linked to sensor 17

Instruction
temperature group follow write 17 3
Returns 
OK

temperature group follow list

A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked.
Returns
List
OK


Instruction
temperature group follow list
Returns
list 
OK

humidity group follow read [Sensor Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when a humidity change occurs, which Group Action will be executed.
Returns
Group Nr
OK 

Example: Read the group linked to sensor 17

Instruction
humidity group follow read 17
Returns 
4
OK

humidity group follow write [Sensor Nr] [Group Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when a humidity change occurs, which Group Action will be executed.
Returns
OK 

Example: Write group nr 4 must be linked to sensor 17

Instruction
humidity group follow write 17 4
Returns 
OK

humidity group follow list

A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked.
Returns
List
OK


Instruction
humidity group follow list
Returns
list 
OK

brightness group follow read [Sensor Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when a brightness change occurs, which Group Action will be executed.
Returns
Group Nr
OK 

Example: Read the group linked to sensor 17

Instruction
brightness group follow read 17
Returns 
5
OK

brightness group follow write [Sensor Nr] [Group Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when a brightness change occurs, which Group Action will be executed.
Returns
OK 

Example: Write group nr 5 must be linked to sensor 17

Instruction
brightness group follow write 17 5
Returns 
OK

brightness group follow list

A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked.
Returns
List
OK
Instruction
brightness group follow list
Returns
list 
OK

airquality group follow read [Sensor Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can read, for Sensor Nr (0-127), when an air quality (CO2) change occurs, which Group Action will be executed.
Returns
Group Nr
OK 

Example: Read the group linked to sensor 17

Instruction
airquality group follow read 17
Returns 
6
OK

airquality group follow write [Sensor Nr] [Group Nr]

A sensor can trigger a group action when one of their values changes. With this instruction, you can write, for Sensor Nr (0-127), when an air quality (CO2) change occurs, which Group Action will be executed.
Returns
OK 

Example: Write group nr 6 must be linked to sensor 17

Instruction
airquality group follow write 17 6
Returns 
OK

airquality group follow list

A sensor can trigger a group action when one of their values changes. With this instruction, you can list, for all sensor in use, which Group Actions are linked.
Returns
List
OK
Instruction
airquality group follow list
Returns
list 
OK

CAN module instructions

can control number modules read

Read the number of CAN Control modules that are programmed and active
Returns
Number Of CAN Control Modules
OK

Example:

Instruction
can control number modules read
Returns
2
OK

can control number modules write [number of can control modules]

Writes the number of CAN Control modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM
[number of CAN Control modules]
Indicates the number of CAN Control modules that are active and programmed.
Returns
OK

Example:

Instruction
can control number modules write 2
Returns
OK

can debug off

This instruction will disable the debug function for CAN messages sent and received on the CAN bus.
Returns
OK

Example: Deactivate CAN debug mode

Instruction
can debug off
Returns
OK

can debug on

This instruction will enable the debug function for CAN messages sent and received on the CAN bus.
Returns
OK

Example: Activate CAN debug mode

Instruction
can debug on
Returns
OK

can eeprom list

This instruction will list the programmed configuration stored in the Brain(+) of all connected Micro CAN's.
Returns
Configuration list of all programmed Micro CAN's

Example:

Instruction
can eeprom list
Returns
-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
As you can see in the above example, 1 Micro Can is not responding. If you still want to know the configuration of this Micro Can, you can use the CLI instruction can eeprom list
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.
  • 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

can ping list

This instruction will request to all connected Micro CAN's the full status and configuration.
Returns
The detailed answers of the connected Micro CAN's

Example:

Instruction
can ping list
Returns
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, 1 Micro Can is not responding. If you still want to know the configuration of this Micro Can, you can use the CLI instruction can eeprom list
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
  • CanP1: =1->CanP parameters are validated and ready to be used
  • CanP2: BRGCON1 (18F46K80)
  • CanP3: BRGCON2 (18F46K80)
  • CanP4: BRGCON3 (18F46K80)
  • CanP5: CRC8 of CanP2-CanP4
  • Stat: 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

can config delete

This instruction will perform a factory reset of the CAN config in the master as well as in the micro CAN slaves. After this instruction, the micro CAN config is deleted from the eeprom of the master and the micro CAN slaves.
Returns
can config delete
OK

Example:

Instruction
can config delete
Returns
OK

can module number read

Read the number of CAN modules that are programmed and active
Returns
Number Of CAN Modules
OK

Example:

Instruction
can module number read
Returns
6
OK

can module number write [number of CAN modules]

Writes the number of CAN modules that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM
[number of CAN modules]
Indicates the number of CAN modules that are active and programmed.
Returns
OK

Example:

Instruction
can module number write 7
Returns
OK

can input number read

Read the number of CAN inputs that are programmed and active
Returns
Number Of CAN inputs
OK

Example:

Instruction
can input number read
Returns
12
OK

can input number write [number of CAN inputs]

Writes the number of CAN inputs that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM
[number of CAN inputs]
Indicates the number of CAN inputs that are active and programmed.
Returns
OK

Example:

Instruction
can input number write 13
Returns
OK

can sensor number read

Read the number of CAN sensors that are programmed and active
Returns
Number Of CAN sensors
OK

Example:

Instruction
can sensor number read
Returns
4
OK

can sensor number write [number of CAN sensors]

Writes the number of CAN sensors that are programmed and active. This instruction will, after the write is performed, activate the instruction eeprom activate so all values from eeprom are read and copied in RAM
[number of CAN inputs]
Indicates the number of CAN sensors that are active and programmed.
Returns
OK

Example:

Instruction
can sensor number write 6
Returns
OK

can speed read

This instruction will display the CAN bus speed currently in use.
Returns
CAN bus speed

Example:

Instruction
can speed read
Returns
125kbps
OK 

can speed write [speed]

This instruction will write the new CAN bus speed that will be effective after reset. Supported speeds are 20kbps, 50kbps, 125kbps and 250kbps.
Returns
CAN bus parameters

Example:

Instruction
can speed write 50
Returns
CAN P: 001 031 255 002 060
OK
See https://wiki.openmotics.com/index.php/AIO_Tips_%26_tricks_during_installation_and_troubleshooting#Changing_CAN_bus_speed for detailed use

Notes:

  • 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.
  • The instruction "can speed write" can also be executed without any parameter. Without parameter, the Master will take the values programmed in Eeprom starting at Page0/Byte14 and verify integrity of those values. When the integrity is OK, these values will be distributed towards the uCAN and programmed in the Master to be used after the next reset. This allows custom CAN parameters to be used in a system.
  • The speed that a CAN bus is able to support depends on the cable used and the length: Increase in cable length means decrease in CAN speed, decrease in cable quality means decrease in CAN speed. A good quality cable (for example UTP CAT6) at CAN speed of 125kbps can easily support 250 meter.

can message [Bus Nr] [SID] [B0] [B1] [B2] [B3] [B4] [B5] [B6] [B7]

This instruction allows to sent direct messages to the CAN bus. To see the response on these messages, turn on the CAN debug functionality ("can debug on").
[Bus Nr]
Indicates the Bus Nr on which the CAN message must be sent:100->internal CAN bus, 0->First CAN Control, 1->Second CAN Control etc, 255->Broadcast message on all available CAN busses.
[Bx]
B1..B8 are the bytes that forms the CAN message, length of the CAN message (Minimum 2, maximum 8 bytes (B1..B8))

Example: Sent message on the internal CAN bus with SID=6, 5 bytes long message 1 100 0 0 101

Instruction
can message 0 6 1 100 0 0 101
Returns
OK

DALI instructions

dali debug off

This instruction will disable the debug function for Dali message sent and received on the Dali bus.
Returns
OK

Example: Deactivate Dali debug mode

Instruction
dali debug off
Returns
OK

dali debug on

This instruction will enable the debug function for Dali message sent and received on the Dali bus.
Returns
OK

Example: Activate Dali debug mode

Instruction
dali debug on
Returns
OK

Example of received info:

16:43:48 CAN RX(100) SID=6 L=7 -> 1 96 151 12 143 1 148 2

Some info of the above example:

  • RX -> Received CAN information, TX -> Transmit CAN information
  • (100) -> Bus: 100 -> internal can bus, 0 -> first Can Control, 1 -> second Can Control, ...
  • L -> length of the CAN message

dali input link write [input_nr] [bus_nr] [dali_id]

This instruction will link a virtual input (input_nr) to a Dali_id on a Dali Bus_nr.
[bus_nr]
bus_nr=0
  • Lunatone SCI directly connected to the Brain(+)
bus_nr=1
  • Lunatone SCI is connected to the first CAN Control
bus_nr=2
  • Lunatone SCI is connected to the second CAN Control
...
[input_nr]
This is the input nr (of a virtual module created by using instruction "add virtual input module") that will be linked to the Dali_id.
[dali_id]
dali_id is the address found of the "to be linked" device in the Lunatone cockpit software
Returns
OK

Example: Link input 8 with Dali device on Bus 0 (SCI connected with Brain(+)) with Dali ID 1

Instruction
dali input link write 8 0 1
Returns
OK

dali input link read [input_nr]

This instruction will read which bus and Dali ID is linked to virtual input (input_nr).
[input_nr]
This is the input nr (of a virtual module created by using instruction "add virtual input module") that will be linked to the Dali_id.


Returns
bus_nr dali_id

Example: Check which bus and Dali ID is linked to output 8. Returns that output 8 is linked to bus 0 (SCI connected to Brain(+)) Dali ID 1.

Instruction
dali input link read 8
Returns
0 1
OK

dali output link write [output_nr] [bus_nr] [dali_id]

This instruction will link a virtual output (output_nr) to a Dali_id on a Dali Bus_nr.
[bus_nr]
bus_nr=0
  • Lunatone SCI directly connected to the Brain(+)
bus_nr=1
  • Lunatone SCI is connected to the first CAN Control
bus_nr=2
  • Lunatone SCI is connected to the second CAN Control
...
[output_nr]
This is the output nr (of a virtual module created by using instruction "add virtual output module" or "add virtual dimmer module") that will be linked to the Dali_id.
[dali_id]
dali_id is the address found of the "to be linked" device in the Lunatone cockpit software
Returns
OK

Example: Link output 8 with Dali device on Bus 0 (SCI connected with Brain(+)) with Dali ID 1

Instruction
dali output link write 8 0 1
Returns
OK

dali output link read [output_nr]

This instruction will read which bus and Dali ID is linked to virtual output (output_nr).
[output_nr]
This is the output nr (of a virtual module created by using instruction "add virtual output module" or "add virtual dimmer module") that will be linked to the Dali_id.


Returns
bus_nr dali_id

Example: Check which bus and Dali ID is linked to output 8. Returns that output 8 is linked to bus 0 (SCI connected to Brain(+)) Dali ID 1.

Instruction
dali output link read 8
Returns
0 1
OK

dali group discover

This instruction will start of the group discovery for all the individual (non group) dali outputs


Returns
OK

GROUP instructions

A group action is composed of multiple actions that can be executed. Each group action can call other group actions. Group actions can be nested up to 16 levels deep, if you go deeper, those group actions will be ignored. IF THEN ENDIF instructions used inside a group can be nested as well up to 16 levels deep. The most easy way, when nested group actions including IF THEN ENDIF instructions are used is to use the CLI instruction "group simulate" which gives you a CLI representation of the result of a group action with the included nested group actions (if any).

A group action doesn't have a fixed length, the length and thus the number of group action can be defined at creation by defining the start and end BA. In total, 4200 (BA0 to BA4199) actions can be placed in 255 (0-254) different groups. Each group have a start address and end address.

Start address and end addresses can be changed even when a group has been programmed.

How does group actions work: A normal group action with format 19 0 x y will be added to the queue of immediate action. This queue will process this group action immediately. A group action with format 19 1 x y will not be executed but only simulated and the result will be printed in the CLI screen which is easy to troubleshoot complex group actions.

Group actions can also be delayed in time and only be executed when the defined time trigger has expired (expired seconds or day/hour/minute reached). For example, delayed group action BA 18 0 15 240 will execute BA19 0 15 0 after 240 seconds.

It’s important to note that delayed group actions will be put in the delay queue until the time trigger expires, then this delayed group action will be deleted from the delayed group queue (after executing the related group action). When for example a group action must be executed every 120 seconds, the group delay BA instruction (BA18) that adds the group action to be executed after 120 seconds must be added in the original group action.

When a time trigger occurred and the group action has been executed, the delayed group action is removed from the queue so if you want an action to be executed on a certain hour every day of the week, the delayed group action must be added on the delayed queue after every execution in the group action. The easiest way to do this is to create a group action with a list of instructions including the instruction to put this group on the delayed group. To get the delayed action in the queue for the first time, you can use the startup group action which executes at each processor start or reset.


group list

This instruction will display the list of all programmed group actions (group actions with a valid begin and end address and the first BA programmed) with their name.
Returns
List of programmed group actions
OK

Example:

Instruction
group list
Returns
-Group---------Name---------
000 -> test
001 ->
002 ->
003 ->
004 ->
139 ->
167 ->
170 ->
173 ->
176 ->
179 ->
182 ->
185 ->
188 ->
OK

group name read [group nr]

This instruction will read the name of a group action (0-254).
Returns
name of group action
OK

Example:

Instruction
group name read 0
Returns
test
OK

group name write [group nr] [group name]

This instruction will program the name of group action (0-254).
Returns
OK

Example:

Instruction
group name write 0 test
Returns
OK

group search [Type] [opt: Action] [opt: Device Nr] [opt: Extra]

This instruction will do a search in all active group actions to see if a certain group action or group family has been used. You can do a search with only 1 parameter (BA Type) or you can add additional optional parameters (Action, Device Nr, Extra) to narrow down the search
Returns
List of all groups and the search result for each group
OK

Example:

Instruction
(Example: Search in all groups for outputs that are toggled)
group search 0 16
Returns
Group 000 : test
-> BA0001 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0010 - 000 016 00015 00000 Toggle output 15 with std timer/dimmer
Group 001 :
Group 002 :
Group 003 :
Group 004 :
Group 005 : Output Follow
Group 006 :
Group 007 : Temp follow test
-> BA0075 - 000 016 00002 00000 Toggle output 2 with std timer/dimmer
-> BA0076 - 000 016 00003 00000 Toggle output 3 with std timer/dimmer
-> BA0077 - 000 016 00004 00000 Toggle output 4 with std timer/dimmer
-> BA0078 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0079 - 000 016 00006 00000 Toggle output 6 with std timer/dimmer
Group 139 :
Group 167 :
-> BA0001 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0010 - 000 016 00015 00000 Toggle output 15 with std timer/dimmer
Group 170 :
-> BA0001 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0010 - 000 016 00015 00000 Toggle output 15 with std timer/dimmer
Group 173 :
-> BA0001 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0010 - 000 016 00015 00000 Toggle output 15 with std timer/dimmer
Group 176 :
-> BA0001 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0010 - 000 016 00015 00000 Toggle output 15 with std timer/dimmer
Group 179 :
-> BA0001 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0010 - 000 016 00015 00000 Toggle output 15 with std timer/dimmer
Group 188 :
-> BA0001 - 000 016 00005 00000 Toggle output 5 with std timer/dimmer
-> BA0010 - 000 016 00015 00000 Toggle output 15 with std timer/dimmer
OK

group start list

This instruction will list all the start addresses of each group action.
Returns
List of all start addresses of each group action
OK

Example:

Instruction
group start list
Returns

-Group nr---BA Start--BA Stop-----Name---------

000 0000 0022 -> test
001 0023 0029 ->
002 0030 0034 ->
003 0035 0041 ->
004 0042 0061 ->
005 0062 ---- ->
006 ---- ---- ->
007 ---- ---- ->
008 ---- ---- ->
009 ---- ---- ->
010 ---- ---- ->
011 ---- ---- ->
012 ---- ---- ->
013 ---- ---- ->
014 ---- ---- ->
015 ---- ---- ->
016 ---- ---- ->
017 ---- ---- ->
018 ---- ---- ->
019 ---- ---- ->
020 ---- ---- ->
...
OK

group start end write [group nr] [start ba nr] [end ba nr]

This instruction will write the start address (0-4199) and end address of group nr x (0-254).
Returns
OK

Example: write start address BA35 and end address BA46 of group nr 5

Instruction
group start write 5 35 46
Returns
OK

group read [group nr]

This instruction will read a group action (0-254) and display all BA's that this group action contains.
Returns
OK

Example:

Instruction
group read 0
Returns
-Grp--BA Nr---Typ-Act--x--(MSB.LSB)--y--(MSB.LSB)-------BA Description----
000 0000(00) 000 007 00013(000.013) 00000(000.000) -> Output 13 ON and only overrule timer with value 0 (0x1s) when output is not yet on
000 0001(01) 000 016 00005(000.005) 00000(000.000) -> Toggle output 5 with std timer/dimmer
000 0002(02) 000 004 00011(000.011) 00020(000.020) -> Output 11 ON and overrule timer with value 20 (20x1s)
000 0003(03) 100 000 00000(000.000) 00000(000.000) -> IF
000 0004(04) 100 010 00012(000.012) 00000(000.000) -> Output 12 is ON
000 0005(05) 100 150 00000(000.000) 00000(000.000) -> THEN
000 0006(06) 000 001 00005(000.005) 00000(000.000) -> Output 5 ON with std timer/dimmer
000 0007(07) 100 200 00000(000.000) 00000(000.000) -> ELSE
000 0008(08) 019 000 00001(000.001) 00000(000.000) -> Execute Group Action 1
000 0009(09) 100 255 00000(000.000) 00000(000.000) -> ENDIF
000 0010(10) 000 016 00015(000.015) 00000(000.000) -> Toggle output 15 with std timer/dimmer
000 0011(11) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0012(12) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0013(13) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0014(14) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0015(15) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0016(16) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0017(17) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0018(18) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0019(19) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0020(20) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0021(21) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
000 0022(22) 255 255 65535(255.255) 65535(255.255) -> Instruction not in use
OK

group ba write [ba nr] [Type] [Action] [Device Nr] [Extra parameter]

This instruction will write the Basic Action (Type, Action, Device Nr & Extra Parameter) of BA nr (0-4199) for a list of the different BA types that can be used, see Action Types AIO.
Returns
OK

Example: write BA 35 with instruction output 17 off

Instruction
group ba write 35 0 0 17 0
Returns
OK

Remark:

  • This instruction exist in a 5 and 7 parameter version
  • The 5 parameter version has following format: "group ba write [ba nr] [Type] [Action] [Device Nr] [Extra parameter]"
  • The 7 parameter version has following format: "group ba write [ba nr] [Type] [Action] [Device Nr.MSB] [Device Nr.LSB] [Extra parameter.MSB] [Extra parameter.LSB]"
  • In the 7 parameter version, you split Device Nr and Extra parameter is his Most significant Byte (MSB) and his Least Significant Byte.

group ba read [ba nr]

This instruction will read the Basic Action (Type, Action, Device Nr & Extra Parameter) of BA nr (0-4199). For a list of the different BA types that can be used, see Action Types AIO.
Returns
BA details

Example: read BA 100

Instruction
group ba read 100
Returns
OK
-BA Nr----Typ-Act---x--(MSB.LSB)---y--(MSB.LSB)-------BA Description----
0100 000 016 00026(000.026) 00000(000.000) -> Toggle output 26 with std timer/dimmer
OK

group simulate [group nr]

This instruction will simulate the result of a group action (0-254) including nested group actions. Below is an example of 4 nested group actions. As you can see in the below example, abstraction is made of the different group action and everything is represented in one consolidated view.
Returns
Consolidated view of the group action
OK

Example:

Instruction
group simulate 0
Returns
15:15:23 BA 000 007 00013(000.013) 00000(000.000) EXEC SIM -> Output 13 ON and only overrule timer with value 0 (0x1s) when output is not yet on
15:15:23 BA 000 016 00005(000.005) 00000(000.000) EXEC SIM -> Toggle output 5 with std timer/dimmer
15:15:23 BA 000 004 00011(000.011) 00020(000.020) EXEC SIM -> Output 11 ON and overrule timer with value 20 (20x1s)
15:15:23 BA 100 000 00000(000.000) 00000(000.000) IF
15:15:23 BA 100 010 00012(000.012) 00000(000.000) Output 12 is ON
15:15:24 BA 100 150 00000(000.000) 00000(000.000) THEN
15:15:24 BA 000 001 00005(000.005) 00000(000.000) SKIP INSTR Output 5 ON with std timer/dimmer
15:15:24 BA 100 200 00000(000.000) 00000(000.000) ELSE
15:15:24 BA 000 001 00004(000.004) 00000(000.000) EXEC SIM -> Output 4 ON with std timer/dimmer
15:15:24 BA 100 000 00000(000.000) 00000(000.000) IF
15:15:24 BA 100 011 00013(000.013) 00000(000.000) Output 13 is OFF
15:15:24 BA 100 150 00000(000.000) 00000(000.000) THEN
15:15:24 BA 100 000 00000(000.000) 00000(000.000) IF
15:15:24 BA 100 010 00014(000.014) 00000(000.000) Output 14 is ON
15:15:24 BA 100 150 00000(000.000) 00000(000.000) THEN
15:15:24 BA 100 000 00000(000.000) 00000(000.000) IF
15:15:24 BA 100 010 00007(000.007) 00000(000.000) Output 7 is ON
15:15:24 BA 100 090 00000(000.000) 00000(000.000) AND
15:15:24 BA 100 011 00008(000.008) 00000(000.000) Output 8 is OFF
15:15:24 BA 100 150 00000(000.000) 00000(000.000) THEN
15:15:24 BA 000 255 00255(000.255) 00000(000.000) SKIP INSTR Switch OFF all Outputs(x=0), Lights(x=1) or Lights&Outputs(x>1)
15:15:24 BA 100 200 00000(000.000) 00000(000.000) ELSE
15:15:24 BA 000 001 00010(000.010) 00000(000.000) EXEC SIM -> Output 10 ON with std timer/dimmer
15:15:24 BA 000 001 00009(000.009) 00000(000.000) EXEC SIM -> Output 9 ON with std timer/dimmer
15:15:24 BA 100 255 00000(000.000) 00000(000.000) ENDIF
15:15:24 BA 100 200 00000(000.000) 00000(000.000) ELSE
15:15:24 BA 000 001 00003(000.003) 00000(000.000) SKIP INSTR Output 3 ON with std timer/dimmer
15:15:24 BA 100 255 00000(000.000) 00000(000.000) ENDIF
15:15:24 BA 100 255 00000(000.000) 00000(000.000) ENDIF
15:15:24 BA 000 000 00020(000.020) 00000(000.000) EXEC SIM -> Output 20 OFF
15:15:24 BA 100 255 00000(000.000) 00000(000.000) ENDIF
15:15:25 BA 000 016 00015(000.015) 00000(000.000) EXEC SIM -> Toggle output 15 with std timer/dimmer
Some remarks:
- SKIP INSTR: This instruction in the consolidated group view will not be executed when running in execution mode ("group activate") due to the conditions being set (IF THEN ENDIF)
- EXEC SIM: This instruction will be executed when the group will be running in execution mode

group activate [group nr]

This instruction will execute a group action (0-254). If you want to see what's happening during execution, you can activate verbose mode by using instruction "basic action debug on". Please note that the instruction "basic action debug on" can slow down the processor due to more console printing that needs to be done.
Returns
OK

Example:

Instruction
group activate 5
Returns
OK

group delay queue list

With BA17 and BA18, Group Actions can be executed at a later stage. This instruction give you an overview which group actions are planned to be executed in the future.
Returns
List
OK 
Instruction
group delay queue list
Returns
list 
OK

VALIDATION Bit instructions

validation bit group follow read [Bit Nr]

A validation bit (0-255) can trigger a group action when the validation bit value changes. With this instruction, you can read, for validation bit Nr, when a value change occurs, which Group Action will be executed.
Returns
Group Nr
OK 

Example: Read the group linked to validation bit 210

Instruction
validation bit group follow read 210
Returns 
63
OK

validation bit group follow write [Bit Nr] [Group Nr]

A validation bit (0-255) can trigger a group action when the validation bit value changes. With this instruction, you can write, for validation bit Nr, when a value change occurs, which Group Action will be executed.
Returns
OK 

Example: Write group nr 63 must be linked to validation bit 210

Instruction
validation bit group follow write 210 63
Returns 
OK

validation bit group follow list

A validation bit (0-255) can trigger a group action when the validation bit value changes. With this instruction, you can list, for all validation bits, which Group Actions are linked.
Returns
List
OK
Instruction
validation bit group follow list
Returns
list 
OK

validation bit list

This instruction will display the list of all Validation Bits, the associated value and name.
Returns
List of Validation Bits
OK

Example:

Instruction
Validation bit list
Returns
Validation Bit List
OK

validation bit name read [Bit Nr]

With this instruction, you can read, for validation bit nr (0-255), the name of this validation bit
Returns
Validation Bit Name
OK 

Example: validation bit name read

Instruction
validation bit name read 10
Returns 
test bit name1
OK

validation bit name write [Bit Nr] [Bit Name]

With this instruction, you can write the name of a validation bit (0-255)
Returns
OK 

Example: Write the name "test123" for validation bit nr 10

Instruction
validation bit name write 10 test123
Returns 
OK

validation bit read [Bit Nr]

This instruction will read the value (0 or 1) of a validation bit. Validation bits can be freely used and are often applied to remember certain events.
Returns
Validation bit value
OK 

Example: Read bit 230

Instruction
validation bit read 230
Returns 
1
OK

validation bit write [Bit Nr] [Bit Value]

This instruction will write Bit Value (0 or 1) in validation bit nr. Validation bits can be freely used and are often applied to remember certain events.
Returns
OK 

Example: Write value 0 in validation bit 230

Instruction
validation bit write 230 0
Returns 
OK

SHUTTER instructions

shutter group link list

This instruction will display a list of all shutters. For every shutter, a Y (YES) or N (NO) indicates if this shutter is linked to each of the 16 shutter groups
Returns
shutter group link list
OK 

shutter list

This instruction will display a list of all shutters with their lock status, output up & down linked, if the shutter is moving as well as the programmed timer setting for up and down
Returns
shutter list
OK 

shutter name read [shutter nr]

Read the name of ashutter
[input nr]
Indicates which shutter (0-31) the name has to be displayed.
Returns
Shutter Name
OK

Example:

Instruction
shutter name read 15
Returns
Bedroom Parents
OK

shutter name write [shutter nr][shutter name]

Write the name of a shutter, max 16 characters.
[shutter nr]
Indicates which shutter (0-31) the name has to be written.
[shutter name]
the ascii name of the shutter (maximum 16 characters).
Returns
OK

Example:

Instruction
shutter name write 15 Bedroom parents
Returns
OK