This page documents the Common Andino Protocol that is used by most Andino software, including the Andinopy Library, most Andino Node-Red Nodes and more.


Command Arguments Action Example
RESET none Reset the software RESET
INFO none Prints the current settings INFO

Command Arguments Action Example
POLL Cycle in ms Sets the sampling cycle of the digital inputs [in ms] POLL 1000
SKIP Number of polls Skip n Scans after pulse recognized 0
EDGE HL(0) LH(1) Count on edge HL or LH EDGE
SEND Cycle in ms (0 for off) The counter will send all nnn milliseconds SEND 5000
CHNG Send on Change Send if any Pin changes. Careful if many changes CHNG 1
CNTR Send Counter Send counter+states(1) or only states(0) (default 1) CNTR 0
DEBO Number of polls Sets the debounce count. The signal has to be stable for nn polls DEBO 100

Command Arguments Action Example
POWR state (0 or 1) Power-Out Relay is switched on or off REL1 1
REL? on-off (0 or 1) Append current state of relays to status messages REL? 1
REL1 state (0 or 1) Relay 1 is switched on or off REL1 1
REL2 state (0 or 1) Relay 2 is switched on or off REL2 1
REL3 state (0 or 1) Relay 3 is switched on or off REL3 1
REL4 state (0 or 1) Relay 4 is switched on or off REL4 1
RPU1 pulse in sec Pulse the Relay 1 for nns seconds RPU1 2
RPU2 pulse in sec Pulse the Relay 2 for nns seconds RPU2 2
RPU3 pulse in sec Pulse the Relay 3 for nns seconds RPU3 2
RPU4 pulse in sec Pulse the Relay 4 for nns seconds RPU4 2

Command Arguments Action Example
SENDT Cycle in ms (0 for off) The counter will poll and send the busses every nnnn milliseconds SENDT 8000
TBUS 1=one bus, 2=two busses Sets the number of temperature sensor busses to 1 or 2 TBUS 2
ADDRT 1=bus1, 2=bus2 displays the addresses of all sensors connected to the specified bus ADDRT 1
POLLT none Polls temperatures once POLLT

Command Arguments Action Example
OLED MODE XX [YY] Sets the mode(s) of the OLED display (see description below) OLED MODE 21 30
OLED <{line1}{line2}...}><{line1}{line2}...> Prints text on the OLED display OLED <{dual}{mode}{test}><{a lot}{of text}{can be}{shown}>

When entering two arguments for the modes, the display will be devided into two columns, with each using the designated mode. Changing the first digit of the mode modifies the number of lines. Changing the second digit modifies the text size. The following modes are available:

"10":  1 line, 3 chars 
"11":  1 line, 4 chars 
"20":  2 lines, 6 chars
"21":  2 lines, 9 chars
"30":  3 lines, 9 chars
"31":  3 lines, 12 chars
"40":  4 lines
"60":  6 lines

Note that, when using two columns, only half the amount of characters will be available within each column.

The text can be printed with the OLED command. Here, every column needs to be contained in angle brackets, every individual line in curly braces. To avoid compatibility issues, it is recommended to always add enough braces for both colomns with six lines each, even if not all colomns/lines are in use (see examples below).

Examples:

OLED MODE 21 / OLED <{1 column}{mode test}{}{}{}{}><{}{}{}{}{}{}>

1 column OLED python test

OLED MODE 30 40 / OLED <{dual}{mode}{test}{}{}{}><{a lot}{of text}{can be}{shown}{}{}>

2 column OLED python test

OLED MODE 60 / OLED <{Napoleon Bonaparte}{was a French military}{leader who led many}{successful campains}{during the French}{Revolution(Wikipedia)}><{}{}{}{}{}{}>

6 row OLED python test

Command Arguments Action Example
BUZZ Duration in ms Beeps the beeper for a specified amount of time BUZZ 1000

Command Arguments Action Example
DISP PAGE page number Switches the display to the specified page DISP PAGE 3
DISP TXT object Sets the text for an object
DISP ATTR object attribute value Sets an attribute value for an object on the display DISP ATTR
DISP RAW bytes in hex Sends raw bytes to the display DISP RAW

All messages from the controller are structured in the following way:

:counter[type_identifier]message

Every message from the controller can be identified by the colon (:) at the beginning. The counter is a four digit HEX counter that iterates with every message sent from the controller (modulo HEX counter from 0000 to FFFF).

After this, the type of the message is specified. Every section of commands (see above) has its own identifier. If no identifier is present, this indicates a digital input/relay status message.

The Messages end with a CR / LF [0x0d + 0x0a]

After the : and the counter the current states are displayed inside '{' and '}' (0=off, 1=on). If the setting REL? 1 has been activated, a third set of curly braces follows, containing the current state of the relays. The number of available inputs and relays depends on the hardware configuration.

Messages are either sent periodically following the send cycle specified using the command SEND or only if a change is detected when CHNG is active. (see the command section above)

Example:

:0040{0002,0000,000B}{0,0,0}  
:0041{0002,0000,000B}{0,0,0}  

or if REL? 1:

:004A{0008,0000,000F}{0,0,1}{0,1} 
:004B{000A,0000,0000}{0,0,1}{0,1}  

Temperature sensor messages are always specified with the type @T following the colon and the counter. This is then followed by the bus number in {}. After that, the temperatures are displayed in the next section. They are always specified in °C, with two decimal places and delimited by a comma.

Example:

:008D@T{1}{22.00,21.25}
:008E@T{2}{35.31,31.56}
:008F@T{1}{22.03,21.28}

The messages for key presses are split into two sections: numerical keys and function keys.

Numerical keys essentially comprise the numerical keypad of the Terminal. Here, the value of the entered key is sent immediately after the colon, counter and type identifier. Function keys have the idetifier @F, number keys have the identifier @N.

Example:

:00E9@F{}
:00F0@N{4}