INSTEON Thermostat

INSTEON Thermostat
Developer Notes –INSTEON Thermostat v012
Developer Notes
INSTEON Thermostat
Version 012
June 19, 2012
Revision History
Rev
001
002
003
004
005
006
007
008
009
010
011
012
Date
10/28/11
11/4/11
11/4/11
12/13/11
1/24/12
2/1/12
2/2/12
4/19/12
4/20/12
5/8/12
5/8/12
6/19/12
Comments
Initial Release
Updated formatting in some sections for easier reading
Fixed examples and editing
Added commands
Added commands
Added yellow filter updates
Updated command list.
Changed status report group flag to check EF group
Added example for adding a device to the status reporting group
…
Added 2 byte CRC calculations
Updated product name
Page 1 of 17
Table of Contents
1
FIRMWARE DESCRIPTION ......................................................................................................................3
1.1
INSTEON Commands Supported....................................................................................................................3
1.1.1
1.1.2
1.1.3
Standard length common INSTEON commands:..................................................................................................... 3
Standard length Thermostat INSTEON commands:................................................................................................. 4
Extended length Thermostat INSTEON commands:................................................................................................ 7
Read and Set Data 2 CRC Calculation.....................................................................................................................11
Calculation ............................................................................................................................................................................. 11
1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
Memory Map .................................................................................................................................................16
All-Link Database (AL /L) Overview .................................................................................................................... 16
Thermostat External EEPROM Structure Overview .............................................................................................. 16
AL /L Record Format ............................................................................................................................................. 16
Overwriting an Empty AL /L Record ..................................................................................................................... 17
Creating a New AL /L Record................................................................................................................................ 17
Page 2 of 17
1
Firmware Description
1.1
INSTEON Commands Supported
1.1.1
Standard length common INSTEON commands:
All direct commands will be ignored if the sender’s ID is not in the I2CS device’s database with the exceptions below. The
Thermostat will reply with a NAK and 0xFF in cmd2 to indicate that the ID is not in the database.
Assign to ALL-Link Group Command
Description: Sent when holding down the SET Button for 3 seconds on the device. Blinks the LED green for 4 minutes or until
linked to another device.
Example (Hex): AA BB CC 05 0B 99 CF 01 01 (where AA.BB.CC is the Thermostat’s ID)
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Notes
Assign to
ALL-Link
Group
From Device
Device’s ID
0x05, 0x0B,
0xXX
(firmware
revision)
Broadcast
0x01
0x00
Sent when
holding down
SET Button for
3 seconds.
Group number
for Thermostat
is 0x01
Delete from ALL-Link Group Command
Description: Blinks the LED red for 4 minutes or until unlinked from another device.
Example (Hex): AA BB CC 05 0B 99 CF 02 01 (where AA.BB.CC is the Thermostat’s ID)
Delete from
ALL-Link
Group
From Device
Device’s ID
0x05, 0x0B,
0xXX
(firmware
revision)
Broadcast
0x02
0x00
Group number
for Thermostat
is 0x01
INSTEON Engine Version Command
Description: Returns the INSTEON Engine version in the acknowledgement.
INSTEON
Engine
Version
To device
Sender’s ID
Device’s ID
Direct
0x0D
0x00
Response
Device’s ID
Sender’s ID
Ack
0x0D
0x02
Indicate i2CS
engine version
Ping Command
Description: Returns the exact same message with an acknowledgement.
Ping
To device
Sender’s ID
Device’s ID
Direct
0x0F
0x00 -> 0xFF
(Don’t Care Value)
Response
Device’s ID
Sender’s ID
Ack
0x0F
Same as sent
ID Request Command
Description: Same as holding down the SET Button for 3 seconds on the device, but without going into linking mode
Example (Hex): AA BB CC DD EE FF 0F 0A 01 (where DD.EE.FF is the Sender’s ID, AA.BB.CC is the
Devices’s Id)
ID Request
To device
Sender’s ID
Device’s ID
Direct
0x10
0x00 -> 0xFF
(Don’t Care Value)
Response
Device’s ID
Sender’s ID
Ack
0x10
Same as sent
Sent from
Device
Device’s ID
0x05 0x0B
0xZZ
(firmware
revision)
Broadcast
0x01
0x00
Same as
holding down
SET Button for
3 seconds, but
device not in
linking mode
Page 3 of 17
Success Report Broadcast
Description: Sent at the end of a group broadcast
Example (Hex): AA BB CC 11 03 01 CF 06 01 (where AA.BB.CC is the Device’s ID, cleanup of cmd1 =
0x11, group = 0x01, 1 out of 3 devices failed to cleanup correctly)
SD
Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Broadcast
cleanup
To device
Sender’s
ID
Hi byte = cmd1
being Cleaned up
Group
Broadcast
0x06
0x00 -> 0xFF
Notes
(Number of Failed
Cleanups)
Med byte =
Number of
devices to be
cleaned up
Lo byte = Group
Number
1.1.2
Standard length Thermostat INSTEON commands:
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Notes
Thermostat
Temperature
Up
To device
Sender’s ID
Device’s ID
Direct
0x68
0x00 -> 0xFF
(Temperature
Change x 2)
Increase
current
temperature
setting by
Temperature
Change x 0.5
Response
Device’s ID
Sender’s ID
Ack
0x68
Same as sent
To device
Sender’s ID
Device’s ID
Direct
0x69
0x00 -> 0xFF
(Temperature
Change x 2)
Response
Device’s ID
Sender’s ID
Ack
0x69
Same as sent
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Notes
Thermostat
Set Cool set
point
To device
Sender’s ID
Device’s ID
Direct
0x6C
0x00 -> 0xFF
(Temperature x 2)
change current
temperature
cool set point to
Temperature x
0.5
Response
Device’s ID
Sender’s ID
Ack
0x6C
Same as sent
To device
Sender’s ID
Device’s ID
Direct
0x6D
0x00 -> 0xFF
(Temperature x 2)
Response
Device’s ID
Sender’s ID
Ack
0x6D
Same as sent
Thermostat
Temperature
Down
Thermostat
set heat set
point
Decrease
current
temperature
setting by
Temperature
Change x 0.5
change current
temperature
heat set point
to Temperature
x 0.5
Page 4 of 17
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Thermostat
Status
To device
Sender’s ID
Device’s ID
Direct
0x6A
See Thermostat
Status Info
Response
Device’s ID
Sender’s ID
Ack
0x6B
Same as sent
Thermostat Status Info
Cmd2
Description
0x00
0x20
0x60
Thermostat
Support
yes
yes
yes
Temperature returned in ACK
Setpoint returned in ACK
Humidity returned in ACK
Comments
In 1 degree units
In 1 degree units
In 1 percent units
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Thermostat
Control
To device
Sender’s ID
Device’s ID
Direct
0x6B
See Thermostat
Control Info
Response
Device’s ID
Sender’s ID
Ack
0x6B
Same as sent
Thermostat Control Info
Cmd2
Description
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
set mode to heat and returns 04 in ACK
set mode to cool and returns 05 in ACK
set mode to manual auto and returns 06 in ACK
Turn fan on and returns 07 in ACK
Turn fan auto mode and returns 08 in ACK
Turn all off and returns 09 in ACK
set mode to auto and returns 0A in ACK
Thermostat
Support
yes
yes
yes
yes
yes
yes
yes
Notes
Notes
Comments
On Heat
On Cool
Manual Auto
On Fan
Off Fan
Off All
Auto
Page 5 of 17
To set a device to get status reporting add a controller of device link with group 0xEF and set 0x2E to 0x08.
Example: (Thermostat INSTEON ID: 0x01 78 5A; PLM INSTEON ID: 0x14 82 86
02 62 01 78 5A 1F 2F 00
02 62 01 78 5A 1F 2F 00
Set Database
02 50 01 78 5A 14 82 86
02 62 01 78 5A 1F 2E 00
02 62 01 78 5A 1F 2E 00
and Set FE Group Flag
02 50 01 78 5A 14 82 86
00 02 1F FF 08 E2 EF 14 82 86 00 00 EF CD
00 02 1F FF 08 E2 EF 14 82 86 00 00 EF CD 06
INSTEON EXT TX
2B 2F 00 INSTEON STD RX
00 08 00 00 00 00 00 00 00 00 00 00 00 CA
00 08 00 00 00 00 00 00 00 00 00 00 00 CA 06 Check FE Group
2B 2E 00
02 50 01 78 5A 14 82 86 01 70 03
SD Command
Message
Direction
From
Address
(3 bytes)
Status
Reporting
Temperature
From device
Status
Reporting
Humidity
INSTEON STD RX
Status Reporting Mode Status
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Device’s ID
Direct
0x6E
0x00 -> 0xFF
(Temperature
Change x 0.5)
From device
Device’s ID
Direct
0x6F
0x00 -> 0xFF
(Humidity)
Status
Reporting
Mode/Fan
Status
From device
Device’s ID
Direct
0x70
0x00 = Off
0x01 = Heat
0x02 = Cool
0x03 = Auto
0x04 = Fan
0x05 = N/A
0x06 = N/A
0x07 = N/A
0x08 = Fan Always
On
0x09=> 0xFF
Unused (Mode
Status)
Status
Reporting
Cool set
point
From device
Device’s ID
Direct
0x71
0x00 -> 0xFF (Cool
set point)
Status
Reporting
Heat set
point
From device
Device’s ID
Direct
0x72
0x00 -> 0xFF
(Heat set)
Notes
Page 6 of 17
1.1.3
Extended length Thermostat INSTEON commands:
Extended
Command
Message
Direction
From
Address
(3
bytes)
To
Address
(3 bytes)
Message
type
Cmd1
(1
byte)
Cmd2
(1 byte)
Data 1
(1 byte)
Data 2
(1 byte)
Get Database
To device
Sender’s
ID
Device’s
ID
Extended
Direct
0x2F
0x00
0x00 -> 0xFF
(Don’t Care
Value)
See Get
Database
Info
Response
Device’s
ID
Sender’s
ID
Standard
Ack
0x2F
0x00
N/A
N/A
From
device
Device’s
ID
Sender’s
ID
Extended
Direct
0x2F
0x00
Same as sent
See
Returned
Extended
Get
Database
Info
Get Database Info
Data 2
(1 byte)
0x00
Data 3
Data 4
Data 5
Data 6
Data 7
Data 8
Data 9
Data 10
Data 11
0x00 ->
0xFF (Hi
Byte
Address)
0x00 ->
0xFF (Lo
Byte
Address)
0x00 ->
0xFF (#
of
Records,
0x00
dumps all
records
N/A
N/A
N/A
N/A
N/A
N/a
Returned Extended Get Database Info (will continue to be sent until # of records is sent or until the first never
been used record is sent)
Data 2
(1 byte)
0x01
Data 3
0x00 ->
0xFF (Hi
Byte
Address)
Data 4
(1 byte)
0x00 ->
0xFF (Lo
Byte
Address)
Data 5
Data 6
Data 7
Data 8
Data 9
0x00
Byte 1 of
record
Byte 2 of
record
Byte 3 of
record
Byte 4
of
record
…
Data 13
Byte 8 of
record
Extended
Command
Message
Direction
From
Address
(3
bytes)
To
Address
(3 bytes)
Message
type
Cmd1
(1
byte)
Cmd2
(1 byte)
Data 1
(1 byte)
Data 2
(1 byte)
Set Database
To device
Sender’s
ID
Device’s
ID
Extended
Direct
0x2F
0x00
0x00 -> 0xFF
(Don’t Care
Value)
See Set
Database
Info
Response
Device’s
ID
Sender’s
ID
Standard
Ack
0x2F
0x00
N/A
N/A
Set Database Info
Data 2
(1 byte)
0x02
Data 3
0x00 ->
0xFF (Hi
Byte
Address)
Data 4
(1 byte)
0x00 ->
0xFF (Lo
Byte
Address)
Data 5
Data 6
Data 7
Data 8
Data 9
Data 13
Data 14
0x01 ->
0x08 (#
of bytes
to write,
over 0x08
is an
error and
ignored)
Byte 1 of
data
Byte 2 of
data
Byte 3 of
data
Byte 4
of data
Byte 8 of
data
Checksum
Page 7 of 17
SD Command
Message
Direction
From
Address
(3 bytes)
Increase Set
Points by 1
Degree
From device
Decrease Set
Points by 1
Degree
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Notes
Device’s ID
Direct
0x15
0x00 -> 0xFF
(Don’t Care Value)
From device
Device’s ID
Direct
0x16
0x00 -> 0xFF
(Don’t Care Value)
On Status
From device
Device’s ID
Direct
0x11
0x00 -> 0xFF
(Don’t Care Value)
Off Status
From device
Device’s ID
Direct
0x13
0x00 -> 0xFF
(Don’t Care Value)
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Notes
Read
Operating
Flags
To device
Sender’s ID
Device’s ID
Direct
0x1F
Operating Flags
Command
See Read
Operating Flags
Table
Response
Device’s ID
Sender’s ID
Ack
0x1F
Same as sent
Read Operating Flags Table
bit 0 = Plock
bit 1 = LED on TX
bit 2 = Resume Dim
bit 4 = LED OFF
0
bit 5 = LoadSense
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Notes
Set
Operating
Flags
To device
Sender’s ID
Device’s ID
Extended
0x20
Operating Flags
Command
See Set
Operating Flags
Table below
Data 14 to
contain
Checksum
Response
Device’s ID
Sender’s ID
Ack
0x20
Same as sent
Set Operating Flags Table
0
Programming Lock On
1
Programming Lock Off
2
Button Beep On
3
Button Beep Off
4
Button Lock On
5
Button Lock Off
6
Temperature Format in Celsius
7
Temperature Format in Fahrenheit
8
Time Format in 24 Hours
9
Time Format in 12 Hours
0x0A Software Lock Button On
0x0B Software Lock Button Off
Enable LED on/off for heating/cooling
0x0C on/off
0x0D Disable LED on/off for heating cooling
Page 8 of 17
SD Command
Message
Direction
From
Address
(3 bytes)
To Address
(3 bytes)
Beep
From device
Device’s ID
Response
Device’s ID
Sender’s ID
Message
type
Cmd1
(1 byte)
Cmd2
(1 byte)
Notes
Direct
0x30
0x00 -> 0xFF
(Don’t Care Value)
Beep once,
same as the
press button
beep sound
Ack
0x30
Same as sent
Extended
Command
Message
Direction
From
Address
(3
bytes)
To
Address
(3 bytes)
Message
type
Cmd1
(1
byte)
Cmd2
(1 byte)
Data 1
(1 byte)
Data 2
(1 byte)
Read and Set
Data
To device
Sender’s
ID
Device’s
ID
Extended
Direct
0x2E
0x00
0x00 -> 0xFF
(Group/Button)
See Read
and Set
Data Info
and Read
and Set
Data Info
Response
Device’s
ID
Sender’s
ID
Standard
Ack
0x2E
0x00
Same as sent
N/A
Read and Set Data Info
Data 2
Description
Data 2: 0 is for Read Data (Responder unit will send back a Data 2: 1 below)
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
…
Data2: 1 return of data
Data3: LocalTempHighByte
Data4: LocalTempLowByte
Data5:Humidity
Data6: TempOffset
Data7: HumiOffset
Data8 : System Mode
Data9 Fan Mode
Data10: Backlight Seconds
Data11: Hysteresis minutes to turn on AC
Data12: Energy set back point
Data 13: ACKByte
Data 14: FWRev
Data 2: 2 Set Temperature Offset
Data3: Temperature Offset (From -50 to +50 in 0.1C degree unit)
Data 2: 3 Set Humidity Offset
Data3: Humidity Offset (From -100 to +100 in 0.1% unit)
Data 2: 4 Set flags:
Data 4: Flag bytes
- Bit0: linking lock
- Bit1: button beep enable
- Bit2: button lock
- Bit3: temperature format:1=C; 0=F
- Bit4: time format: 1: 24 hour; 0 12 hours
Data 2: 5 set the backlight seconds:
- 0: always off
- 0xff: always on
- Others: in seconds
Data 2: 6 set the on/off min change time in minutes
Data 2: 7 set the energy saving mode set back degree
Data 2: 8 To check EF group and set the EF group flag in firmware
Data 2: 9 To set the master;
Data 3: 0: Set thermostat as master; 1: Thermostat 1 as master; 2 Thermostat 2 as master
Data 2: 0x0A set the stage 1 on minutes before enabling the stage 2 in minutes
- 1 -> 60
- default: 10 minutes
Data 2: B set the humidity high point
Data 2: C set the humidity low point
Page 9 of 17
0x10
0x11
Data 2: 0x10 is for read set 2 data
Data 2: 0x11 is for return of set 2 data
Data3: stage 1 on minutes
Data4: humidity high
Data5: humidity low
Data6: Firmwire version
Data7: Cool set point
Data8: Heat Set point
Data9: RF offset
Read and Set Data Info
Data 3
0x00
Data 4
(1 byte)
0x00
Data 5
Data 6
Data 7
Data 8
Data 9
0x00
0x00
0x00
0x00
0x00
…
Data 14
Checksum
Page 10 of 17
The Read and Set Data 2 command and Set Time and Schedule command both require a two byte CRC which differs from the
one byte CRC in other extended commands. This CRC calculation is the same CRC that the iMeter INSTEON device uses.
Read and Set Data 2 CRC Calculation
16 bit CRC calculation of payload for checking data involves data bytes from command 1 to data 12 byte
Calculation
Sample Source Code:
unsigned int MyFrame::crc16(unsigned char *msgbuf,int count)
{
int loop,bit;
unsigned int fb;
unsigned char byte;
unsigned int crc;
crc = 0;
for(loop = 0;loop < count;loop++)
{
byte = msgbuf[loop];
for(bit = 0;bit < 8;bit++)
{
fb = byte & 1;
fb = (crc & 0x8000) ?
fb = (crc & 0x4000) ?
fb = (crc & 0x1000) ?
fb = (crc & 0x0008) ?
crc = (crc << 1) | fb
byte = byte >> 1;
}
}
return crc;
fb
fb
fb
fb
;
^
^
^
^
1
1
1
1
:
:
:
:
fb;
fb;
fb;
fb;
}
Extended
Command
Message
Direction
From
Address
(3
bytes)
To
Address
(3 bytes)
Message
type
Cmd1
(1
byte)
Cmd2
(1 byte)
Data 1
(1 byte)
Read and Set
Data 2
To device
Sender’s
ID
Device’s
ID
Extended
Direct
0x2E
0x02
See Read and
Set Data 2 Info
Response
Device’s
ID
Sender’s
ID
Standard
Ack
0x2E
0x02
Same as sent
Read and Set Data 2 Info
Data 1
Description
0x00
Data 2: 0 is for Read Data (Responder unit will send back a Data 2: 1 below)
Data 13: CRC high
Data 14: CRC low
0x01
Data1: 1, Return Data
Data2: status flag
Data3: hour
Data4: minute
Data5: second
Data6: SysMode
…
Data13: CRCHigh
Data14: CRCLow
0x02
Data1: 2, SysMode changed
Page 11 of 17
0x03
0x04
0x05
0x06
0x07
Data2: status flag
Data3: hour
Data4: minute
Data5: second
Data6: SysMode
…
Data13: CRCHigh
Data14: CRCLow
Data1: 3, Set point changed
Data2: status flag
Data3: hour
Data4: minute
Data5: second
Data6: SysMode
…
Data13: CRCHigh
Data14: CRCLow Offset
Data1: 4, Energy pressed
Data2: status flag
Data3: hour
Data4: minute
Data5: second
Data6: SysMode
…
Data13: CRCHigh
Data14: CRCLow
Data1: 5, Master hold 3 Seconds
Data2: status flag
Data3: hour
Data4: minute
Data5: second
Data6: SysMode
…
Data13: CRCHigh
Data14: CRCLow
Data1: 6, Temperature changed
Data2: status flag
Data3: hour
Data4: minute
Data5: second
Data6: SysMode
…
Data13: CRCHigh
Data14: CRCLow
Data1: 7, Hold pressed
Data2: status flag
Data3: hour
Data4: minute
Data5: second
Data6: SysMode
…
Data13: CRCHigh
Data14: CRCLow
Page 12 of 17
Extended
Command
Message
Direction
From
Address
(3
bytes)
To
Address
(3 bytes)
Message
type
Cmd1
(1
byte)
Cmd2
(1 byte)
Set Time and
Schedule
To device
Sender’s
ID
Device’s
ID
Extended
Direct
0x2E
See Set Time and Schedule
Info
Response
Device’s
ID
Sender’s
ID
Standard
Ack
0x2E
Same as sent
Set Time and Schedule Info
Cmd 2
Description
0x02
Cmd2: 2
Data 1: 0, Read data (Responder unit will send back a Data 2: 1 below)
…
Data 13: CRC high
Data 14: CRC low
0x02
Cmd2: 2
Data1: 1, Return data
Data2: day
Data3: hour
Data4: minute
Data5: second
Data6: Sys Mode*16 + Fanmode
Data7: current cool set point
Data8: humidity
Data9: temp High byte
Data10: temp low byte
Data11: status flag
Data12: current heat set point
Data 13: CRC high
Data 14: CRC low
0x02
Cmd2: 2
Data1: 2, Set data command
Data2: day
Data3: hour
Data4: minute
Data5: second
Data6: Sys Mode*16 + Fanmode
Data7: current cool set point
Data8: humidity
Data9: temp High byte
Data10: temp low byte
Data11: status flag
Data12: current heat set point
Data 13: CRC high
Data 14: CRC low
0x03
Cmd2: 3, Set Sunday schedule
Data1: wake time
Data2: wake cool
Data3: wake heat
Data4: leave time
Data5: leave cool
Data6: leave heat
…
Data13: CRCHigh
Data14: CRCLow
0x04
Cmd2: 4, Set Monday schedule: Same as Set Sunday schedule
0x05
Cmd2: 5, Set Tuesday schedule: Same as Set Sunday schedule
0x06
Cmd2: 6, Set Wednesday schedule: Same as Set Sunday schedule
0x07
Cmd2: 7, Set Thursday schedule: Same as Set Sunday schedule
0x08
Cmd2: 8, Set Friday schedule: Same as Set Sunday schedule
0x09
Cmd2: 9, Set Saturday schedule: Same as Set Sunday schedule
Page 13 of 17
Cmd 2
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0x1C
0x1D
Description
Cmd2: 10, Read Sunday schedule
…
Data 13: CRC high
Data 14: CRC low
Cmd2: 11, Return Sunday schedule
Data1: wake time
Data2: wake cool
Data3: wake heat
Data4: leave time
Data5: leave cool
Data6: leave heat
…
Data13: CRCHigh
Data14: CRCLow
Cmd2: 10, Read Monday schedule
…
Data 13: CRC high
Data 14: CRC low
Cmd2: 13, Return Monday schedule: Same as Return Sunday schedule
Cmd2: 10, Read Tuesday schedule
…
Data 13: CRC high
Data 14: CRC low
Cmd2: 13, Return Tuesday schedule: Same as Return Sunday schedule
Cmd2: 10, Read Wednesday schedule
…
Data 13: CRC high
Data 14: CRC low
Cmd2: 13, Return Wednesday schedule: Same as Return Sunday schedule
Cmd2: 10, Read Thursday schedule
…
Data 13: CRC high
Data 14: CRC low
Cmd2: 13, Return Thursday schedule: Same as Return Sunday schedule
Cmd2: 10, Read Friday schedule
…
Data 13: CRC high
Data 14: CRC low
Cmd2: 13, Return Friday schedule: Same as Return Sunday schedule
Cmd2: 10, Read Saturday schedule
…
Data 13: CRC high
Data 14: CRC low
Cmd2: 13, Return Saturday schedule: Same as Return Sunday schedule
Page 14 of 17
Checksum Information
Data14 will contain a 2s compliment of cmd1 through 2nd to last data record in the last data record.
Example of Checksum:
01 02 03 04 05 06 1F 2F 00 01 02 0F FF 08 E2 01 08 B6 EA 00 1B 01 11
From 01.02.03 to 04.05.06
a record at 0FFF (A valid boundary)
08 bytes a record that 04.05.06 will control
Group 1 the responder is 08.B6.EA (00 1B 01 DNC)
11 is the check sum
Int
47
0
1
2
15
255
8
226
1
8
182
234
0
27
1
1007
Hex
2F
00
01
02
0F
FF
08
E2
01
08
B6
EA
00
1B
01
3EF
10
11
Sum
Compliment (Last byte)
Add 1
Page 15 of 17
1.2
Memory Map
1.2.1
All-Link Database (AL /L) Overview
The AL /L starts at the top of external (serial) EEPROM and grows downward. In the Thermostat,
top of memory is 0x0FFF. Each AL /L Record is 8 bytes long, so the first record starts at 0x0FF8,
the second record starts at 0x0FF0, and so on down to 0x0300 for a total of 416 links. In what
follows, the 3-byte INSTEON Address contained in a record is called the Device ID or sometimes just
the ID. The high byte (MSB) of the Device ID is ID2, the middle byte is ID1, and the low byte (LSB)
is ID0.
1.2.2
Thermostat External EEPROM Structure Overview
Location
0x0FF8
0x0FF0
0x0FD8
……
0x0300
0x02XX
1.2.3
0xA2 01 AA BB CC FF FE 00
Comments
All-Link Database Record
N/A
Last Record, 416 total links allowed
Addressing below 0x0300 is ignored by database
AL /L Record Format
Thermostat AL Record Format
load.
Database entries with Record Control Bit 6: 0 = Responder and Group 1 will control the local
Linear ALL-Link Database (AL /L) Record Format
Field
Record
Control
Length
(bytes)
1
Description
Record Control Flag Bits:
Bit 7: 1 = Record is in use, 0 = Record is available
Bit 6: 1 = Controller (Master) of Device ID, 0 = Responder to (Slave of) Device ID
Bit 5: Not used
Bit 4: Not used
Bit 3: Not used
Bit 2: Not used
Bit 1: 1 = Record has been used before, 0 = ‘High-water Mark’
Bit 0: Not used
Group
1
ALL-Link Group Number this Device ID belongs to
ID
3
Device ID (ID2, ID1, ID0 in that order)
Data 1
1
Not used
Data 2
1
Not used
Data 3
1
Not used
To add a record to an AL /L, you search for an existing record that is marked available. (Available
means the same as empty, unused or deleted.) If none is available, you create a new record at the
end of the AL /L.
Page 16 of 17
An unused record will have bit 7 of the Record Control byte set to zero. The last record in an AL /L
will have bit 1 of the Record Control byte set to zero.
1.2.4
Overwriting an Empty AL /L Record
If you found an empty record, you simply overwrite it with your new record data.
Change bit 7 of the Record Control byte from zero to one to show that the record is now in use.
Set bit 6 of the Record Control byte to one if the device containing the AL /L is an INSTEON
Controller of the INSTEON Responder Device whose ID is in the record. If instead the device
containing the AL /L is an INSTEON Responder to the INSTEON Controller Device whose ID is in the
record, then clear bit 6 of the Record Control byte to zero. In other words, within an AL /L, setting
bit 6 means “I’m a Controller,” and clearing bit 6 means “I’m a Responder.”
Put the ALL-Link Group number in the Group field, and put the Device ID in the ID field. Finally, set
the Data 1, Data 2, and Data 3 fields appropriately for the Record Class you are storing.
1.2.5
Creating a New AL /L Record
To create a new record at the end of the AL /T, find the record with bit 1 of the Record Control byte
set to zero, indicating that it is the last record in the AL /L. Flip that bit to one.
Page 17 of 17
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement