HACS logo Welcome to Home Automation Control Systems's Home Page



AB8SS
Serial communication:
9600 baud
1 start bit
8 data bits
2 stop bits
no parity

AB8SS uses a bit banger Serial communication.
IE: it has no serial buffer
Assumption: computer talking to AB8SS HAS a serial buffer
To talk to AB8SS we need to get it's attention
Send out ASCII "!" until it echoes back same.
Retry every 100ms for 5 times. if no echo then problem in link
Once "!" is echoed back send next ascii character.
same for the next until you sent a total of 10 ascii characters.
(waiting for echo before you send next)
The last ascii character "*" actually tells AB8SS to execute command.
If any echo does not match what you sent then send ascii character "-"
to terminate string.
You will then need to start all over again sending and waiting
of ascii character "!"

Sending string "!8400007C*" asks for relay status
AB8SS will stream back 84HHhhXX with no wait
XX again is twos complement of sum of 84HHhh for 00 total

HHhh will be same meaning as AA=04 command

!AAHHhhXX*
! = talk to AB8SS
AA = Command
01=enable IR or X10
02=disable IR or X10
05=individual relay on
06=individual relay off
04=all relays on or off
84=get status of all relays
HHhh= Data (hex code)
0008 = IR (if AA=01 or 02)
0002 = X10 (if AA=01 or 02)
HHhh hex code = BBBB BBBB BBBB BBBB binary code
"0"-------------|||| |||| |||| ||||
"0"--------------||| |||| |||| ||||
"0"---------------|| |||| |||| ||||
"0"----------------| |||| |||| ||||
"0"------------------|||| |||| ||||
"0"-------------------||| |||| ||||
"0"--------------------|| |||| ||||
"B" relay---------------| |||| ||||
"8" relay-----------------|||| ||||
"7" relay------------------||| ||||
"6" relay-------------------|| ||||
"5" relay--------------------| ||||
"4" relay----------------------||||
"3" relay-----------------------|||
"2" relay------------------------||
"1" relay-------------------------|

if B = 1 in individual then that relay is set if AA=05 or reset if AA=06
if AA=04 then 1= on and 0 = off

XX is hex checksum 2's complement
IE: AA+HH+hh+XX = 100 but we only check last two ascii characters

every 4 bits of binary = 1 hex byte
BBBB Dec Hex Ascii
0000 48 30 0
0001 49 31 1
0010 50 32 2
0011 51 33 3
0100 52 34 4
0101 53 35 5
0110 54 36 6
0111 55 37 7
1000 56 38 8
1001 57 39 9
1010 65 41 A
1011 66 42 B
1100 67 43 C
1101 68 44 D
1110 69 45 E
1111 70 46 F

Example of setting all relays at one time:
B= on
8=off
7=on
6=off
5=on
4=off
3=on
2=off
1=on

Below top to bottom is increment in time passed (no exact interval)
1st column without () is what computer sent
2nd column enclosed in () is what AB8SS echoed back

!
(!)
0
(0)
4
(4)
0
(0)
1
(1)
5
(5)
5
(5)
A
(A)
6
(6)
*
(*)

Also remember that once " * " is received AB8SS executes command
and is off line while writing to EEprom to save last state.

So wait for " * " then you may need to wait some additional time
before you send your next string.

But sending "!" waiting then sending "!" routine should compensate
for this time delay (100-300ms)