Residential Control Systems TXB16 Owner`s manual

Residential Control Systems TXB16 Owner`s manual
HomeVision

Owner’s Manual
Version 3.45
Custom Solutions, Inc.
No part of this document may be reproduced or transmitted in any form or by any means, electronic or
mechanical, for any purpose, without the express written permission of Custom Solutions, Inc.
Information in this manual is believed to be accurate at the time of printing. However, it is subject to change
without notice. Custom Solutions, Inc. assumes no liability for errors or inaccuracies that may appear in this
document. Custom Solutions, Inc. will not be liable for direct, indirect, special, incidental, or consequential
damages arising from the use of this product or documentation, whether due to the product itself or its
application.
HomeVision is a registered trademark of Custom Solutions, Inc.
X-10 is a registered trademark of X-10 (USA) Inc.
Powerhouse is a registered trademark of X-10 (USA) Inc.
MS-DOS is a registered trademark of Microsoft Corporation.
Windows is a registered trademark of Microsoft Corporation.
Blast-IR is a registered trademark of Xantech Corporation.
IBM is a registered trademark of International Business Machines Corporation.
Call Editor RSA is a trademark of Flashline (formerly Vive Synergies Inc.)
All other brands or product names are trademarks or registered trademarks of their respective holders.
Copyright 1996 - 2006, Custom Solutions, Inc. All rights reserved.
Custom Solutions, Inc.
P.O. Box 33905
Indialantic, FL 32903
E-mail: [email protected]
Contents
CONTENTS
CHAPTER 1: INTRODUCTION .................................................................................1
Manual Organization................................................................................................................................ 1
Checking For Updated Information.......................................................................................................... 2
On-Line Help............................................................................................................................................ 2
Controller Operation Overview ................................................................................................................ 2
Creating A Schedule ............................................................................................................................ 3
How to Get Started .................................................................................................................................. 4
Manual Conventions ................................................................................................................................ 4
Safety Tips ............................................................................................................................................... 5
CHAPTER 2: SOFTWARE OVERVIEW ....................................................................7
Program Overview ................................................................................................................................... 7
Main Menu ........................................................................................................................................... 7
Program Screen Descriptions.................................................................................................................. 8
Object/Event Summary Screens .......................................................................................................... 8
Common Features............................................................................................................................ 8
Working With Object Summary Tables ............................................................................................ 9
Editing Actions................................................................................................................................ 10
Copying Actions Between Two Applications .................................................................................. 10
Object Initial States......................................................................................................................... 10
Power Failure States ...................................................................................................................... 11
Action Entry Screen ........................................................................................................................... 11
Listing Window ............................................................................................................................... 11
Toolbar ........................................................................................................................................... 12
Other Features ............................................................................................................................... 13
Configuration Screens........................................................................................................................ 13
Serial Port Configuration Screen.................................................................................................... 13
User Location Configuration Screen .............................................................................................. 14
Input/Output Port Configuration Screen ......................................................................................... 14
Controller Time/Date Configuration Screen ................................................................................... 14
Controller Settings Configuration Screen ....................................................................................... 15
Video Remote Control Configuration Screen ................................................................................. 16
Thermostat Configuration Screen .................................................................................................. 16
Security System Configuration Screen........................................................................................... 16
Custom Lighting Configuration Screen........................................................................................... 17
Caller ID Configuration Screen....................................................................................................... 17
Expansion Board Configuration Screen ......................................................................................... 17
IR Transmit Zones Configuration Screen ....................................................................................... 17
Digital Temperature Sensors Configuration Screen....................................................................... 17
Web Server Configuration Screen.................................................................................................. 17
Remote Internet Access Configuration Screen .............................................................................. 17
Preferences Screen........................................................................................................................ 17
Control Screens ................................................................................................................................. 17
X-10 Control Screen ....................................................................................................................... 18
X-10 Grid Control Screen ............................................................................................................... 18
Input/Output Port Control Screen ................................................................................................... 18
Macro Control Screen .................................................................................................................... 19
i
ii
Contents
IR Control Screen ........................................................................................................................... 19
Video Control Screen ..................................................................................................................... 20
Thermostat Control Screen ............................................................................................................ 20
Phone Control Screen .................................................................................................................... 21
Flag & Variable Control Screen...................................................................................................... 21
Controller Command Screen.......................................................................................................... 21
Advanced Screens ............................................................................................................................. 21
Custom TV Menu............................................................................................................................ 21
Other Screens .................................................................................................................................... 22
Schedule Viewer............................................................................................................................. 22
Terminal Emulator Screen.............................................................................................................. 23
IR Learn Screen ............................................................................................................................. 23
IR Test Screen................................................................................................................................ 23
Serial Command Test Screen ........................................................................................................ 24
Status Screen ................................................................................................................................. 24
View Messages Screen .................................................................................................................. 25
Read Event Log Screen ................................................................................................................. 25
Debug Tools Screen....................................................................................................................... 25
CHAPTER 3: QUICK START ..................................................................................27
1) Make sure you have everything you need ................................................................................ 27
2) Make controller connections ..................................................................................................... 27
3) Install PC software .................................................................................................................... 28
4) Run PC software ....................................................................................................................... 28
5) Configure serial interface .......................................................................................................... 28
6) Verify serial interface and controller are operating ................................................................... 28
7) Verify controller can receive serial commands ......................................................................... 28
8) Set controller time and date ...................................................................................................... 29
9) Verify X-10 operation ................................................................................................................ 29
10) Verify video output .................................................................................................................. 29
11) Verify infrared remote receive capability................................................................................. 30
12) Setting Up Your Remote To Control The Video Screens ....................................................... 31
CHAPTER 4: PROGRAMMING LANGUAGE .........................................................33
Actions ................................................................................................................................................... 33
Conditions .............................................................................................................................................. 33
If-Then-Else Statements .................................................................................................................... 34
Format ............................................................................................................................................ 34
Entering Conditions ........................................................................................................................ 35
Compound Conditions .................................................................................................................... 35
Evaluation Logic ......................................................................................................................... 35
CHAPTER 5: X-10 ...................................................................................................39
Introduction ............................................................................................................................................ 39
Controller X-10 Operation...................................................................................................................... 39
X-10 Event Triggers ........................................................................................................................... 40
X-10 Codes ........................................................................................................................................ 40
X-10 Signal Transmissions ................................................................................................................ 41
Examples........................................................................................................................................ 41
X-10 Transmission Settings................................................................................................................... 42
X-10 Lighting Scenes............................................................................................................................. 43
Creating Scenes................................................................................................................................. 43
X-10 Type Scenes .......................................................................................................................... 43
Contents
Leviton Type Scenes ...................................................................................................................... 44
Executing Scenes .............................................................................................................................. 44
X-10 Commands.................................................................................................................................... 45
Overview ............................................................................................................................................ 45
Standard X-10 Commands That Transmit X-10 Signals ................................................................ 45
Advanced X-10 Commands That Transmit X-10 Signals............................................................... 46
X-10 Control Commands................................................................................................................ 47
Advanced X-10 Commands ........................................................................................................... 47
PCS Lighting Commands ............................................................................................................... 48
X-10 Commands Based On Variable Values ................................................................................. 48
X-10 Command Details ...................................................................................................................... 48
X-10 Conditions ..................................................................................................................................... 57
X-10 Conditions Based On Variable Values .................................................................................. 59
X-10 Sequences .................................................................................................................................... 59
Use Of Module Enable/Disable ............................................................................................................. 60
Power Failure Options ........................................................................................................................... 61
CHAPTER 6: TIME AND DATE CONTROL ............................................................63
Introduction ............................................................................................................................................ 63
Time And Date Conditions..................................................................................................................... 63
Time Conditions ................................................................................................................................. 64
Date Conditions.................................................................................................................................. 64
Special Time And Date Conditions .................................................................................................... 66
CHAPTER 7: SCHEDULED EVENTS .....................................................................67
Introduction ............................................................................................................................................ 67
Defining Scheduled Event Times .......................................................................................................... 67
Entering Scheduled Event Actions ........................................................................................................ 68
Scheduled Event Commands ................................................................................................................ 68
Scheduled Event Conditions.................................................................................................................. 69
Power Failure Options ........................................................................................................................... 69
CHAPTER 8: PERIODIC EVENTS ..........................................................................71
Introduction ............................................................................................................................................ 71
Entering Periodic Event Actions ............................................................................................................ 71
Periodic Event Commands .................................................................................................................... 72
Periodic Event Conditions...................................................................................................................... 73
Power Failure Options ........................................................................................................................... 73
CHAPTER 9: TIMERS AND DELAYS .....................................................................75
Introduction ............................................................................................................................................ 75
Delay...................................................................................................................................................... 75
General Timer Operation ....................................................................................................................... 75
iii
iv
Contents
Timer Operating Modes ......................................................................................................................... 76
Standard Timers................................................................................................................................. 76
Entering Standard Timer Actions ................................................................................................... 77
Wait Timers ........................................................................................................................................ 77
Entering A Wait Timer Command................................................................................................... 78
Comparing Standard And Wait Timers .............................................................................................. 79
Timer Commands .................................................................................................................................. 79
Timer Conditions.................................................................................................................................... 81
Power Failure Options ........................................................................................................................... 82
Examples........................................................................................................................................ 83
CHAPTER 10: FLAGS.............................................................................................85
Introduction ............................................................................................................................................ 85
Using Flags ........................................................................................................................................ 85
Flag Commands .................................................................................................................................... 86
Standard Flag Commands ................................................................................................................. 86
Advanced Flag Commands................................................................................................................ 86
Flag Conditions ...................................................................................................................................... 87
Power Failure Options ........................................................................................................................... 88
CHAPTER 11: VARIABLES ....................................................................................89
Introduction ............................................................................................................................................ 89
Using Variables .................................................................................................................................. 89
Variable Commands .............................................................................................................................. 90
Standard Variable Commands ........................................................................................................... 90
Math Commands................................................................................................................................ 90
Other Variable Commands ................................................................................................................ 93
Advanced Variable Commands ......................................................................................................... 95
Indirect Commands ........................................................................................................................ 95
16-Bit Variable Commands ............................................................................................................ 96
Other Advanced Commands .......................................................................................................... 97
Variable Conditions................................................................................................................................ 97
Power Failure Options ........................................................................................................................... 98
CHAPTER 12: INPUT AND OUTPUT PORTS ........................................................99
Introduction ............................................................................................................................................ 99
Input Port Event Triggers....................................................................................................................... 99
Detailed Port Description ..................................................................................................................... 100
Input/Output Port Locations ............................................................................................................. 100
Port A - Relay Drivers .......................................................................................................................... 101
Terminal Block 1 (Port A) Description.............................................................................................. 101
Port A Electrical Characteristics....................................................................................................... 101
Port A Examples .............................................................................................................................. 102
Adding Transient Suppression ..................................................................................................... 103
External Power Source................................................................................................................. 103
Multiple Port A Connections ......................................................................................................... 104
Port B - Digital Inputs........................................................................................................................... 105
Terminal Block 2 (Port B) Description.............................................................................................. 106
Contents
Port B Electrical Characteristics....................................................................................................... 106
Port B Examples .............................................................................................................................. 107
Port C - Digital Input/Output................................................................................................................. 108
Terminal Block 3 (Port C) Description.............................................................................................. 109
Using Port C As An Output Port....................................................................................................... 109
Port C Output Examples............................................................................................................... 109
Using Port C As An Input Port ......................................................................................................... 110
Port C Input Examples ................................................................................................................. 111
Control Of Output Ports ....................................................................................................................... 112
Output Port Commands ................................................................................................................... 112
Standard Output Port Commands ................................................................................................ 113
Advanced Output Port Commands............................................................................................... 115
Output Port Conditions..................................................................................................................... 115
Control Of Input Ports .......................................................................................................................... 116
Input Port Commands ...................................................................................................................... 116
Standard Input Port Commands................................................................................................... 116
Advanced Input Port Commands ................................................................................................. 117
Input Port Conditions........................................................................................................................ 118
Output Port Notes ................................................................................................................................ 118
Use Of Output Enable/Disable ......................................................................................................... 118
Power Failure Options...................................................................................................................... 119
Input Port Notes ................................................................................................................................... 119
Power Failure Options...................................................................................................................... 119
CHAPTER 13: VIDEO SYSTEM ............................................................................121
Introduction .......................................................................................................................................... 121
Choosing Between The Video Screen Types...................................................................................... 122
Built-In Video Menu System ................................................................................................................ 122
Video Screens Overview.................................................................................................................. 122
Video Screen System Navigation .................................................................................................... 123
Starting The Video System........................................................................................................... 125
Stopping The Video System......................................................................................................... 125
Alternate Navigation System ........................................................................................................ 125
Event Log ......................................................................................................................................... 126
Thermostat Screens......................................................................................................................... 126
Weather Conditions Screen ............................................................................................................. 126
Custom Menu System ......................................................................................................................... 126
Overview .......................................................................................................................................... 126
Setting Up The Custom Menu System ......................................................................................... 127
Tips On Using The Custom Menu System ................................................................................... 127
RAM Video Screens ............................................................................................................................ 128
Configuring The RAM Video Screens .............................................................................................. 128
Displaying RAM Video Screens ....................................................................................................... 129
Writing Text To RAM Video Screens ............................................................................................... 129
Notes ............................................................................................................................................ 130
Using The RAM Video Screens ....................................................................................................... 130
Text Storage Buffer.............................................................................................................................. 130
Overview .......................................................................................................................................... 130
Using The Text Storage Buffer ........................................................................................................ 131
Video Commands ................................................................................................................................ 132
Video Configuration Commands ...................................................................................................... 132
v
vi
Contents
Video Control Commands ................................................................................................................ 135
Video Text Commands..................................................................................................................... 137
Event Log Commands...................................................................................................................... 141
Infrared Simulation Commands ....................................................................................................... 141
Video Conditions.................................................................................................................................. 143
Notes On Using The Video System ..................................................................................................... 143
CHAPTER 14: INFRARED CONTROL..................................................................145
Introduction .......................................................................................................................................... 145
Infrared Signal Description .................................................................................................................. 145
Standard Infrared Signals ................................................................................................................ 146
Description.................................................................................................................................... 146
Receiving Standard Format Signals............................................................................................. 146
Transmitting Standard Format Signals......................................................................................... 146
Other Infrared Signals ...................................................................................................................... 147
Description.................................................................................................................................... 147
Receiving Other Format Signals .................................................................................................. 147
Transmitting Other Format Signals .............................................................................................. 147
IR Signal Reception Details ................................................................................................................. 147
Introduction ...................................................................................................................................... 147
Controller Setup For Receiving Standard IR Signals....................................................................... 148
Setting Up The Remote Control Video Screen System ............................................................... 148
Configuring A Preprogrammed Remote ................................................................................... 148
Testing A Preprogrammed Remote .......................................................................................... 150
Configuring The Controller To Control The Video Screen System .............................................. 150
Assigning Video Functions To Different Keys .............................................................................. 151
Configuring A Learning Remote ................................................................................................... 151
Controller Setup For Receiving Learned IR Signals ........................................................................ 152
Initial Software Setup For Receiving Learned IR Signals ............................................................ 152
Learning IR Signals .................................................................................................................. 152
Adjusting Signal Matching Parameters..................................................................................... 153
“CheckOnAndOffTimes” Setting........................................................................................ 153
“CheckFirstPulse” Setting.................................................................................................. 153
“Tolerance” Setting ............................................................................................................ 153
Setting Up A Remote To Use As Command Inputs......................................................................... 153
Normal Method – Using IR Signal Summary Screen ................................................................... 154
Alternate Method – Receive Any Standard IR Signal .................................................................. 154
IR Signal Transmission Details............................................................................................................ 155
Electrical Connections...................................................................................................................... 155
Transmitting From The Controller Front Panel............................................................................. 156
Transmitting From The Controller Rear Panel ............................................................................. 157
Configuration for Transmission ........................................................................................................ 157
Learning Infrared Signals For Transmission ................................................................................ 158
Learning Infrared Signals Without A Carrier ................................................................................ 160
Transmitting Standard Infrared Signals........................................................................................ 160
Entering IR Signal Actions ................................................................................................................... 161
IR Transmission Settings..................................................................................................................... 161
Importing and Exporting IR Signals ..................................................................................................... 161
IR Signal Commands........................................................................................................................... 162
IR Signal Conditions ............................................................................................................................ 163
Contents
CHAPTER 15: CONTROLLER FUNCTIONS ........................................................165
Introduction .......................................................................................................................................... 165
Clock Adjustment................................................................................................................................. 165
Controller Commands.......................................................................................................................... 165
Reporting Commands ...................................................................................................................... 165
Operating Modes Commands .......................................................................................................... 167
Event Log Commands...................................................................................................................... 167
Other Commands............................................................................................................................. 169
Controller Conditions ........................................................................................................................... 172
CHAPTER 16: SERIAL INTERFACE ....................................................................175
Introduction .......................................................................................................................................... 175
Serial Interface Commands To The Controller .................................................................................... 176
Transmitting Commands To The Controller..................................................................................... 176
Reading Serial Data From External Devices ................................................................................... 176
Overview....................................................................................................................................... 176
Data Terminator............................................................................................................................ 177
How to Receive Serial Data ......................................................................................................... 178
Receiving Unexpected Serial Data ........................................................................................... 178
Receiving Expected Serial Data ............................................................................................... 179
Serial Transmissions From The Controller .......................................................................................... 180
Controller Report Messages ............................................................................................................ 181
Report Message Format............................................................................................................... 181
Time and Date Report Format...................................................................................................... 182
Command Responses...................................................................................................................... 182
Commanded Serial Transmissions .................................................................................................. 183
Serial Commands ................................................................................................................................ 183
Serial Transmit Commands.......................................................................................................... 183
Serial Receive Commands........................................................................................................... 186
Serial Conditions.................................................................................................................................. 189
Serial Commands To Control Computer ............................................................................................. 190
Playing Wave (WAV) Files ............................................................................................................... 191
Notes ............................................................................................................................................ 191
Running Other Computer Programs ................................................................................................ 191
Notes ............................................................................................................................................ 192
Sending Keystrokes To Other Programs On A PC .......................................................................... 192
Activating The Desired Application Window................................................................................. 192
Example........................................................................................................................................ 194
Writing To Text Files ........................................................................................................................ 194
Writing Text .................................................................................................................................. 194
Clearing A Text File ...................................................................................................................... 194
Notes ............................................................................................................................................ 195
Automatically Logging Serial Data To A Text File ........................................................................... 195
Notes ............................................................................................................................................ 195
Sending Data To Other Serial Ports On A PC ................................................................................. 196
Notes ............................................................................................................................................ 197
Receiving Data From Other Serial Ports On A PC .......................................................................... 197
Sending Messages To The PC For Display..................................................................................... 197
Notes ............................................................................................................................................ 198
vii
viii
Contents
HV Desktop Control Program .............................................................................................................. 198
Serial Port Forwarding ......................................................................................................................... 199
CHAPTER 17: MACROS .......................................................................................201
Introduction .......................................................................................................................................... 201
Entering Macro Actions........................................................................................................................ 201
Macro Commands ............................................................................................................................... 201
Macro Conditions ................................................................................................................................. 202
Power Failure Options ......................................................................................................................... 202
CHAPTER 18: CALLER ID....................................................................................203
Introduction .......................................................................................................................................... 203
Caller ID Setup For Call Editor RSA .................................................................................................... 203
Caller ID Setup For ITU Technologies Device..................................................................................... 204
Caller ID Setup For Other Software Programs .................................................................................... 204
Caller ID Phone Number Display Format ............................................................................................ 205
Caller ID Log ........................................................................................................................................ 205
Caller ID Name Lookup ....................................................................................................................... 205
Play WAV File To Announce Caller ..................................................................................................... 206
Direct Control Of Caller ID Screen ...................................................................................................... 206
Caller ID Commands ........................................................................................................................... 206
Caller ID Conditions ............................................................................................................................. 207
CHAPTER 19: THERMOSTATS............................................................................209
Introduction .......................................................................................................................................... 209
Built-In Thermostat Control.................................................................................................................. 210
Step 1 - Initial Thermostat Configuration ......................................................................................... 210
RCS X-10 Thermostats ................................................................................................................ 210
RCS Serial Thermostats............................................................................................................... 210
Allowable RCS Serial Thermostat Configurations .................................................................... 210
Configure RCS Serial Thermostats .......................................................................................... 211
Configure HomeVision Software............................................................................................... 212
Step 2 - TV Screen Configuration .................................................................................................... 212
Step 3 - Thermostat Schedule Setup............................................................................................... 213
Step 4 - Loading The Schedule ....................................................................................................... 213
Using the TV Thermostat Control Screen ........................................................................................ 213
RCS TX10-B, TX15-B, And Serial Thermostats........................................................................... 214
RCS TX10 And TX15 Thermostat ................................................................................................ 214
Using The TV Thermostat Schedule Screen ................................................................................... 215
Using The PC Thermostat Control Screen ...................................................................................... 215
Reading X-10 Thermostat Data ....................................................................................................... 215
Reading Data From Thermostats ................................................................................................. 216
Automatic X-10 Data Requests .................................................................................................... 216
TX10-B...................................................................................................................................... 216
TX15-B...................................................................................................................................... 217
Advanced Thermostat Control ............................................................................................................. 217
Contents
Thermostat-Related Commands ...................................................................................................... 217
Thermostat Commands ................................................................................................................ 218
Thermostat Data Commands ....................................................................................................... 221
Thermostat System Variable Summary.................................................................................... 221
Thermostat Data Commands.................................................................................................... 222
Thermostat Conditions ..................................................................................................................... 223
EnerZone StatNet Thermostats ........................................................................................................... 224
Custom Thermostat Control................................................................................................................. 224
CHAPTER 20: EXPANSION BOARDS .................................................................225
Multifunction Expansion Board ............................................................................................................ 225
Sylva Control Systems I/O Boards ...................................................................................................... 225
Sylva IO-8O8I And IO-8O8I/485 Board Description ........................................................................ 225
IO-8O8I Setup .................................................................................................................................. 226
IO-8O8I/485 Setup ........................................................................................................................... 226
IO-8O8I/485 To HomeVision-Serial Port ...................................................................................... 227
IO-8O8I/485 To Other Serial Port................................................................................................. 228
Using The I/O Boards....................................................................................................................... 228
Digital Temperature Sensors ............................................................................................................... 228
DS1820 Connection Modes ............................................................................................................. 229
Connections ..................................................................................................................................... 229
Software Configuration..................................................................................................................... 230
Reading A Sensor Address .......................................................................................................... 230
Reading The Sensor From The PC.............................................................................................. 230
Digital Temperature Sensor Commands ...................................................................................... 231
Digital Temperature Sensor Conditions ....................................................................................... 231
Port Numbering System....................................................................................................................... 231
CHAPTER 21: DATA LOGGING ...........................................................................233
Introduction .......................................................................................................................................... 233
Data Logging Commands .................................................................................................................... 233
Data Logging Conditions ..................................................................................................................... 235
Using The Data Log............................................................................................................................. 235
Writing To The Data Log .................................................................................................................. 235
Reading From The Data Log ........................................................................................................... 236
Requesting Data From A Computer ............................................................................................. 236
Automatically Transmitting Data Log............................................................................................ 237
CHAPTER 22: WEATHER DATA..........................................................................239
Introduction .......................................................................................................................................... 239
Weather Variables ............................................................................................................................... 239
Temperature Variables..................................................................................................................... 240
Relative Humidity Variables ............................................................................................................. 240
Barometric Pressure Variables ........................................................................................................ 240
Wind Variables ................................................................................................................................. 241
Rainfall Variables ............................................................................................................................. 241
Weather Data Commands ................................................................................................................... 242
ix
x
Contents
CHAPTER 23: TELEPHONE .................................................................................243
Overview .............................................................................................................................................. 243
HomeVision-Phone/Serial.................................................................................................................... 243
HomeVision-Phone/CID....................................................................................................................... 243
CHAPTER 24: SECURITY SYSTEMS...................................................................245
Overview .............................................................................................................................................. 245
Installation And Setup ...................................................................................................................... 245
1) Install Security System ............................................................................................................. 245
2) Configure Security System Communication Settings .............................................................. 245
3) Connect Serial Port .................................................................................................................. 246
4) Configure HomeVision Software .............................................................................................. 246
Security System Commands ............................................................................................................... 247
Security System Events....................................................................................................................... 248
Security System Conditions................................................................................................................. 249
CHAPTER 25: INTERNET ACCESS .....................................................................253
Introduction .......................................................................................................................................... 253
Web Server .......................................................................................................................................... 253
Overview .......................................................................................................................................... 253
Configuration.................................................................................................................................... 254
Using The Web Pages With A Browser ........................................................................................... 255
Object Status Information............................................................................................................. 256
Auto-Report Feature..................................................................................................................... 256
Customizing The Web Pages....................................................................................................... 257
Displaying Complete Web Pages................................................................................................. 258
Using Tags That Return Values ................................................................................................... 260
Tags That Return Individual Values.......................................................................................... 260
Tags That Return Complete HTML Tables............................................................................... 264
Using Tags That Perform Actions ................................................................................................ 265
Using Tags To Request Object Status ......................................................................................... 271
Remote Internet Access ...................................................................................................................... 272
Server Configuration ........................................................................................................................ 272
Client Configuration.......................................................................................................................... 273
Using Remote Internet Access ........................................................................................................ 273
Remote Internet Access Notes ........................................................................................................ 274
CHAPTER 26: MISCELLANEOUS ........................................................................275
Custom Lighting Systems .................................................................................................................... 275
Object Names ...................................................................................................................................... 275
Power Failure Recovery Process ........................................................................................................ 276
Power Failure Recovery Actions ...................................................................................................... 277
Remote Modem Control....................................................................................................................... 277
Initial Controller/Modem Setup......................................................................................................... 278
Setting The Controller And The Modem To The Same Baud Rate.............................................. 279
Making a Remote Connection.......................................................................................................... 279
Remote Modem Trouble-Shooting................................................................................................... 280
Additional Modem Notes .................................................................................................................. 281
Contents
Graphic Background On Main Form.................................................................................................... 282
Exporting Schedule Data ..................................................................................................................... 282
Reading Data Files Into The Controller ............................................................................................... 282
Introduction ...................................................................................................................................... 282
Step 1 – Set Up Other Program ................................................................................................... 282
Step 2 – Create Configuration File ............................................................................................... 282
Section Name ........................................................................................................................... 283
Section Format.......................................................................................................................... 283
Data .......................................................................................................................................... 283
Example .................................................................................................................................... 284
Step 3 – Send Serial Command To Read In File ......................................................................... 284
Complete Example ....................................................................................................................... 285
Front Panel LEDs ................................................................................................................................ 286
Specifications....................................................................................................................................... 287
Connectors........................................................................................................................................... 288
Serial Port..................................................................................................................................... 288
Infrared Transmit Jack.................................................................................................................. 289
Power Jack ................................................................................................................................... 289
Dynamic Data Exchange (DDE) .......................................................................................................... 289
Control Style ........................................................................................................................................ 289
Controller Error Messages................................................................................................................... 290
CHAPTER 27: TROUBLE-SHOOTING .................................................................295
Problems Communicating With The Controller ................................................................................... 295
IR Receive Problem............................................................................................................................. 297
IR Transmit Problem............................................................................................................................ 298
Video Problem ..................................................................................................................................... 298
X-10 Interface Cable Problem ............................................................................................................. 300
X-10 Receive Problem......................................................................................................................... 300
X-10 Transmit Problem........................................................................................................................ 301
X-10 Noise/Interference Problems ...................................................................................................... 302
APPENDICES
APPENDIX A: FCC/CE INFORMATION................................................................ A-1
APPENDIX B: ASCII CODE CHART ..................................................................... B-1
APPENDIX C: LATITUDES AND LONGITUDES .................................................. C-1
APPENDIX D: WARRANTY .................................................................................. D-1
xi
Chapter 1
Introduction
1
CHAPTER 1: INTRODUCTION

Welcome to HomeVision and the exciting world of advanced home automation. HomeVision provides
many powerful, yet easy to use, features. Among these:
•
Video output displays menus and control screens on your TV. You can even create your own
screens to control your house or display messages.
•
Infrared receive capability so you can control HomeVision (and your whole house) from your own
remote control.
•
Infrared transmit capability to control TVs, stereos, etc.
•
Two-way X-10 communication to control and monitor lights, appliances, thermostats, etc. Received
X-10 sequences can trigger events.
•
8 relay drivers outputs to drive external relays, solenoids, etc.
•
8 digital inputs for direct connection of switch closure type devices such as switches and relay
contacts. Allows direct connections of most alarm sensors.
•
8 bi-directional I/O ports. As inputs, they can connect to switch closure devices. As outputs, they
can drive 5V digital circuits, LEDs, etc.
•
Expansion capability to add more I/O, analog inputs, digital temperature sensors, zoned infrared
output, extra serial ports, telephone control, and more.
•
Battery-backed clock tracks daylight savings time, leap years, sunrise and sunset times, etc. 255
different events can be scheduled based on time.
•
Whole-house control from your IBM-compatible computer over the serial interface (up to 57,600
baud). There’s even a web server to allow you to control your home via the Internet!
•
Easy-to-use Windows software to create your schedule.
•
Powerful programming language includes nested If-Then-Else statements and over 450 commands
and 170 conditions. Up to 255 flags, variables, timers, macros, and periodic events are available.
Large memory holds over 8000 lines, allowing extremely powerful schedules.
•
The control unit may be disconnected from your PC after the schedule is loaded. It can even be
moved to a different spot in your house (perhaps near your TV).
Manual Organization
This manual is organized as follows:
•
This chapter provides an overview of how the controller operates.
terminology used in this manual and in the PC software program.
It introduces some of the
•
Chapter 2 describes the PC software program and its many screens.
•
Chapter 3 provides a “Quick Start” process to get the controller initially set up and checked out. It
also serves as a brief demo of the controller's capabilities.
2
Chapter 1
Introduction
•
Chapter 4 provides an overview of how you enter actions and conditions (in essence, this is the
“programming language” that defines how the controller works for you).
•
Chapters 5 - 26 provide detailed information on each of HomeVision’s “objects” and interfaces. Each
chapter provides:
-
•
An overview
Descriptions of all available commands (to perform actions)
Descriptions of all available conditions (for use in If-Then statements)
Physical connection information (for input/output ports, video interface, etc.)
Details on how to use the objects
And more
Chapter 27 provides trouble-shooting suggestions.
Checking For Updated Information
After installing the computer software (as described in chapter 2), please read the “Read Me” and "New Info"
files. They contain important information. We are constantly adding new features that may not be covered
in this manual.
These will be discussed in these files.
Also see our web site as
http://www.csi3.com/homevis2.htm for the latest software and lots more useful information.
On-Line Help
The help file provides context sensitive help information. From any screen in the PC software, press F1 (the
function 1 key) or select the help menu. However, the help file is somewhat out of date; refer to this manual
and any new documentation installed in your PC’s HomeVision directory.
Controller Operation Overview
To help you understand how the controller operates, we first need to introduce some terms. The three most
important are: EVENTS, ACTIONS, and OBJECTS. The controller’s operation can be summarized as:
EVENTS occur which trigger ACTIONS which can change OBJECTS
EVENTS can be any of the following:
•
•
•
•
•
•
•
•
•
•
An X-10 signal is received
An infrared signal is received
An input port changes state
A command is received over the serial interface (usually from a PC)
A specified time is reached (i.e., it’s 7:00PM on a Friday)
A timer has gone off (expired)
The controller recovers from a power failure
A phone call is received containing caller ID information
The touch-tone signal is received from a telephone (when using HomeVision-Phone)
And others ...
OBJECTS are items which are can be changed or controlled and include:
•
•
•
•
•
X-10 Modules
Flags
Variables
Timers
Input Ports
Chapter 1
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Introduction
3
Output Ports
Analog Inputs
Digital Temperature Sensors
Infrared Signals
Macros (sets of conditions and actions)
Scheduled Events
Periodic Events
Video Output (displayed on television screen)
Serial Output (to a PC or other device)
The phone line (when using HomeVision-Phone)
Thermostats
Security Systems
Data Log
Weather data
The controller’s operating modes
And more ...
ACTIONS perform hundreds of different tasks, many of which change an object. Common actions include:
•
•
•
•
•
•
•
•
•
•
•
•
•
Transmitting an X-10 signal
Transmitting an infrared signal
Transmitting data over the serial interface
Changing an output port
Displaying video data on a TV screen
Changing the value of a variable
Changing the state of a flag
Starting or stopping a timer
Changing the operating mode of the controller
Executing a macro
Controlling a thermostat
Controlling a security system
And more ...
Actions can also be CONDITIONED. That is, the actions are only performed if certain conditions are met.
This is done with If-Then-Else statements. There are more than a hundred conditions that can be specified.
You use the controller by creating a “schedule” (or “program”, if you prefer). The schedule defines what
happens (i.e., what actions are performed) when any event occurs. The wide variety of available events and
actions allows you to develop a very powerful home control system.
Creating A Schedule
The basic steps in creating a schedule are to:
1) Make the necessary electrical connections to the controller.
2) Use the PC software’s configuration screens to set the various configuration options.
3) Define the necessary objects and events (name them, set their times, initial states, power fail states,
etc.).
4) Enter the actions you want to perform when each event occurs.
5) Load the schedule into the HomeVision control unit (the “controller”).
6) Test the schedule.
4
Chapter 1
Introduction
7) Enjoy your automated home !!!
You’ll probably want to start by creating a simple schedule to make sure you know how everything works.
You can then add to it as you think of new things you want it to do. HomeVision makes this easy by allowing
you to individually enable and disable events. You can be running your home with a schedule, while adding
to it. You can keep new events disabled until they’re working, then enable them.
After the schedule is loaded, the controller will run independently of the PC. You can disconnect the
controller and move it if you like. If you choose to leave it connected, you will be able to control your whole
house from the computer if you wish.
How to Get Started
We suggest you take things slowly at first in setting up HomeVision. HomeVision contains a tremendous
wealth of capabilities; there’s no way to learn everything in a few minutes. Get the basics working before
going further. Here’s a suggested order:
1) Read at least the first three chapters of this manual. They will give you an overview of how the
controller works. You can then refer to the later chapters for more details as you need to.
2) Connect the controller and make sure it’s working properly.
3) Verify the X-10 interface is functioning.
4) Learn the basics of scheduled events, flags, variable, timers, and If-Then statements. Load the
example schedule installed in the application directory and see how it works.
5) Create and load a simple schedule of your own. Add to it as you go along.
6) Learn how the video output works and get it hooked up.
7) Learn how the two-way infrared capability works. First, set the controller up so your remote control
can be used as an input. Then “teach” the controller your remotes so it can control your TV, stereo,
etc.
8) Hook up the digital inputs and outputs as you need them.
9) Continue to add to your schedule or change it as you need to.
If you’re in a real hurry to get started and are familiar with home control systems and typical programming
concepts, you could jump to the “Quick Start” chapter and start setting the controller up. However, if you run
into problems, go back and read the relevant parts of this manual. We tried to make everything as selfexplanatory as possible, but the controller has so many capabilities that the manual will still be needed.
Manual Conventions
Several conventions were used in writing this manual:
•
The term “controller” is often used. This refers to the HomeVision control unit (box) itself, not the PC
software.
•
When we write “PC software” or “software”, or “PC program”, we’re referring to the Window-based
program running on your PC.
•
“Schedule” refers to the disk file that contains all your settings, objects, conditions, and actions. This
schedule is loaded into the controller and the controller runs your house according to this schedule
Chapter 1
•
Introduction
5
Your actions and conditions are listed on the actions entry screen. Example actions and conditions
in this manual will be shown using a unique font, as follows:
Transmit IR signal #3 (TV Power) one time
The examples may not necessarily be shown exactly as the PC software would display them. The
PC software is constantly being updated, and the wording could be changed slightly to clarify the
meaning.
This should not present any problems, because you don’t enter commands by typing the text
anyway. Instead, you use the mouse to click on command buttons and select objects from pull-down
lists. The PC software then automatically generates the text to describe the command.
•
Numeric format. Most of the data used by the controller is comprised of a single byte. Each byte
contains 8 bits and can ranges in value between 0 and 255. Throughout this manual, values will be
written in three different formats: decimal, hexadecimal, and binary. Suffixes will be used to indicate
the format of a value, as described below:
FORMAT
SUFFIX
Decimal
Hexadecimal
Binary
d
h
b
EXAMPLES
0d, 4d, 47d, 255d (or 0, 4, 47, 255)
00h, 04h, 2Fh, FFh
00000000b, 00000100b, 00101111b, 11111111b
Notes
-
Decimal values will often be written without the suffix. Any value without a suffix will
always be decimal.
-
Hexadecimal values are always written as 2 digits ranging from 00h to FFh.
Safety Tips
HomeVision provides many features that can be used to control your home (or office, building, etc.). If used
improperly, damage to your home, equipment, electronics, or other items could result. Be very careful in
how you set up and use the controller. Custom Solutions, Inc. is not responsible for any damage or other
consequences that may result from the use of HomeVision.
•
Lamp and appliance modules with polarized plugs must be used only with polarized wall outlets.
•
Do not connect appliances or other devices that require a full 110V load to lamp modules. Lamp
modules (or other devices with dimming capability) can damage such equipment (including TVs and
stereos). Connect such devices to appliance modules only.
•
Do not connect fluorescent lights to lamp modules or other devices with dimming capability, as
damage may result.
•
Do not use wall switches to control electrical outlets, as damage to plugged-in devices could result.
•
Do not use wall switches to control fluorescent lights, as damage may result.
•
Do not exceed the ratings of any device. This includes the controller’s input and outputs, as well as
external devices.
•
Turn off power at the circuit breaker or fuse panel before working on electrical outlets.
6
Chapter 1
Introduction
•
Remove power from the controller before opening unit.
•
Take care when using the controller to control critical equipment such as security systems, air
conditioning and heating units, water heaters, pool pumps, etc.
-
Test you schedule thoroughly to ensure it works as you intend.
-
For critical commands, perform multiple times to ensure they work. Even with the controller’s
advanced X-10 communications error checking, signals may occasionally not be received.
-
Provide feedback or status inputs to the controller so it can verify proper operation. For
example, an output from the security system can tell the controller whether the system is armed.
If an arming attempt fails, set it to retry. If your HVAC system provides two-way communication,
periodically check it’s status.
Chapter 2
Software Overview
7
CHAPTER 2: SOFTWARE OVERVIEW
The supplied Windows software is used to configure the controller and create a schedule. It can also directly
control many of the controller’s functions. This chapter provides an overview of it’s functions and screens.
Program Overview
Main Menu
The program’s main menu contains the following entries:
•
File
From this menu, you can create new schedules, open existing ones, or save them. You can also
load the schedule into the controller or print reports.
•
Configure
This menu is used to access a large variety of controller and PC software settings.
•
Objects/Events
This menu takes you to the summary screens for objects and events. Objects include X-10
modules, input/output ports, analog inputs, flags, variables, timers, macros, and infrared signals.
Events include scheduled events, periodic events, phone events, security system events, and the
power failure recovery event. These screens are used to create, view, and edit these items. The
summary screens also take you to the action entry screen where you define what actions you want
to perform when an event associated with the item occurs.
•
Control
This menu opens control screens that give you direct control of HomeVision’s functions. There are
control screens for X-10, infrared signals, input/output ports, video functions, and more. To operate
these, the controller must be connected to the serial port. Some of these also require that a
schedule to be loaded in order to work, while others can be used without a loaded schedule.
•
Other
This menu provides access to miscellaneous screens that provide infrared signal learning and
testing, status information, and other features.
•
Advanced
This menu opens some “advanced” screens that are used to provide special, enhanced functions.
•
Help
This menu provides access to the software help system. You can also access context-sensitive help
by pressing the function-1 (F1) key from any screen.
8
Chapter 2
Software Overview
Program Screen Descriptions
Most of the program’s screens are self-explanatory and will not require much time to learn. This section
describes some of the more complex screens.
There are six main types of screens:
•
•
•
•
•
•
Object/event summary screens
The action entry screen
Configuration screens
Control screens
Advanced screens
Other screens
Object/Event Summary Screens
These screens are used to create, view, and edit objects and events. They are accessed with the pull-down
menu “Objects/Events”. There are separate screens for each of the following items:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
X-10 Modules
Flags
Variables
Timers
Input Ports
Output Ports
Analog Inputs (if a multifunction expansion board is connected)
Infrared Signals
Macros
Scheduled Events
Periodic Events
Custom Lights
Power Failure Recovery
Phone Event (when using HomeVision-Phone)
Serial Data Input
Common Features
Each screen is slightly different, but they have a number of common features:
•
They list all of the currently-defined items in table format.
•
You can add, delete, or edit items. You can have up to 255 of each item type (except for input and
output ports which are fixed at 8 or 16, and X-10 modules, where there are always 256). You cannot
delete an item if it’s the last one, as there must be at least one of each type.
•
You can assign names to each item. This makes your schedule easier to read. In addition, the
names can be shown on your TV screen if you use the video screen system (however, only the first
16 characters of the name can be displayed on your TV).
•
The “Load Name” field specifies whether the item’s name should be loaded into the controller. When
loaded, the names can be shown on a TV with the video screen system. However, the controller is
limited to 512 names. If you have more than 512 items, you can select which ones will be loaded to
the controller and which will not. See the "Miscellaneous" chapter for more information on item
names.
Chapter 2
Software Overview
9
•
For many items, you can specify the initial states they should be put in when the schedule is first
loaded. You can use this to ensure the schedule starts in a known state.
•
You can set the power-fail states for many types of items. After the controller recovers from a power
failure, it will automatically set the item to the specified state. You can also set this field to “No
Change” if you don’t want the controller to take any special action. When you add an item, this field
defaults to the safest state, usually “No Change”.
•
You can enable or disable many types of items. Commands in your schedule will only work on
enabled items. If you have schedule sections that you’re still developing or that aren’t working
properly, you can disable them until you’re ready to use them.
•
For items that can have associated actions, the summary screen is the “doorway” to the
actions entry screen. This is where you define or edit the actions you want to perform. To
enter or edit actions, simply double-click on the “Actions Defined” field.
•
You can enable or disable many types of items. Commands in your schedule will only work on
enabled items. If you have schedule sections that you’re still developing or that aren’t working
properly, you can disable them until you’re ready to use them.
Working With Object Summary Tables
All of the object and event summary screens except for the power failure recovery screen display the items
in a table format. Here are some tips for working with these tables:
•
If the table contains more than 16 items, a vertical scroll bar (or “elevator”) will appear. You can then
scroll through the multiple pages with a mouse. You can also use the cursor keys to move between
items.
•
Most tables have more columns than can be displayed at one time. These tables have a horizontal
scroll bar to move between columns. The cursor keys also can be used for this purpose.
•
Most of the columns can be resized and reordered. To change the column width, depress the
mouse button on the right edge of the column in the column heading area. Move the mouse left or
right to change the width, then release the button. To change the order of a column, depress the
mouse button in the column heading area. Move the mouse left or right to move the column, then
release the button. These changes will remain in effect until the screen is closed. The table will
return to the default settings the next time the screen is opened.
•
You can directly edit some of the fields, such as the “Name” and “Description” fields. These fields
support the standard Windows cut, copy, and paste functions.
•
Many fields use checkboxes to select between two states. Use the mouse or cursor keys to first
select the field. Then click with the mouse (left button) to toggle the checkbox on and off.
•
The items that can perform actions will have one or more “Actions Defined” fields. The box will be
checked if any actions have been entered. If will not be checked if there are no actions. To enter or
edit actions, simply double-click on the “Actions Defined” field. This will take you to the actions
entry screen.
•
There are several other fields that can be double-clicked to take you to another screen. These are:
-
The scheduled event summary screen, where double-clicking on the “Scheduled Time” or
“Random Interval” fields takes you to another screen. This screen is used to set the event’s time
and random interval (if used). When you close this screen, you’ll be returned to the scheduled
event screen.
10
Chapter 2
-
•
Software Overview
The infrared signal summary screen, where double-clicking on the “Signal Type”, “Device Code”,
or “Key Code” fields opens another screen. This screen provides one way to define the format
of the infrared signal to receive or transmit. When you close this screen, you’ll be returned to the
infrared signal screen.
The “Initial State” and “Power Fail State” fields used on many screens have pop-up list boxes. When
you select these fields, a downward-pointing arrow will appear at the right side. Click on this arrow
to pop up the list. Use the mouse or cursor keys to select an option from this list. When you leave
the field, the arrow will disappear.
Editing Actions
You can use Cut, Copy, Paste, and Delete commands to act on ALL the actions for a given event. To use
them, first select the "Actions Defined" field for the desired event (Schedule event #3, Macro #6, etc.). For X10 modules and input ports, be sure to select the correct "Actions Defined" field (i.e., "On Actions" or "Off
Actions" for X-10, and "High Actions" or "Low Actions" for input ports). Then, click the right mouse button
to bring up the editing menu, and select the desired command. Note that when you Paste actions to an
event that already has actions, the new actions are placed at the end of the list.
You can also use these commands on individual actions in the Actions Entry Screen, described later.
Copying Actions Between Two Applications
You can multiple copies of the software on your computer, and copy actions from one to another. This is
useful if you want to incorporate portions of an example schedule into your schedule. Copying between
schedules is performed in the same manner as copying within a schedule.
It's important to note that you will usually need to edit the actions after they are pasted into the schedule.
This is because the objects (flags, variables, etc.) will probably be numbered differently in the two schedules.
For example, assume you copy an action to run macro #10 named "Turn all lights off". When you paste it
into the other schedule, the action will be to run macro #10, but macro #10 may do something entirely
different in this schedule.
It's also possible that the object you're copying doesn't even exist in the schedule you're pasting it to. This
would occur in the previous example if you only had 5 macros in the second schedule. In this event, the
Actions Entry Screen will display the message "NOT DEFINED !!!" instead of the macro's name and number
in the action line. You will then have to edit the action and select the correct macro for it.
For these reasons, we recommend that after you paste actions, you immediately review them and make the
necessary changes.
Object Initial States
The object summary screens are also used to set the initial state of many object types. When you load a
schedule to the controller for the first time, you need to specify the initial states you want the controller to set
for the various objects. For example, you can define the following:
•
Whether flags should be SET, CLEAR, or NEUTRAL
•
The values to assign to your variables
•
What states to set for your output ports
•
What states (ON or OFF) and what levels (0 to 16) to assign to the X-10 modules. The controller will
not know what state your lights or other X-10 modules are initially in. This provides one way to tell it.
Chapter 2
Software Overview
11
The initial states are specified by setting the Initial State field in the object summary screens. Each object
can be individually set to its own state. When the schedule is loaded into the controller, the objects will then
be set to the specified initial state. Note that the objects’ states don’t immediately change when you set the
value in the object summary screen, but only when the schedule is loaded to the controller.
What if you are making minor changes to a schedule that you already have running? Flags, variables,
output ports, and other objects may already be set properly. You may not want them to change when you
load the revised schedule. You can avoid changing the state of an object by selecting the “No Change” entry
in the Initial Value Field. When the new schedule is loaded, the current state or value will be left unchanged.
The only exception to this is with timers. Timers are always stopped and their time values set to zero when a
new schedule is loaded.
The capability to individually set states or leave them unchanged at loading time allows you to make frequent
updates to your schedule without difficulty.
Power Failure States
The controller is designed to automatically recover from a power failure. However, you have total control of
how it does this. You can have objects automatically set to certain states when power is restored. You do
this through the “Power Fail State” fields on the object summary screens.
The meanings of the possible power failure states are mostly self-explanatory. They are also explained in
detail in the individual object chapters. The overall power failure recovery process is explained in the
"Miscellaneous" chapter.
Action Entry Screen
The action entry screen is used to enter the actions you want performed for each event. It is accessed from
the various object summary screens. The main features of this screen are highlighted below.
Listing Window
The large box in the action entry screen is the listing window. The actions and conditions are listed here.
You can use the mouse or cursor keys to move around this window.
•
The schedule line currently selected will be highlighted. If you click outside the listing window or
below the last line of text, then no line is selected.
•
You can change the text colors from the "Preferences" screen.
•
To add a line to the schedule, use the toolbar, discussed later. The line will be inserted before the
currently selected line (or at the end of the schedule if no line is selected).
•
To edit a line already in the schedule, double-click on the desired line. An editing window will open
allowing you to change the line. However, you cannot change the action or condition type. For
example, if the line is an X-10 action, you can change it to any other X-10 action. You cannot
change it to an action for a flag, variable, etc. To do this, you must delete the line entirely and add a
new one.
•
To delete a line, first select it, then click the “Delete Line” button at the bottom of the screen. There
are certain lines that work in groups and cannot be deleted individually. If you select one of these,
the “Delete Line” button will be disabled. To delete these, you must select the first line in the group
and delete it. This will delete the entire group. For example, If-Then statements consist of a
minimum of three lines:
12
Chapter 2
Software Overview
If
Then
End If
You cannot delete the THEN or END lines individually. Instead, you must select the IF line and
delete it. This will remove all three lines. It will also delete any conditions which might be between
the IF and THEN lines (conditions left by themselves would have no meaning). Actions between the
THEN and END lines will not be deleted. They can be deleted individually if desired.
•
You can use Cut, Copy, Paste, and Delete commands from within the Actions Entry Screen. First,
select a schedule line, then click the right mouse button to bring up the editing menu. You can
also perform the editing functions directly from the keyboard, using the standard Windows editing
keys, as shown:
Cut
Copy
Paste
Delete
=
=
=
=
Ctrl+X
Ctrl+C
Ctrl+V
Del
Cut functions the same as copying a line, then deleting it. Note that you can only select one line at a
time; multiple-line selections are not allowed. Several other things should be noted about how these
commands work with "If-Then" and "Wait" statements:
If-Then Statements:
-
To Cut, Copy, or Delete an If-Then statement, select the "If" line. You cannot Cut, Copy,
or Delete the "Then", "Else", or "End If" lines individually.
When you Cut or Delete an If-Then statement, all associated conditions are deleted as
well. Actions within the If-Then statement are not deleted.
When you Copy an If-Then statement, the associated conditions and actions are not
copied.
When you Paste an If-Then statement, the associated "Then", "Else", and "End If" lines
are also pasted. No conditions or actions are pasted.
Wait Timers:
-
To Cut, Copy, or Delete a Wait statement, select the "Wait ..." line. You cannot Cut,
Copy, or Delete the "End Wait" line.
When you Copy a Wait statement, the associated actions are not copied.
When you Paste a Wait statement, the associated "End Wait" line is also pasted. No
actions are pasted.
Toolbar
The buttons along the left side of the window are known as the “Toolbar”.
•
Click on the desired toolbar button to enter a new action or condition. The new line will be added
immediately before the line currently selected in the listing window. For example, if you select the
first line and then click on the “Flag” button, the Flag action will be inserted as the new first line. The
other lines will move down. If no line is selected when you click the toolbar, the new line will be
placed at the END of the listing.
•
Clicking on the toolbar buttons adds a default entry to the listing window and then brings up the
desired action/condition entry screen. Each type of action and condition has its own screen. These
screens are used to enter the details of the action or condition you want. When you’re done with a
new entry, you’ll automatically return to the actions screen and the new action or condition will
appear in the listing window.
Chapter 2
•
Software Overview
13
The toolbar has two modes which display different buttons, depending on whether you can enter
actions or conditions:
-
“Actions” mode. This mode is indicated by the title “Actions” at the toolbar’s top. In this
mode, you can enter new actions or comment lines in the schedule. You can also enter an
If-Then or If-Then-Else statement. The conditions of the If-Then or If-Then-Else statement
are entered with the toolbar in the “Conditions” mode, discussed below. The “Actions” mode
is the default toolbar mode.
-
“Conditions” mode. This mode is indicated by the title “Conditions” at the toolbar’s top. In
this mode, you enter conditions associated with If-Then or If-Then-Else statements. This
mode is only active when a condition may be entered. To enter a condition, you must first
select either the THEN line or an existing condition. You can then enter conditions for the IfThen or If-Then-Else statement.
The current toolbar mode is based on the currently selected line in the listing window. As you select
different lines, the toolbar is automatically set to the correct mode.
Other Features
•
After you’ve finished entering all the actions and conditions you want, click the “OK” button. This will
return you to the object or event summary screen from which you entered the actions screen. If you
don’t want to keep the changes you’ve made, select “Cancel”.
•
The “Delete All” button deletes all lines in the listing window.
•
The window title describes the event to which the actions apply.
Configuration Screens
These screens are accessed from the “Configure” menu and configure both the PC program and the
controller:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Serial Port
User Location
Input/Output Port
Controller Time/Date
Controller Settings
Video Remote Control
Thermostat
Security System
Custom Lighting
Caller ID (if using optional caller ID S/W version or HomeVision-Phone/CID add-on))
Expansion Board
IR Transmit Zones (if a multifunction expansion board is connected)
Digital Temperature Sensors
Web Server
Remote Internet Access
Preferences
Serial Port Configuration Screen
This screen is used to set up the PC’s serial port that is used to communicate with the controller. You can
select the communications port (comm port, for short) as well as the baud rate. Several important points
should be noted regarding the serial interface:
14
Chapter 2
Software Overview
•
The controller is initially set to a 19,200 baud rate.
•
If the wrong comm port or baud rate is selected, the PC software will not be able to communicate
with the controller.
•
Changes to this screen only affect the computer settings, not the controller. To change the controller
baud rate, use the controller command screen under the
“Control” menu.
•
These settings are stored in the preferences file on your hard disk.
•
When the PC program starts, it will try to open the chosen serial port. If it is successful, the comm
port number and baud rate will be shown in the main program window. If the port is in use by
another program, an error will occur and will be reported to you. You must then close the port
(usually by quitting the application that opened it) before the software can use it.
User Location Configuration Screen
Use this screen to tell the controller where you live. This information is used to calculate sunrise and sunset
times for your precise location. Several important points should be noted:
•
The controller calculates sunrise and sunset times based on your latitude and longitude. The more
precisely you enter these figures, the more accurate the calculation. Latitude and longitude for many
North American cities are given in Appendix C. Many maps can provide more precise values for
your location.
•
The algorithm used to calculate these times should be accurate to within a few minutes. This
accuracy is maintained throughout the year. This is in contrast to some other home controllers that
can be off by 30 minutes or more at various times of the year.
•
The controller automatically adjusts for daylight savings time. However, you can disable this if you
live in an area that doesn’t use it. European users should check the “European daylight savings
time” option. Europe uses a different start date than the United States (which determines the
standard daylight savings time dates). The U.S. dates are based on the new 2007 standard.
•
Click the “View Data” button on this screen to see your sunrise and sunset times for each day of the
year.
Input/Output Port Configuration Screen
The controller has three sets of ports, each with 8 lines (signals):
•
•
•
Port A (output only)
Port B (input only)
Port C (input or output)
This configuration screen is used to configure port C as an input or output. You should set this properly
before connecting any devices to this port.
WARNING: Do not set port C to an output if you have any devices connected that might be damaged by
being driven to ground or 5 volts. The default condition for port C is as an input, which is the safest
condition. See the chapter on input/output ports for details on using these ports.
Controller Time/Date Configuration Screen
This screen is used to set the time and date of the controller (not the PC). Three buttons are available:
Chapter 2
Software Overview
15
•
“Read Controller” button. This button reads the current time and date from the controller and
displays it. The displayed time is not updated continually, but only when this button is clicked.
•
“Synchronize Controller to PC” button. This button sets the controller to the same time and date as
the computer.
•
“Set Controller to Specific Time” button. This button sets the controller to the time and date you
specify.
Controller Settings Configuration Screen
The controller has a variety of operating modes which can be turned on or off, as well as other settings. This
screen defines the configuration that will be set when the schedule is loaded. The controller is not
immediately set to these values, but only when the schedule is loaded. To change the controller
configuration immediately, use the “Controller Command” screen under the “Control” menu.
The options which are set from this configuration screen are listed below. Descriptions of what each of these
does are provided elsewhere or in the help file. To access context-sensitive help, press the F1 key from any
screen.
Controller Functions (enable or disable them)
X-10 Receive Function
IR Receive Function
Input Port Checking Function
Event Reporting Modes (enable or disable them)
Master Report Mode
Reporting Of Time And Date Along With Events
X-10 Signal Report Mode
IR Signal Report Mode
Input Port Report Mode
Scheduled Event Report Mode
Periodic Event Report Mode
Timer Report Mode
Controller Actions Report Mode
Event Logging Modes (enable or disable them)
Logging Of Time Along With Events
Input Port Log Mode
Scheduled Event Log Mode
Caller ID Log Mode
Thermostat Change Log Mode
Logging Of Time Along With Events
X-10 Settings
1-Phase or 3-Phase Transmission
# of Retries
Infrared Signal Settings
Gap Between Transmissions
Receive Learned IR Signals (if you want HomeVision to receive learned IR signals)
16
Chapter 2
Software Overview
Video Settings
Enable Weather Conditions Screen
Enable Custom TV Menu System
Number of RAM Video Screens
Keep Video System On
PC Communications Settings
Enable automatic reporting to specially-designed PC programs. See the “Auto Report” file for details.
Serial Port Settings
Select ports to use standard HomeVision serial communications protocol
Enable/disable serial port forwarding (if you have a HomeVision add-on serial port)
Other Settings
Daily Clock Adjustment Factor
Serial Input Data Terminator
Temperature Scale (Fahrenheit or Celsius)
Video Remote Control Configuration Screen
The controller uses a set of 16 remote buttons (keys) to navigate through the built-in video screen system.
You use this screen to tell the controller which buttons on your remote you wish to use.
The screen displays three sets of 16 remote key codes, each accessed through a set of “tabs”. You’ll
probably never need to use more than one of these three sets; the others allow different remotes to control
the video screen system. The screen shows Key Codes and Description fields for each of the 16 buttons. It
also shows the Device Code (all keys should have the same Device Code, but each will have its own Key
Code). In order for a button on your remote to control the video screens, its Device Code and Key Code
must be entered in the appropriate fields.
This screen also has a window that displays information on received infrared signals. You can use this to
test whether your remote is set up to transmit the proper IR signal.
This screen can also transmit any of the “standard” infrared signals. You can use this feature if you have a
learning remote that requires “training”.
Detailed procedures for setting up the controller’s infrared transmit and receive capability are provided in the
infrared control chapter.
Thermostat Configuration Screen
The controller has built-in features to control a two-zone Heating, Ventilation, and Air Conditioning (HVAC)
system via the system thermostats. Refer to the "Thermostats" chapter for details.
Security System Configuration Screen
The controller has built-in features to control a security system. Refer to the "Security Systems" chapter for
details.
Chapter 2
Software Overview
17
Custom Lighting Configuration Screen
The controller can be used to control non-X10 lighting systems. This screen is used to configure such
systems. Refer to the “Custom Lighting Systems” section in the “Miscellaneous” chapter for an overview.
Refer to the file “Custom Lighting”, installed in the HomeVision directory, for details.
Caller ID Configuration Screen
This screen is used to configure the caller ID feature. Refer to the caller ID chapter for details.
Expansion Board Configuration Screen
This screen is used to configure a multifunction expansion board, Sylva I/O boards, or other add-on devices.
Refer to other parts of this manual and/or the device documentation for more details.
IR Transmit Zones Configuration Screen
This screen is used to name the infrared transmit zones on a multifunction expansion board. If you are using
this board, refer to its documentation for more details.
Digital Temperature Sensors Configuration Screen
This screen is used to configure digital temperature sensors connected a multifunction expansion board.
Web Server Configuration Screen
This screen is used to configure the Internet web server built into the PC software. This allows HomeVision
to be controlled by a web browser.
Remote Internet Access Configuration Screen
This screen is used to configure the Remote Internet Access capability built into the PC software. This
allows HomeVision software on one computer to communicate with HomeVision software on another
computer, across the Internet, to control HomeVision.
Preferences Screen
This screen configures how the PC software works.
Control Screens
These screens, accessed from the “Control” menu, provide access to many of the controller’s functions.
Through them, you can directly control most of your home automation system. To use these, the controller
must be connected to the computer’s serial port. The screens are:
•
•
•
X-10 Control (and X-10 grid control)
Input/Output Port Control
Macro Control
18
Chapter 2
•
•
•
•
•
•
•
Software Overview
IR Control
Video Control
Thermostat Control
Phone Control (when using HomeVision-Phone)
Flags and Variables Control
Controller Commands
Web Browser (Defaults to showing the built-in web pages if you have this option enabled using the
Web Server screen under the “Configure” menu). This is a simple browser mainly intended to
provide quick access to the HomeVision web pages (although it can display other web pages as
well).
X-10 Control Screen
From this screen you can:
•
•
•
•
Transmit any standard X-10 signal
Perform any of the custom X-10 commands
View received X-10 signals
Access the X-10 grid control screen
Refer to the X-10 chapter for the meanings of the various commands.
X-10 Grid Control Screen
This screen shows the status of all 256 addresses and allows direct control of each address. Note the
following:
•
When you open the screen, the software reads the status of all 256 X-10 addresses from the
controller. This could take several seconds if the serial port is set to a slow baud rate or the
computer is unusually slow.
•
If the "Show Light Level" box is checked, the level of each address is shown in gray scale from black
(full off) to white (full on). A module in the "neutral" state is shown in light blue.
•
Click the left mouse button on any address in the grid. The "Selected Module" field will show the
name and current state of the address.
•
Click the right mouse button on any address in the grid. A pop-up menu will appear allowing you to
send a standard X-10 command to that address.
•
The "Update" button reads the latest module states from the controller and displays it.
•
This screen automatically updates the module states when:
1) You transmit an X-10 signal from this screen.
2) The controller receives an X-10 signal.
It does not update when the controller transmits signals as part of macros, scheduled events, etc.
Use the "Update" button to read the current status after these events.
Input/Output Port Control Screen
From this screen you can:
•
•
View the state of all input and output ports
Set any output port high or low
Chapter 2
•
Software Overview
19
Pulse any output port high or low for a precise length of time
You should note several points about this screen:
•
When you first display the screen, the software will attempt to read the current port states from the
controller. If unsuccessful, an error message will be displayed and you will not be able to control or
read the ports.
•
The port status is not updated automatically. Click the “Read” button to update them.
•
Port C will be set as an input or output based on the settings currently loaded in the controller. To
change this, you must load a new schedule with different settings.
Macro Control Screen
From this screen you can run any macro that has been previously loaded into the controller. You should
note several points about this screen:
•
When you first display the screen, the software will attempt to read the number of macros currently
loaded in the controller. If unsuccessful, an error message will be displayed and you will not be able
to run the macros.
•
You can assign different macros and text descriptions to each of the 30 buttons. To do this, click on
the text descriptions. A new window will open where you can select from the available macros and
change their descriptions.
•
When you click the button to run a macro, the PC will command the controller to run the macro with
the corresponding ID number.
•
The macro numbers and text descriptions for the buttons are stored in the computer schedule file.
They are not loaded into the controller.
NOTE: The schedule file you have opened on your computer should match the schedule loaded into
the controller (or at least the macros should be the same). If not, there’s a chance of running the
wrong macro.
For example, assume you wrote macro #4 which arms your burglar alarm. You also set up this
macro control screen to perform macro #4 and called it “Arm Burglar Alarm”. You then loaded this
into the controller.
Now assume you later revised your schedule and changed macro #4 to turn off you interior lights.
You also changed the macro control screen description of macro #4 and called it “Turn Off Interior
Light”. However, you haven’t yet loaded the revised schedule into the controller. If you click the
button to perform the “Turn Off Interior Light” macro, you will instead arm the burglar alarm. The
new schedule must be loaded before any of the changes will take effect.
IR Control Screen
From this screen you can transmit any infrared signal that has been previously loaded into the controller.
You should note several points about this screen:
•
When you first display the screen, the software will attempt to read the number of IR signals
currently loaded in the controller. If unsuccessful, an error message will be displayed and you will
not be able to transmit the signal.
20
Chapter 2
Software Overview
•
You can assign different signals and text descriptions to each of the 30 buttons. To do this, click on
the text descriptions. A new window will open where you can select from the available signals and
change their descriptions.
•
When you click the button to transmit the signal, the PC will command the controller to transmit the
signal with the corresponding ID number.
•
The signal ID numbers and text descriptions for the buttons are stored in the computer schedule file.
They are not loaded into the controller.
NOTE: The schedule file you have opened on your computer should match the schedule loaded into
the controller (or at least the IR signals should be the same). If not, there’s a chance of transmitting
the wrong signal.
For example, assume you learned the IR signal to control your VCR’s power and saved it to IR
signal #20. You also set up this IR control screen to transmit signal #20 and called it “VCR Power”.
You then loaded this into the controller.
Now assume you later learned a different IR signal to control your TV’s power and also saved it to
signal #20 (replacing the VCR power signal). You also changed the IR control screen description of
signal #20 and called it “TV Power”. However, you haven’t yet loaded the revised schedule into the
controller. If you click the button to transmit “TV Power”, you will instead transmit the old VCR power
signal instead. The new schedule must be loaded before any of the changes will take effect.
Video Control Screen
From this screen you can:
•
•
•
•
•
•
•
Start or stop the video screen system
Change the color, location, or blinking characteristics of the screen
Display any of the built-in screens
Display your own screen
Switch between incoming video (if you’ve connected a video source) and the text display screens
Display the text on a solid background or overlaid onto incoming video
... and more
You should note several points about this screen:
•
If you attempt to display incoming video or overlay text on top of it and you haven’t connected a
video input to the controller, the display will be distorted or solid black.
•
If the display text is erratic or is not clear, adjustment of the video signal level may be necessary.
Refer to the video chapter for this.
This control screen provides the best way for you to learn how the various video commands work. You can
also use it to see what the built-in video screens look like.
Thermostat Control Screen
This screen provides direct control of a two-zone thermostat system. Refer to the "Thermostats" chapter for
details.
Chapter 2
Software Overview
21
Phone Control Screen
When using HomeVision-Phone, you can:
•
•
•
Take the phone off-hook or put it on-hook
Dial a phone number
Show phone status (hook status, ring count, and received touchtones
Flag & Variable Control Screen
From this screen you can:
•
•
•
•
View the state of any flag
View the value of any variable
Change a flag
Change a variable value
Controller Command Screen
From this screen you can send direct commands to do many things:
•
•
•
•
•
Check communications with the controller
Enable or disable any of the controller’s operating, reporting, or logging modes
Control the state of the user LED
Change the controller’s baud rate
... and more
Refer to the controller functions chapter for details on the various controller functions and operating modes.
Advanced Screens
These screens, located under the “Advanced” menu, are used to configure special, enhanced functions:
•
•
•
•
•
AC/Heating TV screen
Security TV screen
Thermostat schedule
Custom TV menu (video main menu page 4)
Custom TV menu system (16 custom menus)
The first two screens are used to set up the corresponding built-in video screens, which can be displayed on
your TV. Details on all these functions are provided elsewhere in the manual.
Custom TV Menu
Page 4 of the video menu system is a user-definable menu. The screen contains 6 blank entries. You can
customize the text that's displayed in each. In addition, you can specify a macro that's performed each time
the user presses the corresponding button on their remote.
This PC screen is used to configure the TV screen. Use the following procedure to set up this menu screen:
1) Create a macro for each item you want in the menu (up to six). If you want to display a custom
screen, your macro must do it.
22
Chapter 2
Software Overview
2) In the PC software, open the "Custom TV Menu" screen under the "Advanced" menu.
3) For each entry you want displayed on main menu page 4:
A) Enable the menu item by checking the check box (unchecked entries will display "Unused").
B) Enter the text to be displayed next to the menu number (up to 22 characters)
C) Select the macro you want to perform when the user presses the corresponding remote button.
4) Click OK.
5) Load the schedule into the controller.
That's all there is to it. You might want to first test this out by creating a simple macro (perhaps flashing the
controller's "User" LED). Once you're comfortable with how it works, you might try creating your owns
screens and accessing them from here.
Other Screens
These screens are located under the “Other” menu and provide a variety of functions:
•
•
•
•
•
•
•
•
•
Schedule Viewer
Terminal Emulator
IR Signal Learning
IR Signal Testing
Serial Command Testing
Status Screen
View Messages
Read Event Log
Debug Tools
Schedule Viewer
The Schedule Viewer screen displays a complete list of all the “actions” contained in your schedule. It is
used primarily to quickly view or search the entire schedule. You will normally not use this to actually create
your schedule (use the various screens under the “Objects/Events” menu for that). This screen is accessed
from the "Other" menu. This screen lists all schedule actions in a single scrolling window. It works as
follows:
•
You cannot enter, delete, or edit the actions from this screen. However, double-clicking on a line
opens the Actions Entry Screen for the event, where you can edit it. After you click "OK", the
schedule viewer window will be updated automatically.
•
When you access the Actions Entry Screen from the individual object summary screens, schedule
changes are not automatically shown in the Schedule Viewer screen. You have to select the
"Update Now" menu option to update it.
•
The "Find" menu allows you to search for text strings in the schedule.
•
The "Output to File" menu writes the listing to a text file.
Chapter 2
Software Overview
23
Terminal Emulator Screen
This screen acts as a simple terminal emulator to communicate directly with the controller. It has two main
uses:
1) You can view serial transmissions from the controller. This can be useful in several instances:
•
When you apply power to the controller, you can make sure that it’s working by looking for
the serial transmissions from it. If you see nothing, something is not set up properly. If you
see only unrecognizable characters, the PC’s baud rate setting is probably incorrect.
•
When testing your schedule, you can include commands for the controller to transmit serial
messages. You can view these messages with the terminal emulator and verify things are
happening as you expect.
2) You can send commands directly to the controller. You probably won’t need to use this capability,
as the other control screens can handle almost every command you’ll want. However, if you’re
writing your own program to control the controller, you can use this screen to test out the command
format and make sure you know exactly how it works.
Several points should be noted about this terminal emulator:
•
To send commands to the controller, enter ASCII text in the top text box, then press the carriage
return. The entire string of text, including the carriage return, will be sent at one time when you
press the carriage return. You can use the backspace key or edit the text to get it right before you
send it. Refer to chapter 16, Serial Interface, for more details.
•
The large window displays the data received from the controller. It does not show the data you send
to the controller.
•
The normal command response from the controller includes some unprintable characters. These
are shown in the window as a square box.
You can also use any standard terminal emulator or communications program to communicate with the
controller if you wish.
IR Learn Screen
Use this screen to teach infrared signals to the controller.
audio/video equipment
It can then transmit them to control your
IR Test Screen
With this screen, you can:
•
Transmit any infrared signal that is currently loaded in the controller.
•
Transmit any “standard” format IR signal. You can transmit a signal with any Device Code and Key
Code. You can use this to “train” a “learning” remote, which can then be used to control
HomeVision.
•
When transmitting signals through a Multifunction Expansion Board, you can select which zone(s)
you want to transmit out of.
•
Determine the Device Code and Key Code of any standard format IR signal that you transmit to the
controller. The screen displays this information for infrared signals that the controller receives.
24
Chapter 2
Software Overview
Refer to the infrared control chapter for a description of the various IR signal formats and how to use them.
Serial Command Test Screen
The HomeVision software can play wave (sound) files and run other programs on your PC. It can also write
text to a file on the PC. The commands to so this are sent from the controller to the PC via the serial
interface. You can use this screen to simulate a serial command and test it. This way, you can be sure the
command will work when you send it from the controller. Refer to the serial chapter for details on the
available commands.
Status Screen
This screen provides information on the current schedule and the controller’s current operating modes.
One tab displays information about the current state of the controller:
•
To read the current state of the controller, click the “Read Status” button.
updated when you click this button; it does not update automatically.
The display is only
•
One section shows which operating modes are enabled. To change a mode, use the “Controller
Command” screen under the “Control” menu.
•
Another section shows which reporting modes are enabled. These determine which events the
controller will report over the serial interface. To change a mode, use the “Controller Command”
screen under the “Control” menu.
•
The third section shows other information about how the controller is operating. The following data
is provided:
-
File Name, Date, and Time. This shows which schedule file was last loaded into the
controller. The time and date are of the file itself, not the time the schedule was loaded into
the controller.
-
Controller Running (or Halted). This indicates whether the controller is currently running
or is halted. It will be halted when loading a schedule, after it executes a “Halt Controller”
command, or if an error occurs.
-
Self-Test Passed (or Failed). This indicates whether the controller’s most recent self-test
(performed every time power is applied) passed or failed. If it fails, the controller will be
automatically halted to prevent possible erratic operation. It will also tell you which test(s)
failed.
-
TW-523 OK (or Error). This indicates whether a TW-523 module, or equivalent, (used to
receive and transmit X-10 signals) is connected and functioning properly. This bit should
match the TW-523 LED on the controller’s front panel.
-
RAM OK (or Error). This indicates whether the controller’s RAM is properly loaded. This
error could occur if a schedule download is aborted before it completes. If you see this
error, you must reload your schedule.
-
Clock OK (or Error). This indicates whether the controller’s internal clock is running
properly. If the clock ever stops running due to an error, it will be reset to January 1, 1990
and restarted.
-
No Controller Error (or Error ##). During normal operation, the controller constantly
checks for error conditions. If one occurs, it records the error number. Errors can occur for
a variety of reasons and do not necessarily mean there is a real problem. Refer to the
"Miscellaneous" chapter for details on error messages.
Chapter 2
•
Software Overview
25
PROM Version. This shows the version of PROM in the controller.
There is also a “Test Add-On Devices” button. When performed, the HomeVision controller will test
communications with each of the possible HomeVision add-on boards (Multifunction Expansion
Board, HomeVision-Serial, and HomeVision-Phone) and report the results. This provides a quick
way to verify these boards (if you have any) are connected and functioning properly.
The other tab displays information about the schedule currently open on the PC:
•
•
Two sections display the amount of controller memory used by your schedule. This data is only
available after loading a schedule into the controller. Until it’s loaded, the software cannot determine
how many bytes of RAM it will take. The two values shown are:
-
Actions RAM. This memory stores all of your conditions and actions. On average, each
line in your schedule uses about 4 or 5 bytes of memory. Commands to display or transmit
long text strings require more, as each character takes one byte. Approximately 4,000 bytes
of memory are available (the exact amount is shown on the screen). This should hold 8000
or more lines of a typical schedule. If you write a schedule that comes close to using all this
memory, we’d love to hear about it!
-
IR Signal RAM. This memory stores your “learned” infrared signals. Signals are stored by
recording the lengths of the individual pulses. Typical signals require from 60 to 200 bytes.
Approximately 45,000 bytes are available (the exact amount is shown on the screen). This
should be more than enough to hold 255 typical signals.
The other section displays the number of object names to be loaded into the controller. The
controller can hold up to 512 names. You can you this screen to keep track of how many you have.
See the "Miscellaneous" chapter for more information on object names.
View Messages Screen
The controller can send text messages to the PC for display in this window. The window will show the
message, along with its date and time (based on the computer's clock). This can assist in debugging your
schedule, and for alerting the computer user to important events. Refer to chapter 18 for more information.
Read Event Log Screen
The controller can record events in an internal 256-line log which can be displayed on the TV. Use this
screen to read the log and display it on the PC.
Debug Tools Screen
This screen is used to test serial communications and write the controller's RAM to disk. You should never
need to use this screen unless we ask you to help us debug a problem.
Chapter 3
Quick Start
27
CHAPTER 3: QUICK START
This section describes the necessary steps for getting the controller initially up and running. It explains how
the controller should act at each point so you can verify it’s working properly.
1) Make sure you have everything you need
The following items are supplied with the controller:
•
•
•
•
•
•
•
•
Control unit
TW-523 (or equivalent) X-10 interface module
Phone cord
Power transformer (9VDC, 2.1mm, center tap positive, 300mA or higher current rating)
Serial cable (DB-9 male to DB-9 female)
Installation CD (or setup file downloaded from our web site at www.csi3.com)
This owner’s manual
User registration card
To run the PC software, you need a computer with the following capabilities:
•
•
•
•
•
IBM-compatible computer, 80486 or higher, with 64 Mbytes RAM minimum (recommended
configuration is Pentium 300MHz with 128 Mbytes RAM)
VGA or better monitor
Windows 95/98/2000/NT/XP operating system
Hard disk with at least 16 Mbytes free
One free serial port (minimum of 19,200-baud)
You may also want to have these handy:
•
•
•
•
•
•
An X-10 transmitter (such as a mini-controller) so you can verify that the controller can receive X-10
signals.
An X-10 receiving device (such as a wall switch or lamp module) so you can verify that the controller
can transmit X-10 signals.
If you want to view the video screen system, you’ll need:
- A TV with a video input jack
- A video cable with RCA plugs to connect the TV to the controller.
If you want to provide video input to the controller, you’ll need:
- A video source (such as VCR, camcorder, video game, etc.) with a video output. This
requires an Audio/Video type output jack, not an RF coaxial cable output.
- A second video cable with RCA plugs.
A programmable or learning infrared remote control.
A Phillips screwdriver in case you need to adjust the video signal level from within the controller.
2) Make controller connections
•
Plug the power transformer into a 110VAC (standard for the U.S.) wall outlet and the connector end
into the controller's “Power” jack. Several controller LEDs will flash briefly, then only the “On” LED
should be lit. If it doesn’t light, refer to the "Trouble-shooting" chapter.
•
Plug the TW-523 module into a 110VAC wall outlet. Use the phone cable to connect the TW-523 to
the “TW-523” jack on the controller. The controller LED labeled “TW-523” should light.
•
Use the serial cable (with 9-pin connectors) to connect the controller to a serial port on your PC. If
your computer only has a 25-pin serial connector, an adapter will be needed.
28
Chapter 3
Quick Start
•
If you wish to view video screens, you must connect the video output jack to a video input on your
TV or VCR. Any standard phono cable with RCA-type jacks can be used. The audio jacks on your
equipment are not used.
•
Connections for video input, infrared output, and input/output ports are not covered in this “Quick
Start” section. Refer to their specific chapters when you’re ready to hook them up.
3) Install PC software
To install the software:
A) Start Microsoft Windows.
B) Insert setup CD into drive.
C) Run the setup program and follow the on-screen instructions.
4) Run PC software
To run the software:
A) From the Start Menu, open the HomeVision group and select the HomeVision application.
B) After the program starts, select “New Schedule” under the HomeVision “File” menu to start a new
schedule. Or select “Open Schedule” and select an existing file (such as the example file
“example.haf” located in the same directory where you installed HomeVision).
5) Configure serial interface
Select “Serial Interface” from the “Configure” menu. Select the communications port the controller is
connected to. Set the baud rate to 19,200 (the controller’s default setting).
6) Verify serial interface and controller are operating
Select “Terminal Emulator” from the “Other” menu. Remove power from the controller and then reapply it.
The controller should transmit a message to the PC, which displays the message in the terminal emulator
window. If unreadable characters appear, the baud rate is probably incorrect. Verify that the PC is set to
19,200 baud in the “Serial Interface” screen (under the “Configure” menu). If it is, it’s possible the controller
has been set to a different speed. Try changing the PC to the other speeds. If this doesn’t work, refer to the
trouble-shooting chapter.
7) Verify controller can receive serial commands
Select “Controller Command” from the “Control” menu. In the command list box, select the command “Turn
User LED On”. Send this command to the controller by clicking the “Send Command” button. You can also
send it by double-clicking the command itself. The controller LED labeled “U” (short for User) should light
up. Send the command “Turn User LED Off” and verify the LED goes off. This LED can be used for any
purpose you choose in your schedule.
Chapter 3
Quick Start
29
8) Set controller time and date
Select “Controller Time/Date” from the “Configure” menu. Click the “Read Controller” button.
controller’s time and date will be read and displayed. To change the time or date, either:
The
1) Click the “Synchronize Controller to PC” button to set the controller to the same time and date as the
computer, or
2) Enter a specific time and date and click the “Set Controller to Specific Time” button.
9) Verify X-10 operation
Select “X-10 Control Screen” from the “Control” menu. To verify the controller can receive X-10 signals:
•
Use an X-10 transmitter (such as mini-controller) to transmit a signal through your house.
•
The X-10 RX LED on the controller’s front panel should blink as it receives the signal.
•
If properly configured, the controller will report the signal to the PC. The simulated LED on the
control screen should blink and a message should be displayed in the message window. This
message will show the received X-10 signal.
NOTE: Several items must be set up properly before the controller can report the signal to the PC:
-
The controller must be connected to the proper PC serial communications port and set to the
proper baud rate.
-
The controller “Master Report Mode” and the “X-10 Report Mode” must be enabled. You can
verify they are set by opening the status screen under the “Other” menu and clicking on the
“Read Status” button. You can enable these modes from the “Controller Command” screen
under the “Control” menu.
If these are properly set but the X-10 control screen still does not report X-10 signals being received,
refer to the trouble-shooting chapter.
To verify the controller can transmit X-10 signals:
•
Select a house code and unit code from the left side of the control screen.
•
Select a command (such as ON or OFF) from the “Standard X-10 Commands” list.
•
Click the “Send Complete Command” button to transmit it.
•
The X-10 TX LED on the controller’s front panel should blink as it transmits. The X-10 RX LED
should also blink, as the controller will receive its own transmission.
•
Any X-10 device(s) set to the selected house and unit code should respond.
You can also test the other X-10 commands available from this screen if you wish. All commands are fully
functional even if you haven’t loaded a schedule into the controller.
10) Verify video output
This step is only applicable if you have the video output connected; if not, continue to step 11.
30
Chapter 3
Quick Start
•
The controller initially contains a sample schedule loaded at the factory. This schedule automatically
displays the main menu of the video screen system upon power-up.
•
Set your TV to view the controller’s video output. The main menu should appear as white text on a
blue background. If the text is blurry or the screen appears scrambled (like a scrambled TV
channel), the video sync level requires adjustment. The video chapter explains how to make this
adjustment. If there appears to be no video output, remove and then restore power to the controller.
If there is still no video, refer to the trouble-shooting chapter.
•
Select “Video Control Screen” from the “Control” menu.
•
You can view other screens using the “Display Video Screen Number” button on the “Video Control
Screen”. Enter a screen number between 1 and 58 and click the button. (Note that numbers 1 to 58
will bring up a built-in screen display. Entering 0 will bring up a blank screen.)
To try creating your own custom screen:
•
Select screen number 0. The screen should go blank.
•
To display the current time or date, click the appropriate button.
•
To display a string of text, enter the text and click the “Write Text” button.
•
To type text directly on the screen, select the “Typewriter” mode by clicking in the Typewriter text
field. Press a key and the character will be displayed on the screen. Letters and numbers will
appear just as you type them. Many of the other display characters do not match the keyboard keys.
Experiment with the different keys to learn what display characters are available.
•
If you’ve connected an external video signal to the controller’s video input jack, you can switch
between this signal and the On-Screen Display (OSD). Set the video switch to the external video
position in the “Settings” window and click the “Load Settings Into Controller” button. The externally
supplied video signal will be routed to the video output. To return to the On-Screen Display, return
the switch to the internal video position.
•
You can experiment with the other commands on this screen at your leisure.
11) Verify infrared remote receive capability
To verify the controller can receive IR signals:
•
Select “Video Remote Control” from the “Configure” menu.
•
Aim a standard remote control device at the controller’s front panel and press any key. The
controller’s “IR RX” LED should light as the signal is received. If it doesn’t, refer to the troubleshooting chapter.
•
If properly configured, the controller will report the signal to the PC. The simulated LED on the
control screen should blink immediately after the signal is received. If the signal happens to match
the “standard” signal format used by the controller, the signal’s Device Code and Key Code will be
displayed in the window. If the signal is a different format, question marks will be shown in these
fields.
NOTE: Several items must be set up properly before the controller can report the signal to the PC:
-
The controller must be connected to the proper PC serial communications port and set to the
proper baud rate.
-
The controller “Master Report Mode” and the “IR Report Mode” must be enabled. You can verify
these are set by opening the “Status Screen” under the “Other” menu and clicking on the “Read
Chapter 3
Quick Start
31
Status” button. You can enable these modes from the “Controller Command” screen under the
“Control” menu.
If these are properly set but the IR control screen still does not report IR signals being received, refer
to the trouble-shooting chapter.
12) Setting Up Your Remote To Control The Video Screens
The controller uses a set of 16 remote buttons (keys) to navigate through the built-in video screen system.
You have many options for setting this up, as detailed in chapter 14, Infrared Control. However, this section
provides a brief description of how to set a programmable remote to the controller's default setting.
1) Open the video IR control configuration screen under the “Configure” menu. This screen displays
three sets of 16 remote key codes, each accessed through a set of “tabs” (you’ll probably never
need to use more than one of these three sets; the others allow different remotes to control the video
screen system).
The screen shows Key Codes and Description fields for each of the 16 buttons. It also shows the
Device Code (all keys should have the same Device Code, but each will have its own Key Code). In
order for a button on your remote to control the video screens, its Device Code and Key Code must
be entered in the appropriate fields, then loaded into the controller. Initially, these are set to the
controller’s default remote keys.
2) The default device is a Hitachi TV remote, but you can set any programmable remote to transmit the
same signals. Look up the brand name of your programmable remote in the list below. The number
beside it is the code for the Hitachi TV. Set your remote to this code using the procedure in your
remote’s owner’s manual.
One For All
Control
Emerson
Gemini
RCA
Sony
Magnavox
Code 145
Code 145
Code 145
Code 100
Code 047
Code 31
Code 0030
If you have a different brand of remote, look up the code number for a Hitachi TV in your remote’s
owner’s manual. The manual will probably list several codes. Try each one until you find one that
works (testing it as described below).
3) To test the 16 video screen control buttons, push each of the corresponding buttons on your remote
(one at a time!). The window’s simulated “LED” will blink and the Device Code and Key Code for the
received signal will be shown. Compare these to the codes listed beside each of the 16 functions. If
all 16 buttons match, you’re ready to control the video screens. If some of the buttons use different
Key Codes, you can change the entry to match the actual received Key Code. Some points to note:
•
All signals from a specific remote should have the same Device Code. This code should
match the one shown in the Device Code text box.
•
To assign a different remote key to a function, enter the signal’s actual Key Code in the text
box next to the function. If you make any changes, you will have to reload the schedule into
the controller.
•
If your remote is transmitting different Device and Key Codes than those shown, it’s not a
problem. Just enter the actual Key Codes in the text boxes corresponding to each function,
and the Device code in the Device Code text box. However, if you make such changes, you
will have to reload the schedule.
32
Chapter 3
Quick Start
•
Most remotes don’t have a “Cancel” button; we’ve assigned this function to the “Mute”
button. You may want to move this to a different button that works better with your remote’s
keypad layout.
•
If you make any changes to this screen, you’ll need to reload the schedule into the
controller. To do this, choose “Load Schedule” from the “File” menu. Click the “Load” button
to load the schedule. You should also save the schedule (using the “Save” button under the
“File” menu).
•
The settings from this configuration screen are saved along with your schedule. If you
create a new schedule, you’ll have to set these again.
4) If all 16 buttons are working, you can now use the remote to navigate through the video screen
system (assuming you have the video output connected to your TV). You can then:
•
•
•
•
•
•
Display the video screen system on your TV (using the video control screen).
Start the video screen system with the Channel Up key.
Stop the video screen system with the Channel Down key.
Use the Volume Up and Down keys to move between screen menu pages.
Use the number keys to select from the lists.
Use the Enter and Cancel keys to confirm or cancel an action.
Chapter 4
Programming Language
33
CHAPTER 4: PROGRAMMING LANGUAGE
This chapter describes the programming language used to define actions and conditions. These actions and
conditions are the heart of your home automation system. They specify what happens when any event
occurs. You enter actions using the “actions entry screen”.
Access to this screen is described in
subsequent chapters.
Calling these actions and conditions a “programming language” probably makes it sound more complex that
it really is. You don’t have to type in commands with bizarre names and confusing syntax. Instead, you just
choose the desired action from a toolbar or list with a few mouse clicks. The action (or condition) will be
displayed in the listing window in English-like text. The meaning of most actions and conditions will be
immediately obvious.
Actions
“Actions” are simply commands that perform a certain action when they are executed. The toolbar on the
actions entry screen allows you to enter actions for many types of items, as listed below. The actions that
are available for each item are described in their individual chapters.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
X-10
Scheduled Events
Periodic Events
Timers
Wait Commands
Delay Commands
Flags
Variables
Input Ports
Output Ports
Video Commands
Infrared Signals
Controller Commands
Serial Interface Commands
Macros
Caller ID Commands
Thermostat Commands
Security System Commands
Data Logging Commands
Weather Data Commands
Phone Commands
If-Then Statements
If-Then-Else Statements
The last two of these items (If-Then and If-Then-Else statements) aren’t really actions. However, these
toolbar buttons are used to initially enter these statements.
Conditions
“Conditions” are used as part of If-Then and If-Then-Else statements. The toolbar on the actions entry
screen allows you to enter conditions for many types of items, as listed below. The specific conditions that
are available for each item are described in their individual chapters.
•
X-10
34
Chapter 4
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Programming Language
Time Conditions
Date Conditions
Special Time/Date Conditions
Timers
Flags
Variables
Input Ports
Output Ports
Controller Conditions
Serial Interface Conditions
Thermostat Conditions
Security System Conditions
Data Logging Conditions
Weather Conditions
Phone Conditions
If-Then-Else Statements
Format
If-Then and If-Then-Else statements are used when you only want to perform an action under certain
conditions. By including the action(s) within one of these statements, you can limit when they are performed.
An If-Then statement has the following format:
If
condition(s)
Then
action(s)
End If
One or more conditions must be between the “If” and “Then” statements. One or more actions must be
between the “Then” and “End If” statements. If the condition(s) are met (i.e., they are true), the action(s) will
be performed.
An If-Then-Else statement has a similar format:
If
condition(s)
Then
action(s)
Else
action(s)
End If
An If-Then-Else statement has two sets of actions. If the condition(s) are met, the first set of actions
(between “Then” and “Else”) will be performed. If the condition(s) aren’t met, the second set of actions
(between “Else” and “End If”) will be performed.
This is an example of how an If-Then-Else statement might appear in schedule:
If
Time is After Sunset
AND Flag #2 (In Home Mode) is Set
Then
X10: A5 (Outside Entry Light) ON
Else
X10: A5 (Outside Entry Light) OFF
End If
You can also “nest” If-Then and If-Then-Else statements. Nesting means including another If-Then
statement inside the “Then” or “Else” parts of another. You can nest up to 15 levels deep.
Chapter 4
Programming Language
35
Entering Conditions
When you click the If-Then button on the toolbar, three lines will be entered in the listing window:
If
Then
End If
When you click the If-Then-Else button, four lines will be entered:
If
Then
Else
End If
To give meaning to these statements, you must enter one or more conditions between the “If’ and “Then”
lines. The toolbar is used to enter these conditions. The toolbar buttons enter actions and conditions
BETWEEN the currently selected line and the line above it. Therefore, to enter a condition between the “If”
and “Then” lines, you must first select the “Then” line. This puts the toolbar in the “Conditions” mode,
allowing you to enter conditions.
Compound Conditions
You can enter more than one condition between the “If” and “Then” lines. Each condition will be shown on a
separate line. Conditions are joined together with “OR” or “AND” statements. This type of condition is called
a “compound condition”.
Each condition between the “If” and “Then” statements except for the first condition begins with the word
“OR” or “AND”. These specify the logic used in evaluating the conditions. You specify which type on the
condition edit screen. An option box appears at the bottom of each edit screen for you to select whether it’s
an “AND” condition or an “OR” condition.
Evaluation Logic
Compound conditions are evaluated according to the following rules:
•
Conditions joined by “AND” must all be true in order for the compound condition to be true. For
example:
If
Flag #1 (In Sleep Mode) is Set
AND Timer #4 (Go To Bed Delay) is Running
Then
This is true only if BOTH conditions are true (i.e., the flag is set and the timer is running). If either
condition is false, the compound condition is false and the “then” actions will not be performed.
Similarly,
If
Flag #1 (In Sleep Mode) is Set
AND Timer #4 (Go To Bed Delay) is Running
AND Time is After Sunset
Then
is true only if all three conditions are true.
36
Chapter 4
•
Programming Language
If the conditions are joined by “OR”, only one must be true in order for the compound condition to be
true. For example:
If
Flag #1 (In Sleep Mode) is Set
OR Timer #4 (Go To Bed Delay) is Running
Then
This is true if either condition is true (i.e., the flag is set or the timer is running). If both conditions are
false, the compound condition is false. Similarly,
If
Flag #1 (In Sleep Mode) is Set
OR Timer #4 (Go To Bed Delay) is Running
OR Time is After Sunset
Then
is true if any one or more of the three conditions are true.
•
When “OR” and “AND” conditions are combined, the “AND” conditions are evaluated as if they were
surrounded by parentheses. Here are some basic examples of how this works.
Example 1:
If
Condition A
OR Condition B
AND Condition C
Then
This is evaluated as:
Condition A
OR
(Condition B AND Condition C)
This will be true if Condition A is true, or if BOTH B and C are true.
Example 2:
If
Condition A
OR Condition B
AND Condition C
AND Condition D
Then
This is evaluated as:
Condition A
OR
(Condition B AND Condition C AND Condition D)
This will be true if Condition A is true, or if ALL of conditions B, C, and D are true.
Chapter 4
Programming Language
37
Example 3:
If
Condition A
AND Condition B
OR Condition C
Then
This is evaluated as:
(Condition A AND Condition B)
OR
Condition C
This will be true if BOTH A and B are true, or if C is true.
Example 4:
If
Condition A
AND Condition B
OR Condition C
AND Condition D
Then
This is evaluated as:
(Condition A AND Condition B)
OR
(Condition C AND Condition D)
This will be true if BOTH A and B are true, or if BOTH C and D are true.
Example 5:
If
Condition A
AND Condition B
OR Condition C
OR Condition D
AND Condition E
AND Condition F
Then
This is evaluated as:
(Condition A AND Condition B)
OR
Condition C
OR
(Condition D AND Condition E AND Condition F )
•
In certain situations, you may have to enter a condition more than once to achieve the desired effect.
For example, assume you want to perform an action if an X-10 module is on and if either of two flags
is also set. In other words, you want:
X-10 module A1 is on AND (Flag #1 is set OR Flag #2 is set)
The following conditions will not give you the desired effect:
38
Chapter 4
Programming Language
If
X-10 module A1 is on
AND Flag #1 is set
OR Flag #2 is set
Then
This compound condition will be evaluated as follows:
(X-10 module A1 is on AND Flag #1 is set)
OR
Flag #2 is set
The first part of the condition is right, as it’s true if the X-10 module A1 is on and Flag #1 is set.
However, the second part isn’t correct. In this case, it will be true whenever Flag #2 is set,
regardless of the state of the X-10 module. This isn’t the desired behavior, as you only want it to be
true if Flag #2 is set AND the X-10 module is on.
To get the desired behavior, you must enter the X-10 module condition along with each flag
condition, as shown:
If
X-10 module A1
AND Flag #1 is
OR X-10 module
AND Flag #2 is
Then
is on
set
A1 is on
set
This will be evaluated as follows:
(X-10 module A1 is on AND Flag #1 is set)
OR
(X-10 module A1 is on AND Flag #2 is set)
This gives the desired results.
Chapter 5
X-10
39
CHAPTER 5: X-10
Introduction
X-10 signals are transmitted over the 110VAC power lines within the house. These signals are used to
control equipment located throughout the house. The controller provides the following X-10 features and
capabilities:
•
Can receive and transmit all X-10 commands.
•
Can communicate with two-way X-10 thermostats from RCS, use preset dim commands with PCS
lighting modules, LM14A modules, and Leviton 6381 switches, and read the status of two-way X-10
lights. Also supports lighting "scenes" with newer X-10 devices.
•
Maintains a state table showing the On/Off state and level of all 256 X-10 addresses (modules).
•
Can be configured to automatically perform a set of actions when any On or Off signal is received
from another device.
•
Can “refresh” an individual module or entire house code with a single command.
•
Can perform actions when a sequence of X-10 signals is received..
•
Module states can be used as conditions in If-Then and If-Then-Else statements.
•
Module states can be viewed and changed from the video screen system.
•
Modules can be set to specific states in the event of a power failure.
•
Modules states can be read and changed from the serial interface.
Throughout this manual, we refer to X-10 “modules”. There are many types of modules:
•
•
•
•
•
•
•
Wall switches to control lights
Plug-in appliance modules (both 110VAC and 220VAC) into which you can plug other devices
Relay interface modules that can open or close relay contacts when a specific X-10 code is received
Powerflash modules that can sense opened or closed contacts and transmit an X-10 code in
response
Chime modules
Thermostats which respond to X-10 commands
And others ...
As you can see, there are a wide variety of X-10 compatible items available. We use the term “modules” to
refer to any device which can receive or transmit X-10 signals.
Controller X-10 Operation
The controller constantly monitors the AC power line in your home, checking for X-10 signals. It uses the
TW-523 (or equivalent) Two-Way Power Line Interface device manufactured by X-10 (USA) Inc. for this
purpose. The X-10 code format is patented, and the TW-523 or similar device must be used for this
interface. A TW-523 is provided with the controller. Any X-10 signal that is detected on the AC power line
by the TW-523 is passed on to the controller.
40
Chapter 5
X-10
The controller maintains an internal table that keeps track of the current state of all X-10 devices. Whenever
an X-10 signal is detected by the TW-523, the controller updates the state table to reflect the new state. The
controller also updates the table whenever it transmits an X-10 signal. The controller always keeps track of
all 256 house/unit codes regardless of which ones you use. Two separate parameters are tracked:
•
ON/OFF Status. All devices are either ON or OFF. Devices that are ON will also have a level of 0
to 16. Devices that are OFF will have their level set to 0.
•
Level. Many lights and lamp modules can be dimmed to levels between full on and full off. The
controller keeps track of the current level by assigning it a number from 0 to 16. Level 16 is full on.
Lower values represent decreasing brightness levels. Modules that cannot be dimmed will always
have a level of 16 when on.
Many lights/modules can be dimmed all the way down to zero. This is not the same as turning it off. A light
that is on at level 0 will respond to brighten commands by brightening one step at a time. Most lights that are
off will go to full brightness when they receive a brighten command. There are some X-10 compatible
lighting control modules available that can be directly set to any desired level without first going to full
brightness.
X-10 Event Triggers
The controller can be set up to automatically perform a set of actions when a specified X-10 signal is
received (but not when HomeVision transmits). Any ON or OFF signal from any of the 256 X-10 codes can
easily be used as a trigger. To set this up from the PC software:
•
Open the “X-10 Modules” screen under the “Objects/Events” menu.
•
Select the module (house code and unit code) that you want to trigger the action.
•
Double-click on the “On Actions Defined” or “Off Actions Defined” field, depending on which signal
(ON or OFF) you want. The actions entry screen will appear.
•
Enter the actions and conditions, then click “OK”. You’ll return to the X-10 summary screen.
•
Enable the actions by checking the appropriate “Actions Enabled” field. The actions are
automatically enabled after you enter them, but you’re free to enable or disable them at any time.
•
Load the new schedule into the controller.
Once set up in this fashion, the controller constantly checks for the specified X-10 signals. When one is
received, the controller will immediately perform the specified actions. If you want other X-10 signals to
trigger actions, you can use "X-10 Sequences".
X-10 Codes
X-10 modules are uniquely identified by House Codes and Unit Codes. Function codes specify the action
that should be performed by the selected module. These codes are briefly described below:
•
House Codes: There are 16 house codes represented by the letters A through P.
•
Unit Codes: There are 16 unit codes numbered 1 through 16. Each X-10 compatible device is
addressed with one house code and one unit code. Since each of the 16 house codes has 16 unit
codes, a total of 256 (16 x 16) unique devices can be addressed in the X-10 protocol.
•
Function Codes: These codes specify the action that will occur for the addressed device(s). Some
function codes act on individual modules (selected by house code and unit code), while others act
on all devices with the same house code.
Chapter 5
X-10
41
There are 13 function codes available, as listed below. The first seven are by far the most widely
used; most devices don’t support the other six. However, the controller can transmit and receive all
of these codes.
-
On
Off
Brighten
Dim
All Lights On (operates on entire house code)
All Units Off (operates on entire house code)
All Lights Off (operates on entire house code)
Pre-Set Dim
Hail Request (operates on entire house code)
Hail Acknowledge
Status Request
Status Is On
Status Is Off
X-10 Signal Transmissions
The controller provides well over 40 different commands for transmitting X-10 signals. This gives you a wide
variety of options for controlling X-10 devices in your schedule. To make the best use of these, it’s important
to understand how X-10 signals are transmitted.
There are two different types of X-10 signal transmissions:
•
House/Unit Codes. This transmission consists of a single house code and unit code. It is used to
select which X-10 device the command is intended for. Any module that receives a house/unit code
that matches its own will “arm” itself in preparation for a subsequent house/function code command.
It is usually possible to send multiple house/unit codes in succession, arming multiple devices. All
the armed devices will then respond at the same time to a subsequent house/function code
command. This signal takes approximately four-tenths of a second to transmit over the power line.
•
House/Function Codes. This transmission consists of one house code and one function code.
Some of the function codes will perform their function on the entire house code. However, most only
act on individual devices that have been armed by prior house/unit code commands. This signal
takes approximately four-tenths of a second to transmit over the power line.
Examples
A few examples of X-10 signals transmitted from the controller or other devices will help clarify this:
•
Example: You press the button Unit 5 On on a mini-controller that is set to house code A (with
HomeVision, the command “X-10 A-5 On” in your schedule would do the same thing).
X-10 Transmissions:
First, the house/unit code combination of house code A and unit code 5 is transmitted. This
arms any device set to A-5. Second, a house/function code combination of house code A and
the function code On is transmitted. Module A-5 will then turn on since it was previously armed
and the house/function code command was addressed to its house code (A).
•
Example: After turning device A-5 on in the previous example, you press the Dim button on the
same mini-controller.
42
Chapter 5
X-10
X-10 Transmissions:
A house/function code combination of house code A and function code Dim is transmitted.
Module A-5 will remain “armed” after being turned on and will therefore respond to the Dim
command by dimming one level. If you continue to press the Dim button, the same
house/function code command will be sent repeatedly, dimming the module (presumably a light).
•
Example: From the X-10 control screen in the PC software or from commands in your schedule, you
send the following signals:
-
House/Unit Code: A-5
House/Unit Code: A-7
House/Unit Code: A-8
House/Function Code: A-On
House/Function Code: A-Dim
Effect:
First, the three house/unit code combinations arm modules A-5, A-7, and A-8.
The
house/function code combination A-On causes all three modules to turn on simultaneously. The
subsequent A-Dim command causes all three modules to simultaneously dim once.
•
Example: From the X-10 control screen in the PC program or from commands in your schedule, you
send the following signals:
-
House/Unit Code: A-5
House/Function Code: A-On
House/Unit Code: A-7
House/Function Code: A-On
House/Unit Code: A-8
House/Function Code: A-On
House/Function Code: A-Dim
Effect:
Unlike the previous example, these modules will not respond simultaneously. First, module A-5
will be turned on. Approximately 1 second later, A-7 will go on. In another second, A-8 will come
on. The final Dim command will cause only A-8 to dim once.
•
Example: You press the button All Lights Off on a mini-controller that is set to house code A.
X-10 Transmissions:
A house/function code combination of house code A and function code All Lights Off is
transmitted. All modules which have a house code of A will immediately turn OFF. Note that no
house/unit code transmission is required. This command affects all devices with the specified
house code, regardless of their unit code.
X-10 Transmission Settings
X-10 commands can be transmitted over either 1 or 3 phases of the AC power line. Most residential
applications only need to transmit on one phase. However, in some instances, you may need 3-phase
transmission. You can set the mode from the controller configuration screen under the “Configure” menu.
Chapter 5
X-10
43
You can also include commands in your schedule to change the method at any time. These commands are
located under the controller command button on the actions entry screen.
The number of retries when an X-10 transmission fails is variable from 0 to 31. You can set this from the
controller configuration screen under the “Configure” menu.
X-10 Lighting Scenes
Some X-10 and Leviton brand devices, like the LM14A lamp module and the Leviton 6343 wall switches,
support “scenes”. A scene is a group of X-10 modules that can all be set to a predetermined level with a
single command. Scenes require the use of X-10 “extended codes”, which HomeVision can transmit.
HomeVision supports scenes by allowing you to add modules to a scene, remove them from a scene, and
execute the scene.
There are two steps to using scenes:
1) Create the scene(s)
2) Execute a scene
You create scenes by using the X-10 control screen in the PC software. You can also create scenes in a
schedule. However, you should first create the scenes using the X-10 control screen so you can quickly test
them to verify they work. You may then want to put the same scene-creation commands into a macro in
your schedule, allowing you to easily recreate the scenes in case they get lost. Many X-10 devices will lose
their scene settings after a power failure, so you may want the HomeVision Power Failure Recovery Event to
run the macro that sets the scenes again.
Unfortunately, X-10 and Leviton implement scenes differently, and not even all Leviton devices work the
same way. You may have to do some experimenting to figure out if and how your devices support scenes.
For example, the X-10 approach is limited to four scenes per house code, while the Leviton approach can
have up to 64.
Creating Scenes
To create scenes, open the X-10 control screen in the PC software. The HomeVision controller must be
connected to the PC. You will use the following two “custom commands” located near the bottom of the
custom command list box:
1) Include in scene # at level XX (of 63)
or
Include in scene # at current level
2) Remove from X-10 scene #
or
Remove from Leviton scene #
{for X-10 brand devices}
{for Leviton brand devices}
{for X-10 brand devices}
{for Leviton brand devices}
Note that the light levels for both X-10 and Leviton devices range from 0 to 63. This is consistent with the
“Set directly to level ##” command that these modules also respond to.
X-10 Type Scenes
As an example for X-10 brand devices, assume you want to create these two scenes using modules A-1, A2, and A-3:
Scene 1:
A-1 on at level 10
A-2 on at level 15
44
Chapter 5
X-10
A-3 on at level 20
Scene 2:
A-1 off (level 0)
A-2 on at level 50
A-3 on at level 63
Here’s how you’d create these scenes:
1)
2)
3)
4)
5)
Select house code “A” and unit code “1”.
Select the custom command “Include in scene # at level XX”.
Enter “1” in the scene number text box.
Enter “10” in the light level text box.
Click the “Perform Command” button. This will send an X-10 command to module A-1 telling it to
include itself in scene 1 at level 10.
6) Select unit code “2” and level “15” and click the “Perform Command” button to put A-2 in the scene.
7) Select unit code “3” and level “20” and click the “Perform Command” button to put A-3 in the scene.
Scene 1 is now complete.
8) Change the scene number to “2”. Repeat the above steps using the desired levels for scene 2.
The above steps send the necessary commands to the X-10 modules to put them in the two house code “A”
scenes. If you decide you don’t want a particular module to be in a scene, use the “Remove from scene #”
command to remove it. To test whether the scene works, transmit the “Execute scene #” command, as
described in the next section.
Leviton Type Scenes
As an example for Leviton brand devices, assume you want to create the same two scenes as in the above
example. Here’s how you’d create these scenes:
1) Set X-10 devices A-1, A-2, and A-3 to their desired levels for scene 1 (you can do this by manually
setting the devices to the right levels, or by sending X-10 commands to them).
2) Select the custom command “Include in scene # at current level”.
3) Enter “1” in the scene number text box.
4) Select house code “A” and unit code “1”.
5) Click the “Perform Command” button. This will send an X-10 command to module A-1 telling it to
include itself in scene 1 at it’s current level.
6) Select house code “A” and unit code “2”.
7) Click the “Perform Command” button. This will send an X-10 command to module A-2 telling it to
include itself in scene 1 at it’s current level.
8) Select house code “A” and unit code “3”.
9) Click the “Perform Command” button. This will send an X-10 command to module A-3 telling it to
include itself in scene 1 at it’s current level.
10) Repeat the above steps for scene 2.
The above steps send the necessary commands to the X-10 modules to put them in the two house code “A”
scenes. If you decide you don’t want a particular module to be in a scene, use the “Remove from scene #”
command to remove it. To test whether the scene works, transmit the “Execute scene #” command, as
described in the next section.
Executing Scenes
“Executing” a scene means sending an X-10 signal to command the modules to go to the desired scene. All
modules in the scene should simultaneously go to their preset level. You can execute a scene either from
the X-10 control screen in the PC software or within a schedule.
To execute a scene from the PC, open the X-10 control screen. Then:
1) Select the desired house code (the unit code doesn’t matter, as scenes apply to the entire house
code).
Chapter 5
X-10
45
2) Select the custom command “Execute X-10 scene #” or “Execute Leviton scene #”, depending on the
device type.
3) Enter the scene number in the scene number text box.
4) Click the “Perform Command” button. This will send an X-10 command to the house code and all the
lights in the scene should respond.
To execute a scene within your schedule, use the command “Execute X-10 scene #” or “Execute Leviton
scene #”, described later.
X-10 Commands
Overview
The following X-10 commands can be included in a schedule. Many of them can be sent from the X-10
control screen in the PC program. They can also be issued to the controller over the serial interface. The
format for sending commands over the serial interface is described in a text file installed in the application
directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected X-10 module are chosen from the pull-down list.
This section provides an overview of the various types of commands.
descriptions of each command.
Following this are detailed
Standard X-10 Commands That Transmit X-10 Signals
This group of commands causes the controller to transmit X-10 signals over the power line. The basic X-10
commands include On, Off, Brighten, and Dim. However, the controller also supports a wide variety of
additional commands.
These X-10 commands can be broken into three major groups:
1) The first group of commands transmit X-10 signals unless/until the X-10 module reaches a certain
state. These commands are:
•
•
•
•
•
•
•
On
Off
Dim
Dim ## Times
Brighten
Brighten ## Times
Set To Level ##
Before transmitting these commands, the controller checks the current state of the module. If the
module is in a state where the command would have no effect, the command will not be sent. For
example, if a module is OFF when an OFF command is encountered in a schedule, No Off
command will be sent over the power line. Similarly, an ON command will not be sent to a module
already ON, and a Brighten command will not be sent to a module already ON at Level-16 (the
maximum level).
This procedure minimizes transmissions over the power line. Sending a command to a module that
is already in the desired state will have no effect. However, the transmission could interfere with
other devices in your house that might be transmitting at the same time. To reduce this possibility,
it’s best to minimize the number of transmissions you send over the power lines.
46
Chapter 5
X-10
One problem with these commands can occur if the controller cannot properly track the module
states. For example, standard X-10 wall switches allow manual control of their lights. However,
when you manually change them, no X-10 signal is sent out from the switch. Therefore, the
controller will not know that the light has changed. Its internal state table will be incorrect, causing
these commands to work improperly. For example, assume that a light is off and the controller has
correctly kept track of it. You then manually turn the light on at the wall switch (which the controller
is unaware of). Assume now that your schedule executes an Off command for this light. The
controller thinks the light is already off and therefore does not send the OFF command. The light
stays on.
Because of this potential problem, these commands are best used for X-10 modules that aren’t
normally controlled manually. As long as the controller can keep track of the state, these commands
will work properly and minimize the number of X-10 transmissions. For modules that are controlled
manually, the next group of commands is more appropriate.
2) The second group contains the same basic commands as the first group, but these are Force
commands. These commands are:
•
•
•
•
•
•
•
Force
Force
Force
Force
Force
Force
Force
On
Off
Dim
Dim ## Times
Brighten
Brighten ## Times
To Level ##
These commands will always transmit the specified X-10 signals regardless of the current state of
the module. They guarantee that your specified commands are sent over the power line. These are
the commands that most users should use.
3) The third group of standard commands contains some of the same commands as previous groups,
but with the keyword “Slow” afterwards. These commands are:
•
•
•
•
•
•
Dim ## Times Slow
Force Dim ## Times Slow
Brighten ## Times Slow
Force Brighten ## Times Slow
Set To Level ## Slow
Force To Level ## Slow
These commands transmit multiple Brighten or Dim commands, usually to change the level of lights.
The standard commands without the keyword “Slow” will transmit the signals about one-half second
apart. These “Slow” commands will spread them out approximately one second apart. This can
make the lighting change a little more gradual, which may be desirable in some applications.
Advanced X-10 Commands That Transmit X-10 Signals
These advanced commands provide more control methods than the basic On, Off, Brighten, and Dim
commands discussed previously. These commands are:
•
•
•
•
•
•
•
•
•
Toggle Module
Transmit House/Unit Code Only
Transmit House/Function Code Only
Transmit “Preset Dim” to Level ##
Refresh Module
Refresh House Code
Set To Level In Variable ##
Force To Level In Variable ##
Transmit Preset Dim To Level In Variable ##
Chapter 5
•
•
•
•
•
•
X-10
47
Set X-10 Device Directly To Level ##
Set X-10 Device Directly To Level In Variable ##
Include In Scene # At Level ##
Include In Scene # At Current Level
Execute X-10 Type Scene #
Execute Leviton Type Scene #
X-10 Control Commands
These commands do not actually transmit any X-10 signals. Instead, they are used to set or change how the
controller operates with respect to these X-10 modules. These commands are:
•
•
•
•
•
•
•
•
•
•
•
•
•
Enable Module
Disable Module
Enable On Trigger
Disable On Trigger
Enable Off Trigger
Disable Off Trigger
Set State To On
Set State To Off
Set State To Neutral
Read Current State (cannot be included in schedule)
Put Current Level Into Variable ##
Put Current Preset Dim Level Into Variable ##
Put Received Preset Dim Level Into Variable ##
Advanced X-10 Commands
Six X-10 signals are called “advanced” in this manual. These signals are not implemented by most X-10
compatible devices. However, when they are implemented, they can provide additional control capabilities.
The controller can transmit and receive all of these commands. They are:
•
•
•
•
•
•
Status Request
Status Is On
Status Is Off
Hail Request
Hail Acknowledge
Preset Dim
Whenever the controller receives one of these signals over the power line, it sets a corresponding bit in the
specified module’s state table. You can check these bits in your schedule to determine when such a signal
is received. Several commands are available for communicating with devices that support these signals:
•
•
•
•
•
•
•
•
Clear “Status Request” Bit
Clear “Status Is On” Bit
Clear “Status Is Off” Bit
Clear “Hail Request” Bit
Clear “Hail Acknowledge” Bit
Clear “Preset Dim” Bit and Level
Clear All Advanced X-10 Bits
Transmit Current Status
Note that you can also transmit the advanced X-10 signals by using the Send House/Function Code
command noted earlier.
48
Chapter 5
X-10
PCS Lighting Commands
Powerline Control Systems (PCS) lighting modules are available that can be directly set to any level and
dimmed in 1/2% increments. They are controlled by the following X-10 commands:
•
•
•
Set PCS Light Level To ##
Micro-Dim PCS Light 1 Level (1/2%)
Micro-Brighten PCS Light 1 Level (1/2%)
X-10 Commands Based On Variable Values
All of the previous commands allow you to select which X-10 address to use. In addition, it is possible to use
a variable value to specify the X-10 address. The X-10 Command Entry Screen has a checkbox labeled
"Use variable for X-10 address". If you check this, you will be able to select a variable.
When HomeVision executes this command, it will obtain the variable value (which ranges from 0 to 255) and
use it as the X-10 ID number. The X-10 addresses (also called ID Numbers) also range from 0 (A-1) to 255
(P-16), as shown below in Hex format.
U
N
I
T
C
O
D
E
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
A
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
B
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
C
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
D
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
E
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
F
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
HOUSE CODE
G
H
I
J
60
70
80
90
61
71
81
91
62
72
82
92
63
73
83
93
64
74
84
94
65
75
85
95
66
76
86
96
67
77
87
97
68
78
88
98
69
79
89
99
6A 7A 8A 9A
6B 7B 8B 9B
6C 7C 8C 9C
6D 7D 8D 9D
6E 7E 8E 9E
6F
7F
8F
9F
K
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
AA
AB
AC
AD
AE
AF
L
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
BC
BD
BE
BF
M
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
N
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB
DC
DD
DE
DF
O
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EE
EF
P
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF
X-10 Command Details
On
If the module is initially OFF or NEUTRAL, this command sends an X-10 On command and sets the
internal state level to 16. If the module is already ON, no action is taken.
Force On
This command sends an X-10 On command regardless of the current module state. If the module is
initially OFF or NEUTRAL, it sets the internal state level to 16. If the module is already ON, the level
is unchanged.
Off
If the module is ON or NEUTRAL, this command sends an X-10 Off command and sets the internal
state level to 0. If the module is already OFF, no action is taken.
Force Off
Chapter 5
X-10
49
This command sends an X-10 Off command regardless of the current module state and sets the
internal state level to 0.
Dim
This command sends an X-10 Dim command unless the module is already ON and at level 0. The
first Dim command sent to a module that is OFF or NEUTRAL causes it to go ON at level 16.
Force Dim
This command sends an X-10 Dim command regardless of the current module state. The first Dim
command sent to a module that is OFF or NEUTRAL causes it to go ON at level 16.
Dim ## Times
This command sends “##” (a specified number) X-10 Dim commands, but stops sending commands
if the level reaches 0. A module that was initially OFF or NEUTRAL will go ON at level 16 with the
first Dim command, then decrease one level on each subsequent Dim command.
“##” can be between 1 and 23. Although 16 steps should be enough to go to full dim, some devices
aren’t so well behaved. A few extra Dim commands may be needed to ensure they go to level 0.
Dim ## Times Slow
Same as Dim ## Times, except that commands are sent at intervals of approximately 0.9 seconds
instead of 0.4 seconds. (Actually, what happens is that the house code and unit code is repeated
between each Dim command, instead of just sending consecutive Dim commands).
Force Dim ## Times
Same as Dim ## Times, except that all Force Dim commands will be sent even after level reaches 0.
Force Dim ## Times Slow
Same as Force Dim ## Times, except that commands are sent at intervals of approximately 0.9
seconds instead of 0.4 seconds. (Actually, what happens is that the house code and unit code is
repeated between each Force Dim command, instead of just sending consecutive Force Dim
commands).
Brighten
This command sends an X-10 Brighten command unless the module is already ON and at level 16.
The first Brighten command sent to a module that is OFF or NEUTRAL causes it to go ON at level
16.
Force Brighten
This command sends one X-10 Brighten command regardless of the current module state. The first
Brighten command sent to a module that is OFF or NEUTRAL causes it to go ON at level 16.
Brighten ## Times
This command sends “##” X-10 Brighten commands, but stops sending commands if the level
reaches 16. A module that was initially OFF or NEUTRAL will go on at level 16 with the first Brighten
command, then no more commands will be sent since level is already 16.
“##” can be between 1 and 23. Although 16 steps should be enough to go to full bright from level 0,
some devices aren’t so well behaved. A few extra bright commands may be needed to ensure they
go to full brightness.
50
Chapter 5
X-10
Brighten ## Times Slow
Same as Brighten ## Times, except that commands are sent at intervals of approximately 0.9
seconds instead of 0.4 seconds. (Actually, what happens is that the house code and unit code is
repeated between each Brighten command, instead of just sending consecutive Brighten
commands).
Force Brighten ## Times
Same as Brighten ## Times, except that all Brighten commands will be sent even after the level
reaches 16.
Force Brighten ## Times Slow
Same as Force Brighten ## Times, except that commands are sent at intervals of approximately 0.9
seconds instead of 0.4 seconds. (Actually, what happens is that the house code and unit code is
repeated between each Brighten command, instead of just sending consecutive Brighten
commands).
Set To Level ##
This command sends X-10 Dim or Brighten commands as necessary to put the module at “##”
brightness level. If the module is initially OFF or NEUTRAL, it sends one X-10 On command first,
then Dim commands until level “##” is reached.
“##” can be any integer between 0 and 16.
Set To Level ## Slow
Same as Set To Level ##, except that commands are sent at intervals of approximately 0.9 seconds
instead of 0.4 seconds. (Actually, what happens is that the house code and unit code is repeated
between each Dim/Brighten command, instead of just sending consecutive Dim/Brighten
commands).
Force To Level ##
Same as Set To Level ##, except that an X-10 Off command is sent first to ensure starting at a
known condition.
Force To Level ## Slow
Same as Force To Level ##, except that commands are sent at intervals of approximately 0.9
seconds instead of 0.4 seconds. (Actually, what happens is that the house code and unit code is
repeated between each Dim/Brighten command, instead of just sending consecutive Dim/Brighten
commands).
Transmit House/Unit Code Only
This command sends the house code and the unit code without a function code. It is usually used
when you want to “arm” several modules in preparation for a subsequent function code. The
function code will then be performed by all modules simultaneously.
Transmit House/Function Code Only
This command sends the house code and function code without a unit code. The 12 available
function codes are:
•
•
•
On
Off
Brighten
Chapter 5
•
•
•
•
•
•
•
•
•
X-10
51
Dim
All Lights On
All Units Off
All Lights Off
Hail Request
Hail Acknowledge
Status Request
Status Is On
Status Is Off
(Note: “Preset Dim” is sent with a separate command, below.)
Transmit Preset Dim To Level ##
This command sends the advanced X-10 command “Preset Dim” with the level specified in ##. It
does not change the current state set in the state table. This command can be used for the X-10
lights that can receive the “Preset Dim” command.
Toggle Module
This command sends an X-10 On command if the module is OFF. If the module is initially ON or
NEUTRAL, it sends an X-10 Off command.
Refresh Module
This command sends an X-10 On command if the current state is ON (regardless of level). It sends
an X-10 Off command if the current state is OFF. This ensures the specified module is in the state
the controller thinks it should be in. However, since it doesn’t send Brighten or Dim commands, the
level may not be correct.
Refresh House Code
This command works the same as the Refresh Module command, except that it refreshes all 16 units
in the specified house code. Care should be taken in using this command, as it will take nearly 16
seconds to complete (approximately 1 second for each unit code).
Disable Module
This command disables the module. A disabled module will not respond to any commands except
for Enable Module. This command can be used as a quick way to prevent any other part of your
schedule from controlling a module.
Enable Module
This command enables a module that was previously disabled. A module must be enabled before it
will respond to any commands or transmit an X-10 signal.
Enable Off Trigger
If you want the controller to perform actions when an X-10 Off command is received, you must first
define the actions from the PC program. Once you’ve done this, you must enable the “Off Trigger”.
You would normally do this from the X-10 module summary screen before loading the schedule.
However, you can also enable or disable the trigger with a command in the schedule. This
command enables the “Off Trigger” so the actions can be performed.
Disable Off Trigger
This command disables the “Off Trigger” and will thereby prevent any associated actions you’ve
defined from being performed. See the discussion for Enable Off Trigger for more details
52
Chapter 5
X-10
Enable On Trigger
If you want the controller to perform actions when an X-10 On command is received, you must first
define the actions from the PC program. Once you’ve done this, you must enable the “On Trigger”.
You would normally do this from the X-10 module summary screen before loading the schedule.
However, you can also enable or disable the trigger with a command in the schedule. This
command enables the “On Trigger” so the actions can be performed.
Disable On Trigger
This command disables the “On Trigger” and will thereby prevent any associated actions you’ve
defined from being performed. See the discussion for Enable On Trigger for more details.
Set State To On
This command sets the current state in the state table to ON, Level 16. It does not send any X-10
signal over the power line.
Set State To Off
This command sets the current state in the state table to OFF, Level 0. It does not send any X-10
signal over the power line.
Set State To Neutral
This command sets the current state in the state table to NEUTRAL. It leaves the level unchanged.
It does not send any X-10 signal over the power line.
Transmit Module Status Signal
This command sends either the advanced X-10 command “Status is On” or “Status is Off”,
depending on the current state of the module. It does not change the current state set in the state
table. You might use this in response to a “Status Request” signal sent from another device.
Clear “Status Request” Bit
This command clears the bit which was set when an X-10 “Status Request” command was received
for this specific X-10 module.
The best way to receive and respond to advanced X-10 signals sent from other devices is as follows:
1) Set up a periodic event that is executed every loop.
2) In this periodic event, use an If-Then statement to check whether the corresponding
advanced X-10 bit is set for the modules you’re interested in. The bit should normally be
clear so the “Then” actions will be skipped. When the signal is received, the bit will be set
and the “Then” actions will be performed.
3) In the “Then” part of the If-Then statement, enter whatever actions you want done when the
signal is received. Somewhere in the “Then” section, include a command to clear the status
bit. This is necessary so that the If-Then statement isn’t always true (and therefore gets
executed every loop).
This approach will perform the actions every time the specified signal is received.
Clear “Status Is On” Bit
This command clears the bit which was set when an X-10 “Status is On” command was received for
this specific X-10 module. Refer to the Clear “Status Request” Bit command for a discussion of how
best to implement these advanced X-10 commands.
Chapter 5
X-10
53
Clear “Status Is Off” Bit
This command clears the bit which was set when an X-10 “Status is Off” command was received for
this specific X-10 module. Refer to the Clear “Status Request” Bit command for a discussion of how
best to implement these advanced X-10 commands.
Clear “Hail Request” Bit
This command clears the bit which was set when an X-10 “Hail Request” command was received for
this house code. Refer to the Clear “Status Request” Bit command for a discussion of how best to
implement these advanced X-10 commands.
Clear “Hail Acknowledge” Bit
This command clears the bit which was set when an X-10 “Hail Acknowledge” command was
received for this House Code. Refer to the Clear “Status Request” Bit command for a discussion of
how best to implement these advanced X-10 commands.
Clear “Preset Dim” Bit And Level
This command clears the bit which was set when an X-10 “Preset Dim” command was received for
this specific X-10 module. Refer to the Clear “Status Request” Bit command for a discussion of how
best to implement these advanced X-10 commands.
When an X-10 preset dim signal is received immediately following an X-10 house/unit code signal,
the controller stores the level of the preset dim signal. This command not only clears the preset dim
bit, but also resets the preset dim level to 0.
Clear All Advanced X-10 Bits
This command clears the bits “Status Request”, “Status Is On”, “Status Is Off”, “Hail Request”, “Hail
Acknowledge”, and “Preset Dim”. Refer to the Clear “Status Request” Bit command for a discussion
of how best to implement these advanced X-10 commands.
This command also resets the preset dim level to 0.
Read Current State
This command causes the controller to read the module’s state (ON/OFF and level) and to transmit it
over the serial interface. This command can only be issued by a command over the serial port; it
cannot be included directly in a schedule. This allows an external computer or other device to
determine the state of a module. See the file “Serial Protocol” installed in the application directory
for details on the format of this command and the serial data response.
Set PCS Light Level To ###
This command sets a PCS lighting module directly to the specified level ###. ### can be any level
from 0 to 31. 0 means full off and 31 means full on. This command is implemented by sending an
X-10 Preset Dim command to the appropriate level.
Unlike most X-10 devices, dim and brighten commands are not needed with PCS modules. This
enables lights to be quickly set to any level. The controller will not adjust the level in its internal state
table for PCS modules when this command is used. Since these modules can be directly set to any
level, there’s generally no need for this feature. If you need to track the level, use a variable.
Micro-Dim PCS Light 1 Level (1/2%)
PCS lighting modules support a “micro-dim” command which decreases the brightness in steps of
approximately 1/2% . This command is implemented with the X-10 Hail Request command.
54
Chapter 5
X-10
The controller will not adjust the level in its internal state table for PCS modules when this command
is used. Since these modules can be directly set to any level, there’s generally no need for this
feature. If you need to track the level, use a variable.
Micro-Brighten PCS Light 1 Level (1/2%)
PCS lighting modules support a “micro-brighten” command which increases the brightness in steps
of approximately 1/2%. This command is implemented with the X-10 Hail Acknowledge command.
The controller will not adjust the level in its internal state table for PCS modules when this command
is used. Since these modules can be directly set to any level, there’s generally no need for this
feature. If you need to track the level, use a variable.
Put Current Level Into Variable ##
This command puts the X-10 module's current light setting into the specified variable. If the light is
ON, it's level (0 to 16) will be put in the variable. If the light is OFF, the variable is set to 255. If
NEUTRAL, the variable is set to 254.
This command allows you to store the current level and later set the light back to it. See the
following commands for more information on setting the light to the level contained in a variable.
Refer to the "How To" file for an example of how to use this command.
Note that this command will not work properly with PCS lighting modules and some of the newer
Leviton and X-10 devices that support “preset dim” or “extended codes”, as they have more than 17
light levels. For these devices, use the following command instead.
Put Current Preset Dim Level Into Variable ##
This command puts the X-10 module's current light setting (0 to 31) into the specified variable. Note
that it only works with X-10 devices where the level is stored as a range from 0 to 31 (typically, this is
limited to the PCS switches and some of the newer Leviton and X-10 devices that support “preset
dim” or “extended codes”). For devices which support only levels 0-16 (and respond to only the
standard On, Off, Bright, and Dim signals), use the above “Put Current Level Into Variable ##”
command instead.
If the light is ON, its level (0 to 31) will be put in the variable. If the light is OFF, the variable is set to
0. If NEUTRAL (a state which isn’t really used for these types of X-10 devices), the variable is set to
254. This command allows you to store the current level and later set the light back to it.
NOTE:
HomeVision stores the light level as a value between 0 and 31. However, some of the newer
devices that support “direct to level” commands have 64 levels (0 to 63). For these devices,
HomeVision stores the level scaled down by a factor of 2 to make it fit (to be precise, the level is
divided by 2, then rounded down). For example, levels 62 and 63 are stored as 31, levels 60 and 61
are stored as 30, and levels 0 and 1 are stored as 0. Therefore, if you set the device to a level (say,
40) with the “direct to level” command, then put the level into a variable, the variable value will be
half the actual level (20 in this example). If you then use the “Set X-10 Device Directly To Level In
Variable ##” command to set it to this level, it will go to level 20, which is half of what you probably
expect. Therefore, if you need to store the level and then later return it to that same level, you must
multiply the variable by two after obtaining the level, like this:
Put Current Preset Dim Level Into Variable #1 (Old light level)
Var #1 (Old light level) = Var #1 (Old light level) X 2
Put Received Preset Dim Level Into Variable ##
Chapter 5
X-10
55
Whenever the controller receives a preset dim signal immediately following a house/unit code signal,
it stores the preset dim level for that house/unit code. It also sets its "Preset Dim Received" bit,
which you can check with an If-Then statement.
This command puts the received preset dim level (0 to 31) into the specified variable. This allows
you to receive preset dim signals from devices that transmit them. For example, certain thermostats
transmit preset dim levels to report temperature and other status. With this command, you can store
the received dim level in a variable, then do whatever else you need to with it.
Set To Level In Variable ##
This command reads the value of the specified variable and sets the X-10 module to that level. If
the variable value is 0 to 16, the light will be turned on at that level. If the variable value is 255, the
light will go off. If the variable value is 254, the module state will be set to NEUTRAL. Remember
that a light ON at level 0 is not the same as OFF.
This command works similar to the "Set To Level ##" command, expect that the level is taken from a
variable instead of being specified in the command itself. Remember that these "Set" commands
won't send X-10 signals if the controller thinks the light is already at the desired level. As an
example, if the variable value is 16 and the light is already on at level 16, no X-10 signals will be
sent.
See the "Put Current Level Into Variable ##" command for more information on saving a light's level
into a variable. Refer to the "How To" file for an example of how to use this command.
Note that this command will not work properly with PCS lighting modules. PCS lighting levels are
stored in a unique format, not as a simple number.
Note that there is no "slow" version of this command.
Force To Level In Variable ##
This command reads the value of the specified variable and forces the X-10 module to that level. If
the variable value is 0 to 16, the light will be turned on at that level. If the variable value is 255, the
light will go off. If the variable value is 254, the module state will be set to NEUTRAL. Remember
that a light ON at level 0 is not the same as OFF.
This command works similar to the "Force To Level ##" command, expect that the level is taken from
a variable instead of being specified in the command itself. Remember that the "Force" commands
first send an X-10 OFF signal to put the light in a known state, then send the necessary commands
to set the light to the desired level.
See the "Put Current Level Into Variable ##" command for more information on saving a light's level
into a variable. Refer to the "How To" file for an example of how to use this command.
Note that this command will not work properly with PCS lighting modules. PCS lighting levels are
stored in a unique format, not as a simple number.
Note that there is no "slow" version of this command.
56
Chapter 5
X-10
Transmit Preset Dim To Level In Variable ##
This command transmits a preset dim signal. The preset dim level (0 to 31) is taken from the
specified variable. Thus, if the variable contains the value 26, the X-10 signal "preset dim to level
26" is transmitted.
Set X-10 Device Directly To Level ##
This command sets the device directly to the specified level (0 to 63). It only works with devices that
support the newer X-10 "extended codes".
The newer Leviton 6381 switches and X-10 LM14A and AM14A modules have several new features.
One of these is that they can be directly set to a level without going on to full brightness first. This is
sometimes called "preset dimming", although this is not technically correct. HomeVision can control
these lights using X-10's "extended codes". These "extended codes" follow a different format than
the older extended codes (whose commands were shown earlier). You should also note that these
are different than the "preset dim" commands used by the PCS brand lighting modules.
The devices can be set to any of 64 levels (0 to 63). Sending a level 63 command immediately turns
the light on to full brightness. Any other level command causes the light to slowly change to the
desired level over several seconds. If the module is off, it does not go to full brightness first. In our
testing, it appears that levels 62 and 63 are the same (full on). However, the level 62 command
causes the light to slowly brighten, while the level 63 command sets it immediately to full on. Level 0
is the same as sending a standard OFF command. These modules also respond to all the standard
X-10 commands (ON, OFF, BRIGHTEN, DIM, etc.).
You should note that these modules might be incompatible with certain X-10 "repeaters". If you
have trouble with them, contact the manufacturer.
Set X-10 Device Directly To Level In Variable ##
This command sets the device directly to the level contained in variable ##. The level can range
from 0 to 63. It only works with devices that support the newer X-10 "extended codes". See the
above command “Set X-10 Device Directly To Level ##” for more details.
Include In Scene # At Level ##
This command puts the selected X-10 device into the specified scene at the specified level. It only
works with X-10 brand devices that support the X-10 "extended codes". The scene number can be 1
to 4, and the level can range from 0 to 63. Refer to the "X-10 Lighting Scenes" section for a detailed
description.
Include In Scene # At Current Level
This command puts the selected X-10 device into the specified scene at whatever level the light is
currently at. It only works with Leviton brand devices that support the X-10 "extended codes". The
scene number can be 1 to 64. Refer to the "X-10 Lighting Scenes" section for a detailed description.
Execute X-10 Type Scene #
This command tells all X-10 devices in the specified house code to go to the specified scene. It only
works with X-10 brand devices that support the X-10 "extended codes". The scene number can be 1
to 4. Refer to the "X-10 Lighting Scenes" section for a detailed description.
Execute Leviton Type Scene #
This command tells all X-10 devices in the specified house code to go to the specified scene. It only
works with Leviton brand devices that support the X-10 "extended codes". The scene number can
be 1 to 64. Refer to the "X-10 Lighting Scenes" section for a detailed description.
Chapter 5
X-10
57
X-10 Conditions
The following X-10 conditions can be checked by an If-Then or If-Then-Else statement.
If X-10 Module Is Off
This condition will be true if the specified module (house and unit code) is OFF. It will be false if the
module is ON or NEUTRAL.
If X-10 Module Is On
This condition will be true if the specified module (house and unit code) is ON. It will be false if the
module is OFF or NEUTRAL.
If X-10 Module Is Neutral
This condition will be true if the specified module (house and unit code) is NEUTRAL. It will be false
if the module is ON or OFF.
If X-10 Module Is Not Off
This condition will be true if the specified module (house and unit code) is either ON or NEUTRAL. It
will be false if the module is OFF.
If X-10 Module Is Not On
This condition will be true if the specified module (house and unit code) is either OFF or NEUTRAL.
It will be false if the module is ON.
If X-10 Module Is Not Neutral
This condition will be true if the specified module (house and unit code) is either ON or OFF. It will
be false if the module is NEUTRAL.
If X-10 Module Is Enabled
This condition will be true if the specified module (house and unit code) is ENABLED. It will be false
if the module is DISABLED.
If X-10 Module Is Disabled
This condition will be true if the specified module (house and unit code) is DISABLED. It will be false
if the module is ENABLED.
If X-10 Module Level = ##
This condition will be true if the specified module’s (house and unit code) current level (0 to 16) is
equal to ##. It will be false if not.
If X-10 Module Level <= ##
This condition will be true if the specified module’s (house and unit code) current level (0 to 16) is
less than or equal to ##. It will be false if the level is greater than ##.
58
Chapter 5
X-10
If X-10 Module Level >= ##
This condition will be true if the specified module’s (house and unit code) current level (0 to 16) is
greater than or equal to ##. It will be false if the level is less than ##.
If X-10 Module “Status Request” Bit Is Set
This condition will be true if the specified module’s (house and unit code) “Status Request” bit is set.
It will be false if not set.
A module’s “Status Request” bit will be set whenever an X-10 “Status Request” signal is received
over the power line that is addressed to this X-10 module. Refer to the Clear “Status Request” Bit
command for a discussion of how best to use this X-10 condition.
If X-10 Module “Status Is On” Bit Is Set
This condition will be true if the specified module’s (house and unit code) “Status is On” bit is set. It
will be false if not set.
A module’s “Status is On” bit will be set whenever an X-10 “Status is On” signal is received over the
power line that is addressed to this X-10 module. Refer to the Clear “Status Request” Bit command
for a discussion of how best to use this X-10 condition.
You can use this with two-way X-10 modules that report their status. First, transmit a "Status
Request" command to the desired house and unit code. Then, use this condition in a periodic event
running each loop to see if this bit is set (indicating the light is on). If so, so whatever you want now
that you know the light is on. Alternatively, you could receive the light's response by checking for a
received X-10 sequence that included the "Status Is On" signal.
If X-10 Module “Status Is Off” Bit Is Set
This condition will be true if the specified module’s (house and unit code) “Status is Off” bit is set. It
will be false if not set.
A module’s “Status is Off” bit will be set whenever an X-10 “Status is Off” signal is received over the
power line that is addressed to this X-10 module. Refer to the Clear “Status Request” Bit command
for a discussion of how best to use this X-10 condition.
You can use this with two-way X-10 modules that report their status. First, transmit a "Status
Request" command to the desired house and unit code. Then, use this condition in a periodic event
running each loop to see if this bit is set (indicating the light is off). If so, so whatever you want now
that you know the light is off. Alternatively, you could receive the light's response by checking for a
received X-10 sequence that included the "Status Is Off" signal.
If X-10 Module “Hail Request” Bit Is Set
This condition will be true if the specified module’s (house and unit code) “Hail Request” bit is set. It
will be false if not set.
A module’s “Hail Request” bit will be set whenever an X-10 “Hail Request” signal is received over the
power line that is addressed to this X-10 module. Refer to the Clear “Status Request” Bit command
for a discussion of how best to use this X-10 condition.
If X-10 Module “Hail Acknowledge” Bit Is Set
This condition will be true if the specified module’s (house and unit code) “Hail Acknowledge” bit is
set. It will be false if not set.
A module’s “Hail Acknowledge” bit will be set whenever an X-10 “Hail Acknowledge” signal is
received over the power line that is addressed to this X-10 module. Refer to the Clear “Status
Request” Bit command for a discussion of how best to use this X-10 condition.
Chapter 5
X-10
59
If X-10 Module “Preset Dim” Bit Is Set
This condition will be true if the specified module’s (house and unit code) “Preset Dim” bit is set. It
will be false if not set.
A module’s “Preset Dim” bit will be set whenever an X-10 “Preset Dim” signal is received over the
power line that is addressed to this X-10 module. Refer to the Clear “Status Request” Bit command
for a discussion of how best to use this X-10 condition.
After you've received a preset dim signal, you can use the X-10 command "Put Received Preset Dim
Level Into Variable ##" to store the level in a variable. From there, you can do whatever else you
need to with it.
X-10 Conditions Based On Variable Values
All of the previous conditions allow you to select which X-10 address to use. In addition, it is possible to use
a variable value to specify the X-10 address. The X-10 Condition Entry Screen has a checkbox labeled "Use
variable for X-10 address". If you check this, you will be able to select a variable.
When HomeVision executes this condition, it will obtain the variable value (which ranges from 0 to 255) and
use it as the X-10 ID number. The X-10 addresses (also called ID Numbers) also range from 0 (A-1) to 255
(P-16), as shown previously under the “X-10 Commands Overview” section.
X-10 Sequences
X-10 sequences allow you to perform actions whenever the controller receives a certain sequence of X-10
signals. Sequences are entered as conditions within an If-Then statement. Follow this procedure to specify
a sequence:
•
Add a periodic event and call it something like "Check X-10 Sequences".
•
Set the periodic event to be performed every loop.
•
Open the actions entry screen for the periodic event.
•
Add an If-Then statement by clicking the If-Then button.
•
For the first condition in the If-Then statement, enter an X-10 sequence by clicking the X-10
Sequence button. In the screen that appears:
-
Define each signal.
Add or remove signals to the sequence.
Specify the time limit in which all signals must be received.
Click "OK" when done.
•
In the "Then" part of the If-Then statement, enter whatever actions you want performed when the
sequence is received.
•
Load the schedule.
There are several important points to note about sequences:
•
X-10 sequences should be used as conditions in If-Then statements only within periodic events that
run every loop. By running every loop, the If-Then statement is repeatedly checked. Very shortly
60
Chapter 5
X-10
after the sequence is received, the periodic event will be run, the If-Then statement will be true, and
the specified actions will be performed.
If you put a sequence condition somewhere else in your schedule, it probably won't work. Although
the controller will receive the sequence, it won't do anything with it. It's up to your schedule to check
for the sequence. Since periodic events can be set to run every loop (which is virtually continuous),
this is the place to put them
•
The sequence should only be used in an If-Then statement, not an If-Then-Else statement. With an
If-Then-Else statement, whenever the signal is not received, the "Else" portion will be executed. If
this is within a periodic event running every loop, the "Else" portion will be executed almost
continually.
•
You can include other conditions in the If-Then statement with the X-10 sequence if you desire.
•
The time limit you specify is the maximum time from the first signal to the last signal in the sequence.
If the signals are received within that time, the condition is true. If they take longer, the condition is
false.
•
A maximum of 6 seconds is allowed between each of the signals in a sequence. Whenever there is
a gap of more than 6 seconds, the controller automatically "clears" the signals. It then begins
looking for the next sequence.
•
A "signal" is either a house and unit code (such as A-1) or a house and function code (such as AOn). When you press a button on an X-10 wall switch or mini-controller, it often transmits 2 signals.
For example, pressing A-1 On transmits an A-1 signal followed by an A-On signal. To enter this in a
sequence, you must enter it as 2 signals: A-1 followed by A-On.
•
A sequence can contain X-10 signals that also automatically trigger actions. For example, you may
have previously set up an A-1 On signal to perform a set of actions (in the X-10 module summary
screen). You could also include the sequence "A-1 A-On" in an X-10 sequence. If you then
transmitted an "A-1 A-On" sequence to the controller, both sets of actions would be performed. If
this isn't the behavior you want, use different X-10 signals.
•
A sequence can be as short as one signal.
•
Sequences” can use “wildcards” to match a received X-10 signal. When entering X-10 sequences,
there are three ways to use the wildcards:
1. To match any unit or function code with a particular house code: Select “House / Unit Code”,
select the desired house code in the House Code list box, then select the “?” character in the
Unit Code list box.
2. To match any house code with a particular unit code: Select “House / Unit Code”, select the
“?” character in the House Code list box, then select the desired unit code in the Unit Code
list box.
3. To match any house code with a particular function code: Select “House / Function Code”,
select the “?” character in the House Code list box, then select the desired function code in
the Function Code list box.
Use Of Module Enable/Disable
X-10 modules can be individually enabled or disabled. When disabled, a module will not respond to
commands to transmit the signal. You’ll normally want to have all your modules enabled, but the disable
feature provides additional control capabilities that may be useful in certain situations. For example:
Chapter 5
X-10
61
•
If you’re developing a schedule and one of the modules is not working the way you want it to, you
could temporarily disable it to prevent problems. For example, you might be using an signal to
arm/disarm a burglar alarm, but the alarm isn’t responding properly. If you left the controller running
with the signal enabled, the alarm might get armed or disarmed inadvertently. Disabling it will
prevent this problem until you get around to fixing it, at which time you can enable it.
•
Using an enable/disable command may be easier than If-Then-Else statements in the schedule.
EXAMPLE: You’re using an X-10 chime module to signal when motion sensors detect motion
outside your front or back door. But you don’t want the chime constantly sounding when you’re
entertaining guests in the “Party” mode, or when you’re sleeping. How can you prevent this?
You could change every location in the schedule where the chime module is commanded to
chime. You would need If-Then statements that would chime if you’re not in the “Party” mode or
“Sleep” mode. This could get awkward if there are several places in the schedule where you
command the chime, as you’d need to put the If-Then statement in each place.
An easier way is to add the command Disable Chime Module to the code that sets up the “Party”
and “Sleep” modes. Then whenever you enter one of these modes, the chime module is
effectively turned off. You then simply need to issue the command Enable Chime Module when
you leave these modes.
Power Failure Options
When power is restored after a power failure, many X-10 devices such as lights will remain off, even if they
were on when the power went out. As a result, the controller’s internal state table which tracks the module
states may be incorrect. If you have X-10 devices that behave in this manner, you can set up the controller
to automatically adjust the internal state table after a power failure.
When power is restored after a power failure, the controller goes through a power failure recovery process.
As part of the process, you can specify whether the internal state table is adjusted for any module. This is
done by setting the “Power Fail State” on the X-10 summary screen to one of the following:
•
No Change. The state will be left unchanged. This is the default setting.
•
On. The internal state will be set to ON and level 16. You might use this setting if you have a device
that always turns itself on after a power failure.
•
Off. The internal state will be set to OFF and level 0. You might use this setting if you have a device
that always turns itself off after a power failure. Many X-10 lamp modules behave (or should we say
“misbehave” !) like this.
•
Neutral. The internal state will be set to NEUTRAL and level 0. You might use this setting to
indicate you don’t know what the module will do after a power failure.
•
Disable. This will disable the module. You might use this for an X-10 device that you want to make
sure gets left alone after a power failure.
NOTE: These power failure recovery settings do not cause the controller to actually transmit any X10 commands over the power line. Only the internal state table is adjusted. If you want to transmit
X-10 commands when power is restored, you can include the commands in the “Power Failure
Recovery” event (accessed through the “Objects/Events” menu).
Chapter 6
Time and Date Control
63
CHAPTER 6: TIME AND DATE CONTROL
Introduction
The controller provides several ways to control events based on time or date. These are:
•
Scheduled Events. Scheduled events are events that occur at a certain time each day. You can
base the time on a fixed time (such as 5:00 PM) or on sunset or sunrise (such as 1 hour after
sunset). You can define exactly what actions you want to perform when the time is reached. If you
only want to perform actions on certain days (such as only on Sundays or only on January 1), you
can use If-Then statements to limit the actions to those days.
•
Periodic Events. Periodic events are events that occur at a regular rate (such as every 5 minutes
or every hour). Periodic events can also occur every time the controller executes a loop (which
usually takes 5-20 milliseconds).
•
If-Then Conditions. The current time and date can be checked with If-Then or If-Then-Else
conditions. You can then perform different actions based on the time or date. For example, if an
outdoor motion sensor is triggered at night, you might turn an outside light on. If it is triggered during
the day, you wouldn’t turn it on.
•
Timers. Timers are used to keep track of elapsed time. Once loaded with an initial value, a timer
can be started “running” (counting down to zero). You can specify a set of actions to perform when
the timer “goes off” (expires). You can also use If-Then statements to check whether a timer is
currently running. Another use for a timer is as a “wait” timer. This is different from a “delay”
discussed below (“waits” are normally used for longer times than are “delays”). The wait timer is
discussed in detail in the Timers and Delays chapter.
•
Delays. A “delay” is a command in an action list to briefly wait before proceeding. When the
controller encounters a delay command, it simply waits the specified time before proceeding. During
this time, it can still receive X-10 and IR signals, but it will not immediately take action on them.
Instead, the controller waits for the delay to end, then performs any actions following the delay
command. When those actions are complete, it will then handle any previously received X-10 or IR
signals. Delays should usually be limited to a few seconds or less. Delays are discussed in detail in
the Timers and Delays chapter.
Scheduled events, periodic events, timers, and delays are covered in the following three chapters. This
chapter explains the time and date conditions that can be used in If-Then statements.
Time And Date Conditions
The following time and date conditions can be used in an If-Then or If-Then-Else statement. From the
actions entry screen of the PC program, there are three different buttons on the toolbar for accessing these
conditions:
•
•
•
Time Conditions Button
Date Conditions Button
Special Time & Date Conditions Button
The conditions available through each button are described below.
64
Chapter 6
Time and Date Control
Time Conditions
These conditions are available from the Time Conditions Button on the actions entry screen toolbar.
If Time Is HH:MM AM/PM
This condition is true if the current time is exactly equal to the specified time. The specified time is
entered in hours and minutes. Seconds are not used. This condition will be true for the entire
minute specified (while the seconds value is increasing from 0 to 59).
If Time Is Before HH:MM AM/PM
This condition is true if the current time is before (i.e., earlier in the day than) the specified time. The
specified time is entered in hours and minutes. Seconds are not used.
If Time Is After HH:MM AM/PM
This condition is true if the current time is after (i.e., later in the day than) the specified time. The
specified time is entered in hours and minutes. Seconds are not used.
Note: For sunrise and sunset times, the comparison if based on whether it is before or after today's sunrise
or sunset. Therefore, "before sunrise" is only true between midnight and sunrise, and "after sunset" is only
true between sunset and midnight. Therefore, if you need to know if it's between sunset and sunrise, you
need two conditions with an OR statement, like this:
If
Time Is After Sunset
Or Time Is Before Sunrise
Then
{Do whatever you want}
End If
If you use an AND statement, it will never be true because it can't be both after sunset and before sunrise of
TODAY. Therefore, this will never be true:
If
Time Is After Sunset
And Time Is Before Sunrise
Then
{Do whatever you want}
End If
Alternatively, there is a special time and date condition called "After Dark" that will work properly, as
discussed a little later.
Date Conditions
These conditions are available from the Date Conditions Button on the actions entry screen toolbar. This
button brings up a screen with separate check boxes for each:
•
•
•
Day of the week
Date of the month
Month of the year
Chapter 6
Time and Date Control
65
By checking the appropriate boxes, you can set up almost any date condition. Here are examples of how
this works:
•
Box(es) checked:
Monday
Condition will be true: On all Mondays
•
Box(es) checked:
Monday
Tuesday
Condition will be true: On all Mondays and Tuesdays
•
Box(es) checked:
1st of month
Condition will be true: On the first day of each month
•
Box(es) checked:
Monday
1st of month
Condition will be true: Only on Mondays that are also the first of the month
•
Box(es) checked:
Monday
Tuesday
Wednesday
Thursday
Friday
1st of month
Condition will be true: On the first of any month that falls on a weekday (Monday through Friday)
•
Box(es) checked:
March
Condition will be true: On all days in March
•
Box(es) checked:
March
Friday
Condition will be true: On all Fridays in March
•
Box(es) checked:
25th of month
December
Condition will be true: Only on December 25th
•
Box(es) checked:
25th of month
December
Saturday
Sunday
Condition will be true: On December 25th only if it happens to fall on Saturday or Sunday
•
Box(es) checked:
Friday
Saturday
April
May
June
Condition will be true: On all Fridays and Saturdays in the months of April, May, and June.
66
Chapter 6
Time and Date Control
Special Time And Date Conditions
These conditions are available from the Special Time & Date Conditions Button on the actions entry screen
toolbar. These same conditions can be specified using multiple time or date conditions discussed above.
However, these special conditions are easier to enter.
If Today Is A Weekday
Condition is true if the current day of week is Monday, Tuesday, Wednesday, Thursday, or Friday.
If Today Is A Weekend
Condition is true if the current day of week is Saturday or Sunday.
If Today Is Sunday Through Thursday
Condition is true if the current day of week is Sunday, Monday, Tuesday, Wednesday, or Thursday.
If Today Is Friday Or Saturday
Condition is true if the current day of week is Friday or Saturday.
If Season Is Winter
Condition is true if the current month is January, February, or March.
If Season Is Spring
Condition is true if the current month is April, May, or June.
If Season Is Summer
Condition is true if the current month is July, August, or September.
If Season Is Fall
Condition is true if the current month is October, November, or December.
If Time Is AM
Condition is true if current time is between 12:00 AM (midnight) and 11:59 AM.
If Time Is PM
Condition is true if current time is between 12:00 PM (noon) and 11:59 PM.
If Time Is Daytime
Condition is true if current time is between 6:00 AM and 6:00 PM.
If Time Is Nighttime
Condition is true if current time is between 6:00 PM and 6:00 AM.
If Light
Condition is true if current time is after sunrise and before sunset.
If Dark
Condition is true if current time is after sunset and before sunrise.
Chapter 7
Scheduled Events
67
CHAPTER 7: SCHEDULED EVENTS
Introduction
Scheduled events are events that occur at a certain time each day. Scheduled events provide the following
features and capabilities:
•
Actions can be set to occur each time a scheduled event occurs.
•
Can be based on a fixed time such as 5:00 AM or 11:23 PM.
•
Can be based on a variable time such as sunset, sunrise, or dark. Events can be scheduled for
before or after the variable time by up to 4 hours.
•
Can be set to “random” (also called “security”) mode. In this mode, you specify an interval of up to 4
hours around the base time. The event will then occur at a different (random) time each day, but
always within the interval you set around the base time.
•
Events can be set up to “catch up” after a power failure if desired. If the scheduled time occurred
while the power was out, the event will be performed when power is restored. This can ensure that
lights and others items are put in the proper state.
•
Times for the events can be changed from the video screen system by using an infrared remote
control. They can also be enabled or disabled in the same way.
•
Events can be performed immediately upon command from the serial interface.
•
255 scheduled events are available.
Defining Scheduled Event Times
To set the time to perform a scheduled event:
•
Open the “Scheduled Event” screen under the “Objects/Events” menu.
•
Select the scheduled event you want to set.
•
Double-click on the “Scheduled Time” or “Random Interval” field. This takes you to another screen
to set the event’s time and random interval (if used).
•
To enter a fixed time, select the “Fixed Time” option and enter the desired time.
•
To enter a variable time, select one of the following option boxes to define what the event should be
based on:
-
Sunrise
Sunset
Dark (defined as 30 minutes after sunset)
Next, enter how long before or after this time the event should occur. You can specify up to 4 hours
before or after any of these times.
68
Chapter 7
•
Scheduled Events
You can also specify a random interval around the selected time. The interval can be up to 4 hours.
Each day, the controller will calculate a new time for the scheduled event by randomly selecting a
time within the allowed window. For example:
-
Assume you schedule an event for 5:00 PM with a random interval of 30 minutes. On any
day, the event could occur at any time between 4:30 PM and 5:30 PM.
-
Assume you schedule an event for 2 hours after sunset with a random interval of 1 hour. If
sunset today is at 6:00 PM, then the “base” time for the event is 8:00 PM (2 hours later).
The random interval is therefore from 7:00 PM to 9:00 PM.
Entering Scheduled Event Actions
To enter the conditions and actions for a scheduled event:
•
Open the “Scheduled Event” screen under the “Objects/Events” menu.
•
Double-click on the “Actions Defined” field of the scheduled event you want. The actions entry
screen will appear.
•
Enter the actions and conditions, then click “OK”. You’ll return to the scheduled event summary
screen.
•
Enable the actions by checking the “Actions Enabled” field. The actions are automatically enabled
after you enter them, but you’re free to enable or disable them at any time.
•
Load the new schedule into the controller.
Scheduled Event Commands
The following scheduled event commands can be included in a schedule. They can all also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected event are chosen from the pull-down list.
Enable Scheduled Event
In order to perform actions, the event must first be enabled. This is normally done from the
scheduled event summary screen in the PC program. However, you can also enable or disabled
events in the schedule. This command enables the event, allowing it to be performed.
Disable Scheduled Event
In order to perform actions, the event must first be enabled. This is normally done from the
scheduled event summary screen in the PC program. However, you can also enable or disabled
events in the schedule. This command disables the event, preventing it from being performed.
Do Scheduled Event Now
This command causes the controller to perform the scheduled event actions immediately. The event
will also still occur at its scheduled time. When this command is executed, the actions will be
performed even if the event is disabled.
Chapter 7
Scheduled Events
69
This command provides great flexibility in your schedules, because it allows you to use scheduled
events as macros if you use up all 255 macros.
Scheduled Event Conditions
There are no scheduled event conditions that can be checked by an If-Then or If-Then-Else statement.
Power Failure Options
When power goes out for some time, some of your scheduled events that should have occurred will not have
been performed. You can have the controller “catch up” with these after power is restored if desired.
When power is restored after a power failure, the controller goes through a power failure recovery process.
As part of the process, it will either skip or catch up each scheduled event that was missed. You specify
what it should do by setting the “Power Fail State” of each event on the schedule event summary screen.
There are two options:
•
Skip. The event will not be performed. It will occur again at the next scheduled time.
•
Catch Up. The controller will perform the scheduled event as part of the recovery process. Refer to
the "Miscellaneous" chapter for a detailed description of how this process works.
Chapter 8
Periodic Events
71
CHAPTER 8: PERIODIC EVENTS
Introduction
Periodic events are events that occur at a regular rate (such as every 5 minutes or every hour). Periodic
events provide the following features and capabilities:
•
Actions can be set to occur each time the periodic event occurs.
•
Events can be set for the following rates:
-
Every Loop
Every 1 Minute
Every 5 Minutes
Every 15 Minutes
Every 1 Hour
Every 2 Hours
Every 4 Hours
Every 8 Hours
•
Rates for the events can be changed from the video screen system by using an infrared remote
control. They can also be enabled or disabled in the same way.
•
Events can be performed immediately upon command from the serial interface.
•
Events performed every loop allow you to check for virtually any combination of conditions with IfThen statements and perform whatever actions you want. This is useful if you want to perform
actions when a certain event occurs, but the controller doesn’t automatically check for them. For
example, if you want to do something when a variable is equal to 100, there’s no automatic event for
this. Instead, you could create a periodic event that checks every loop to see if that variable is equal
to 100.
•
255 periodic events are available.
Entering Periodic Event Actions
To enter the conditions and actions for a periodic event:
•
Open the “Periodic Event” screen under the “Objects/Events” menu.
•
Double-click on the “Actions Defined” field of the periodic event you want. The actions entry screen
will appear.
•
Enter the actions and conditions, then click “OK”. You’ll return to the periodic event summary
screen.
•
Enable the actions by checking the “Actions Enabled” field. The actions are automatically enabled
after you enter them, but you’re free to enable or disable them at any time.
•
Load the new schedule into the controller.
72
Chapter 8
Periodic Events
Periodic Event Commands
The following periodic event commands can be included in a schedule. They can all also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected event are chosen from the pull-down list.
Enable Periodic Event
In order to perform actions, the event must first be enabled. This is normally done from the periodic
event summary screen in the PC program. However, you can also enable or disabled events in the
schedule. This command enables the event, allowing it to be performed.
Disable Periodic Event
In order to perform actions, the event must first be enabled. This is normally done from the periodic
event summary screen in the PC program. However, you can also enable or disabled events in the
schedule. This command disables the event, preventing it from being performed.
Do Periodic Event Now
This command causes the controller to perform the periodic event actions immediately. The event
will also continue to occur at its specified rate. When this command is executed, the actions will be
performed even if the event is disabled.
This provides great flexibility in your schedules, because it allows you to use periodic events as
macros if you use up all 255 macros.
Change Event Rate To Every Loop
This command sets the rate at which the event is performed to once every loop. The controller runs
in a simple loop, constantly checking for specified events to occur. Each loop, these periodic events
will also be performed. With most schedules, a loop will be complete every few milliseconds.
However, if you have a lot of periodic events executing every loop and you’re displaying a video
screen at the same time, a loop might take up to 30 milliseconds.
Change Event Rate To Every 1 Minute
This command sets the rate at which the event is performed to once every minute.
performed every time the controller’s clock increments the minute value.
It will be
Change Event Rate To Every 5 Minutes
This command sets the rate at which the event is performed to once every 5 minutes. It will be
performed every time the controller’s clock minute value reaches multiples of 5 minutes (i.e., on the
hour and at 5, 10, 15, etc. minutes after the hour).
Change Event Rate To Every 15 Minutes
This command sets the rate at which the event is performed to once every 15 minutes. It will be
performed every time the controller’s clock minute value reaches multiples of 15 minutes (i.e., on the
hour and at 15, 30, and 45 minutes after the hour).
Chapter 8
Periodic Events
73
Change Event Rate To Every 1 Hour
This command sets the rate at which the event is performed to once every hour. It will be performed
every time the controller’s clock increments the hour value (i.e., at 12:00 AM, 1:00 AM, 2:00 AM,
etc.).
Change Event Rate To Every 2 Hours
This command sets the rate at which the event is performed to once every 2 hours. It will be
performed every time the controller’s clock hour value reaches multiples of 2 hours (i.e., at 12:00
AM, 2:00 AM, 4:00 AM, etc.).
Change Event Rate To Every 4 Hours
This command sets the rate at which the event is performed to once every 4 hours. It will be
performed every time the controller’s clock hour value reaches multiples of 4 hours (i.e., at 12:00
AM, 4:00 AM, 8:00 AM, etc.).
Change Event Rate To Every 8 Hours
This command sets the rate at which the event is performed to once every 8 hours. It will be
performed every time the controller’s clock hour value reaches multiples of 8 hours (i.e., at 12:00
AM, 8:00 AM, and 4:00 PM).
Periodic Event Conditions
There are no periodic event conditions that can be checked by an If-Then or If-Then-Else statement.
Power Failure Options
Periodic events do not have a “Power Fail State” that can be automatically set after a power failure.
Chapter 9
Timers and Delays
75
CHAPTER 9: TIMERS AND DELAYS
Introduction
Timers provide the following features and capabilities:
•
Can be used to time events between 0.01 seconds and 59 hours, 59 minutes, 59.99 seconds.
•
Can be configured to automatically perform a set of actions when they expire.
•
Can be temporarily halted and restarted.
•
Can all be reset as a group.
•
Can be used as conditions in If-Then and If-Then-Else statements.
•
Can be viewed, stopped, started, and changed from the video screen system.
•
Can be set to predetermined states in the event of a power failure.
•
Can be read and controlled from the serial interface.
•
255 timers are available.
Timers can be used to provide delays between events, count elapsed time, or cycle between events at a
specific rate, among other things.
Delays can be used to briefly halt controller operations.
Delay
A “delay” is a command in an action list to briefly wait before proceeding. When the controller encounters a
delay command, it simply waits the specified time before proceeding. During this time, it can still receive X10 and IR signals, but it will not immediately take action on them. Instead, the controller waits for the delay
to end, then performs any actions following the delay command. When those actions are complete, it will
then handle any previously received X-10 or IR signals. Delays should only be used when you need a
precise pause before for proceeding. Delays are limited to a maximum of 10 seconds. For longer pauses,
use a Wait Timer. A Wait Timer will not halt other controller operations, and is therefore preferred to using a
delay.
General Timer Operation
Before a timer is used in a schedule, you must create it with the timer summary screen under the
“Objects/Events” menu.
Timers operate generally as follows: First, the timer is loaded with a value and started running. The initial
value can be up to 59 hours, 59 minutes, and 59.99 seconds. While running, the timer continually counts
down towards zero. When it reaches zero, the timer is said to be ringing and no longer running. While
ringing, its value will remain at 0. The timer can also be halted (stopped from running but maintaining the
current value) or resumed (started running again after being halted).
76
Chapter 9
Timers and Delays
What happens when the timer “rings” depends on what mode it is in. There are two possible modes,
described later.
Regardless of what mode it’s in, each timer is always in one of three states: running, ringing, or stopped.
You can check the current state of a timer at any point in your schedule and perform conditional actions
based on the result. The following conditional checks are allowed:
If Timer “XXX” Ringing
If Timer “XXX” Running
If Timer “XXX” Stopped
However, in most cases, you will not need to check the timer state in an If-Then condition. Instead, you will
set it up to automatically perform actions when the timer goes off (or “rings” or “expires”).
Timer Operating Modes
Timers can be used in two different modes:
•
Standard Timer (often referred to simply as a “timer” in this manual).
•
Wait Timer
Any of the 255 timers can be used in either mode. The mode is determined by what command you use in
your schedule to start the timer running. Both modes are described in detail below. A particular timer should
only be used as a Standard Timer or a Wait Timer, but not as both in your schedule.
Standard Timers
In the standard mode, the timer simply counts down to zero. When it reaches zero, it stops “running” and
begins “ringing”. Actions will be performed when the timer expires if they were defined in the Timer
Summary Screen.
The following command will set the timer to be a Standard Timer. It will load it with the specified value and
start it counting down.
Load Timer “XXX” With HH:MM:SS.SS And Start
To enter this command:
1) Wherever in your schedule you want to start the timer running, click the “Timer” button on the actions
entry screen toolbar.
2) Select “Load Timer “XXX” With HH:MM:SS.SS And Start”.
3) Select the timer you want to use from the timer name list.
4) Enter the initial timer value (hours, minutes, seconds, and centiseconds (hundredths of seconds)).
5) Click OK.
A Standard Timer can be used in two general ways:
1) You can check the current state of the timer at any point in your schedule and perform conditional
actions based on the result.
Chapter 9
Timers and Delays
77
2) You can configure the timer to automatically perform a set of actions when it expires (starts ringing).
This is the more typical use. With this approach, you never need to check the timer in your schedule
(although you can if you want to). You define the actions as described in the following section.
Entering Standard Timer Actions
When you use a standard timer, you can specify a set of actions to perform whenever the timer goes off
(however, you are not required to - you can instead check the timer state at any time with an If-Then
statement).
NOTE: These actions do not apply to wait timers. Actions for a wait timer are entered in the schedule where
the timer is started (as described later).
To enter actions for standard timers:
1) Open the “Timer” screen under the “Objects/Events” menu.
2) Add a new timer, if necessary.
3) Double-click on the “Actions Defined” field of the timer you want. The actions entry screen will
appear.
4) Enter the actions and conditions, then click “OK”. You’ll return to the timer summary screen.
5) Enable the actions by checking the “Actions Enabled” field. The actions are automatically enabled
after you enter them, but you’re free to enable or disable them at any time.
6) Load the new schedule into the controller.
Notice that you define the actions separately from the command in the schedule that starts the timer. You
can have many different places in your schedule where you load the timer with a value and start it running.
But regardless of where you start it, the effect is always the same. When the timer expires, the same set of
actions will be performed automatically. This makes it easy to use the timer in multiple places, but restricts it
to performing a single set of actions.
Wait Timers
A Wait Timer is similar to the Standard Timer, with one important difference. Instead of defining a single set
of actions for the entire schedule (in the Timer Summary Screen), you specify the desired actions every time
you start the timer. For example, the following commands will wait 2 minutes, then set output port 1 low:
Wait 2 Minutes With Timer #1, Then:
Set Output Port 1 Low
End Wait
The Wait command sets up timer #1 as a Wait Timer, loads it with the value “2 minutes”, and then starts it
running. It then skips over the Wait Timer actions (the actions between the WAIT and END statements) and
performs any following commands in the schedule. Then, the controller continues operating normally until
the timer expires. When it expires, the controller automatically returns and performs the commands listed
between the WAIT and END statements. Thus, the wait actions are performed only one time when the timer
expires, not when first encountered in the schedule.
You can also check the current state of a Wait Timer at any point in your schedule and perform conditional
actions based on the result.
78
Chapter 9
Timers and Delays
A single Wait Timer can be used multiple places in a schedule, with different actions to be performed each
time. For example, you could also use the following commands elsewhere in the same schedule as the
previous example:
Wait 5 Minutes With Timer #1, Then:
Set Flag #3
End Wait
Result: Five minutes after the Wait command is executed, flag #3 will be set.
Note that you can also “nest” Wait Timers, like this:
Wait 5 Minutes With Timer #1, Then:
Set Flag #3
Wait 2 Minutes With Timer #1, Then:
Clear Flag #3
End Wait
End Wait
Result: Five minutes after the Wait command is executed, flag #3 will be set, then 2 minutes later it will
be cleared. Note that the same timer (#1) can be used for both Wait commands.
There is one very important thing to understand if you use the same Wait Timer in more than one place in a
schedule: If a wait timer is started again while it is already running, the new actions will override the previous
actions. In some cases, this may be exactly what you want, but in other cases it could cause unexpected
problems.
As an example, assume your schedule executes the first command on timer #1 (in the example above) and
begins waiting for 2 minutes. Then, before it expires and sets output port 1 low, your schedule executes the
second wait command. When this happens, the timer is reloaded with 5 minutes and resumes running.
When it goes off, only the most recent wait timer actions will be performed. In this example, Flag #3 will be
set, but output port 1 will not go low.
One simple way to avoid this potential problem is to use a different timer number everywhere you need a
Wait Timer in your schedule. With 255 timers available, you’ll probably have more than you ever need.
Entering A Wait Timer Command
To enter the Wait Timer command:
1) Wherever in your schedule you want to start the timer running, click the “Wait” button on the actions
entry screen toolbar.
2) Select “Load Timer And Start”.
3) Select the timer you want to use from the timer name list.
4) Enter the initial timer value (hours, minutes, seconds, and centiseconds [hundredths of seconds]).
5) Click OK.
6) Between the WAIT and END lines, enter the actions you want performed when the timer goes off.
Chapter 9
Timers and Delays
79
Comparing Standard And Wait Timers
Remember that each timer in your schedule can be used as a standard timer or a wait timer. It’s even
possible for a single timer to be used in different modes at different times in your schedule, although this is
generally not recommended.
We recommend using Standard Timers for most purposes. Each function should have its own timer. Use
the timer summary screen to specify the actions you want performed when the timer expires. Wherever in
the schedule you need to start the timer, you can do so with a single command (using the “Timer” toolbar
button).
One disadvantage of a Standard Timer is that it can make your schedule harder to read. When you enter a
command to start the timer, it’s not immediately obvious what happens when it expires. To determine this,
you have to refer back to the timer summary screen to see what the actions are.
This is where a Wait Timer has an advantage over a Standard Timer, as a Wait Timer can often be easier to
understand in your schedule. This is because the actions are written in the schedule immediately after the
command that starts the timer. You can quickly see what will happen when it expires.
Wait Timers can also be used multiple times in a schedule, with different actions to be performed each time.
In contrast, a Standard Timer will always perform the same actions each time it expires. Whether this is an
advantage or disadvantage depends on what you’re trying to do.
In general, a Standard Timer is probably more appropriate if:
•
You need to perform a large number of actions when the timer expires, or
•
You want to start the timer multiple places in your schedule and have the same effect each time it
expires.
A Wait Timer is probably more appropriate if:
•
You only need to perform a few actions when the timer expires, or
•
You only start the timer in one place in your schedule, or
•
You need to use the same timer for multiple purposes (although with 255 timers available, you
probably won’t ever be forced to do this).
Timer Commands
The following timer commands can be included in a schedule. They can all also be issued to the controller
over the serial interface. The format for sending commands over the serial interface is described in a text file
installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected timer are chosen from the pull-down list.
Load Timer “XXX” With HH:MM:SS.SS And Start
This configures the timer as a Standard Timer. It loads the specified timer with the specified time
and starts it running. “HH:MM:SS.SS” refers to the hours, minutes, and seconds value. If the timer
is “ringing” when this command is executed, it will be changed to “running”.
80
Chapter 9
Timers and Delays
Wait HH:MM:SS.SS With Timer “XXX”, Then:
This configures the timer as a Wait Timer. It loads the specified timer with the specified time and
starts it running. “HH:MM:SS.SS” refers to the hours, minutes, and seconds value. If the timer is
“ringing” when this command is executed, it will be changed to “running”.
When you first enter a Wait Timer command, you’ll have to select a timer to use and a starting value.
It will look similar to the following on the display screen:
Wait HH:MM:SS.SS With Timer “XXX”, Then:
End Wait
You then enter whatever actions you want between the WAIT and END lines.
Halt Timer “XXX”
This stops the specified timer from running but doesn’t change its value. If the timer is stopped or
ringing when this command is executed, it will have no effect since the timer is not running.
Resume Timer “XXX”
This starts the specified timer running again with its previous value as the starting value. If you
never started or cleared the timer prior to this command, the timer could be at any value. Therefore,
you will usually not want to use the Resume command except after a Halt command. If the timer is
already running when a Resume command is executed, the command will have no effect.
The Halt and Resume commands can be used temporarily halt a timer.
Stop & Clear Timer “XXX”
This stops the specified timer from running and clears the “Ringing” flag (if it happens to be ringing).
It also sets the timer value to zero. You may want to include this command in the timer’s actions so
that it’s cleared after it expires.
This command is normally used after a timer has expired (i.e., is “Ringing”). You can check for this
condition with an If-Then statement. You don’t have to stop and clear a ringing timer if you don’t
want to. However, after it expires, it will be “Ringing” forever unless you stop it.
Reset All Timers
This command stops all timers, clears the “Running” and “Ringing” flags, and sets the values to zero.
Read State Of Timer “XXX”
This command causes the controller to read the state of the timer identified by “XXX” and to transmit
it over the serial interface. “State” refers to “Running”, “Ringing”, or “Stopped”. It does not transmit
the actual value of the timer.
This command can only be issued over the serial port; it cannot be included directly in a schedule. It
allows an external computer or other device to determine the state of a timer. See the file “Serial”
installed in the application directory for details on the format of this command and the serial data
response.
Put timer ## value into 4 variables
This command takes the current value of the specified timer and puts it into four variables. You must
use four consecutive variables in this order:
•
•
•
Centiseconds (hundredths of seconds)
Seconds
Minutes
Chapter 9
•
Timers and Delays
81
Hours
For example, if you select variable #5 as the first variable, the centiseconds value will go in variable
#5, the seconds will go in variable #6, the minutes will go in variable #7, and the hours will go in
variable #8
Load timer # with value from 4 variables
This command loads the timer with the values of the four specified variables. This command does
not start the timer. Use the "Resume Timer" command after this command to start it. As with the
previous command, you must use four consecutive variables in this order:
•
•
•
•
Centiseconds (hundredths of seconds)
Seconds
Minutes
Hours
The centiseconds, seconds, and minutes values must be within the allowable ranges, as follows:
•
•
•
Centiseconds = 0 to 99
Seconds = 0 to 59
Minutes = 0 to 59
If a variable contains an invalid value, the timer may or may not run properly.
Timer Conditions
The following timer conditions can be checked by an If-Then or If-Then-Else statement.
If Timer “XXX” Is Running
This condition will be true if the timer is running. It will be false if the timer is ringing or stopped.
If Timer “XXX” Is Ringing
This condition will be true if the timer is ringing. It will be false if the timer is running or stopped.
If Timer “XXX” Is Stopped
This condition will be true if the timer is stopped. It will be false if the timer is running or ringing.
If Timer “XXX” Is Not Running
This condition will be true if the timer is ringing or stopped. It will be false if the timer is running.
If Timer “XXX” Is Not Ringing
This condition will be true if the timer is running or stopped. It will be false if the timer is ringing.
If Timer “XXX” Is Not Stopped
This condition will be true if the timer is running or ringing. It will be false if the timer is stopped.
82
Chapter 9
Timers and Delays
Power Failure Options
Your schedule may have timers running when power goes out. Two different situations may exist for running
timers depending on how long the power was out:
1) The timer should have expired during the power outage.
2) The timer should still be running.
You can decide how the controller handles running timers while recovering from the power failure. You do
this by setting the “Power Fail State” on the timer summary screen. Again, note that these power failure
settings will only apply to the timer if it is running when the power goes out.
The different power failure settings work as follows:
•
No Change. If you select “No Change”, the controller will keep the timer running during the power
outage. The timer will then be counted down during the power failure recovery process. Depending
on whether the timer should have expired during the power outage, one of two things will happen:
1) If the timer still hasn’t expired, it will continue running normally. For example, assume the
timer was at 1 minute when the power went out and remained out for 10 seconds. After
recovering from the power failure, the timer will be at 50 seconds and continue running, just
as if the power never went out.
2) If the timer expired during the power outage, it will count down to zero during the power
failure recovery process. Any associated actions will be performed. For example, assume
the timer was at 1 minute when the power went out and remained out for 5 minutes. After
power is restored, the value will be at zero and any associated actions defined to be
performed when the timer expires will be performed. Of course, since the power was out for
5 minutes, the actions will actually be performed 4 minutes after they were intended.
If multiple timers and/or scheduled events expired while the power was out, the controller will
perform them all (unless halted) during the power failure recovery. The order in which they
are performed is based on the sequence they would have occurred in if the power never
went out. Refer to the "Miscellaneous" chapter for details on the power failure recovery
process and how these events are “caught up”.
•
Stop. The timer will be stopped by clearing the “Running” flag. The timer value will remain the
same as it was when power went out; it is not changed. Actions set to be performed when the timer
expires will not be performed, regardless of whether the timer should have expired during the power
outage. Since the timer value is not changed, you could restart the timer or check its value in your
own power failure recovery event.
•
Stop & Clear. As with “Stop”, the timer will be stopped by clearing the “Running” flag. However,
this power failure setting will also reset the timer value to zero. Actions set to be performed when
the timer expires will not be performed, regardless of whether the timer should have expired during
the power outage.
•
Stop If Ringing. This setting will cause different actions depending on whether the timer should
have expired during the power outage:
-
If the timer should have expired, it will be stopped from running by clearing the “Running”
flag and the current value will be set to zero. Since the timer hasn’t actually gone off yet, the
“Ringing” flag will also be cleared. Therefore, events set to be performed when the timer
expires will not be performed.
-
If the timer did not expire during the power failure, then no action is performed. The timer
continues running and will expire at the expected time (similar to the “No Change” setting).
Chapter 9
Timers and Delays
83
In summary, “Stop” and “Stop & Clear” always prevent the timer actions from being performed, “No Change”
always allows them to be performed, and “Stop If Ringing” prevents them only if the timer expired during the
power outage.
NOTE: These power failure states work the same way for all running timers, regardless of whether they are
being used as Standard Timers or Wait Timers.
Examples
When might you use the different power failure states? Here are a few examples:
•
If the timer has associated actions and you need to be sure they get done, set the power failure state
to “No Change”.
•
Assume you’re displaying video screens and using a timer to delay a few seconds before changing
to another screen. All of a sudden the power goes out. Since the TV has probably gone off, there’s
not much point in trying to display a different screen. You probably should set this timer’s power fail
state to “Stop & Clear” to prevent it from performing any actions.
•
Assume you’re using a timer to delay a few minutes before sounding an X-10 chime module to
remind you to do something. While the timer’s still running, the power goes off. What do you want
to do when it comes back? Well, if the timer still hasn’t expired, you’d want it to keep running so it
goes off at the proper time.
But what if it expired during the power failure (perhaps because power was out for several hours)?
Do you want the chime to sound as soon as power is restored? This probably doesn’t make much
sense. For this situation, you may want to set the power failure state to “Stop If Ringing”. This way,
if the timer expired during the power failure it will be skipped, but if it’s still running it will continue
normally.
Chapter 10
Flags
85
CHAPTER 10: FLAGS
Introduction
Flags provide the following features and capabilities:
•
Can be individually put into one of three states: SET, CLEAR, or NEUTRAL.
•
Can all be set to the same state as a group.
•
Can be used as conditions in If-Then and If-Then-Else statements.
•
Can be viewed and changed from the video screen system.
•
Can be set to predetermined states in the event of a power failure.
•
Their current state can be read and changed from the serial interface.
•
255 flags are available.
Using Flags
Before using a flag, create it from the flag summary screen.
Flags are objects that are useful for indicating that certain conditions exist. For example, you may have an
alarm that provides an indication when it is armed. The indication might come directly through an input port
or perhaps from an X-10 signal. You could then SET a flag called ALARM ARMED to indicate the alarm is
armed. You can then check the state of the flag in your schedule whenever you need to know if the alarm is
armed.
A flag can also be used to set a “mode”. For example, you may have a “Home” mode, “Away” mode, “Sleep”
mode, and a “Party” mode. You can use a separate flag for each mode and SET it when that mode is
entered.
Flags are normally used in either of two states: “SET” or “CLEAR”. While this should be sufficient for most
applications, there are times when having a third state for flags would be useful. To accommodate this, a
flag can also be set to a third state called “NEUTRAL”. When a flag is neutral, it will fail a test that checks for
SET and also a test for CLEAR. The NEUTRAL state is sometimes useful in developing complex schedules,
but is only rarely necessary. You can probably create any schedule you desire using only the SET and
CLEAR states.
A flag will always remain in the same state until you specifically change it. The state of a flag can be
checked in a schedule with an If-Then or If-Then-Else statement.
Flags can also be viewed on a TV through the video screen system. You can see the current state of all
flags, and even watch them change in real time. You can also set them, clear them, or put them in neutral
using an infrared remote control.
86
Chapter 10
Flags
Flag Commands
The following flag commands can be included in a schedule. They can all also be issued to the controller
over the serial interface. The format for sending commands over the serial interface is described in a text file
installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected flag are chosen from the pull-down list.
Standard Flag Commands
Set Flag
Clear Flag
Neutral Flag
These commands put the flag in the specified state (either SET, CLEAR or NEUTRAL). When you
enter one of these commands in a schedule, you select the specific flag from a pull-down list. When
you send one of these commands over the serial interface, the flag is referred to by its ID number (0
to 255).
Toggle Flag
This command reverses the state of the flag. A flag which is SET will be changed to CLEAR.
Conversely, a flag which was CLEAR will be changed to SET. A flag which is NEUTRAL will not be
changed by this command.
Set All Flags
Clear All Flags
Neutral All Flags
These commands put all flags in the specified state (either SET, CLEAR or NEUTRAL).
Advanced Flag Commands
Make Flag “XXX” Equal To Flag “YYY”
This command looks at the current state of the flag identified by “YYY” and puts the flag identified by
“XXX” into the same state.
Set Flag At Variable “XXX”
Clear Flag At Variable “XXX”
Neutral Flag At Variable “XXX”
These commands look up the value of variable “XXX” and use it as the ID number of the flag. The
corresponding flag is then put into the specified state (either SET, CLEAR or NEUTRAL).
Example: Assume the command Set Flag At Variable #3 is executed. The controller will first
look up the value of variable number 3. Let’s assume its value is 12. The controller will then
SET flag 12.
If the value of the variable is not a valid flag number, no action will be performed. For instance,
assume that in the previous example, you have only 10 flags defined. Since flag 12 doesn’t
exist, no action will be performed. If the variable changes value later to a valid flag number and
the command is executed again, it will set the specified flag.
Chapter 10
Flags
87
Toggle Flag At Variable “XXX”
This command looks up the value of variable “XXX” and uses it as the ID number of the flag. The
corresponding flag is then toggled. A flag which is SET will be changed to CLEAR. Conversely, a
flag which was CLEAR will be changed to SET. A flag which is NEUTRAL will not be changed by
this command.
If the value of the variable is not a valid flag number, no action will be performed.
Read Flag
This command causes the controller to read the state of the flag and to transmit it over the serial
interface. This command can only be issued over the serial port; it cannot be included directly in a
schedule.
This command allows an external computer or other device to determine the state of a flag. See the
file “Serial” installed in the application directory for details on the format of this command and the
serial data response.
Flag Conditions
The following flag conditions can be checked by an If-Then or If-Then-Else statement.
If Flag “XXX” Set
This condition will be true if the specified flag is SET. It will be false if the flag is CLEAR or
NEUTRAL.
If Flag “XXX” Clear
This condition will be true if the specified flag is CLEAR. It will be false if the flag is SET or
NEUTRAL.
If Flag “XXX” Neutral
This condition will be true if the specified flag is NEUTRAL. It will be false if the flag is SET or
CLEAR.
If Flag “XXX” Not Set
This condition will be true if the specified flag is CLEAR or NEUTRAL. It will be false if the flag is
SET.
If Flag “XXX” Not Clear
This condition will be true if the specified flag is SET or NEUTRAL. It will be false if the flag is
CLEAR.
If Flag “XXX” Not Neutral
This condition will be true if the specified flag is SET or CLEAR. It will be false if the flag is
NEUTRAL.
88
Chapter 10
Flags
Power Failure Options
When power is restored after a power failure, the controller goes through a power failure recovery process.
As part of the process, you can have the controller automatically adjust the states of the flags. This is done
by setting the “Power Fail State” on the flag summary screen to one of the following:
•
No Change. The flag will be left unchanged. This is the default setting.
•
Set. The flag will be put in the SET state.
•
Clear. The flag will be put in the CLEAR state.
•
Neutral. The flag will be put in the NEUTRAL state.
Chapter 11
Variables
89
CHAPTER 11: VARIABLES
Introduction
Variables provide the following features and capabilities:
•
Can take on any integer value from 0 to 255.
•
Can all be set to the same value as a group.
•
Can be incremented or decremented.
•
Can be used to perform math functions (addition, subtraction, multiplication, and division).
•
Can be used as “pointers” to other variables.
•
Can be used to store data (such as time, date, X-10 signal ID, etc.)
•
Can be combined to form 16-bit or longer variables.
•
Can be used as conditions in If-Then or If-Then-Else statements.
•
Can be viewed and changed from the video screen system.
•
Can be set to predetermined states in the event of a power failure.
•
Can be read and changed from the serial interface.
•
255 variables are available.
Note that, in addition to these variables, there are a variety of "system" variables. These system variables
hold specific information such as thermostat settings and weather data. You can transfer data between
these variables using several different commands.
Using Variables
Before using a variable, create it from the variable summary screen.
Variables are 8-bit integer values which can range from 0 to 255. You can change variables, perform simple
math functions on them, and check their value. They can be used for a variety of purposes, including:
•
Counting the number of times an event occurs (a motion sensor detects motion, a door opens, an
alarm goes off, a power failure occurs, etc.). Although a single variable can only count up to 255, it’s
quite easy to obtain higher counts using multiple variables. The controller provides built-in
commands to count with 2 variables. This allows counting up to 65,535. A few simple lines in the
schedule can create higher counts easily extending into the trillions (if you can find anything that
requires counting that high!).
•
Storing the time or date when an event occurs. There are a variety of commands for storing the
current hour, minute, second, day, month, year, etc., into variables.
•
Passing information to macros or other parts of the schedule. For example, you might want to create
your own video screens for display on your TV. You could create a variable called “Video Screen
Number” and assign different numbers to each screen. One macro could then be written to draw all
90
Chapter 11
Variables
the screens. It could use a series of If-Then statements based on the value of “Video Screen
Number” to determine which screen to draw. Whenever you want to display a new screen, set the
“Video Screen Number” variable to the desired screen and run the macro.
Variables can also be viewed on a TV through the video screen system. You can see the current values of
all variables, and even watch them change in real time. You can also change the values at any time with an
infrared remote control.
Variable Commands
The following variable commands can be included in a schedule. They can all also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected variable(s) are chosen from the pull-down list.
Standard Variable Commands
Variable “XXX” = ###
Sets variable “XXX” to the constant value ###. When you enter this command in a schedule, you
select the specific variable “XXX” from a pull-down list. When you send this command over the
serial interface, the variable is referred to by its ID number (0 to 255). ### can be any integer
between 0 and 255.
Variable “XXX” = Variable “YYY”
Puts the value of variable “YYY” into variable “XXX”.
Variable “XXX” = Random Number
This command generates a random number between 0 and 255 (inclusive) and puts it into variable
“XXX”.
Variable “XXX” = Result Value
Puts the value of the system variable “Result Value” into variable “XXX”. See the "Miscellaneous"
chapter for a detailed description of Result Value. Result Value will contain different values
depending on the previously-executed command.
Math Commands
Increment Variable “XXX” [Stop At 255]
Increments (i.e. adds 1 to) variable “XXX” until it reaches 255. The value of “XXX” increases by one
each time this command is executed, until 255 is reached. If the initial value (before executing the
command) is 255, it will not increment. Further increment commands will not affect the variable’s
value; it will remain at 255). If you want it to roll over to zero, use the “Increment Variable “XXX”
[Roll Over at 255]” command.
Increment Variable “XXX” [Roll Over At 255]
Increments (i.e. adds 1 to) variable “XXX”. If the initial value is 255, it will roll over to zero.
Variable “XXX” = Variable “XXX” + ###
Chapter 11
Variables
91
Adds the constant value ### to variable “XXX”. ### can be any integer between 0 and 255,
inclusive.
Variables are 8 bits long and can only go as high as 255. If you add two numbers that exceed 255,
the result may not be as you expect. When this happens, the controller truncates the result to 8 bits.
This is the same as subtracting 256 from the result. Here are some examples:
NUMBERS TO ADD
255
255
255
100
255
+
+
+
+
+
0
1
2
200
255
CORRECT
RESULT
ACTUAL
RESULT
255
256
257
300
510
255
0
1
44
254
Because of this limitation, it is best to only add numbers you know will add up to less than 256. This
should work fine for most applications. There are ways you could use two variables to store
numbers larger than 256, but it takes a more complex process requiring several If-Then statements.
Variable “XXX” = Variable “XXX” + Variable “YYY”
Adds the value of variable “YYY” to variable “XXX”. As noted above, the result will be truncated to
within the range of 0 to 255 even if the sum exceeds 255.
Decrement Variable “XXX” [Stop At 0]
Decrements (i.e. subtracts 1 from) variable “XXX” until it reaches zero. If the initial value (before
executing the command) is zero, it will not decrement. Further Decrement commands will not affect
the variable’s value; it will remain at zero. If you want it to roll over to 255, use the “Decrement
Variable “XXX” [Roll Under at 0]” command.
Decrement Variable “XXX” [Roll Under At 0]
Decrements (i.e. subtracts 1 from) variable “XXX”. If the initial value is zero, it will roll over to 255.
Variable “XXX” = Variable “XXX” - ###
Subtracts the value ### from variable “XXX”.
Variables are 8 bits long and can only range from 0 to 255. There are no negative numbers allowed.
If you subtract two numbers where the second is larger than the first, the result will not be a negative
number. When this happens, the controller adds 256 to the result to force it back into the range of 0
to 255. Here are some examples:
NUMBERS TO SUBTRACT
0 - 1
0 - 2
0 - 200
0 - 255
20 - 20
CORRECT
RESULT
-1
-2
-200
-255
0
ACTUAL
RESULT
255
254
56
1
0
Because of this limitation, it is best to only subtract numbers where you know the result will not be
negative. This should work fine for most applications. There are ways you could store negative
numbers, but it is a more complex process requiring several If-Then statements and a separate flag
to indicate whether the variable is positive or negative.
Variable “XXX” = ### - Variable “XXX”
92
Chapter 11
Variables
Subtracts the value of variable “XXX” from the constant value ###. As noted above, negative
numbers cannot be stored and will be converted to within the range of 0 to 255.
Variable “XXX” = Variable “XXX” - Variable “YYY”
Subtracts the value of variable “YYY” from variable “XXX”. As noted previously, negative numbers
cannot be stored and will be converted to within the range of 0 to 255.
Variable “XXX” = Variable “XXX”
*
2
NOTE: This command is provided for backwards compatibility with previous versions. The next two
commands are more powerful for performing multiplication.
This command multiplies variable “XXX” by two. If the initial value is >=128d (01111111b), the result
will be truncated to an 8-bit value. See the examples below, shown in decimal, hexadecimal, and
binary formats:
INITIAL VALUE
1d
127d
128d
129d
255d
(01h)
(7Fh)
(80h)
(81h)
(FFh)
FINAL VALUE
(00000001b)
(01111111b)
(10000000b)
(10000001b)
(11111111b)
Variable “XXX” = Variable “XXX”
2d
254d
0d
2d
254d
x
(02h)
(FEh)
(00h)
(02h)
(FEh)
(00000010b)
(11111110b)
(00000000b)
(00000010b)
(11111110b)
###
Multiplies variable “XXX” by the constant value ### and puts the result in variable “XXX”. ### can be
any integer between 0 and 255, inclusive. Variables are 8 bits long and can only go as high as 255.
If the result exceeds 255, only the lower 8 bits will be kept. Therefore, this command should only be
used when you know the result will be less than 256.
Variable “XXX” = Variable “XXX”
x
Variable “YYY”
Multiplies variable “XXX” by variable “YYY” and puts the result in variable “XXX”. Variables are 8
bits long and can only go as high as 255. If the result exceeds 255, only the lower 8 bits will be kept.
Therefore, this command should only be used when you know the result will be less than 256.
Variable “XXX” = Variable “XXX”
/
2
NOTE: This command is provided for backwards compatibility with previous versions. The next two
commands are more powerful for performing division.
This commands divides variable “XXX” by two. If the initial value is odd, the least significant bit is
ignored, which results in rounding down. See the examples below, shown in decimal, hexadecimal,
and binary formats:
INITIAL VALUE
0d
1d
2d
3d
254d
255d
(00h)
(01h)
(02h)
(03h)
(FEh)
(FFh)
FINAL VALUE
(00000000b)
(00000001b)
(00000010b)
(00000011b)
(11111110b)
(11111111b)
Variable “XXX” = Variable “XXX”
0d
0d
1d
1d
127d
127d
/
(00h)
(00h)
(01h)
(01h)
(7Fh)
(7Fh)
(00000000b)
(00000000b)
(00000001b)
(00000001b)
(01111111b)
(01111111b)
###
Divides variable “XXX” by the constant value ### and puts the result in variable “XXX”. ### can be
any integer between 0 and 255, inclusive. If the result is not an integer, the remainder is discarded.
This has the effect of rounding down the result. For example, if you divide 39 by 10, the result will be
3 (39 / 10 = 3.9, which is rounded down to 3). If you want your final result to be rounded off instead
Chapter 11
Variables
93
of down, add half of the denominator before dividing. For the previous example, add 5 to the
variable before dividing. This would give the result of 4 (39 + 5 = 44, 44 / 10 equals 4.4, which is
rounded down to 4).
Variable “XXX” = Variable “XXX”
/
Variable “YYY”
Divides variable “XXX” by variable “YYY” and puts the result in variable “XXX”. If the result is not an
integer, the remainder is discarded. See the previous command for more details
Other Variable Commands
Variable “XXX” = Current Year
This command puts the last two digits of the current year into variable “XXX”. For example, if the
year is 1996, 96d will be placed in the variable.
Variable “XXX” = Current Month
This command puts the number of the current month into variable “XXX”.
December is 12.
January is 1 and
Variable “XXX” = Current Date
This command puts the current date of the month into variable “XXX”. The value will range from 1 to
31.
Variable “XXX” = Current Day Of Week
This command puts the current day of the week into variable “XXX”. Monday is 1, Tuesday is 2,
Sunday is 7, etc.
Variable “XXX” = Current Hour
This command puts the current hour of the time into variable “XXX”. The value will range from 0 to
23d using military time, as shown:
0 = 12 AM
1 = 1 AM
2 = 2 AM
.
.
.
11 = 11 AM
12 = 12 PM
13 = 1 PM
.
.
.
23 = 11 PM
94
Chapter 11
Variables
Variable “XXX” = Current Minute
This command puts the current minute of the time into variable “XXX”. The value will range from 0 to
59d.
Variable “XXX” = Current Second
This command puts the current second of the time into variable “XXX”. The value will range from 0
to 59d.
Variable “XXX” = Current Centisecond
This command puts the current centisecond of the time into variable “XXX”. Centiseconds are
hundredths of seconds, and will range from 0 to 99d.
Variable “XXX” = Value of Analog Input ##
This command reads the analog input specified by ## and puts its value in variable "XXX". This
command is only available if you have a multifunction expansion board with analog input capability
attached to the controller.
This is the only command related to the analog input ports. To use an analog input, first use this
command to put the analog value into a variable. Then, use any of the other variable commands or
conditions to work with the analog value.
Variable “XXX” = Value of Digital Temperature Sensor ##
This command puts the temperature of the digital temperature sensor specified by ## into variable
"XXX". This command is only available if you have a multifunction expansion board attached to the
controller. See the "Expansion Boards" chapter for details on these sensors.
This command does not actually read the temperature sensor. The controller automatically reads
each sensor on a periodic basis and stores the result. This command puts that stored temperature
into the variable. This approach maximizes speed, because if we were to read the sensor
immediately, it could interfere with all the other sensors, requiring the process to start over.
This is the only command related to the digital temperature sensors. To use a digital sensor, first
use this command to put the temperature value into a variable. Then, use any of the other variable
commands or conditions to work with the temperature value.
Note that the temperature value is stored in degrees Fahrenheit plus 50, as shown below:
Variable Value
0
50
100
150
200
255
Actual Temperature
-50
0
50
100
150
205
Storing the temperature in this manner allows negative temperatures. You will need to subtract 50
from the variable value if you want to get the actual temperature.
If there is an error during the temperature process, the value is set to 255. You can check for this to
detect errors, such as a broken or disconnected sensor.
Chapter 11
Variables
95
Set All Variables Equal To ###
Puts the value ### into all variables. This command can be used to quickly initialize all variables
(usually to zero).
Advanced Variable Commands
Indirect Commands
Variable @ Variable “XXX” = ###
This command looks up the value of variable “XXX” and uses it as the ID number of the variable to
set. The corresponding variable is then set to the constant value ###. If the value of the first
variable is not a valid variable number, no action will be performed.
Example: Assume the command
Variable @ Variable #3 = 100
is executed. The controller will first look up the value of variable number 3. Let’s assume its value is
12. The controller will then set variable number 12 to 100.
Increment
Increment
Decrement
Decrement
Variable
Variable
Variable
Variable
@
@
@
@
Variable
Variable
Variable
Variable
“XXX”
“XXX”
“XXX”
“XXX”
[Stop
[Roll
[Stop
[Roll
At 255]
Over At 255]
At 0]
Under At 0]
These commands look up the value of variable # XXX and use it as the ID number of the variable to
increment or decrement. If the value of the variable is not a valid variable number, no action will be
performed. The incrementing and decrementing work the same as for the standard commands.
Variable
Variable
Variable
Variable
Variable
Variable
Variable
Variable
@
@
@
@
@
@
@
@
Variable
Variable
Variable
Variable
Variable
Variable
Variable
Variable
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
=
=
=
=
=
=
=
=
Current
Current
Current
Current
Current
Current
Current
Current
Year
Month
Date
Day Of Week
Hour
Minute
Second
Centisecond
These commands look up the value of variable # XXX and use it as the ID number of the variable to
set. The corresponding variable is then set to the specified value.
Example: Assume the command
Variable @ Variable #3 = Current Hour
is executed. The controller will first look up the value of variable number 3. Let’s assume its value is
12. The controller will then set variable 12 to the current hour.
If the value of the variable is not a valid variable number, no action will be performed. For instance,
assume that in the previous example, you have only 10 variables defined. Since variable 12 doesn’t
exist, no action will be performed. If variable 3’s value later changes to a valid variable number and
the command is executed again, it will work properly.
Variable “XXX” = Variable @ Variable “YYY”
96
Chapter 11
Variables
This command looks up the value of variable “YYY” and uses it as the ID number of the variable to
read. Variable “XXX” is then set to the corresponding value. If the value of the “YYY” variable is not
a valid variable number, no action will be performed.
Example: Assume the command
Variable “2” = Variable @ Variable “3”
is executed. The controller will first look up the value of variable number 3. Let’s assume its value is
12. The controller will then look up the value of variable 12; let’s assume its 100. Variable 2 will
then be set to 100.
This probably seems like a bizarre command with no possible use. However, it’s actually quite
handy when used for a “look-up” table. The “YYY” variable is used as a pointer (or index) into a
table of consecutive variables. You first set variable “YYY” to the location in the table that you want
to read. When you execute this command, the value of the variable at that location will be read into
variable “XXX”.
16-Bit Variable Commands
Increment Variable “XXX” (MSB) & Variable “YYY” (LSB)
This command uses two variables as a 16-bit value. Variable “XXX” is the Most Significant Byte
(MSB) and variable “YYY” is the Least Significant Byte (LSB).
This command adds 1 to the LSB (variable “YYY”). If the initial value is 255, it will roll over to zero,
and then variable “XXX” will also be incremented. For example, if variable #1 = 0 and variable #3 =
255, the command:
Increment Variable 1 (MSB) & Variable 3 (LSB)
would give these results:
Variable 1 = 1
Variable 3 = 0
Since variable 1 is the MSB, it counts the number of times variable 3 rolls over.
When used in this way, the two variables can count up to 65,535. The total can be computed as:
256 X MSB + LSB
If both variables are equal to 255 when this command is performed, both will roll over to zero.
Decrement Variable “XXX” (MSB) & Variable “YYY” (LSB)
This command uses two variables as a 16-bit value. Variable “XXX” is the Most Significant Byte
(MSB) and variable “YYY” is the Least Significant Byte (LSB).
This command subtracts 1 from the LSB (variable “YYY”). If the initial value is 0, it will roll under to
255, and then variable “XXX” will also be decremented. For example, if variable #1 = 5 and variable
#3 = 0, the command:
Decrement Variable 1 (MSB) & Variable 3 (LSB)
would give these results:
Variable 1 = 4
Chapter 11
Variables
97
Variable 3 = 255
If both variables are equal to zero when this command is performed, both will roll under to 255.
Other Advanced Commands
Read Value Of Variable “XXX”
This command causes the controller to read the value of variable “XXX” and to transmit it over the
serial interface. This command can only be issued over the serial port; it cannot be included directly
in a schedule. This allows an external computer or other device to determine the value of a variable.
See the file “Serial” installed in the application directory for details on the format of this command
and the serial data response.
Byte ## in Text Storage Buffer = Variable “XXX”
This command takes the value of value of variable “XXX” and puts it into byte number ## of the “text
storage buffer”. It uses a single byte in the buffer. For example, if the variable value is 65 and you
put it into a byte in the buffer, the one buffer byte will then contain the value 65. If you display this
byte on the TV screen, it will appear as “A”, as 65 is the ASCII value for a capital “A”. When used
with the following command, you can move variables into the buffer and retrieve them back.
Variable “XXX”= Byte ## from Text Storage Buffer
•
This command takes byte number ## of the “text storage buffer” and puts it into variable “XXX”.
Variable Conditions
The following variable conditions can be checked by an If-Then or If-Then-Else statement.
If
If
If
If
If
If
Variable
Variable
Variable
Variable
Variable
Variable
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
=
<>
<
<=
>
>=
###
###
###
###
###
###
These six conditions compare the specified variable to the constant value ###.
If
If
If
If
If
If
Variable
Variable
Variable
Variable
Variable
Variable
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
=
<>
<
<=
>
>=
Variable
Variable
Variable
Variable
Variable
Variable
“YYY”
“YYY”
“YYY”
“YYY”
“YYY”
“YYY”
These six conditions compare one variable to another.
If
If
If
If
If
If
If
If
Variable
Variable
Variable
Variable
Variable
Variable
Variable
Variable
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Bit
0
1
2
3
4
5
6
7
Is
Is
Is
Is
Is
Is
Is
Is
Set
Set
Set
Set
Set
Set
Set
Set
(1)
(1)
(1)
(1)
(1)
(1)
(1)
(1)
98
Chapter 11
Variables
These eight conditions check to determine if the specified bit is set (has a value of one). Variables
are stored as 8-bit numbers ranging from 0 to 255. Bit 0 is the least significant bit (LSB) and bit 7 is
the most significant bit (MSB). Here are some examples:
If the variable = 0d (00000000b), no bits are set.
If the variable = 1d (00000001b), only bit 0 is set.
If the variable = 7d (00000111b), bits 0, 1, and 2 are set.
If the variable = 128d (10000000b), only bit 7 is set.
If
If
If
If
If
If
If
If
Variable
Variable
Variable
Variable
Variable
Variable
Variable
Variable
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
“XXX”
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Bit
0
1
2
3
4
5
6
7
Is
Is
Is
Is
Is
Is
Is
Is
Not
Not
Not
Not
Not
Not
Not
Not
Set
Set
Set
Set
Set
Set
Set
Set
(0)
(0)
(0)
(0)
(0)
(0)
(0)
(0)
These eight conditions check to determine if the specified bit is not set (has a value of zero).
Variables are stored as 8-bit numbers ranging from 0 to 255. Bit 0 is the least significant bit (LSB)
and bit 7 is the most significant bit (MSB).
Power Failure Options
Variables do not have a “Power Fail State” that can be automatically set after a power failure.
Chapter 12 Input and Output Ports
99
CHAPTER 12: INPUT AND OUTPUT PORTS
Introduction
Input and output ports provide the following features and capabilities:
•
Port A provides 8 “relay driver” or “open-collector” output lines capable of sinking 500mA of current
at up to 50 volts. These can be used to drive relays, solenoids, LEDs, etc.
•
Port B provides 8 digital input lines that can accept up to +/-30V and be read as a one or zero. The
input lines contain pull-up resistors allowing them to be directly connected by switch closure inputs
from alarm contacts, motion sensors, etc. They can also read TTL or CMOS digital inputs.
•
Port C provides 8 digital lines configurable as inputs or outputs (all 8 lines must be configured the
same). As inputs, the lines can read TTL or CMOS digital inputs or can be directly connected to
switch closure inputs (they contain internal pull-ups). As outputs, they can drive TTL or CMOS loads
or other low-current peripherals such as LEDs.
•
The controller can be configured to automatically perform a set of actions when an input changes.
•
Output lines can be individually set high, low, or toggled.
•
Output lines can be individually pulsed for specified times ranging from 1ms to 65 seconds.
•
All 8 lines of an output port (A or C) can be set simultaneously with a single command.
•
All 8 lines of an input port (B or C) can be read simultaneously with a single command.
•
The states of input and output ports can be used as conditions in If-Then-Else statements.
•
Input ports can be viewed, enabled, and disabled from the video screen system.
•
Output ports can be viewed, changed, enabled, and disabled from the video screen system.
•
Input and output ports can be set to predetermined states in the event of a power failure.
•
Input and output ports’ status can be read, and the ports can be controlled from the serial interface.
•
Additional input and output ports, including analog inputs, are available with optional multifunction
expansion boards. More details are provided in the "Expansion Boards" chapter.
NOTE: Use the input/output ports configuration screen under the “Configure” menu to set Port C to an input
or output.
Input Port Event Triggers
The controller can be set up to automatically perform a set of actions when any of the input ports changes
state. To set this up from the PC software:
1) Using the input port summary screen, find the input port that you want to trigger the actions.
2) If you want to trigger the actions when the port goes high, double-click on the check box in the “Hi
Actions Defined” column. If you want to trigger the actions when the port goes low, double-click in
the “Low Actions Defined” column. This will call up the actions entry screen.
100
Chapter 12 Input and Output Ports
3) On the actions entry screen, enter whatever actions you want to perform. When done, click “OK”
and you’ll be returned to the input port summary screen.
4) Make sure the actions are enabled. The check box in the “Hi Actions Enabled” and “Low Actions
Enabled” columns enable and disable the actions.
5) Load the schedule into the controller.
Once set up in this fashion, the controller constantly checks to see when the ports change state. If the
changed port has actions specified, the controller will immediately perform them.
Detailed Port Description
Input/Output Port Locations
The user connects to the ports through three terminal blocks located on the controller circuit card. Their
locations are shown in the following figure.
JP
TB1 Port A
EPROM
TB2 Port B
TB3 Port C
RV1
RV2
NOTE: Before using Port C, configure it for the selected mode (input or output) using the Input/Output Port
screen under the “Configuration” menu.
Chapter 12 Input and Output Ports
101
Port A - Relay Drivers
Port A provides 8 open-collector outputs which can be used to drive relays, solenoids, LEDs, etc. The
outputs have built-in suppression diodes to provide protection when driving inductive loads. An opencollector output driver acts similarly to a switch connected to an external power source. The output is always
in one of two states:
•
When turned “on”, the output port is shorted to ground, allowing current (provided by an external
source) to flow through the driver to ground, thereby powering an external device.
•
When turned “off”, the output port is opened, preventing current flow and turning the device off.
Terminal Block 1 (Port A) Description
Terminal Block 1 (Port A) contains a total of 10 lines for connecting to this port, as shown:
Terminal 10: Ground
Terminal 9: Port A Common
Terminal 8: Port A-8
Terminal 7: Port A-7
Terminal 6: Port A-6
Terminal 5: Port A-5
Terminal 4: Port A-4
Terminal 3: Port A-3
Terminal 2: Port A-2
Terminal 1: Port A-1
Terminals 1 - 8 are the outputs, and terminals 9 and 10 are connections that are common to all eight outputs.
Each device connected to Port A requires at least two lines:
•
One line to the desired port signal (terminal points 1 through 8).
•
One line to ground (terminal point 10).
A third line can also be connected to the “common” signal (terminal point 9) to provide protection when
driving an inductive load. Descriptions of when and how to use this feature are provided later.
Port A Electrical Characteristics
The Port A outputs are driven by an industry standard ULN2803A integrated circuit, which has the following
electrical characteristics:
Absolute Maximum Ratings
Maximum Current (single output):
Maximum Output Voltage:
Maximum Power Dissipation:
500 mA
50 V
2W
102
Chapter 12 Input and Output Ports
Electrical Parameters
Output Voltage Drop (Vce):
1.1V max at <100mA current
1.3V max at 200mA current
1.5V max at 300mA current
1.7V max at 400mA current
1.9V max at 500mA current
NOTE: When multiple outputs are on simultaneously, the total current must be limited to keep the
power dissipation below 2 Watts. The power dissipation for each output is calculated by multiplying
its current by the voltage drop shown in the table above.
Example:
Output 1 drives 400mA.
Output 2 drives 400mA.
Output 4 drives 200mA.
Output 7 drives 100mA.
400mA X 1.7V drop = 680mW power.
400mA X 1.7V drop = 680mW power.
200mA X 1.3V drop = 260mW power.
100mA X 1.1V drop = 110mW power.
The total power is 1730mW, which is OK since it’s less than 2W.
Port A Examples
A few examples will best illustrate how to connect to Port A. The following diagram shows output port A-1
driving an external DC relay:
Output
Voltage
Coil
Output #A-1
#1
Relay
Switch #1
Ground
#10
Controller
Terminal Block 1
Ground
Power Source
One side of a relay coil is connected to the positive side of an external DC power source. The other side of
the coil is connected to the chosen output port of the controller (in this case, Port A-1). The ground from the
external power source is connected to the controller’s ground (terminal block point #10).
The diagram of the controller shows a transistor (Switch #1). When the output port is “off”, the transistor is
open-circuited, preventing current flow from the output to ground. Thus, no current flows through the relay
coil and the relay is de-energized.
When the controller’s output port is turned “on”, the output point (#1) is shorted to ground (point #10). This
allows current to flow from the external power source, through the relay coil, into controller port A-1, out
through the ground (#10), and finally into the ground of the external power source. This energizes the relay
causing it to switch.
This same approach could also be used to drive a Light Emitting Diode (LED) by connecting the LED in
series with a current-limiting resistor in place of the relay coil.
Chapter 12 Input and Output Ports
103
Adding Transient Suppression
One problem with the configuration shown above occurs when driving inductive loads like relays. When the
output is turned off, the current must stop flowing through the relay coil. The coil, like all inductors, reacts by
sharply increasing the voltage across it. Some relays have built-in transient suppression diodes that clamp
this transient voltage spike to a safe level. Without protection, the power source or the driver circuit could be
damaged by the spike.
The ULN2803A contains built-in suppression diodes to prevent this problem, eliminating the need for
external suppression diodes. To take advantage of this, the power source driving the relay must be
connected to the “common” terminal of the output port (terminal point #9), as shown:
Common
Protection
Diode
Output
Voltage
#9
Coil
Output #A-1
#1
Relay
Switch #1
Ground
#10
Controller
Terminal Block 1
Ground
Power Source
With this set-up, the protection diode prevents the coil voltage from exceeding the normal power source’s
output voltage (plus a 0.7V diode drop), eliminating the possibility of damage.
WARNING: It is strongly recommended that the connection to point #9 be made for any relay (or
other inductive load) that doesn’t contain its own suppression diode. This will prevent damage to
the load and the controller.
External Power Source
As shown in these figures, the drive current for Port A must be provided from an external power source.
Why wasn’t the controller designed to provide this power itself?
There are many different types of relays available requiring different amounts of drive current and voltages.
Common DC coil voltages range from 3VDC to 48VDC. It would be impossible to design the controller to
provide all of these voltages.
Instead, the controller is designed to interface to an external source that provides the specific voltages
required for the chosen relays. If you’re planning to use Port A, you’ll need to provide your own DC power
source. Naturally, it would be most convenient to select the same coil voltage for all the relays (or other
devices), allowing the use of a single power source. Inexpensive wall transformers are available to provide
up to 1 Amp at common voltage levels. AC power sources or relays should not be used.
104
Chapter 12 Input and Output Ports
Multiple Port A Connections
When connecting multiple devices to Port A, the devices can share the same common and ground
connections, thereby minimizing the number of wires that must be run. This diagram illustrates connecting
eight relays to Port A:
Ground
Common
#10
Power
Source
Output
Voltage
Ground
#9
#8
Output A-8
Output A-7
Output A-6
Output A-5
Output A-4
Output A-3
Output A-2
Output A-1
#8
#7
#7
#6
#6
#5
#5
#4
#4
#3
#3
#2
#2
#1
#1
Controller
Terminal Block 1
External Relays
and Power Source
Since the coils of all the relays are tied together, this approach requires that the coils have the same voltage
rating. It’s possible to use relays with different coil voltages, but then they cannot be tied together at the
“common” connection. This takes away the transient suppression provided by the protection diodes, so
external suppression diodes should be provided (preferably built into the relays themselves).
As another example, the following setup can control several different types of devices simultaneously.
Chapter 12 Input and Output Ports
Ground
Common
#10
Ground
#9
+15V
105
+15VDC
Power
Source
#4
Output A-8
Output A-7
Output A-6
Output A-5
Output A-4
Output A-3
Output A-2
Output A-1
#8
#3
Ground
#7
+12VDC
+12VDC
Power
Source
#6
#2
#5
#1
#4
#3
#2
#1
Controller
Terminal Block 1
Ground
+5VDC
+5VDC
Power
Source
External Devices
In this example:
•
Two relays (#3 and #4) are being driven from a 15 VDC power supply using ports A-7 and A-8.
•
Two other relays (#1 and #2) are being driven from a 12 VDC power supply using ports A-4 and A-5.
•
Three LEDs are being driven with a 5 VDC power supply using ports A-1, A-2, and A-3.
WARNING: Its important to note that no connection is made to the “common” port in this
example. When using multiple power sources, do not make any connections to the common
port (terminal point #9). The common point ties all of the output ports together through the
suppression diodes. Tying them together in this example could result in the power sources
shorting to each other.
Port B - Digital Inputs
Port B provides 8 inputs that are protected up to +/-30V. They are “digital” inputs because they are read as a
one or zero. They contain pull-up resistors allowing them to be directly connected to switch closure inputs.
Here are some devices that can be connected to this port:
•
•
•
•
•
•
•
•
Magnetic switches (used in alarm systems)
Motion sensors
Glass break detectors
Smoke alarms (some types)
Water level detectors
Radon detectors (some types)
Push button switches
Thermal switches
106
Chapter 12 Input and Output Ports
•
•
•
Thermostats (isolated)
TV on/off sensors
Any other switch (or relay)
These inputs can also directly read TTL or CMOS digital inputs if you want to interface to your own circuitry.
Terminal Block 2 (Port B) Description
Terminal Block 2 contains a total of 10 lines for connecting to this port, as shown:
Terminal 10: Ground
Terminal 9: Ground
Terminal 8: Port B-8
Terminal 7: Port B-7
Terminal 6: Port B-6
Terminal 5: Port B-5
Terminal 4: Port B-4
Terminal 3: Port B-3
Terminal 2: Port B-2
Terminal 1: Port B-1
Terminals 1 - 8 are the inputs, and terminals 9 and 10 connect to the controller’s ground.
There are many types of equipment with outputs that are simple switches or relays. When the switch or
relay is closed, an electrical circuit path is made across it. When opened, there is no circuit path. Wires
connected to these outputs can be connected to the inputs of Port B. These devices are connected to Port B
by attaching one wire to the desired input port and the other to one of the ground points.
Port B Electrical Characteristics
The Port B inputs interface to an industry standard 1489 (or equivalent) integrated circuit, which has the
following electrical characteristics:
Absolute Maximum Ratings
Maximum Input Voltage:
+/-30 VDC (AC voltages should not be applied)
Electrical Parameters
Voltage inputs of -30V to +1V are read as zero (low)
Voltage inputs of 1.3V to 30V are read as one (high)
Voltage inputs between 1.0V and 1.3V are indeterminate.
If the input is left open, it will be “pulled-up” to 5V and read as a one (high).
A schematic of one input is shown below including a 2.7K pull-up resistor located on the controller circuit
board.
Chapter 12 Input and Output Ports
107
+5V
2.7K ohms
Input
Ground
Controller
Terminal Block 2
Port B Examples
A few examples will best illustrate how to connect to Port B as an input. The following diagram shows input
port B-1 connected to an external switch:
+5V
2.7K ohms
#1
Input B-1
#9 or #10
External
Switch
Ground
Controller
Terminal Block 2
When the switch is open, no current flows through it. The input buffer is internally pulled to +5V by the builtin resistor. Thus, the controller will read the input as “High” (a logic 1).
When the switch is closed, current will flow through it and pull the input buffer down to ground. Thus, the
controller will read the input as “Low” (a logic 0). The table below summarizes the current flow and voltage
levels for the opened and closed positions.
Current Flow Through Switch:
Voltage at Input Buffer:
Controller Input Port State:
External Switch Position
Open
Closed
0 mA
1.8 mA
+5V
0V
High (1)
Low (0)
NOTE: For proper operation, the resistance of the external switch and wiring to the controller should
be less than 500 ohms. This should not pose any problems, as even long wiring should have well
under 100 ohms resistance.
108
Chapter 12 Input and Output Ports
When multiple switches are used, one end of each switch should be tied together as a common ground, as
shown:
+5V
2.7K ohms
#1
Input B-1
Switch
#1
+5V
2.7K ohms
#2
Input B-2
Switch
#2
+5V
2.7K ohms
#3
Switch
#3
Input B-3
#9 or #10
Ground
Controller
Terminal Block 2
Port B can also be used as an input from a 5V digital circuit, as shown in the following circuit. The common
ground is necessary to ensure consistent voltage levels are used by the two systems.
#1
Output
Input B-1
#9 or #10
Ground
External
Device
Ground
Controller
Terminal Block 2
Port C - Digital Input/Output
Port C is connected to a PCF8574 integrated circuit that provides eight interface lines. The port can be
configured as an input or output port (all 8 lines will be the same type). When used as an input, it can
connect directly to switch-closure type devices (just as with Port B), or to digital signals. As an output, it can
directly drive digital logic or lower power peripherals such as LEDs (up to 20mA current).
WARNING: Before making any hardware connections to this port, the controller must be set to the
desired mode (input or output). This is done using the I/O port configuration screen of the PC
program. If you configure port C as an output, but connect input devices to it, damage to the
controller or the external devices could result.
Chapter 12 Input and Output Ports
109
Terminal Block 3 (Port C) Description
Terminal Block 3 contains a total of 10 lines for connecting to this port, as shown:
Terminal 10: Ground
Terminal 9: 5V
Terminal 8: Port C-8
Terminal 7: Port C-7
Terminal 6: Port C-6
Terminal 5: Port C-5
Terminal 4: Port C-4
Terminal 3: Port C-3
Terminal 2: Port C-2
Terminal 1: Port C-1
All digital inputs and outputs are referenced to the controller’s ground. This ground is brought out to terminal
point 10 and must be connected to the ground of the interfacing devices. Terminal point 9 is connected to
the controller’s regulated +5V power supply. This point can provide up to 100mA of continuous current
(160mA peak) to external devices.
Using Port C As An Output Port
When used as an output port, Port C provides the following output voltages (per line):
OUTPUT
STATE
OUTPUT
VOLTAGE
MAXIMUM
CURRENT
High - Logic 1 (One)
Low - Logic 0 (Zero)
>=4.8 V
<=1 V
300 uA
20 mA
WARNING: It’s important to follow the current limits in this table, as exceeding them could damage
the PCF8574. Note that the output can sink much more current in the low state (20mA) than it can
provide in the high state (300uA). This is important to remember when driving medium current
devices like LEDs. The examples given in this manual show the proper way to drive such devices.
Port C Output Examples
A few examples will best illustrate how to connect to Port C as an output. The following diagram shows
output port C-1 driving an LED:
5V
Output C-1
#9
#1
LED
110
Chapter 12 Input and Output Ports
This example shows a resistor in series with an external LED. The resistor is necessary to limit the current
through the diode to less than 20mA. A resistor between 250 ohms and 1000 ohms should work fine. When
the output is low, current will flow and the LED will light. When the output is high, the LED will be off.
NOTE: When using Port C as an output, no external power source is necessary. This is different than Port
A, which requires external power.
Port C can also provide digital outputs to external circuitry. The following example shows Port C driving a
standard CMOS latch (74HC373):
Output C-1
Output C-2
Output C-3
Output C-4
Output C-5
#1
#2
#3
#4
#5
#6
Output C-6
Output C-7
#7
#8
Output C-8
Input #1
Input #2
Input #3
Input #4
Input #5
Input #6
Input #7
Input #8
#10
Ground
Controller
Terminal Block 3
Ground
External
Device
The eight controller outputs are connected to the eight inputs of the latch. Also, the ground of the external
circuit must be connected to the controller’s ground (point 10).
When the controller is outputting a high (logic 1) signal, the voltage will be a minimum of 4.8V. When
outputting a low, the voltage will be a maximum of 1V. These levels are compatible with both CMOS and
TTL circuits and can be read by the 74HC373 (or any other digital integrated circuit for that matter).
Using Port C As An Input Port
When used as an input port, Port C interprets the voltage at the terminal block based on the following levels:
•
Voltage >= 3.5 V is read as a high (1)
•
Voltage <= 1.5 V is read as a low (0)
•
Voltages between 1.5 and 3.5 are indeterminate and may be read as a high or low (and should
therefore not be used).
Chapter 12 Input and Output Ports
111
•
Voltages > 6 V or less than 0 V (i.e., negative voltages) exceed the maximum rating of the PCF8574
integrated circuit and should not be applied. If you have inputs that can exceed this range, connect
them to Port B, which can withstand up to +/-30V.
•
An open input will be pulled up by the PCF8574 and read as a high (1). This facilitates the use of
switch closure inputs that are either closed or opened. However, external devices can easily
override the pull-up when they drive the port low or high. Thus, Port C will work with standard digital
inputs as well as switch closure inputs.
WARNING: As noted above, input voltages into Port C are limited to between 0V and 6V.
Voltages outside this range could damage the controller. If you have inputs that can exceed
this range, connect them to Port B instead.
Port C Input Examples
A few examples will best illustrate how to connect to Port C as an input.
The PCF8574 easily interfaces with switch closure inputs of the type found in burglar alarm sensors, motion
sensors, water-level sensors, etc. Switch closure inputs can be used with Port C in a similar fashion to Port
B. This example shows connecting an external switch to Port C-1:
#1
Input C-1
#10
External
Switch
Ground
Controller
Terminal Block 3
NOTE: No pull-up resistors are used on Port C. However, the PCF8574 interface device on Port C
contains an internal “weak” pull-up. If the input is left open, it will be pulled-up to 5V. However, if the
input is grounded, the ground will over-power the pull-up, bringing the input to ground.
When the switch is open, no current flows through it. The input buffer is internally pulled high in this
condition. Thus, the controller will read the input as “High” (a logic 1).
When the switch is closed, current will flow through it and pull the input buffer down to ground. Thus, the
controller will read the input as “Low” (a logic 0).
Port C can also be used as an input from a 5V digital circuit, as shown in the following circuit. The common
ground is necessary to ensure consistent voltage levels are used by the two systems.
Output
#1
Input C-1
#9 or #10
Ground
External
Device
Ground
Controller
Terminal Block 3
112
Chapter 12 Input and Output Ports
You can also mix and match switch closure inputs with digital inputs, as shown in this example:
Output #1
Output #2
Output #3
Output #4
Output #5
#1
#2
#3
#4
#5
#6
Output #6
#7
Switch
#1
#8
Switch
#2
Input C-1
Input C-2
Input C-3
Input C-4
Input C-5
Input C-6
Input C-7
Input C-8
#10
Ground
External
Devices
Ground
Controller
Terminal Block 3
Control Of Output Ports
Output ports can be controlled in three ways:
•
By a command in the schedule.
•
By a command received over the serial interface. If a computer is connected to the serial interface, it
can directly control all of the outputs.
•
By the screen menu system and an infrared remote.
This section describes the commands that can be used and gives examples.
Output Port Commands
The following output port commands can be included in a schedule. They can all also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected port are chosen from the pull-down list.
Chapter 12 Input and Output Ports
113
Standard Output Port Commands
Set Output Port Low
Sets the output port to a low (logic zero) state. Ports A and C use different hardware drivers and
therefore their low (logic zero) states will be slightly different:
Port A:
The output will be turned off, resulting in an open circuit (output is not driven high or
low, but is disconnected). External devices such as relays will therefore be off (not
driven).
Port C:
The output will be driven low with a voltage <= 1V.
Set Output Port High
Sets the output port to a high (logic one) state. Ports A and C use different hardware drivers and
therefore their high (logic one) states will be slightly different:
Port A:
The output will be turned on, resulting in the output being shorted to the ground
connection on the terminal block (point #10). This allows current to flow through the
circuit, driving the external device.
Port C:
The output will be driven high with a voltage >= 4.8V
Toggle Output Port
Switches the output port to the opposite of its current state. A high output will go low and a low
output will go high.
Pulse Output Port Low For “##.###” Seconds
Sets the output port to a low state for “##.###” seconds, then sets it high. “##.###” can range from
0.001 to 65.535 seconds. This command is normally used when an output is high. It will “pulse” the
output low for the specified period of time. If the output is low when the command is executed, it will
stay low for the specified time, then go high.
This command is designed primarily for controlling devices which require relatively short duration,
precise pulse widths. Although long lengths are possible, it’s best to keep them to a few seconds or
less.
When this command is executed, the controller sets the port to the desired state, then waits for the
specified time to elapse. While waiting, it will still be able to receive X-10 and infrared signals.
However, it will not immediately take action on them or perform any other actions (such as checking
for an input port to change, a timer to expire, or a scheduled event to occur) during this time. Only
after the port command is complete will it respond to any signals which came in during the wait.
After performing any such actions, it will then resume normal operations.
This delay is intentional, as the controller is designed to perform each set of commands as a group
without interruption. If it immediately responded to each incoming signal, undesired operations could
result. For example:
Assume your schedule is executing a command to pulse an output low for 10 seconds. After
initially setting it low, a user sends an IR command to set it low. Consider what would happen if
the controller executed the IR command immediately. Since the port is already low, the IR
command would not change it. When the 10 second pulse is completed, the controller would
then set the port back high again and leave it there. Thus, the port ends up high even though
the user had sent an IR command to set it low. Our design overcomes this problem by
114
Chapter 12 Input and Output Ports
completing the pulse command before responding to any other commands. The IR command is
performed last, leaving the port in the desired low state.
NOTE: Since the controller doesn’t perform other actions while executing this command, it is
recommended that it only be used for short pulses. Pulses of a few seconds or less are sufficient to
control most devices that use pulses as commands.
If you need longer pulse lengths, we recommend a different approach using other commands:
•
First, set the port to the desired state with appropriate output port command.
•
Then, start a Wait Timer for the desired pulse length. Set up the timer so that when it
expires, it sets the port back to its original state. The controller will operate normally while
waiting for the timer to expire and can therefore respond immediately to any incoming
commands.
This approach will produce pulse lengths that are usually more than accurate enough. The exact
accuracy depends on your schedule, but is usually within 20 milliseconds. However, in rare cases it
can be less accurate (for example, if you’re in the middle of transmitting multiple IR signals lasting
several seconds, the output port action could be delayed while waiting for the IR signals to
complete).
The lengths of the pulses are almost always accurate within 1% of the value you specify. If you
need more precision, we recommend that you test the command and measure its actual duration.
By adjusting the commanded value slightly, you should be able to get within a millisecond of the
desired length. The only exception to the 1% accuracy spec is for very short pulses of a few
milliseconds. Such pulses could be several hundred microseconds too long.
Pulse Output Port High For “##.###” Seconds
Sets the output port to a high state for “##.###” seconds, then sets it low. “##.###” can range from
0.001 to 65.535 seconds. This command is normally used when an output is low. It will “pulse” the
output high for the specified period of time. If the output is high when the command is executed, it
will stay high for the specified time, then go low.
Please refer to the previous command for several important notes about these “pulse” commands.
Disable Output Port
Disables the output port. After an output is disabled, the only command that can be executed is an
Enable command. Other commands, such as to set the output high or low, will be ignored. After
being enabled again, it will work normally. Each output port can be individually enabled or disabled
at any time.
This command can be useful for:
•
Disabling control of a device that is not working properly or is not yet fully installed.
•
Temporarily preventing other parts of the schedule from controlling the output.
•
Temporarily preventing users from controlling the output with X-10 or infrared remote
controls.
Enable Output Port
Enables the output port. This command must be issued to a “Disabled” output before it will respond
to any other command.
Chapter 12 Input and Output Ports
115
Advanced Output Port Commands
Read Output Port State Into Result Value
This command takes different actions depending on whether it is executed in a schedule or
commanded over the serial interface:
•
In a schedule, it puts the current state of the port (a single line) into the system variable
“Result Value”. After reading the value into “Result Value”, you can transfer it to a variable,
use it as a condition in an If-Then statement, or transmit it over the serial interface. The 8-bit
value is defined as follows:
Bit 0: Enabled/Disabled Status (0=disabled, 1=enabled)
Bit 1: Current State (0=low (off), 1=high (on))
Bits 2 - 7: Not used (all zeros)
•
When commanded over the serial interface, it puts the current state of the port into the
system variable “Result Value” as described above, and transmits it over the serial interface.
This allows reading of the port state via the serial interface. See the section on serial
communications for details on the format of this command and the serial data response.
Set 8-Bit Port “X” To “YYYYYYYY”
“X” can refer to either Port A or Port C (if Port C is configured as an output). This command sets all
8 lines in the port simultaneously. “YYYYYYYY” represents the desired states of the 8 lines, with the
highest port number being listed first. For example:
Set 8-Bit Port C To 10001111
will set the 8 lines of Port C as follows:
Port C-1 = 1 = high
Port C-2 = 1 = high
Port C-3 = 1 = high
Port C-4 = 1 = high
Port C-5 = 0 = low
Port C-6 = 0 = low
Port C-7 = 0 = low
Port C-8 = 1 = high
This command is useful if you’re using Port C as an interface to a digital circuit with an 8-bit bus. A
single command will write a “byte” to the bus. Note: This command will always affect all 8 output
ports, even if one or more of them are “disabled”.
Output Port Conditions
The following output port conditions can be checked by an If-Then or If-Then-Else statement.
If Output Port Is Low
This condition will be true if the port is low (logic zero), false if high (logic one).
If Output Port Is High
This condition will be true if the port is high (logic one), false if low (logic zero).
116
Chapter 12 Input and Output Ports
If Output Port Is Enabled
This condition will be true if the port is enabled, false if disabled.
If Output Port Is Disabled
This condition will be true if the port is disabled, false if enabled.
Control Of Input Ports
Input ports can be controlled in three ways:
•
By a command in the schedule.
•
By a command received over the serial interface.
•
By the video menu system and an infrared remote.
This section describes the commands that can be used.
Input Port Commands
The following input port commands can be included in a schedule. They can all also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected port are chosen from the pull-down list.
Standard Input Port Commands
Disable Input Port
Disables the input port. When an input is disabled, the controller will not perform any actions you set
up to be performed automatically. In addition, the controller will not check the port state or update its
value. However, you can still perform the other input port commands. After being enabled again,
the port will work normally.
Enable Input Port
Enables the input port. This command must be issued to a “Disabled” input before it can be used
normally.
Disable Input Port Low Trigger
If you have defined actions to be performed automatically when the port goes low, this is known as a
“Low Trigger”. This command disables this trigger, preventing the actions from being performed. All
other aspects of the input port continue to function normally. The controller will continue to check for
changes in the input and you can still use the state of the port as a condition in an If-Then statement.
This command has the same effect as if you had disabled the trigger from the PC input port
summary screen before loading the schedule. Either way, the port works normally except that it
won’t automatically perform any actions you may have defined.
Use the command Enable Input Port Low Trigger to re-enable it.
Chapter 12 Input and Output Ports
117
Enable Input Port Low Trigger
If you have defined actions to be performed automatically when the port goes low, this is known as a
“Low Trigger”. This command enables this trigger, allowing the actions to be performed.
Disable Input Port High Trigger
If you have defined actions to be performed automatically when the port goes high, this is known as
a “High Trigger”. This command disables this trigger, preventing the actions from being performed.
All other aspects of the input port continue to function normally. The controller will continue to check
for changes in the input and you can still use the state of the port as a condition in an If-Then
statement.
This command has the same effect as if you had disabled the trigger from the PC input port
summary screen before loading the schedule. Either way, the port works normally except that it
won’t automatically perform any actions you may have defined.
Use the command Enable Input Port High Trigger to re-enable it.
Enable Input Port High Trigger
If you have defined actions to be performed automatically when the port goes high, this is known as
a “High Trigger”. This command enables this trigger, allowing the actions to be performed.
Advanced Input Port Commands
Read Input Port State Into Result Value
This command takes different actions depending on whether it is executed in a schedule or
commanded over the serial interface:
•
In a schedule, it puts the current state of the port (a single line) into the system variable
“Result Value”. After reading the value into “Result Value”, you can transfer it to a variable,
use it as a condition in an If-Then statement, or transmit it over the serial interface. The 8-bit
value is defined as follows:
Bit 0: Enabled/Disabled Status (0=disabled, 1=enabled)
Bit 1: Current State (0=low (off), 1=high (on))
Bits 2 - 7: Not used (all zeros)
•
When commanded over the serial interface, it puts the current state of the port into the
system variable “Result Value” as described above, and transmits it over the serial interface.
This allows reading of the port state via the serial interface. See the section on serial
communications for details on the format of this command and the serial data response.
Read 8-Bit Port “X” Into Result Value
“X” can refer to either Port B or Port C (if Port C is configured as an input). This command reads all
8 lines in the port and puts their values into the system variable “Result Value”. This is an 8-bit value
with 1 bit representing the current state of each of the 8 lines in the port. A 0 (zero) bit indicates the
corresponding port is low, while a 1 (one) bit indicates it is high. The highest port number is listed
first. For example, if a command to read 8-Bit Port C returns the value 147d, it is interpreted as
follows:
The value 147d (93h) is 10010011 in binary. The 8 ports are as follows:
Port C-1 = 1 = high
Port C-2 = 1 = high
118
Chapter 12 Input and Output Ports
Port C-3 = 0 = low
Port C-4 = 0 = low
Port C-5 = 1 = high
Port C-6 = 0 = low
Port C-7 = 0 = low
Port C-8 = 1 = high
This command is useful if you’re using Port C as an interface to a digital circuit with an 8-bit bus. A
single command will read a “byte” from the bus. After reading the value into “Result Value”, you can
transfer it to a variable, use it as a condition in an If-Then statement, or transmit it over the serial
interface.
Input Port Conditions
The following input port conditions can be checked by an If-Then or If-Then-Else statement.
If Input Port Is Low
This condition will be true if the port is low (logic zero), false if high (logic one).
If Input Port Is High
This condition will be true if the port is high (logic one), false if low (logic zero).
If Input Port Is Enabled
This condition will be true if the port is enabled, false if disabled.
If Input Port Is Disabled
This condition will be true if the port is disabled, false if enabled.
Output Port Notes
Use Of Output Enable/Disable
Outputs can be individually enabled or disabled. When disabled, an output will not respond to commands to
change it. Naturally, you’ll normally want to have all your outputs enabled, but the disable feature provides
additional control capabilities that may be useful in certain situations.
Example
If you’re developing a schedule and one of the outputs is not working the way you want it to, you
could temporarily disable it to prevent problems. For example, you might be using an output to
arm/disarm a burglar alarm, but the alarm isn’t responding properly. If you left the controller running
with the output enabled, the alarm might get armed or disarmed inadvertently. Disabling the output
will prevent this problem until you get around to fixing it, at which time you can enable the output.
Outputs can be enabled or disabled in several ways:
•
A command in the schedule (i.e., Disable Output Port).
•
A command from the serial interface.
Chapter 12 Input and Output Ports
119
•
The output can be enabled/disabled upon downloading a schedule by first enabling/disabling the
output in the output port summary screen.
•
The output can be automatically enabled/disabled after a power failure by setting the “Power Fail
State” to the desired state.
Power Failure Options
When power is restored after a power failure, some devices connected to the digital outputs might not
respond properly. You might want to control these outputs in a certain way to prevent improper operations.
You can do this by programming the controller to take certain actions on an output when power returns. This
is done by setting the output’s “Power Fail State” to one of the following:
•
No Change. Makes no changes to the port. This is the default setting.
•
High. When this is selected, the controller will set the output high after recovering from a power
failure. The state of the output prior to the power failure does not matter. The output remains
enabled, so it can be changed by subsequent commands.
•
Low. This is similar to the “High” command, expect the output is set low instead.
•
Disabled. The controller will disable the output. The output will remain in whatever state it powered
up in. Since the output is disabled, it will not respond to subsequent commands (except an Enable
command).
•
Low/Disabled. The controller will set the output low, and then disable it. The output will remain low
until it is enabled and changed by subsequent commands.
•
High/Disabled. The controller will set the output high, and then disable it. The output will remain
high until it is enabled and changed by subsequent commands.
Input Port Notes
Power Failure Options
When power is restored after a power failure, some digital inputs to the controller may not be in the correct
state. This might occur for a variety of reasons:
•
The interfacing device may take a longer time to start up than the controller (for example, you have a
computer hooked to the inputs, and it has to reboot itself).
•
The interfacing device may have been damaged.
•
The interfacing device must be issued certain commands before it provides the correct output.
•
The interfacing device is on a different power circuit than the controller and that circuit has not
recovered power.
If the controller were to take actions based on these inputs, undesired operations might occur. To prevent
this possibility, the controller can be programmed to automatically disable an input after recovery from a
power failure. The input’s “Power Fail State” can be set to one of the following:
•
No Change. Makes no changes to the port. This is the default setting.
120
Chapter 12 Input and Output Ports
•
Disabled. The controller will disable the input. The input will then respond only to a subsequent
enable command.
If you disable an input this way, then you probably want a way to re-enable it later. There are several ways
of doing this:
•
In your power failure recovery routine, set a Wait Timer to enable the input after a specified time
period. If the problem is with a device like a motion sensor not coming on quickly enough, a delay of
a second or two should be sufficient. If you’re waiting for a PC to reboot, you’ll need a longer delay.
•
Wait for another external input before enabling it. For example, you might want to manually send an
IR or X-10 command to the controller to enable the input.
Chapter 13
Video Output
121
CHAPTER 13: VIDEO SYSTEM
Introduction
The video system provides the following features and capabilities:
•
Can display predefined menus and screens on a television. This is called the built-in video menu
system. These menus provide the following capabilities:
-
•
To view the status of and issue commands for X-10 modules, input/output ports, IR signals,
scheduled events, periodic events, macros, flags, variables, and timers.
To change the current time or date.
To view and change the controller operating modes.
To provide special control capabilities (thermostats, security systems, weather display, event
log, etc.).
Can display a custom menu system that you create on the PC.
capabilities:
-
-
This provides the following
Up to 16 screens of any text you want.
For each screen, you can define actions for 15 different infrared remote buttons:
- The 10 number keys
- Channel up and down
- Volume up and down
- Enter
Allowable actions for each remote button are to:
- Run a macro
- Display another custom menu screen
- Display a built-in screen
- Exit the video menu system
•
Can display custom screens that you create in your schedule (by using commands to write text to
the screen). You can display variable values, timer values, the current time, etc. You can watch the
values change in real time.
•
Can display RAM video screens which can store text received over the serial interface and display
it at a later time. These are primarily for use with other PC software programs that can obtain
information (like stock quotes, weather reports, etc.) and send it to HomeVision for later viewing.
•
A "text storage buffer" that can store any text received from the serial interface (regardless of data
format) and later display all or any part of it on a video screen.
•
Screens are 11 rows of 24 characters each (actually, the controller can generate 12 rows, but most
televisions can only display 11).
•
Each row can be individually set to one of 4 character sizes.
•
Individual characters can be made to blink. Three different blink rates are available.
•
Text can be displayed over solid background or overlaid on top of incoming video. When a solid
background is used, you can select from eight different background colors.
•
Incoming video can be passed through without any overlay.
•
The video screen system can be controlled from a standard hand-held infrared remote control.
122
Chapter 13
Video Output
•
The entire video system can be controlled from the serial interface.
•
The standard video format is NTSC. PAL video is available as an option (it requires a modified
controller card).
Choosing Between The Video Screen Types
All the different types of video screens may make it confusing to know what you should use. Here's a simple
(hopefully) recommendation:
•
Start by using the built-in video menu system. It's ready-to-go and will do everything most users
need.
•
Use the custom menu system if you decide that built-in system is either missing some things you
want, or has some things that you don't the user to access (like variable and timer screens).
•
Create your own custom screens if you need to display changing information (variable values, flag
states, the current time, etc.)
•
Use the RAM video screens only if you have PC software that supports them.
You can use all of the above screen methods together in your schedule. For example, you could create a
custom menu system with multiple screens displaying menus of options. One of the entries could start the
built-in video menu system (this would allow you to access the more than 50 built-in screens without having
to include each of them individually in your custom menus). Another custom menu entry could display a
fully-custom screen (perhaps showing the temperature of all the rooms in your house). Another custom
menu entry could call up one of the RAM video screens (perhaps displaying stock quotes sent earlier in the
day from your PC).
Built-In Video Menu System
The controller contains numerous built-in screens that can be displayed at any time. You can move between
screens with an infrared remote. This system provides many capabilities:
•
View the status of and issue commands for X-10 modules, input/output ports, IR signals, scheduled
events, periodic events, macros, flags, variables, and timers.
•
Control advanced functions such as heating and air conditioning systems and security systems.
•
Provide a menu system to access your own custom-designed screens.
•
View and change the controller operating modes.
The best way to learn about the video screen system is by displaying it on your TV and moving through it
with your infrared remote control. To do this, you’ll first need to configure your remote to work with the
controller. Refer to the Infrared Control chapter for information on how to do this.
This section explains the key features of the video screen system.
Video Screens Overview
The screens are grouped into seven general categories:
•
Main Menu Screens. There are four main menu screens you use to select other screens. The first
two always display the same entries. Page 3 contains some “semi-custom” entries that you can
Chapter 13
Video Output
123
enable and disable. Page 4 is a “custom” screen where you can create six entries of your own. You
can use page 4 to perform your own macros or to take you custom screens that you create yourself.
•
Object List Screens. These screens list the objects in your schedule in the order of their ID
numbers. There are separate screens for X-10, IR signals, scheduled events, periodic events, input
ports, output ports, macros, flags, variables, and timers. The screens list either 4 or 8 objects at a
time, displaying their names and other information. You can scroll through them to view their status
and make changes. Pressing an object’s number key on your remote takes you to the object control
screen.
•
Object Control Screens. These screens allow you to make changes to or control the selected
object. For instance, you can:
-
Execute a macro
Change the state of a flag or the value of a variable
Start, stop, or reload a timer
Transmit an X-10 or infrared signal
Control an output port
Change the time of a scheduled event
Change the rate of a periodic event
Enable or disable X-10 actions, IR signal actions, input/output ports, and scheduled and
periodic events.
These object control screens are organized as menus, allowing you to easily select the desired
action. Some actions will take you to another screen where you enter more detail (such as the new
time for a scheduled event or the value of a variable). Most also have help screens.
•
Configuration/Status Screens. These screens display the general status of the controller and
allow you to change its configuration. For example, you can:
-
•
Change the current time and date
Enable or disable the major controller functions for X-10, IR, and I/O ports
Data Entry Screens. These screens are used to enter data, such as:
-
A time or date
A variable value
A timer value
•
Custom Control Screens. These screens are used to control HVAC systems, security systems,
etc. New screens will be regularly added. Refer to the text file “Video Screens” installed in the
application directory for the latest information.
•
Help Screens. Many of the screens have help screens that explain important features.
Video Screen System Navigation
An infrared remote control is normally used to navigate around the video screens. 16 buttons (keys) are
used for this purpose:
•
•
•
•
•
Number keys 0 - 9
Volume up and down keys
Channel up and down keys
Enter key
Cancel key
124
Chapter 13
Video Output
Your remote may not use these exact names for the keys (particularly a Cancel key). This isn’t a problem,
as you can assign these functions to any buttons on your remote. Refer to the Infrared Control chapter to
properly configure your remote for operation with the video screen system.
The remote control’s buttons have different functions depending which video screen is active (being
displayed). The functions are explained below.
•
No Display. When the video screen system is inactive, no screens are being displayed. The only
remote key that functions is channel up, which starts the video screen system and displays main
menu page 1.
•
Main Menu Screens. When one of the main menu screens is being displayed, the keys have these
functions:
-
•
Object List Screens. When one of the object list screens is being displayed, the keys have these
functions:
-
•
Number keys select from the menu entries.
Volume up and down keys rotate between the main menu screens. Volume up moves
forward, while volume down moves backward.
The channel down key exits from the video screen system and shuts off the On Screen
Display circuitry.
If you exit from the menu system using the channel down key, the channel up key returns
you to the main menu.
The enter and cancel keys are not used.
Number keys select specific objects from the list.
Volume up and down keys page through the objects. Volume up displays objects with
higher ID numbers, while volume down displays objects with lower ID numbers.
The channel up key returns you to the previous menu.
The channel down key exits from the video screen system and shuts off the On Screen
Display circuitry.
The enter and cancel keys are not used.
Object Control Screens. When one of the object control screens is being displayed, the keys have
these functions:
-
Number keys select from the menu entries.
The channel up key returns you to the previous screen (object list screen).
The channel down key exits from the video screen system and shuts off the On Screen
Display circuitry.
The volume up and down, enter, and cancel keys are not used.
•
Configuration/Status Screens. Each of these screens works slightly differently. However, the
remote keys work in a similar fashion as for the other screens.
•
Data Entry Screens. When one of the data entry screens is being displayed, the keys have these
functions:
-
Number keys enter their corresponding value.
Volume up and down keys increment or decrement the digit the cursor is located on.
Channel up and down keys move the cursor right or left in the data entry field. The cursor
wraps around at the first and last digits.
The enter key confirms the data entry and returns to the previous screen.
The cancel key cancels the data entry and returns to the previous screen.
Some of the data entry screens behave slightly differently when entering specific data. For example,
when entering the current month, the volume up and down keys scroll through the 12 months (Jan,
Feb, etc.).
Chapter 13
•
Video Output
125
Help Screens. From the help screens, all keys return you to the previous screen.
Starting The Video System
There are three ways to start displaying screens:
1) Pressing the "Channel Up" button on your configured remote.
2) Performing this command in your schedule:
Start Video Menu System
3) Performing these commands in your schedule:
Initialize For Internal Video Mode
Display Screen ##
The first two methods both start the video screen system and display page 1 of the main menu. The third
method displays the selected screen. This is useful when you need to display a certain screen and don't
want to make the user have to navigate through the menu system to reach it. Regardless of how you start
the video system, you can always use your remote to navigate around.
Stopping The Video System
There are three ways to stop displaying screens:
1) Many of the built-in video screens allow you to shut the system off. Some screens have this option
on the menu and you simply press the corresponding button on your remote. Other screens use the
"Channel Down" button to exit.
2) Remove power from the controller then re-apply power.
3) Use the "Stop Video Mode" command in your schedule.
If you desire, you can prevent the user from turning the video system off. To do so, select this option from
the "Controller Settings" screen. When this option is selected:
•
If the user tries to exit the video menu system using an IR remote, the command is ignored and the
screen remains unchanged.
•
When learning an infrared signal, the video system will be temporarily shut off. When learning is
complete, it will be restarted.
•
When power is restored to the controller, it automatically starts the video menu system. You do not
need to include any commands in the Power Failure Recovery event to start it.
•
You can still shut off the video system by using the "Stop Video Mode" command if you desire.
Alternate Navigation System
The video menu system is normally controlled by a user pressing buttons on an infrared remote.
Sometimes, however, it can be useful to have other ways to control the menu system. A set of 16 video
commands is provided that you can use in your schedule to do this. These commands will cause
HomeVision to respond just as if a user had actually pressed the corresponding button on a remote. These
are called "Infrared Simulation Commands", and are described in the Video Commands section.
126
Chapter 13
Video Output
Event Log
Page 3 of the main menu system accesses the “event log”. This log can record the occurrence of events
and can be viewed on your TV. The log holds 256 lines of data in a "scrolling" fashion. New events are
added at the bottom of the list. Once all 256 lines are filled, the new data overwrites the oldest data. Thus,
the 256 most recent lines are always displayed.
To view the log, select item 4 from main menu page 3 of the video menu system. The channel up and down
keys move up and down 1 screen (9 lines) at a time. The volume up and down keys move 1 line at a time.
Once you reach the top (oldest events) or the bottom (newest events), you can't go any further. The enter
and cancel keys are used to return to the main menu.
Many types of events can be automatically written to the log. You can control what's logged using the
Controller Settings screen under the "Configure" menu of the PC software. The time of the event can also
be logged.
You can also write your own text to the log area. Commands to do this are located with the video screen
commands on the actions entry screen.
Thermostat Screens
Page 3 of the TV main menu system contains entries for controlling a 2-zone heating and air conditioning
system. Refer to the "Thermostats" chapter for details.
Weather Conditions Screen
Page 3 of the TV main menu system contains entries for viewing a weather conditions screen, which is
described in a separate chapter.
Custom Menu System
Overview
The custom menu system allows you to very quickly create your own video menus. You don't have to use
these, as HomeVision has the built-in video menu system discussed above. However, the custom menu
system allows you to tailor the video system to your own needs. It has the following features:
•
Screens (menus) are created by entering text into a simulated TV screen in the PC software.
•
You can have up to 16 screens.
•
For each screen, you can define actions for 15 different infrared remote buttons:
-
The 10 number keys
Channel up and down
Volume up and down
Enter
Allowable actions are:
- Run a macro
- Display another custom menu screen
- Display a built-in screen
Chapter 13
Video Output
127
- Exit the video menu system
For example, you could create a screen that looks like this:
Joe's Automation System
1
2
3
4
5
6
7
8
9
-
Lighting (X-10)
Security system
HVAC system
Event log
Start home theater
Start party mode
Menu page 2
Built-in menu system
Exit
Pressing buttons 1, 2, 3, and 4 would display the corresponding built-in video screen. Buttons 5 and 6 would
run the appropriate macro. Button 7 would display another one of your custom menus. Button 8 would
display main menu page 1 of the built-in video menu system (thus allowing you to access all the other built-in
screens without requiring you to put them on your own custom menus). Button 9 would shut off the video
menu system.
Setting Up The Custom Menu System
Here's how to create your own custom menus:
1) Open the Controller Settings Configuration Screen, select the "Video Settings" tab, and check the
"Enable custom TV menu system" option.
2) Open the Custom TV Menu System screen under the "Advanced" menu.
3) Enter the number of menus you want to have. You can start with one and add more later if you like.
4) In the blue simulated TV screen, enter the text as you want it to appear on the TV. The top line
should usually be a screen title. Note that certain non-text characters will appear different on your
TV than shown on the PC screen (the simulated display cannot reproduce the same characters that
the HomeVision controller does). The actual characters are described in the list box under the "TV"
screen.
5) For each infrared remote button that you want to cause an action, select the type of action from the
corresponding list box. If you don't want the button to do anything, leave the list box blank.
6) For each type of action, an additional list box will be shown. Use it to select the specific action (i.e.,
which macro to run, which built-in screen to display, or which custom menu to display).
7) Click "Done", save your schedule, then download it.
8) Test out your new menu system!
Tips On Using The Custom Menu System
Here are a few suggestions to help you develop your custom menus:
•
Use the number keys to perform actions (just like with the built-in screens).
128
Chapter 13
Video Output
•
Use the volume up and down keys to page through your custom menus. Note how the built-in menu
system uses the volume up key to go to the next page (1→2→3→4→1) and the volume down key to
go to the previous page (4→3→2→1→4). You can do the same thing with your custom menus.
•
Use the channel down key to exit the video system, just like the built-in menu system does.
•
If you don't want the users to be able to access screens like timers or periodic events, simply leave
them off your menus. This will prevent them from inadvertently changing them.
•
When you start the video menu system (whether by pressing the channel up button on your remote
or issuing a "start video system" command), your first custom menu will be displayed. Therefore,
make this your main screen.
•
You could make your first screen a "Welcome" screen that displays a message. This can be used
by installers to display your company name and phone number for users to call if they have
problems. Then, have each remote button display the main user menu.
•
The custom menus can be displayed in your schedule with this command:
Video: Display video screen number ##
The 16 available custom menus are screen numbers 84 through 99. So if you wanted to start the
first menu, you would simply display screen 84.
RAM Video Screens
The other HomeVision video screens can be grouped into three categories:
1) The built-in video menu system containing predefined text and data. These screens are "ready-touse" without any effort on your part.
2) Custom menus (discussed above) containing text that you define using the PC.
3) Custom screens containing anything you want to write, including variable values, timer values, and
other things you can't do on the custom menus. These screens can be created either by putting
commands in your schedule or sending commands over the serial interface.
With HomeVision, users can send "real-time" data from a PC to HomeVision for display. This provides a lot
of power, as it can display e-mail messages, weather reports, sports scores, and anything else that the
computer has access to. However, this is difficult to do with the other commands and screens. This is
because the serial interface commands can only write text to the custom screen currently being displayed.
The text is not stored in the controller. If the user changes to another screen, the text will be lost. If the user
wants to view it again, the computer would have to send it again.
The “RAM video screens” overcomes this problem. These are called "RAM video screens" because the text
is actually stored in the controller RAM (memory). The text can be sent from a computer at any time and
stored in the controller. Users can then view these screens whenever they want.
The key to this feature is to have PC software that can obtain data and send it to the controller. The
HomeVision software can do this to a limited extent, as explained later. However, we're providing this
feature in large part so that other software vendors can develop programs that can easily display information
on the TV.
Configuring The RAM Video Screens
Before using the RAM video screens, you need to tell the controller how many you want to use. The
controller will then set aside enough RAM to hold them. Open the "Controller Settings" screen under the
"Configure" menu, select the "Video Settings" tab, then enter the desired number of screens in the
appropriate text box. If you're not using these screens, enter zero to save memory.
Chapter 13
Video Output
129
The controller can store up to 32 RAM video screens, depending on your schedule size. The screens are
stored in the same RAM that holds your schedule actions. If you have a very large number of actions, you
might not have space for all 32 RAM video screens. Each screen takes 264 bytes of RAM (11 rows X 24
characters per row). Therefore, 32 screens take up 8448 bytes.
This same RAM is also used for the "data log". The more RAM video screens you use, the less room there
is in the data log. However, since the data log is typically 64K bytes in size, losing a few thousand bytes is
probably not significant.
If there's not enough room in the controller to hold your schedule and the desired number of video screens,
you will get an error message when you load the schedule. You will then have to either reduce the number
of screens or delete some actions.
Displaying RAM Video Screens
These screens are displayed using the following video command:
Display Video Screen ##
You can display a RAM video screen just like you would any other video screen; simply enter the desired
screen number. The "RAM video screens" are numbered 100 through 131 (assuming you have configured
the controller for all 32 available screens). If you have less than 32 screens, they are numbered starting at
100 and progressing upwards.
Once you display a screen, you may want to switch to another screen using your remote control.
HomeVision does not provide any automatic way to do this. Instead, you have to write the commands
yourself to switch screens. The methodology would be similar to switching between custom screens. The
basic approach is to use a variable to keep track of what screen you're displaying. In the received infrared
signal event for each button, you check the variable to see if you're displaying a RAM video screen. If you
are, you then take the desired action (switch to another RAM screen, display a built-in screen, shut the video
system off, etc.). Refer to the "How To" file for details on creating and navigating your own screens.
Writing Text To RAM Video Screens
There are two ways to get text into the RAM video screens from a PC:
1) By sending commands to the controller over the serial interface, usually from a computer. The
commands to write the text are detailed in the "Serial Protocol" file, which describes all the serial
commands. This capability is intended to allow computer programs to send text to HomeVision for
viewing later. There are no programs yet available that use this capability. However, you may write
your own programs that do so.
2) By reading a text file that's on a computer and transmitting it to the controller. You can initiate this
action in your schedule by sending a serial command to the computer. The computer, which must
be running the HomeVision software, will then read the text file into the desired RAM video screen.
The second method is detailed below.
To read a text file into a controller RAM video screen, enter a serial interface command in your schedule to
transmit the following ASCII text:
Read text file filename.txt into video screen ###
130
Chapter 13
Video Output
Replace filename.txt with the complete name of the desired file, including the extension (which must be .txt).
Replace ### with the desired RAM video screen number (100 - 131). For example, to read the contents of
the file "news.txt" into RAM video screen 100, send this ASCII text:
Read text file news.txt into video screen 100
Notes
•
•
•
•
The serial command is not case sensitive.
If the specified file is already opened when the software tries to read it, the command will not be
executed.
Status of the command will be shown on the bottom of the main software screen.
HomeVision will format the file so that text wraps around properly at the end of the each line. If the
file is too large to be displayed on one screen, only one screen full will be shown.
Using The RAM Video Screens
How would you use these screens? Well, you would need a computer program that could obtain data and
put it into a text file. Then, either the program would format it to fit on a screen and transmit it to the
controller, or you could put a command in your schedule to read the file into the desired video screen.
Here's an idea of how this capability could be used. A computer program could obtain data from a variety of
sources, such as:
•
•
•
•
•
•
E-mail messages from your mail server
Weather reports, sports scores, stock prices, etc. downloaded from the Internet
Incoming fax messages from your fax software
Voice mail messages from voice mail software running on your PC
Other home automation devices connected to your PC
Text files created on your PC by other software
The program could then periodically transmit this data to HomeVision, or you could periodically read it from a
text file. Each type of data could have it's own screen. For example, the weather report would go to screen
100, your e-mail message list would go to screen 101, sports scores for your favorite teams would go to
screen 102, and so on.
Once the data is in the controller, you can view it at any time. For example, you could have the controller
display the weather report screen each day when it wakes you up in the morning. When you return home
from work, it could automatically display the stock price screen. You could also access them from the video
menu system, so you could view them whenever you want.
Text Storage Buffer
Overview
The “text storage buffer” allows serial data (presumably text) coming into HomeVision to be displayed on the
TV screen. Note that there are other serial commands that can be used to display text on the TV, but they
must follow the HomeVision serial protocol format. The advantage of the text storage buffer is that it can
read data from devices that do not follow this format.
The text storage buffer consists of 256 bytes of memory, each of which can hold one byte (or character) of
text. The character locations are numbered 1 through 256. There are two associated commands that can
be used in your schedule. One is a serial command that extracts text from a received serial message and
puts it into a specific location in the text storage buffer (see the Serial Interface chapter for a detailed
description). The second is a video command that writes a specific portion of the text storage buffer to the
video screen (see the "commands" part of this chapter for details.
Chapter 13
Video Output
131
Using The Text Storage Buffer
Use of the text storage buffer is best explained with an example. Assume you have a device connected to
HomeVision’s serial port that periodically sends HomeVision the name and artist of a CD being played.
Assume the serial data is in the following format:
CD artist: The Beatles
CD title: The White Album
Assume also that each message always sends 20 characters for the artist and title, using trailing blank
spaces if the artist or title is less than 20 characters. Assume that you want to create a video screen to
display this information that looks like this:
COMPACT DISK INFO
CD artist:
The Beatles
CD title:
The White Album
This requires two steps:
1) Putting the received serial data into the text storage buffer
2) Displaying the data from the text storage buffer
First, however, you must decide which part of the text storage buffer to use to hold the information. This is
entirely up to you to choose; you can use the 256 characters any way you want. The easiest way would be
to use the first 20 characters to hold the artist and the next 20 to hold the title, like this:
Characters 1-20 = CD artist
Characters 21-40 = CD title
To put the serial data into the text storage buffer, you use the following commands in the Serial Data Input
Event:
If
Received serial characters 1 - 11 are "CD artist: "
Then
Copy 20 characters of received serial text, starting at char # 12,
into text storage buffer starting at location 1
End If
If
Received serial characters 1 - 10 are "CD title: "
Then
Copy 20 characters of received serial text, starting at char # 11,
into text storage buffer starting at location 21
End If
Next, we need to create the video screen to display the information. Refer to the “How To” file installed in
the HomeVision directory for details on creating custom screens. The basic commands to create the video
screen are as follows:
Video:
Video:
Video:
Video:
Video:
Set cursor row to 1
Set cursor column to 4
Display text "COMPACT DISK INFO"
Set cursor row to 3
Set cursor column to 1
132
Chapter 13
Video:
Video:
Video:
Video:
Video:
Video:
Video:
Video:
Video:
Video:
Video Output
Display text "CD artist:"
Set cursor row to 4
Set cursor column to 3
Display 20 character long text string, starting at character 1
Set cursor row to 6
Set cursor column to 1
Display text "CD title:"
Set cursor row to 7
Set cursor column to 3
Display 20 character long text string, starting at character 21
Video Commands
The following video commands can be included in a schedule. They can all also be issued to the controller
over the serial interface. The format for sending commands over the serial interface is described in the
“Serial Protocol” file installed in the HomeVision directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command is chosen from the pull-down list.
The video commands are divided into five groups:
•
•
•
•
•
Configuration Commands
Control Commands
Text Commands
Event Log Commands
Infrared Simulation Commands
Video Configuration Commands
These commands initialize the video system and control its major operating modes. When you want to
display video data or text, use these commands first to get things set up.
There are four primary commands that should serve most of your needs:
Start Video Menu System
Start Internal Video Mode
Start External Video Mode
Stop Video Mode
There are multiple settings that must be made to use the video system. These commands configure them all
in the quickest fashion. The individual settings can be adjusted with other commands that will be described
following these commands.
Start Video Menu System
This command starts the video screen system and displays the main menu. It performs the following
actions to do this:
•
•
•
•
•
•
•
Turns the On Screen Display (OSD) circuitry on.
Sets the OSD to the internal video position.
Sets the video switch to the OSD position.
Sets the background color to its default setting.
Sets the horizontal and vertical screen offsets to their default settings.
Sets the screen blink ratio to 3:1.
Displays page 1 of the main menu.
This command is the quickest way to start the video screen system.
Chapter 13
Video Output
133
Start Internal Video Mode
This command sets the controller up to display video text overlaid onto internal video (a solid
background). It performs the following actions:
•
•
•
•
•
•
•
•
Turns the On Screen Display (OSD) circuitry on.
Sets the OSD to the internal video position.
Sets the video switch to the OSD position.
Sets the background color to its default setting.
Sets the horizontal and vertical screen offsets to their default settings.
Sets the screen blink ratio to 3:1.
Displays video screen #0, which is a blank screen that you can use to create your own
screens.
Clears the video screen.
You might use this command when you want to display your own custom video screen on a solid
background. After you perform this command, you can immediately start adding text, and it will be
automatically displayed.
Start External Video Mode
This command sets the controller up to display video text overlaid onto the incoming video signal. It
performs the following actions:
•
•
•
•
•
•
•
Turns the On Screen Display (OSD) circuitry on.
Sets the OSD to the external video position.
Sets the video switch to the OSD position.
Sets the horizontal and vertical screen offsets to their default settings.
Sets the screen blink ratio to 3:1.
Displays video screen #0, which is a blank screen that you can use to create your own
screens.
Clears the video screen.
You might use this command when you want to display your own custom video screen or other text
on top of the incoming video. After you perform this command, you can immediately start adding
text, and it will be automatically displayed.
Stop Video Mode
This command performs the following actions:
•
•
Turns the On Screen Display (OSD) circuit off.
Sets the video switch to the external video position.
This is the simplest way to shut off the video screen system when not using it.
Set Video Switch To External Video Position
Set Video Switch To On Screen Display Position
The video switch switches the video output jack between the incoming video signal (called the
external video source) and the On Screen Display (OSD) video source. Figure 13-1 shows the
operation of the video system and where the video switch fits in.
In the external position, the signal at the video input jack will be fed directly to the video output jack,
bypassing the OSD. You should put the switch into this position when you do not want to display
any video screens.
134
Chapter 13
Video Output
In the On Screen Display position, the signal from the OSD will be fed to the video output jack. The
video switch must be in the OSD position when you want to display any video screens. Note that in
order to display video screens, you must also turn the OSD circuitry on, which is a separate
command.
Video In
Ext. Video
Video
Out
OSD Video
External Video
Video Switch
Internal Video
OSD Switch
OSD Circuit
Figure 13-1 On Screen Display Switch Positions
You can change the video switch position any time you wish, regardless of what, if any, data you’re
displaying. You can also change its position while displaying the video menu system. This allows
you to quickly switch between the menu system and external video.
Turn On Screen Display On
Turn On Screen Display Off
These commands turn the On Screen Display (OSD) control circuitry on or off. It must be turned on
before you can display video screens. When you’re not displaying video screens, you should turn it
off to conserve power. When it’s off, you cannot display any video screens, but you can still display
external video by putting the video switch in the external position.
You do not need to use these commands if you use the Start Video Screen System, Start Internal
Video Mode, Start External Video Mode, and Stop Video Mode commands. Those commands will
automatically turn the OSD circuitry on or off as required.
Set OSD To Internal Video Background
Set OSD To External Video Background
This is a switch internal to the On Screen Display (OSD) circuitry that selects the background on
which the text will be displayed (see the switch labeled “OSD Switch” in Figure 13-1). In the
“Internal” position, the text will be displayed over a solid background (internally-generated video).
You can choose from eight background colors. In the “External” position, the text will be displayed
over the incoming video at the video input jack. If you set the OSD to this position and there’s no
video coming in, there will be no display.
You do not need to use these commands if you use the Start Video Screen System, Start Internal
Video Mode and Start External Video Mode commands. Those commands will automatically put the
OSD circuitry into the proper position. However, you can use these commands to switch between
internal and external video overlay any time you wish.
Chapter 13
Video Output
135
Initialize OSD Circuits
This command initializes the On Screen Display (OSD) circuitry to the following settings:
•
•
•
•
•
Turns the On Screen Display (OSD) circuitry on.
Sets the OSD to the internal video position.
Sets the background color to its default setting.
Sets the horizontal and vertical screen offsets to their default settings.
Sets the screen blink ratio to 3:1.
You do not need to use this command if you use the Start Video Screen System, Start Internal Video
Mode and Start External Video Mode commands. Those commands will automatically initialize the
OSD circuitry.
Set Horizontal Screen Offset To ##
Set Vertical Screen Offset To ##
These commands shift the location of the On Screen Display on your television screen. They are
preset to the values that work for most televisions we’ve tested. However, if the screen is off-center
on your TV, you can adjust the location with these commands.
Both offsets can range in value from 0 to 31. Zeros put the OSD in the upper left corner of the
screen. On most televisions, this will put the upper left corner of the OSD slightly out of the picture.
Increasing the horizontal value shifts the OSD to the right. Increasing the vertical value shifts the
OSD down. Values near 30 will usually shift the OSD completely off the screen.
While this command is normally used only to center the OSD, it can serve other uses. For example,
by executing commands in succession to increase the offset, the display can be made to “roll off” the
screen either down or to the right.
Video Control Commands
Display Video Screen ##
Each of the built-in screens has its own number. You can use this command to directly display any
of these screens without going through the menu system. The built-in screens are numbered
starting at 1.
Video screen number 0 is a blank screen that you can use to create your own screen. Any time you
want to make your own screen, you should first use this command to select video screen 0. You can
then use the other commands to display text on it.
We are regularly adding new video screens. Read the text file “Video Screens” installed in the
application directory to get updated information on the available screens and their use.
Display Caller ID Screen On Solid Background
This command starts the video screen system on a solid background and displays the caller ID
information. The data is displayed on rows 9 through 11 of the screen, as in this example:
Phone call from:
John Doe
407-555-1234
136
Chapter 13
Video Output
Display Caller ID Screen On External Video
This command starts the video screen system and overlays the caller ID information on top of the
incoming video. See the previous command for more information.
Set
Set
Set
Set
Set
Set
Set
Set
Default
Default
Default
Default
Default
Default
Default
Default
Screen
Screen
Screen
Screen
Screen
Screen
Screen
Screen
Background
Background
Background
Background
Background
Background
Background
Background
To
To
To
To
To
To
To
To
Black
Blue
Green
Cyan
Red
Magenta
Yellow
White
When you’re displaying text over internal video (a solid background), you can choose from one of
eight background colors. When you first set the OSD to internal mode (either with the Start Video
Screen System, Start Internal Video Mode, or the Set OSD To Internal Video Background
command), the background will be set to its default color. This command sets the default color. This
default setting is maintained after you stop displaying video and even through power failures.
We recommend that you choose your preferred background color and make it the default color. This
way you won’t need to set it every time you start displaying text. The controller is initially configured
with blue as the default color.
Set
Set
Set
Set
Set
Set
Set
Set
Current
Current
Current
Current
Current
Current
Current
Current
Screen
Screen
Screen
Screen
Screen
Screen
Screen
Screen
Background
Background
Background
Background
Background
Background
Background
Background
To
To
To
To
To
To
To
To
Black
Blue
Green
Cyan
Red
Magenta
Yellow
White
When you’re displaying text over internal video (a solid background), you can choose from one of
eight background colors. When you first set the OSD to internal mode (either with the Start Video
Screen System, Start Internal Video Mode, or the Set OSD To Internal Video Background
command), the background will be set to its default color. This command allows you to change the
current color at any time. All screens you display after this will also be set to this color. However, if
you stop then restart the video system, the screen will return to its default color (this command does
not change the color).
Set
Set
Set
Set
Character
Character
Character
Character
Background
Background
Background
Background
Style
Style
Style
Style
To
To
To
To
“None”
“Outline”
“Square”
“Solid”
These commands change how the area around each displayed character appears. This applies to
all text on the screen as a group. You cannot set the background for individual characters. The
options are as follows:
•
When the “None” mode is selected, the space around the characters will display the
underlying video. This is the default mode of operation and works best when displaying
internal video.
•
The “Outline” mode draws a single-pixel wide black border around the text. This is useful
when overlaying text onto incoming video, as it makes the characters stand out better
against the video background. It is not particularly helpful in the internal video mode.
•
The “Square” mode displays each character on a black square. This is useful when
overlaying text onto incoming video, as it makes the characters stand out better against the
video background. When used in the internal video mode, the effect is usually not desirable.
Chapter 13
•
Video Output
137
The “Solid” mode is similar to the “Square” mode in the appearance of the text. However,
this mode also displays a black border around the entire screen outside the text display
area.
The effects of these different modes can be best understood by experimenting with the video control
screen provided in the PC software. Display one of the built-in screens using the different
background settings to see how they work.
Set
Set
Set
Set
Row
Row
Row
Row
Character
Character
Character
Character
Size
Size
Size
Size
To
To
To
To
1
2
3
4
Each row on the screen can be set to 1 of 4 sizes. The default size is 1, which gives the smallest
character size. Sizes 2 through 4 increase the character size by the corresponding ratio in both
height and width. As you increase the size, fewer characters will fit on a row, and fewer rows will fit
on the screen.
Set
Set
Set
Set
Character
Character
Character
Character
Blink
Blink
Blink
Blink
Ratio To 1:3
Ratio To 1:1
Ratio To 3:1
Off
Individual characters on the screen can be made to blink with the Set Character Blink On and Set
Character Blink Off commands discussed later. All characters which have been set to blink will then
blink in unison at the rate of approximately once per second.
These commands set the ratio of the blinking on-time to the off-time. For example, the 1:3 ratio will
cause the blinking text to be turned off for 3 times as long as it’s on. In this case, it will be on for 1/4
of a second and off for 3/4 of a second. The table below summarizes the three available ratios.
RATIO
1:3
1:1
3:1
ON-TIME
1/4 sec
1/2 sec
3/4 sec
OFF-TIME
3/4 sec
1/2 sec
1/4 sec
TOTAL TIME
1 sec
1 sec
1 sec
The command Set Screen Blink Off stops all blinking. Any characters that have been defined to
blink (by the Set Character Blink On command) will remain on continuously.
Set Character Blink On
Set Character Blink Off
Individual characters on the screen can be made to blink. This is done by setting the character blink
on, then writing the text you want to blink. For text you don’t want to blink, set the character blink off
before writing it. The default position of the character blink is off, so if you write text without
performing one of these commands first, it will not blink.
The On Screen Display works by blinking all text written while the character blink is on. Text written
while it’s off will not blink. For example, the following sequence of commands will cause the word
“armed” to blink, but not the other text:
Write Text “Alarm ” To Screen
Set Character Blink On
Write Text “armed ” To Screen
Set Character Blink Off
Write Text “and ready” To Screen
Video Text Commands
138
Chapter 13
Video Output
These commands control the text that will be displayed on the screen. They are most often used to create
custom video screens.
Set Cursor Row To ##
Set Cursor Column To ##
These commands set the location on the screen where the next character will begin writing (called
the cursor location). The row number goes from 1 to 12, and the column number goes from 1 to 24.
As you write text to the screen, the cursor location (i.e., the current row and column number)
changes accordingly. When text reaches the end of a line, it wraps around to the start of the next
row. When it reaches the end of the screen (bottom right), it wraps around to the start (upper left).
Do Line Feed and Carriage Return
This command moves the cursor to the start of the next row. For example, if the current row is 11, it
will change to 12. If it’s 12, it will wrap around to 1. The column number will always be set to 1.
This command can be used in place of separate commands to set the row and column when you
want to go to column 1.
There is one quirk to how this command functions. If text has wrapped around at the end of a row
and into the next row, this command will not work properly. The On Screen Display (OSD) control
circuitry which generates the video text does not have a command to go to the start of the next row.
Rather, it only supports commands to directly set the row and column (with the Set Cursor Row To
## and Set Cursor Column To ## commands). In order to provide this Do Line Feed and Carriage
Return command, the controller maintains an internal variable that keeps track of the current row
number. When it executes a Do Line Feed and Carriage Return command, it looks at the current
row number variable and sets the OSD circuitry directly to the next row number (using the Set
Cursor Row To ## command) and the first column (using the Set Cursor Column To 1 command).
The problem occurs when you write text that reaches the end of a row. The On Screen Display
(OSD) circuitry automatically moves to the start of the next row to display more text. However, the
internal variable that keeps track of the current row number does not know the OSD circuitry has
wrapped around. If you issue a Do Line Feed and Carriage Return command, it may not go where
you expect it. You can always avoid this problem by directly setting the desired row and column with
the Set Cursor Row To ## and Set Cursor Column To ## commands.
The advantage of the Do Line Feed and Carriage Return command is that it takes less storage
space and is faster than using the two separate commands Set Cursor Row To ## and Set Cursor
Column To ##. When you’re creating a screen and you know your text doesn’t reach the end of the
row, the Do Line Feed and Carriage Return command may be most appropriate.
Clear Screen
Removes all characters from the screen and sets the cursor to upper left corner (row 1, column 1).
This command only works for screens that you create. When displaying the built-in video menu
system, the controller redraws the screen many times each second. If you were to execute the Clear
Screen command, the screen would be cleared, then immediately redrawn.
Display Text “XXXXX” On Screen
This command writes the string of characters “XXXXX” to the screen at the current cursor location.
For example, if the cursor is at row 1 and column 1, the command:
Display Text “Burglar Alarm Armed” On Screen
will display:
Burglar Alarm Armed
starting at the upper left corner of the screen. Note that the quotes shown in the command do not
appear on the video screen. They are only used to highlight the displayed text in the command.
Chapter 13
Video Output
139
If the string reaches the end of a row, it moves to the start of the next row and continues. If it
reaches the end of the screen (row 12, column 24), it continues displaying at the upper left corner.
Display Text String ### On Screen
This command writes string number ### to the screen. The controller contains a variety of built-in
strings that you can refer to by number. The following table shows the available strings.
This command takes less storage space and writes the text slightly faster than the Display String
“XXXXX” On Screen command, as the string is built-in.
STRING #
DISPLAYED TEXT
0
__ENTER_MENU_NUMBER_
1
PRESS_ANY_KEY_TO_RETURN
2
_PRESS_ENTER_TO_CONFIRM
3
Time:_
4
Date:_
5
Off
6
On_
7
Low_
8
High
9
Opened
10
Closed
11
Disabled
12
Enabled_
13
Set__
14
Clear
15
Neutr
16
Jan
17
Feb
18
Mar
19
Apr
20
May
21
Jun
22
Jul
23
Aug
24
Sep
25
Oct
26
Nov
27
Dec
28
Monday___
29
Tuesday__
30
Wednesday
31
Thursday_
32
Friday___
33
Saturday_
34
Sunday___
35
Minutes
36
Hours
37
Sunrise:
38
Sunset:_
39
Alarm
40
Fire
41
Bedroom
42
Master_Bedroom
43
Bedroom_1
44
Bedroom_2
45
Bedroom_3
46
Bedroom_4
47
Guest_Bedroom
48
Kitchen
49
Living_Room
50
Family_Room
STRING #
DISPLAYED TEXT
51
Dining_Room
52
Bathroom
53
Patio
54
Sliding_Door
55
Front_Door
56
Side_Door
57
Back_Door
58
Patio_Door
59
French_Door
60
Door
61
Interior
62
Exterior
63
Perimeter
64
Happy_Birthday
65
HAPPY_BIRTHDAY
66
Merry_Christmas
67
MERRY_CHRISTMAS
68
Happy_Holidays
69
HAPPY_HOLIDAYS
70
Happy_New Year
71
HAPPY_NEW YEAR
72
Good_Night
73
Good_Morning
74
Home_
75
Away_
76
Sleep
77
Party
78
Security
79
Vacation
80
Television
81
Stereo
82
CD_Player
83
Receiver
84
Tape_Deck
85
Satellite_Receiver
86
Equalizer
87
VCR
88
VCR_#1
89
VCR_#2
90
DAT_Player
91
X-10________
92
Flag________
93
Variable____
94
Timer_______
95
Input_______
96
Output______
97
Sch_Event___
98
Per_Event___
99
IR_Signal___
100
Macro_______
NOTE: The underscore character (_) is used to denote a blank space.
140
Chapter 13
Video Output
Display All 3 Digits Of Variable ### On Screen
This command writes the value of variable number ### to the screen. All three digits in the value are
displayed.
Display Last 2 Digits Of Variable ### On Screen
This command writes the value of variable number ### to the screen. However, only the last two
digits are displayed. This command is used when displaying numbers that will not go over 99 and
therefore don’t need 3 digits displayed.
Display Last Digit Of Variable ### On Screen
This command writes the value of variable number ### to the screen. However, only the last digit is
displayed. This command is used when displaying numbers that will not go over 9 and therefore
only need 1 digit displayed.
Display Value Of Timer ## On Video Screen
This command writes the value (time remaining) of timer number ## on the video screen. This
allows you to display timer values on your own custom screens. The display format is as follows:
HH:MM:SS
where HH, MM, and SS are the hours, minutes, and seconds values.
Display Result Value On Screen
This command writes the value of the system variable “Result Value” to the screen.
"Miscellaneous" chapter for a description of “Result Value”.
See the
Display Current Time On Screen
This command writes the current time to the screen in AM/PM format. The display format is:
HH:MM XM
Where: HH is the current hour (between 1 and 12)
MM is the current minute (between 0 and 59)
XM is either AM or PM
If the hour is less than 10, two character places will still be used (first a blank space, than a digit 1-9).
This command only writes the current time once. If you continue to display the screen for several
minutes, the time will not be updated automatically. If you want it to update, you need to rewrite it
periodically. See the notes at the end of this chapter for a description of how to create screens that
update as changes occur.
Display Current Date On Screen
This command writes the current date to the screen. The display format is:
MM/DD/YY
Where: MM is the current month (between 1 and 12)
DD is the current day of the month (between 1 and 31)
YY are the last two digits of the year (between 0 and 99)
If the day is less than 10, two character places will still be used (first a zero, then the digit 1-9).
Chapter 13
Video Output
141
If the month is less than 10, two character places will still be used (first a blank space, then the digit
1-9).
Display XX character long stored text string, starting at character YY
This command displays some or all of the "text storage buffer" on the video screen. It has two
parameters:
•
•
“XX” is the number of characters to write to the screen. It can range from 1 to 256.
“YY” is the location (character number) of the text storage buffer to start displaying. It can
range from 1 to 256.
The text is displayed starting at the current cursor location. If you try to copy characters past the end
of the text storage buffer (for example, if you try to display 10 characters starting at location 250), it
will wrap around and continue copying from the start of the buffer. Refer to the earlier part of this
chapter for details on how the text storage buffer works.
Event Log Commands
Log Text ######## To Memory
This command writes the specified text to the controller's event logging memory. This log holds 256
lines of data that can be displayed on your TV. Events can be automatically logged to this memory.
This command allows you to write your own messages to it as well. The text length is limited to 24
characters, which is the width of the video screen.
Log Current Time And Date To Memory
This command writes the current time and date to the controller's event logging memory. The format
is as follows:
__at 12:30:55 PM, May 05
The two underscore characters at the beginning represent two blank spaces. This command is
intended to be used after writing your own message to the log. For example, you might write a
message indicating the burglar alarm when off, then write the time. It might appear as follows:
Alarm went off
at 12:30:55 PM, May 05
Log Current Time To Memory
This command writes the current time to the event logging memory. The format is as follows:
__at 12:30:55 PM
The two underscore characters at the beginning represent two blank spaces.
Log Current Date To Memory
This command writes the current date to the controller's event logging memory. The format is as
follows:
Dec 30, Saturday
Infrared Simulation Commands
142
Chapter 13
Video Output
The built-in video menu system is normally controlled by a user pressing buttons on an infrared remote.
Sometimes, however, it can be useful to have other ways to control the menu system. A set of 16 video
commands is provided that you can use in your schedule to do this. These commands will cause
HomeVision to respond just as if a user had actually pressed the corresponding button on a remote. The 16
commands are described below.
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
Simulate
IR
IR
IR
IR
IR
IR
IR
IR
IR
IR
IR
IR
IR
IR
IR
IR
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
0 Press
1 Press
2 Press
3 Press
4 Press
5 Press
6 Press
7 Press
8 Press
9 Press
"Enter" Press
"Channel Up" Press
"Channel Down" Press
"Volume Up" Press
"Volume Down" Press
"Cancel" Press
These 16 commands correspond to the 16 IR remote buttons used to control (or navigate) the builtin video menu system. When you execute one of these in your schedule, the video menu system
will act just as if a user had actually pressed the corresponding button on a remote. To enter these
commands, use the "Video" button on the Actions Entry Screen Toolbar.
The effect of these commands depends on what video screen is being displayed at the time. For
example, when viewing Main Menu Page 1 of the built-in video screens, pressing button 3 displays
the macro screen. Therefore, if you run the "Simulate IR Button 3 Press" command while displaying
the Main Menu Page 1, the macro screen will be displayed. In contrast, if you're displaying Main
Menu Page 2, performing this command will display the flag screen.
The primary use for these commands is to provide an alternative to an IR remote for controlling the
video screens. Some users would prefer to use X-10 signals, touchtone phone inputs, or a digital
keypad. When HomeVision receives a signal from such a device, it can execute a corresponding
"Simulate IR Button Press" command. For example, assume the user has an X-10 RF remote that
transmits codes K1-ON through K16-ON and wants these to control the video menu system. In the
K1-On "Actions Defined Field" (performed whenever a K1-ON signal is received), enter the
command "Simulate IR Button 1 Press". Similarly, in the K2-ON "Actions Defined Field", enter the
command "Simulate IR Button 2 Press". The same would be done for all 16 signals, where signals
K11-ON through K16-ON could perform the non-numeric commands like "Channel Up". Now,
whenever HomeVision receives one of these X-10 signals, it will perform the corresponding
command, thereby controlling the video menu system.
There is one important limitation of these commands: You can include only one such command
in any event (or set of actions). For example, you should not do this:
Simulate IR Button 1 Press
Simulate IR Button 2 Press
If you do this, only the last command will be executed. When the controller encounters one of these
commands, it does not perform it immediately. Instead, it notes which signal should be simulated
and goes to the next command. After doing any subsequent commands, it returns to normal
operation. During normal operation, it periodically checks for any received IR signals and responds
to them if necessary. After handling any such IR signals, it checks to see if it must simulate an IR
keypress. If so (i.e., if it previously ran one of the "Simulate IR Button Press" commands), it does the
specified command. As a result, if you perform the two commands shown above, the second
command which tells HomeVision to simulate button 2 will overwrite the internal setting indicating to
simulate button 1, and only button 2 will be performed.
This somewhat unexpected way of performing the "Simulate IR Button Press" commands is
necessary to make them act the same way as if it had actually received the signal. This limitation is
Chapter 13
Video Output
143
normally not a problem, as you'd typically only want to perform one command for each user entry
(i.e., X-10 signal, touchtone phone input, keypad entry, etc.). In the event you do find it useful to
perform multiple commands, you can accomplish this by using a "Wait Timer" between each
command, like this:
Simulate IR Button 1 Press
Wait 0:00:00.01 with Timer 1 (IR button timer), then
Simulate IR Button 2 Press
End Wait
This code will perform the first command, load the timer with 0.01 seconds, then leave. This allows
the controller to run through a normal "loop", during which it will execute the "Simulate IR Button 1
Press" command. When the timer expires, it will return here and set up the "Simulate IR Button 2
Press" command and leave. Upon returning to the normal loop operation, it will perform the
"Simulate IR Button 2 Press" command.
Video Conditions
You can check whether the video mode is currently active in an If-Then or If-Then-Else statement. However,
this condition is entered under the “Controller” button on the actions entry screen toolbar. There is no
“Video” conditions button.
If Video Mode Is Active
Condition is true if the video mode is active, false if it is not.
If Video Mode Is Not Active
Condition is true if the video mode is not active, false if it is active.
Notes On Using The Video System
This section provides some pointers for using the video system. Also refer to the files installed in the
application directory for more information. The "How To" file provides details on creating your own video
screens.
•
When the controller is displaying the built-in video screens, it redraws most of the screen on a
regular basis (every 10-20 milliseconds). If you’re displaying such a screen and then write text on it,
it will probably only appear for a split second. After displaying it, the built-in screen will be redrawn,
erasing anything you wrote (there are some areas on these screens that are not redrawn, where you
could conceivably write text without it being overwritten). Therefore, you should not try to add your
own text to the built-in screens.
•
To display your own screen, first display video screen #0. This is a blank screen that is not
periodically updated. Therefore, anything you write will remain displayed until you overwrite it or
clear the screen.
•
If you want to display static text on your own screens, you only need to write it to the screen once.
However, if you want the screen to update things (such as variable values or the current time) as
they change, you’ll have to repeatedly redraw the screen with the most recent data. Although there
are several ways to do this, we recommend the following method:
1)
2)
3)
4)
Write the commands that draw the screen within a periodic event.
Set the periodic event to be performed every loop.
Initially set the periodic event to disabled.
When you want to display the screen, perform these commands:
144
Chapter 13
Video Output
Start Internal Video Mode
Display Video Screen #0
Clear Screen
Enable Periodic Event XX
This will set up the video system and display a blank screen. Since the periodic event is
now enabled, it will be executed every program loop (every 10-20 milliseconds). Thus, the
screen will be redrawn each time.
With this approach, any text that changes will be updated automatically each time the periodic event
is executed. Just make sure not to clear the screen in the periodic event. This would cause the
screen to flash as it repeatedly gets cleared then redrawn. Instead, clear the screen when you first
start displaying the new screen, before enabling the periodic event.
Also note that you should only enable one periodic event that draws a screen at a time. If more than
one is enabled, they will alternately redraw the display, resulting in flickering.
•
When writing text on top of existing text, make sure you cover up everything underneath. For
example, assume you’re displaying a screen that shows your security system status in a periodic
event as recommended above. Assume your schedule looks at the state of a flag to determine
whether to write the system state as ARMED or DISARMED. Assume that it’s initially disarmed, so
your screen is displaying:
DISARMED
While you’re displaying this, the system gets armed. Your schedule now writes the word ARMED
instead of DISARMED. You’ll get the following unexpected display:
ARMEDMED
What happens is that the word ARMED overwrites only the first 5 characters of the previous text
DISARMED. Consequently, the last 3 letters MED are left unchanged and are still displayed.
To get around this problem, write the text string “ARMED ” (with 3 blanks at the end) instead of
“ARMED”. The three blanks will overwrite the last 3 letters of “DISARMED”.
In general, whenever you have different text strings that could be displayed, make them all the same
length by adding blank spaces to the shorter ones.
•
You can also create your own screens that respond to infrared commands. Refer to the example
schedule installed in the application directory.
Chapter 14
Infrared Control
145
CHAPTER 14: INFRARED CONTROL
Introduction
The controller provides the following infrared (IR) signal control features and capabilities:
•
Can “learn” infrared commands and transmit them to control external equipment such as television,
stereos, etc.
-
Can transmit directly from an IR Light Emitting Diode (LED) mounted in the front of the unit. The
range is 15-35 feet depending on the angle between the controller and receiver and the
receiver’s sensitivity.
-
Can also simultaneously drive an external transmitter through a 3.5mm jack on the back of the
unit. This connection is designed to be compatible with the Video Link series of IR transmitters
(such as the Blast-IR), but should operate with other transmitters as well.
•
Can receive and recognize many IR signals which can be used as command inputs or video screen
system controls. The IR receiver is built into the front of the controller. Range depends on the
strength of the transmitter, but is typically 30 feet.
•
Can be configured to automatically perform a set of actions when a specified IR signal is received.
•
IR signals can be viewed, transmitted, enabled, and disabled from the video screen system or serial
interface.
•
Can selective transmit though eight different “zones” (when using a multifunction expansion board).
•
Can be controlled from any preprogrammed or learning remote. You do not need a special or
expensive remote.
•
The controller can store 255 different IR signals. It can also transmit an unlimited number of
“standard” signals. For users needing more commands, it is possible for software running on a PC
to load additional signals into the controller while it is operating. Refer to the file “Using Extra IR
Signals” installed in the HomeVision directory for details on how this works.
This chapter explains:
•
The infrared signal formats and how the controller works with each type.
•
How to program your remote so it can be used to provide inputs to the controller.
•
How to teach the controller the infrared signals used by your TV, stereo, etc., so it can send
commands to them.
•
IR signal commands and conditions.
Infrared Signal Description
Infrared signals from remote control devices consist of a series of pulses of infrared light. Each button on
each remote uses a different combination of pulses. Different devices from different manufacturers often use
different pulse formats. The many different formats make it a challenge to design a device that can receive
and transmit all types.
146
Chapter 14
Infrared Control
In spite of this complexity, the controller is compatible with the vast majority of commercial remote control
devices used today. However, there are a few limitations. The IR capabilities are as follows:
•
Works with modulated and unmodulated infrared signals (does not work with ultrasonic or RF
remotes).
•
Works with carrier frequencies in the range of 10kHz to 100kHz. Most consumer electronics use
remotes near 40kHz. Near the 10kHz and 100kHz limits, the receiver sensitivity drops off slightly.
As noted above, there are a wide variety of infrared signal formats. However, as far as the controller is
concerned, they can be separated into two types:
1) “standard” format signals, and
2) all others.
These two types of signals are handled differently when being received or transmitted by the controller, as
discussed below.
Standard Infrared Signals
Description
The “standard” format is used by many infrared remotes on the market today. If you have a programmable
universal remote, you can choose from a variety of codes (devices) that use this standard format. Remotes
using this format will be the easiest to use for sending commands to the controller.
Standard format infrared signals are described by two parameters: “Device Code” and “Key Code”. Each
button (or key) on a remote has a different Key Code, but all have the same Device Code. Device Codes
vary between different electronic equipment, although there are some devices that happen use the same
codes. Key Codes are not necessarily the same from remote to remote. For example, the Volume Up
button may have one Key Code on a Sony remote, but a different code for a Pioneer remote. This does not
pose any problems for the controller.
Receiving Standard Format Signals
The controller is designed to automatically recognize received signals that use the standard format. The
signals can be used in various ways:
•
To perform a set of actions when the signal is received.
•
To navigate through the video screen system.
•
To send a message over the serial interface that the signal was received.
Transmitting Standard Format Signals
You can transmit IR signals to devices such as televisions and stereos that use the standard format. Before
doing this, the controller must know the exact signal format. There are two ways to do define it:
1) Enter the signal’s Device Code and Key Code. The PC software provides a simple way for you to
determine what these codes are and then enter them.
2) “Learn” the signal. “Learning” is the process by which the controller analyzes the signal and stores it
in memory. The signals are stored as measurements of the pulse lengths. This takes more memory
Chapter 14
Infrared Control
147
than simply storing the signal’s Device Code and Key Code. Learning signals in this way is not
necessary for standard format signals. However, it is the only way to handle signals that do not
meet the standard format, as discussed in the following section.
Other Infrared Signals
Description
Any signal not following the standard format falls into this category. The controller must “learn” these signals
by measuring and storing the individual lengths of the infrared pulses.
Receiving Other Format Signals
Signals in non-standard formats can be received by the controller and “learned” for later transmission, just
like standard signals can. They can also be used as commands to the controller or for controlling the video
screen system. However, they have some limits that standard signals don’t have. It will usually be best if
you can configure your remote to transmit standard signals for controlling HomeVision. If your remote can’t
do this, then you may want to use HomeVision’s ability to receive learned IR signals.
Transmitting Other Format Signals
Before the controller can transmit these non-standard IR signals, it must “learn” the signal’s format. The
signal format is then stored in the controller’s memory ready to be transmitted upon command. The process
for learning is described later.
The controller learns signals by measuring and storing the individual lengths of the infrared pulses. The
number of pulses varies from device to device. Consequently, the amount of memory required to store each
pulse varies. Most signals require 60 to 200 bytes of memory. The controller has approximately 50,000
bytes of memory available for the IR signals. This should be more than enough to hold 255 signals.
IR Signal Reception Details
Introduction
This section covers receiving signals from a remote control device to control the operation of the controller.
The process of learning an IR signal for re-transmission is covered in the later section on transmission.
Receiving and recognizing IR signals (which we call “decoding” the signal) is far more difficult than learning a
signal for re-transmission. Most electronic devices only have to work with one remote control type.
Designing a “universal” receiver to work with many different signal formats is quite a challenge. Every
received signal must be analyzed to determine if it matches one of the many millions of possible signals.
The decoding must take place in near real time to provide an acceptable user interface to the automation
system. Factor in “noise” caused by the infrared light present in most ambient lighting and the task becomes
even more difficult. This is why very few home automation systems today provide this capability.
The controller design overcomes these problems and is compatible with many different remote control types
(those following the “standard” format). However, there are a few signal types that it cannot automatically
recognize. Fortunately, all learning remotes or preprogrammed universal remotes can be configured to
transmit standard signals compatible with the controller. The wide range of signals compatible with the
controller should make it relatively easy to find appropriate signals for you to use.
148
Chapter 14
Infrared Control
Using IR signals as command inputs gives your home automation system a very quick response time. Most
IR signals are under 200mS in duration. Since the controller can begin executing commands in less than
1mS, the controller will respond nearly instantly to your command. Response time is much faster than with
an X-10 type remote control system. In the X-10 system, IR signals are first transmitted to a special receiver
unit. The receiver then transmits an X-10 signal that can be received by the controller and used to command
actions. The relatively long length of an X-10 signal (about 1 second) makes the entire process much
slower.
Controller Setup For Receiving Standard IR Signals
This section covers the use of “standard” IR signals to control HomeVision. A later section will cover using
“learned” signals to control HomeVision. The use of standard signals is preferred, as they are more reliable,
and there are certain things that can only be done with “standard” signals.
Setting Up The Remote Control Video Screen System
The built-in video screen system allows you to control your home automation system using a TV and a handheld remote control. The video screen system is described in detail in the video chapter. Before you can
use this, you have to set up your remote and the controller. This section describes how to do this.
Configuring A Preprogrammed Remote
The easiest way to send IR signals to the controller is with a “preprogrammed” remote. A wide variety of
such remotes are available today. Some control as little as one device, while others control up to a dozen.
Some are available for less than $10.
To use this type of remote, you enter a code number for the type and brand of equipment you want to
control. Most remotes can handle several types of equipment (TVs, VCRs, cable boxes, stereos, etc.). You
access each type by pressing the corresponding button on the remote (or perhaps sliding a switch). When
using these remotes with the controller, you have complete freedom as to what functions you assign to each
button.
Follow this process to set up a programmable remote:
1) Choose a remote control device. Here are some suggestions:
•
Select a remote that has at least the following buttons (keys):
-
The number keys 0 to 9
Channel up and down
Volume up and down
Two other keys (ideally, they would be labeled “Enter” and “Clear” or “Cancel”)
These 16 keys are used to control the video screen system. They don’t have to match these
exactly, as you can assign the functions to any keys. However, remotes with these buttons will
make it easier for you to remember which button does what.
•
If you want to use one remote to control both your TV and HomeVision, choose a remote that
can control two different TVs. Use one of these for your TV, the other as the input to the
controller.
•
If possible, use the TV function to control HomeVision. An auxiliary function is also OK if you
can set it to the TV codes. Since the video screen system requires the channel and volume
keys, it works best when set to the TV device. This is because of the way most remotes handle
the other devices like VCRs and cable boxes. When you select one of these devices on the
remote, the volume keys are normally not affected. Instead, they continue to control the TV
volume, even though the other buttons now control the VCR or cable box. Therefore, you
Chapter 14
Infrared Control
149
cannot reassign these keys to a different code for the controller (as they’ll still be controlling your
TV).
2) Select a device code
•
Preprogrammed remotes come with a listing of all the devices they support and the codes for
each. You’ll need to select from these a code that the controller can recognize. The controller
can recognize a wide variety of codes under the TV, VCR, Cable Box, and Auxiliary functions.
You only need to select one of these. As noted above, the TV function is recommended.
•
Table 14-1 lists some of the many codes the controller can receive. Codes are given for the
most common remote control brands. If you don’t have one of these brands, you may have to
do a little experimenting. Try using your remote’s codes for the brands of equipment shown in
the table. You can then test it as described in “Testing A Preprogrammed Remote” to make sure
it generates the correct infrared signals.
•
Once you’ve chosen the remote code to use, program it into your remote following the
instructions that came with it.
•
We suggest you select an equipment brand different than any equipment you own. You don’t
want your VCR changing channels every time you use your remote to send a command to the
controller!
3) After setting up your remote, it’s a good idea to test it to make sure it doesn’t affect any of your
equipment. If it does, you should select a different code for your remote.
Codes
Device
Type
Device Brands
TV
TV
TV
Hitachi
Hitachi
Sharp, Realistic,
Montgomery Ward,
Optonica
NEC, Techwood, Citizen,
Candle, Hitachi, Luxman,
TMK, Samsung
Candle, Citizen,
Magnavox, Philco,
Sylvania, Teknika
Goldstar, Pilot, LXI, Marta,
Sears, Realistic, Emerson,
Totevision, Memorex
Yamaha, Goldstar,
Marantz, Vector
Research, NEC
JC Penny, Pentax,
Hitachi, Sears, RCA,
Montgomery Ward
TV
TV
VCR
VCR
VCR
Table 14-1
One For
All, Control
1, Emerson
Magnavox
Gemini
RCA
Sony
145
227
165
0030
NA
0040
100
320
070
047
063
025
31
NA
15
056
NA
310
027
186
0048
080
66
03
or
12
NA
037
1008
022
009
32
038
1009
292
014
37
042
1011
032
005
or
035
05
Some Preprogrammed Remote Codes Compatible With The Controller
150
Chapter 14
Infrared Control
Testing A Preprogrammed Remote
This process verifies that the remote is set up to transmit standard format IR signals that the controller can
recognize.
1) The controller must be setup as follows:
•
The controller must be connected to the PC serial port.
•
In the PC software, the controller’s “IR Receive Mode”, “Master Report Mode” and “IR Report
Mode” must be enabled. You can verify these are set by using the “Status” screen under the
“Other” menu. If necessary, you can enable these modes from the “Controller Command”
screen under the “Control” menu.
2) Select “IR Test” from the “Other” menu. The IR test screen will appear.
3) Aim your remote at the controller and transmit the signal. The remote does not have to be close to
the controller for this. It should work up to 30 feet or more depending on the remote’s strength.
4) If any infrared signal is received, regardless of its format, the “IR RX” LED on the controller’s front
panel will blink. In addition, the green “LED” on the computer’s IR test screen will also blink. If the
controller’s LED blinks but the IR test screen’s doesn’t, verify that everything is set up as described
in Step 1.
5) If the received infrared signal follows the standard format, the signal’s Device Code and Key Code
will be displayed. If question marks are displayed in the Device and Key Code fields, then the signal
doesn’t follow the standard format.
Configuring The Controller To Control The Video Screen System
Note: Your remote must transmit “standard” signals to automatically control the built in video menu system.
Learned signals cannot control it (actually, it can if you use the “simulate received IR signal” commands, but
this is fairly complicated and should only be attempted by expert users).
Once you’ve programmed your remote, you need to set up the controller to recognize the remote’s signals.
The controller is initially set up to respond to a specific type of remote control device. If you program your
remote to match this, you do not need to configure the controller. The initial (default) remote device is the
device listed in the first row of Table 14-1.
To set up the controller to use a different remote control, proceed as follows:
1) Select the video remote control configuration screen from the “Configuration” menu. A configuration
screen will appear. This screen shows the 16 keys that are used in the video screen system. Each
key has its own Key Code and a label, both of which you can edit. There is also a “Device Code”
and label. The codes and labels will be filled in with the controller’s current settings (the first time
you use it, it will contain the “default” remote settings).
This screen displays three sets of 16 remote Key Codes, each accessed through a set of “tabs”.
You’ll probably never need to use more than one of these three sets; the others allow two additional,
different remotes to control the video screen system.
2) If you programmed your remote to any code other than the default one, click on the “Select Remote”
button. A dialog box will appear. Select your chosen remote from the list in the dialog box and click
the “OK” button. This will return you to the previous screen. If your remote doesn’t appear in this
list, skip this step.
3) The Device and Key Codes for the selected remote will be filled in, along with the labels. The
Device and Key Codes must be sent to the controller so it knows what remote you’re using. The
labels are for your own use. Some remotes use different labels, and your keys may differ slightly
Chapter 14
Infrared Control
151
from what those listed. For example, many remotes don’t have a “Cancel” key. Its function may
instead be under “Clear” or “Recall”. You can use the label field to identify which buttons on your
own remote are used for which functions.
4) To test the 16 video screen control buttons, push each of the corresponding buttons on your remote
(one at a time!). The Device Code and Key Code for the received signal will be shown in the
window. Compare these to the codes listed beside each of the 16 functions. If all 16 buttons match,
you’re ready to control the video screens. If some of the buttons use different Key Codes, you can
change the entry to match the actual received Key Code. Some points to note:
•
If your remote is transmitting different Device and Key Codes than those shown, it’s not a
problem. Just enter the actual Key Codes in the text boxes corresponding to each function,
and the Device code in the Device Code text box.
•
All signals from a specific remote should have the same Device Code. This code should
match the one shown in the Device Code text box.
•
Most remotes don’t have a “Cancel” button; we’ve initially assigned this function to the
“Mute” button. You may want to move this to a different button that works better with your
remote’s keypad layout.
5) Load the remote settings to the controller. Until you do this, you won’t be able to use the remote to
control the video screen system. To do this, choose “Load Schedule” from the “File” menu. Click
the “Load” button to load the schedule.
Once all 16 buttons are working, you can use the remote to navigate through the video screen system, as
described in the video chapter.
Assigning Video Functions To Different Keys
Any of the 16 keys used by the video screen system can be assigned to any key on your remote. All 16 keys
must have the same Device Code, but each will have a different Key Code. To assign a function to a
different key:
1) Identify the signal’s Device and Key Codes. You can use the method described in “Testing A
Preprogrammed Remote” to find these.
2) Verify that the signal’s Device Code matches that shown in the video remote control configuration
screen. All signals from a specific remote should have the same Device Code.
3) Enter the signal’s Key Code into the Key Code field of the function you want to replace. For
example, if the received signal’s Key Code is 145 and you want to use it for the “Cancel” function,
enter 145 in the Key Code field for the “Cancel” button.
Configuring A Learning Remote
Learning remotes require you to transmit an infrared signal to the remote, which then “learns” the signal.
When programming a learning remote, you must teach it signals that follow the standard format. This will
allow those signals to be received by the controller. The process is as follows:
1) In the PC software, select “Infrared Test” from the “Other” menu.
2) Connect the controller to the serial port and make sure the infrared receive function is enabled. Also
make sure the video screen system is off.
3) Select a Device Code to use. You can pick any number from 0 to 255.
152
Chapter 14
Infrared Control
4) For each of the buttons you want to program, choose a different Key Code. Key Codes can range
from 0 to 255.
5) Teach the signal to your remote by transmitting it from the controller to your learning remote. If your
remote needs only a single keypress, click the “Transmit Once” button on the screen. If your remote
requires repeated transmissions, click the “Xmit Repeatedly” button. When your remote has learned
the signal, stop the transmissions by clicking the “Stop” button or pressing any key on the keyboard.
6) Test your remote as described in “Testing A Preprogrammed Remote” to verify that it learned the
signal properly.
7) After your remote has learned all the signals, you must configure the controller to recognize them.
Follow the same process as for the preprogrammed remotes (i.e., enter the Device Codes and Key
Codes on the video remote control configuration screen under the “Configuration” menu).
Controller Setup For Receiving Learned IR Signals
This section covers the use of “learned” IR signals from your remote to control HomeVision. The previous
sections covered using “standard” signals to control HomeVision. The use of standard signals is preferred,
as they are more reliable, and there are certain things that can only be done with “standard” signals.
Initial Software Setup For Receiving Learned IR Signals
Note: If all you want to do is teach HomeVision your remote’s signals so HomeVision can control your
equipment, you do not need to do this. This is only required if you want HomeVision to recognize such
signals from your remote and take action on them. If you don’t need to receive learned IR signals, we
recommend you leave the capability disabled.
If you want to have HomeVision recognize when you transmit learned signals to it, you must enable this
capability before you can use it. Doing so will slightly slow down the controller’s operation, as it will try to
match received IR signals to all your learned signals (this isn’t necessary when using “standard” sigans). To
enable this capability:
1. Open the Controller Settings screen under the Configure menu.
2. Select the “Infrared” tab.
3. In the “Receive learned IR signals” box, check “Enable this capability". The other items control how
HomeVision checks for matching signals and will explained later.
You will also need to download the schedule before the new settings will take affect.
Learning IR Signals
To receive learned IR signals, you must obviously learn them first. Follow the same procedure as described
in “Learning Infrared Signals for Transmission” (a later section). Once you’ve learned the signal(s), go to the
IR Signal Summary Screen (under the Objects/Events menu). You can then enter actions to perform when
the signal is received (using the same process as for standard signals).
Following is a suggestion for learning IR signals for reception. Most remotes transmit the same signal
multiple times when you press the button. The number of repetitions often depends on how long you hold
the button. For example, you may notice that if you hold the button for a normal duration, HomeVision
receives 24 pulses (as shown in the “Number of Pulses” box on the IR Learn screen). However, if you press
the button very quickly, there may be only 12 pulses. Conversely, if you hold it longer, you may get 36
pulses. For these type of signals, we suggest you learn and save the shorter signals (i.e., the 12-pulse
signal in this case). This will improve the recognition later when you’re using the remote to control
HomeVision.
Chapter 14
Infrared Control
153
For example, assume you learn and save the 12-pulse signal. When you later transmit a signal to
HomeVision, HomeVision will check to see if the received signal matches all 12 pulses of the saved signal. If
so, a match is declared and HomeVision performs any specified action. If, when using the remote, you
actually hold the button down longer and 24 or 36 pulses are transmitted, the signal will still be recognized by
HomeVision (since the first 12 pulses will be the same, and that’s all that matters). On the other hand, if you
learn and save the 24-pulse signal, and then during normal use you transmit a shorter 12-pulse signal,
HomeVision will not recognize it (as HomeVision is looking for at least 24 pulses, and only 12 are received).
Adjusting Signal Matching Parameters
HomeVision uses a custom algorithm for comparing received signals to learned signals to detect a match.
Ideally, it should always detect a learned signal with 100% reliability, and never have a mismatch. We have
spent considerable time fine-tuning the algorithm to work with the many available remotes. However, this is
still in Beta testing, and you may find that it doesn’t work 100% for you. In this case, there are several
algorithm parameters you can adjust. To do this, change one or more of the settings on the Controller
Settings screen (under the “Infrared” tab). The settings are described below:
“CheckOnAndOffTimes” Setting
Each IR signal consists of a series of IR pulses with gaps between them. HomeVision measures the
length of each pulse (the “on-time”) and gap (the “off-time”) and compares these for the received and
learned signal. For most remotes, the on-time and off-time of a pulse doesn’t matter, but the sum of
the times does. The sum of the times is usually more consistent then the individual on and off times,
and gives more reliable results. When “CheckOnAndOffTimes” is “False” (the default setting),
HomeVision only checks the sum of the on-time and off-time. If you find that HomeVision is
mismatching certain signals, try changing this to “True”. HomeVision will then check the separate
on-time and off-time of each pulse, reducing the likelihood of a miscompare.
“CheckFirstPulse” Setting
This indicates whether HomeVision should try to match the first infrared pulse in the signal. The first
pulse transmitted by a remote often varies widely in duration. If it varies too much, HomeVision can’t
recognize the signal. When this parameter is set to “False” (the default setting), HomeVision will
ignore the first pulse, making a match more likely. If you find that HomeVision is mismatching certain
signals, try changing this to “True”.
“Tolerance” Setting
This defines how closely the durations of the received IR signal pulses must be to those of the
learned signal. The higher the tolerance, the more likely HomeVision will declare the signal as
matching. The tolerance can range from 1 to 13. However, it is unlikely you would ever need to
go below 2 or above 7. A higher value increases the likelihood of recognizing a signal, but if it’s
too high, it could cause HomeVision to misrecognize some signals.
Setting Up A Remote To Use As Command Inputs
In addition to controlling the video screen system, your remote can be used to issue commands to the
controller. Whenever these signals are received, the controller will execute whatever actions you’ve
specified for them.
You might want to use unused functions on your remote as command inputs. For example, if your remote
has a cable box function that you’re not using, its keys could be configured as command inputs. If your
remote can transmit “standard” signals, you can use the same signals (i.e., remote buttons) as used to
control the video screen system if you want. However, the functions of the signals then depends on whether
the video screen is active:
154
Chapter 14
Infrared Control
-
If the video screen system is active when these signals are received, they will be used to navigate
through the video system. Actions you’ve defined to be performed when these signals are received
will not be performed.
-
If the video screen system is not active when these signals are received, the actions you’ve defined
to be performed when these signals are received will be performed.
Normal Method – Using IR Signal Summary Screen
Following is the way most users will set this up. It requires adding each IR signal to the IR signal summary
screen. An alternative method is described later that avoids the limit of 255 IR signals on this screen.
If your remote can transmit “standard” signals, here’s how to set this up:
1) Configure your remote to transmit standard format signals. Refer to the section “Configuring A
Preprogrammed Remote” to do this.
2) Verify your remote is properly transmitting standard format signals. Refer to the section “Testing A
Preprogrammed Remote” to do this.
3) Record the Device and Key Codes for each signal.
4) Use the IR signal summary screen under the “Objects/Events” menu to enter the Device and Key
Codes for each signal. You can also enter whatever actions you want performed when that IR signal
is received. Refer to the section “Entering IR Signal Actions” for details on how to do this.
5) Load the new schedule into the controller. You can now use your remote to command the controller
to perform the specified actions.
If your remote doesn’t transmit “standard” signals, you must set HomeVision up to recognize “learned”
signals. Here’s how to set this up:
1) Refer to the previous section “Controller Setup For Receiving Learned IR Signals” to enable this
capability.
2) Learn the IR signals, as described in “Learning Infrared Signals for Transmission”.
3) Use the IR signal summary screen under the “Objects/Events” menu to enter whatever actions you
want performed when that IR signal is received. Refer to the section “Entering IR Signal Actions” for
details on how to do this.
4) Load the new schedule into the controller. You can now use your remote to command the controller
to perform the specified actions.
Alternate Method – Receive Any Standard IR Signal
The method shown above is limited by the maximum of 255 IR signals that HomeVision supports. This
alternate method allows you to create a periodic event that can detect when any of the 65,536 possible
standard IR signals is received. You can then check the signal’s device and key code to decide what action
to take. This is intended for advanced users, as it requires using special “memory access commands” that
are normally hidden from users. Here’s how this process works:
•
•
•
Whenever the controller receives an IR signal, it will store up to three bytes of information about the
signal in RAM.
You create a periodic event that runs every loop. The periodic event uses the memory access
commands to read the signal information into three of your own variables. You can then check
these variables in If-Then statements and take action.
After all periodic events have run, the controller will reset the signal information. This enables you to
detect when a new signal is received.
Chapter 14
Infrared Control
155
Following is an example of the code that goes in the periodic event:
Memory access: Read data from address
Memory access: Read data from address
Memory access: Read data from address
If
Var #28 (IRRX signal type) = 1
Then
Serial port 1 transmit: "IRRX: "
Serial port 1 transmit: Variable
Serial port 1 transmit: " "
Serial port 1 transmit: Variable
Serial port 1 transmit: " "
Serial port 1 transmit: Variable
Serial port 1 transmit: Carriage
End If
EF59h into variable #28 (Signal type)
EF5Ah into variable #29 (Device code)
EF5Bh into variable #30 (Key code)
#28 (Signal type) value as 2 hex bytes
#29 (Device code) value as 2 hex bytes
#30 (Key code) value as 2 hex bytes
return and line feed
The first three commands are the memory access commands that read the three bytes containing the IR
signal information into your variables (numbers 28, 29, and 30 in this example). If a standard IR signal was
received, the “EF59” variable will contain the value of one, so check for this value. You can then take
whatever actions you want. In this example, we simply transmit the device and key codes out the serial port.
Typically, users would check the device and key code in additional If-Then statements and take appropriate
actions.
The “EF59” variable will contain one of four possible values:
0: Means no new IR signal was received.
1: Means a standard IR signal was received. The next two bytes will contain the device and key code.
2: Means a learned IR signal was received. The next byte will contain the ID # of the IR signal it
matches.
3: Means an unknown IR signal was received. This will also happen if IR noise is received.
In order to enter the “memory access commands” in your schedule, this capability must be enabled. To do
this, you must edit the Windows registry on your PC. This can be done using RegEdit. Open the registry
and then open this path:
HKEY_CURRENT_USER / Software / VB and VBA Program Settings / HomeVision
Under the “Miscellaneous” section, look for an entry with the name “MemoryAcess” and change its data
value to “True”. If it’s not there, add an entry (using Edit/New/String Value) with the name “MemoryAcess”
and set its data value to “True”. The next time to start the HomeVision software, memory access commands
will be enabled. You access them from the Actions Entry Screen via the “Other” button. Note that when
entering the address to read or write, you enter two bytes in decimal format, but the command will display
the address in hexadecimal format. For example, the hex address “EF59” shown in the example is entered
as “239” for the Most Significant Byte and “89” for the Least Significant Byte.
IR Signal Transmission Details
Electrical Connections
The controller can transmit IR signals to devices such as televisions and stereos. An infrared transmitter is
built into the unit and transmits from the front panel. In addition, the controller can simultaneously drive an
external transmitter through the 3.5mm jack on the rear panel. Each method is discussed below.
156
Chapter 14
Infrared Control
Transmitting From The Controller Front Panel
An infrared diode is mounted on the controller circuit board and aims out the front of the unit. The diode is
located on the left side of the unit (to the left of the “ON” LED) when viewed from the front. It has an effective
range of 15-35 feet depending on the angle between the controller and the receiver, and the receiver’s
sensitivity.
This diode can be disabled by removing jumper JP on the circuit board. The following figure shows the
location of the jumper and the diode.
IR Transmitting
Diode
Jumper
JP
EPROM
TB
1
Po
rt
A
TB2 Port B
TB3 Port C
IR Transmit
Jack
Chapter 14
Infrared Control
157
Transmitting From The Controller Rear Panel
A 3.5mm jack is provided to drive an external infrared transmitter if desired. The jack is located on the
controller’s rear panel and is labeled “IR TX”. You can transmit through this output and the front panel diode
simultaneously if desired. This jack is always active, even when the jumper JP is removed.
This output has the following electrical characteristics:
•
When off (not transmitting):
-
•
When on (transmitting):
-
•
If jumper JP is in place, the output is tied to ground through a resistor and the IR LED. If
jumper JP is removed, the output is open.
Output is 5V nominal through a 75 Ohm resistor to limit the current.
A schematic of this circuit is shown below:
+5V
75 ohms
IR TX
Output Jack
Jumper JP
22 ohms
IR LED
Ground
This output can directly drive Xantech Corporation’s Video Link Blast-IR transmitter. It can also directly drive
“mini-emitters”, but is better used to drive amplified or non-amplified “connecting blocks”, which in turn drive
multiple emitters.
Configuration for Transmission
Before the controller can transmit an infrared signal, you must tell it what the signal looks like. This can be
done in two ways:
1) You can use the “IR Learn” screen to record the pulse lengths of the signal.
2) If the signal follows the “standard” format, you can enter the signal’s Device Code and Key Code.
Each method is explained below.
158
Chapter 14
Infrared Control
Learning Infrared Signals For Transmission
“Learning” is the process by which the controller analyzes the IR signal and stores it in memory. The
procedure is as follows:
1) The controller must be setup as follows:
•
The controller must be connected to the PC serial port.
•
The controller’s “IR Receive Mode”, “Master Report Mode” and “IR Report Mode” must be
enabled. You can verify these are set by using the “Status” screen under the “Other” menu. If
necessary, you can enable these modes from the “Controller Command” screen under the
“Control” menu.
2) Select “IR Learn” from the “Other” menu. The IR learn screen will appear.
3) To learn a particular signal, click the “Learn” button. The PC will display the message “Preparing
controller ...” and attempt to put the controller into the learn mode. If the controller does not respond,
the PC will abort the learning process and display a message. If this happens, verify that the
controller is properly connected and communicating. If successful, the message “Aim remote at
controller and transmit once” will be displayed. Then:
•
Hold the remote approximately 4 inches away from the front panel and point it toward the “IR
Receive” window. Remotes with different strengths may need to be held at slightly different
distances; 4 inches is a good starting point. If it’s too far, away slowly move it closer.
•
Press and release the remote button you’re learning. The idea is to transmit a single signal. If
you press down too long, the remote may transmit multiple signals.
•
Depending on the remote and how close you hold it to the controller, one of five things will
happen. Wait several seconds to see what happens; don’t immediately press the button again.
The possibilities are:
A) The message “IR signal received, now analyzing ...” is displayed. This is followed by the
message “Done analyzing signal”. This indicates the signal has been successfully learned.
Four key signal parameters will also be displayed in the upper right corner of the screen:
-
Carrier frequency. This is the actual carrier frequency of the signal. The controller
works with carrier frequencies in the range of 10kHz to 100kHz. Most consumer
electronics work near 40kHz.
-
Number of pulses. This is the number of pulses in the signal.
-
Signal length. This is the length of the signal in milliseconds. Typical signals are from
40ms to 200ms.
-
Duty cycle. This is the percent of time that the carrier frequency is modulated on for.
It’s usually around 40%.
Note that there are more details that aren't shown.
parameters shown above aren't necessarily the same.
Signals which have all the same
B) The message “Remote may be too close to controller” is displayed. If this happens, you
need to move the remote a couple inches further away and try again. The learn mode is
automatically restarted and the controller waits for you to transmit again.
C) The message “Remote may be too far away from controller” is displayed. If this happens,
you need to move the remote a little closer and try again. The learn mode is automatically
restarted and the controller waits for you to transmit again.
Chapter 14
Infrared Control
159
NOTE: There are times when the controller cannot accurately determine whether the remote
is too close or too far away. If you follow the messages to move the remote closer or further
away and still can’t get it to learn, try moving it to a different distance. Some remotes need
to be as close as 1 inch and others as far away as 3 feet in order to properly learn.
D) An error message is reported. This means there was a problem with the format of the
signal. Try again. If the problem persists:
-
Move the remote closer to or further from the controller.
Press the remote button very quickly; don’t hold it.
Record the error message and report it to us. This may be an unusual signal which the
controller cannot learn.
E) Nothing happens. This indicates the controller did not receive any IR signal at all or that it is
not properly set up to report it. Try again. If there’s still no response:
-
Verify the controller is set up as described in Step 1.
Make sure the remote’s batteries are OK.
NOTE: If you still can't get this to work, uncheck the "Learn carrier frequency" box and try learning
again. You should then be able to hold the remote at any distance. However, the controller won't
attempt to measure the carrier frequency. Instead, it will default to 38.4kHz, which works for most
remotes. You can manually change the frequency in the text box if necessary to make it work.
Refer to the help file for more details.
4) After the signal is successfully learned, it should be tested. Click the “Load” button. This loads the
signal into a special test area in the controller’s memory.
5) Click the “Xmit Test” button, and the controller will transmit the signal which was loaded into its test
memory. Aim the controller (or an external IR transmitter, if connected) at the device you want to
control. It should respond to the IR signal. If it doesn’t, try learning the signal again.
6) After you’ve verified the signal was learned properly, you must save it to one of the defined IR
signals. Select a signal from the list box under “IR Signal To Save To”. Click “Save”. If you don’t
have an IR signal defined to save it to, you can go to the IR signal summary screen under the
“Objects/Events” menu and define it, then return to the IR learn screen and save it.
7) Repeat this process for each signal you want to learn.
8) Save your schedule file (which holds the IR signal format data).
9) Load the schedule into the controller.
Here are some tips for learning remote signals:
•
Aim the remote directly at the “IR Receive” window on the front panel. Holding it at a wide angle will
occasionally prevent learning a signal. Note that this alignment is only needed when learning.
Normal reception works at much wider angles and longer distances.
•
If you have problems learning, put fresh batteries in your remote. Weak signals make it more difficult
to learn accurately.
•
If the learned signal does not properly control your equipment, try learning several times. Compare
the carrier frequency, number of pulses, and signal length for each:
-
If the carrier frequency is near 10kHz or 100kHz, the signal is near the controller’s limits and
may be more difficult to learn. You may have to try several times.
160
Chapter 14
•
Infrared Control
-
The carrier frequency should be fairly stable (within 2kHz each time). If it varies by more than
this, try moving the remote a little closer or further away.
-
If the signals are of different lengths or have different number of pulses, you may be getting
multiple transmissions when you’re pressing the button. Try pressing it more quickly.
If the learned signal still won’t control your equipment, it may be because the signal is one of the rare
types that doesn’t use a carrier. Try the process outlined below to learn signals without a carrier
frequency.
Learning Infrared Signals Without A Carrier
The vast majority (>99.5%) of infrared signals use a “carrier” to transmit the signal, but a few do not. To
learn signals that don’t have a carrier, first check the “Learn signal with no carrier” box on the IR learn
screen. You then must hold the remote within a few inches of HomeVision while learning.
Note that signals without a carrier can only be learned for transmission later. You will not be able to use
them to trigger actions.
Transmitting Standard Infrared Signals
If your remote-controlled equipment happens to follow the “standard” infrared signal format, you can store its
signals by referring to its Device Code and Key Codes instead of following the “learning” process (although
you can learn the signals also).
1) To determine if your remote uses the standard format, follow the procedure described in “Testing A
Preprogrammed Remote”. If it doesn’t, you will have to “learn” these signals as described earlier.
2) Record the Device and Key Codes for each signal you want to learn.
3) Open the IR signal summary screen (under the “Objects/Events” menu).
4) Select a signal to save each signal to. Double-click on any of these three fields:
•
•
•
IR Signal Type
Device Code
Key Code
All of these call up the IR data screen. From there:
A) Select “Standard” from the signal format list box.
B) Enter the signal’s Device Code and Key Code that you recorded earlier in the corresponding
text boxes.
C) Click “OK” to return to the IR signal summary screen.
5)
Make sure the “Transmit Enabled” checkbox is set for the signal (on the IR signal summary
screen). This signal has now been set to transmit the specified standard signal and thereby
control your equipment.
6)
Save your schedule file (which holds the IR signal format data).
7)
Load the schedule into the controller.
Chapter 14
Infrared Control
161
Entering IR Signal Actions
You can define a set of actions to perform whenever a “standard” format infrared signal is received. To do
this:
•
Open the “IR Signal” screen under the “Objects/Events” menu.
•
Double-click on the “Actions Defined” field of the signal you want. The actions entry screen will
appear.
NOTE: The selected signal must follow the standard format. You cannot use “learned” signals that
are stored as pulse lengths to trigger actions.
•
Enter the actions and conditions, then click “OK”. You’ll return to the IR signal summary screen.
•
Enable the actions by checking the “Actions Enabled” field. The actions are automatically enabled
after you enter them, but you’re free to enable or disable them at any time.
•
Load the new schedule into the controller.
IR Transmission Settings
The gap between infrared signal transmissions is variable from 0 to 255 milliseconds. The default value is
100ms and should work in almost all situations. If you find that some transmission don’t work properly when
you send them back-to-back, you may want to try a longer gap. The only drawback to a longer gap is that
multiple transmissions take a little longer. You can try setting the gap to less than 100ms to speed things up,
but be sure to test it to make sure it works consistently. How well it works depends entirely on your particular
equipment. You can set the gap from the controller configuration screen under the “Configure” menu.
When you learn an infrared signal, you can adjust the duty cycle of the carrier frequency. The default setting
is 40%, which should work in almost all cases. However, if a learned signal doesn’t control your equipment
properly, try adjusting this factor. Values between 20% and 70% will often work.
If you’re transmitting with external “mini” emitters placed directly on the receiving window of your equipment,
you may run into occasional difficulties. Such emitters sometimes overpower the receiver. This is usually
due to driving the emitter with a high voltage source that increases the LED drive current, a problem not
attributable to the controller itself. However, the controller can help to alleviate such problems by reducing
the signal’s duty cycle. This reduces the overall energy in the transmitted signal, sometimes allowing such
over-driven emitters to work properly.
Importing and Exporting IR Signals
Learned infrared signals can be exported to and imported from a disk file (a file with a “.IRL” extension, not a
schedule file). This allows you to save the signals and use them in another schedule. Importing and
exporting is done from the IR signal summary screen.
The following data is imported and exported:
•
•
•
Signal name
Signal description
Signal format (device and key codes or pulse length data)
Actions associated with the signals are not imported or exported.
162
Chapter 14
Infrared Control
To export signals:
•
•
•
•
•
Open the IR Signal screen.
Select the signal(s) to export by moving the cursor to the left end of the row. The cursor will change
to a right-arrow – click to select it. Hold down the SHIFT or CTRL keys to select multiple rows.
Click the Export button.
In the new window that opens, click the Select File button and select an existing “.IRL” file or enter a
new name.
Click the Export Now button to export the signals.
To import signals:
•
•
•
•
•
•
Open the IR Signal screen.
Click the Import button.
In the new window that opens, click the Open File button and select an existing “.IRL” file to import
from.
Select the signal(s) to import by moving the cursor to the left end of the row. The cursor will change
to a right-arrow – click to select it. Hold down the SHIFT or CTRL keys to select multiple rows.
Click the Import Selected Signals button to complete the importing.
The imported signals will appear at the bottom of your IR signal list. Unfortunately, there is no way
to move them around or to import them to specific locations.
IR Signal Commands
The following infrared signal commands can be included in a schedule. They can all also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected IR signal are chosen from the pull-down list.
Transmit IR Signal Number ## Once
This command will transmit the specified infrared signal one time.
Transmit IR Signal Number ## XX Times
This command will transmit the specified infrared signal XX times. The XX value can be between 1
and 255.
Transmit IR Signal At Variable ## One Time
This command uses the value of variable number ## as the ID number of the infrared signal to
transmit. If the value is not a valid IR signal number, the command is skipped.
Transmit Standard IR Signal [Device Code=### and Key Code=###] XX Times
This command will transmit the specified standard infrared signal XX times. The XX value can be
between 1 and 255. You have to enter the signal's device and key code.
The main use for this command is if you reach the 255 learned signal limit, and you have some
equipment that that uses "standard" IR signals. If so, you can transmit the standard signals with this
command, and they won't use up any of the 255 available learned signals. You can then learn other
signals in their place, thereby surpassing the 255-signal limit.
The main drawback of this command is it can make your schedule harder to read. The normal IR
transmit command shown previously uses the signal name and ID #, making it clearer what the
signal does. This new command only uses device and key codes, which aren't readily
Chapter 14
Infrared Control
163
understandable. Therefore, we recommend you only use this command if you absolutely need to.
We also suggest that, if you do, you also include comments in your schedule to explain what each
signal is. Otherwise, you may have a hard time understanding it later.
Disable IR Signal Transmit Mode
The transmit capability of each infrared signal can be individually enabled and disabled. When
disabled, commands in the schedule to transmit the signal will be ignored. You would normally
enable or disable a signal from the IR summary screen. However, you can also do it from a
command in the schedule. This command will disable the specified signal.
Enable IR Signal Transmit Mode
This command will enable transmission of the specified signal. It does not actually transmit a signal.
See the discussion of the preceding command for more information.
Disable IR Signal Receive Mode
The controller can be configured to automatically perform a set of actions when a specific infrared
signal is received. To do this, you must first enter the actions you want to perform, then enable the
receive mode. When the receive mode is disabled, the specified infrared signal cannot be received
and the actions will therefore not be performed. You would normally enable or disable signal
reception from the IR summary screen. However, you can also do it from a command in the
schedule. This command will disable receiving of the specified signal.
Enable IR Signal Receive Mode
This command will enable reception of the specified signal and allow any defined actions to be
performed. See the discussion of the preceding command for more information.
Select IR Transmit Zones: #, #, # ...
This command selects (enables) the specified infrared transmit zones. This command is only
available if you have a multifunction expansion board with IR zoning capability attached to the
controller.
When you enter this command in a schedule, you can select any or all of the 8 IR zones. After this
command is run, subsequent infrared transmissions from the controller will only be output on the
selected zones of the expansion board. You can use this command at any place in your schedule to
change the selected zones.
Notes
- When the controller restarts after a power failure, it defaults to all 8 zones active.
- This command does not affect the IR transmitter built into the main controller. It always
transmits regardless of which zones are active.
IR Signal Conditions
There are no infrared signal conditions that can be checked by an If-Then or If-Then-Else statement.
Chapter 15
Controller Functions
165
CHAPTER 15: CONTROLLER FUNCTIONS
Introduction
The controller has many operating modes and functions. You can change these at any time using a variety
of means, including:
•
With a command in your schedule
•
Through the “Controller Commands” screen in the PC software
•
By enabling and disabling functions with the “Controller Settings” configuration screen, then loading
the new settings into the controller
•
By a command over the serial interface
The following section explains the settings and commands that are available and what they do.
Clock Adjustment
You can set a daily clock adjustment factor. At approximately 3:30 AM each day, the controller will adjust
the internal clock by the specified amount. This allows you to improve the clock’s accuracy in case it is
drifting. Specify the adjustment factor with the controller configuration screen under the “Configure” menu.
Note: The adjustment is only made if the controller is running at 3:30 AM. If power is removed at that time,
no adjustment will take place that day.
Also note that the adjustment will not affect any timers that happen to be running at that time. For example,
if a timer has 20 seconds left at the time the clock is adjusted ahead by 5 seconds, the timer will remain at 20
seconds. Thus, timer accuracy is maintained.
If you wish to set this adjustment value, we suggest you first let the controller run for several days or more to
get an accurate reading of how much it is drifting, then determine the needed adjustment factor. Also note
that if you’re comparing the controller’s time to your computer’s, your computer is likely drifting by a small
amount also.
Controller Commands
The following controller commands can be included in a schedule. Some of them can also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command is chosen from the pull-down list.
Reporting Commands
The controller can be set up to automatically report the occurrence of certain events. The events are
reported by transmitting serial messages to the attached PC.
166
Chapter 15
Controller Functions
Enable Master Report Mode
Disable Master Report Mode
These commands enable or disable the overall (master) reporting function. When disabled, the
controller will not report any events over the serial interface, even if the individual reporting modes
are enabled. The master report mode must be enabled before the controller will report any events.
Enable Reporting Of Time And Date Along With Events
Disable Reporting Of Time And Date Along With Events
When an event occurs which is reported over the serial interface, the controller can also report the
event’s time and date. When this mode is enabled, the controller will transmit an additional line of
text which includes the time and date.
Enable Input Port Report Mode
Disable Input Port Report Mode
These commands enable or disable the Input Port Report Mode. When enabled, the controller will
send a message over the serial interface whenever an enabled input port changes state.
Enable X-10 Report Mode
Disable X-10 Report Mode
These commands enable or disable the X-10 Report Mode. When enabled, the controller will send a
message over the serial interface whenever an X-10 signal is received.
Enable Infrared Report Mode
Disable Infrared Report Mode
These commands enable or disable the Infrared Report Mode. When enabled, the controller will
send a message over the serial interface whenever certain infrared signals are received. Only
infrared signals that follow the standard format and are included in the IR summary table can be
received.
Enable Scheduled Event Report Mode
Disable Scheduled Event Report Mode
These commands enable or disable the Scheduled Event Report Mode. When enabled, the
controller will send a message over the serial interface whenever a scheduled event occurs.
Enable Periodic Event Report Mode
Disable Periodic Event Report Mode
These commands enable or disable the Periodic Event Report Mode. When enabled, the controller
will send a message over the serial interface whenever a periodic event occurs. Periodic events that
are performed every loop will not be reported (if they were, they would be transmitted virtually
continually). Events at all other rates will be reported every time they occur.
Enable Timer Report Mode
Disable Timer Report Mode
These commands enable or disable the Timer Report Mode. When enabled, the controller will send
a report message over the serial interface whenever a timer expires (counts down to zero).
Enable Controller Actions Report Mode
Disable Controller Actions Report Mode
These commands enable or disable the Controller Actions Report Mode. When enabled, the
controller will send a report (message) over the serial interface whenever certain controller actions
occur. The actions that will be reported are:
•
When the time passes midnight and the controller calculates new sunrise and sunset times.
Chapter 15
Controller Functions
167
•
If an error occurs. The error number will be reported. Refer to the "Miscellaneous" chapter
for error information.
•
If the Watchdog Timer times out due to an error condition. The software address of the
time-out will be reported. This address is helpful to us in diagnosing problems. Hopefully,
you’ll never see a time-out occur.
Operating Modes Commands
The major controller operating modes can be individually enabled and disabled with these commands.
Enable Infrared Receive Function
Disable Infrared Receive Function
In order to receive infrared signals, the IR receive function must be enabled. These commands
enable and disable this function. If you are not using the IR receive capability, you should disable it
(this will slightly improve the controller’s operating speed). While disabled, you can still transmit IR
signals.
Enable X-10 Receive Function
Disable X-10 Receive Function
In order to receive X-10 signals, the X-10 receive function must be enabled. These commands
enable and disable this function. If you are not using the X-10 receive capability, you should disable
it (this will slightly improve the controller’s operating speed). While disabled, you can still transmit X10 signals.
Enable Input Port Function
Disable Input Port Function
In order for the controller to detect changes of the input ports, the input port checking function must
be enabled. These commands enable and disable this function. If you are not using any input ports,
you should disable this function (this will slightly improve the controller’s operating speed).
Event Log Commands
These commands control the event log that can be displayed on your TV.
Clear TV Event Log
This command clears all 256 lines of the controller's event log. Any new logged events will be
placed at the end (bottom) of the log. The log is automatically cleared each time a new schedule is
loaded.
Enable X-10 Receive Log Mode
This command enables automatic logging of received X-10 signals to the controller's event log.
Whenever a signal is received, it will be written to the log, as shown in these examples:
X10 RX: A-1
X10 RX: A-Off
X10 RX: D-All Lights On
168
Chapter 15
Controller Functions
X10 RX: Preset Dim 30
Disable X-10 Receive Log Mode
This command disables automatic logging of received X-10 signals to the controller's event log.
Enable Input Port Log Mode
This command enables automatic logging of input port changes to the controller's event log.
Whenever an enabled port changes, it will be written to the log, as shown in these examples:
Input: Port B 1
changed to high
Input: Port B 5
changed to low
Disable Input Port Log Mode
This command disables automatic logging of input port changes to the controller's event log.
Enable Scheduled Event Log Mode
This command enables automatic logging of scheduled events to the controller's event log.
Whenever a scheduled event occurs, the event name will be written to the log, as shown in these
examples:
Sch Ev: Porch Light On
Sch Ev: Garage Light Off
Disable Scheduled Event Log Mode
This command disables automatic logging of scheduled events to the controller's event log.
Enable Thermostat Log Mode
This command enables automatic logging of scheduled thermostat changes to the controller's event
log. Whenever a scheduled thermostat temperature change occurs, it will be written to the log, as
shown in these examples:
Set zone 1 temp to 75
Set zone 2 temp to 71
Disable Thermostat Log Mode
This command disables automatic logging of scheduled thermostat changes to the controller's event
log.
Enable Caller ID Log Mode
This command enables automatic logging of received phone calls to the controller's event log.
Whenever a phone call is received, caller ID information will be written to the log, as shown in this
example:
Phone call from:
John Doe
407-555-1234
Disable Caller ID Log Mode
This command disables automatic logging of received phone calls to the controller's event log.
Chapter 15
Controller Functions
169
Enable Logging Of Time
This command enables logging of the current time to the controller's event log whenever an
automatically logged event occurs. Here are some examples:
X10 RX: D-All Lights On
at 12:30:55 PM
Input: Port B 1
changed to high
at 11:33:27 AM
Sch Ev: Porch Light On
at 06:15:00 PM
Set zone 1 temp to 75
at 07:30:00 AM
Disable Logging Of Time
This command disables logging of the current time to the controller's event log whenever an
automatically logged event occurs.
Other Commands
Turn User LED On
Turn User LED Off
The “U” LED, third from the left on the controller’s front panel, can be controlled by the user. These
two commands turn it on and off.
Transmit Time And Date
This command causes the controller to transmit the current time and date over the serial interface.
Transmit Sunrise Time
Transmit Sunset Time
These commands cause the controller to transmit either today’s sunrise or sunset time over the
serial interface.
Execute Self-Test
This command causes the controller to execute a self-test and transmit the result over the serial
interface. This is the same self-test the controller performs automatically at power-up. The test
result is contained in one byte, which is transmitted as two ASCII hex characters. The value should
be converter to binary and each bit evaluated. The bit meanings are as follows:
bit 0 (LSB) :
bit 1 :
bit 2 :
bit 3 :
bit 4 :
0 = Port A/B Control Test Passed
1 = Port A/B Control Test Failed
0 = External RAM Read/Write Test Passed
1 = External RAM Read/Write Test Failed
0 = Port C Test Passed
1 = Port C Test Failed
0 = Clock Test Passed
1 = Clock Test Failed
0 = Microcontroller Test Passed
1 = Microcontroller Test Failed
170
Chapter 15
Controller Functions
bit 5 :
bits 6 - 7 :
0 = PROM Test Passed
1 = PROM Test Failed
Not used
Read Error Message
This command causes the controller to transmit the error message ID # over the serial interface.
Refer to the "Miscellaneous" chapter for a description of error messages.
Put Error Message In Result Value
This command causes the controller to put the error message ID number into the system variable
“Result Value”. It can then be transmitted over the serial interface, stored in a variable, or used in
some other way. You could even do this every loop, check for a non-zero value (indicating an error),
and then transmit it over the serial interface along with the time and date. Refer to the
"Miscellaneous" chapter for a description of “Result Value”.
Clear Error Message
This command causes the controller to reset the error message ID number to zero, indicating no
error. The error message ID is also cleared automatically each time power is cycled. Refer to the
"Miscellaneous" chapter for a description of error messages.
Halt Controller
Resume Controller
These commands halt and resume the operation of the controller. When halted, the controller will
not:
•
•
•
•
•
•
receive any X-10 or infrared signals,
check for input port changes,
perform any scheduled or periodic events,
count down any timers,
update the video screen (if active), or
execute any part of a schedule.
However, the controller can still receive and execute commands over the serial interface while
halted. This includes commands to transmit X-10 or IR signals, change output ports, change the
video screen, or any other action.
Transmit Controller Status
This command causes the controller to transmit a status message over the serial interface. The
format is as follows:
•
The returned value represents a number between 0 and 255. When converted to binary, the
8 bits have the following meanings:
bit 0 (LSB) :
bit 1 :
bit 2 :
bit 3 :
bit 4 :
bit 5 :
bit 6 :
0 = controller running
1 = controller halted
0 = no controller error
1 = controller error
0 = TW-523 is present
1 = TW-523 is not present
0 = controller running loaded schedule
1 = controller using default schedule
0 = power-up self test passed
1 = power-up self test failed
0 = controller clock OK
1 = controller clock error
0 = RAM checksum OK
Chapter 15
Controller Functions
171
1 = RAM checksum error
bit 7 (MSB) : Not used
Set
Set
Set
Set
Set
Set
Baud
Baud
Baud
Baud
Baud
Baud
Rate
Rate
Rate
Rate
Rate
Rate
To
To
To
To
To
To
1200
2400
4800
9600
19200
57600
These commands change the baud rate used on the serial interface. The new rate will take effect
only after all characters in the transmit buffer are transmitted (at the prior baud rate). The serial
transmit buffer holds up to 256 characters. Here’s an example of how this works:
Assume you perform the following commands in your schedule and the baud rate is currently
19200 baud:
Transmit ASCII string “Welcome Home John”
Set baud rate to 9600
Transmit ASCII string “Alarm Off”
The first command will start transmitting the string “Welcome Home John” at 19200 baud. If any
characters were in the transmit buffer prior to performing this command, they will be sent prior to
the “Welcome Home John” string. The second command will wait until the entire “Welcome
Home John” string is transmitted before changing the baud rate to 9600. The string “Alarm Off”
will then be sent at 9600 baud.
NOTE: The new baud rate is maintained even through power failures. If you change the rate in your
schedule, so should usually set it back to its normal rate after transmitting or receiving whatever you
needed to at the different rate. If you don’t, the PC will not be able to communicate with the
controller if the PC is at a different rate. You will then have to change the PC rate to match the
controller’s before you can communicate over the serial interface again.
Set X-10 To Transmit On One Phase Only
This command causes all subsequent X-10 transmissions to be transmitted on only one phase of the
AC power line. This is the default position and works in most residential applications.
Set X-10 To Transmit On All Three Phases
This command causes all subsequent X-10 transmissions to be transmitted on all three phases of
the AC power line.
Set clock ahead ## minutes
This command will set the clock ahead by the specified number of minutes (which can range from 1
to 60). This is intended primarily for international locations where daylight savings time does follow
the U.S. standards. The user can disable HomeVision’s automatic daylight savings time adjustment,
then add scheduled events to change the time on the appropriate days. Note that you should not
use this command when it will cause the time to cross midnight. We recommend you do it in a
scheduled event set for early in the morning.
Set clock back ## minutes
This command will set the clock back by the specified number of minutes (which can range from 1 to
60). Note that you should not use this command when it will cause the time to cross
midnight. We recommend you do it in a scheduled event set for early in the morning, but not so
early as to cross midnight (i.e., don’t set the clock back 60 minutes at 12:30 AM, or it will cause
172
Chapter 15
Controller Functions
problems).
Set Daylight Savings Time Mode
This command causes the controller to set its internal variable making it think daylight savings time
is currently active. This will not cause the clock to change time. This should only be used by expert
users who need to customize how daylight savings time acts.
Clear Daylight Savings Time Mode
This command causes the controller to set its internal variable making it think daylight savings time
is currently not active.
Disable Serial Thermostat Polling
This command causes the controller to stop polling of serial thermostats. This should only be used
by expert users who want to communicate with the thermostats themselves and need to temporarily
stop HomeVision’s polling to prevent interference.
Enable Serial Thermostat Polling
This command causes the controller to start polling of serial thermostats.
Exit From All Actions Now
This command causes the controller to immediately stop performing the remaining actions for the
event (scheduled event, macro, timer event, etc.). When the controller reaches this action in your
schedule, it will immediately exit the event (scheduled event, macro, timer event, etc.), as well as
any event that called it. Here are some examples of how it works. Assume the following code is
placed in a scheduled event:
X-10: A1 (Hall light) Force On
Do macro #1 (Bedroom light) once
X-10: A3 (Kitchen light) Force On
Controller command: Exit from all actions now
X-10: A4 (Porch light) Force On
Assume macro 1 contains the following code:
X-10: A2 (Bedroom light) Force On
When the scheduled event runs, it will transmit X-10 signals A1 ON, A2 ON, and A3 ON. It will then
exit and not transmit A4 ON. But now lets assume macro 1 also contains an “Exit from all actions
now” command, like this:
X-10: A2 (Bedroom light) Force On
Controller command: Exit from all actions now
Now when the scheduled event runs, it will transmit X-10 signals A1 ON and A2 ON, but nothing
else. That’s because the “Exit from all actions now” command in macro 1 aborts all the actions
(even those in the scheduled event), and just those in the macro that contained it. Ideally, there
should be a command to exit the macro but return to the event that called it keep running from there,
but such a command it not available.
Controller Conditions
The following controller conditions can be checked by an If-Then or If-Then-Else statement.
If Master Report Mode Enabled
Chapter 15
Controller Functions
173
Condition is true if the master report mode is enabled, false if it is disabled.
If Master Report Mode Disabled
Condition is true if the master report mode is disabled, false if it is enabled.
If IR Receive Function Enabled
Condition is true if the IR receive function is enabled, false if it is disabled.
If IR Receive Function Disabled
Condition is true if the IR receive function is disabled, false if it is enabled.
If X-10 Receive Function Enabled
Condition is true if the X-10 receive function is enabled, false if it is disabled.
If X-10 Receive Function Disabled
Condition is true if the X-10 receive function is disabled, false if it is enabled.
If Input Port Function Enabled
Condition is true if the input port function is enabled, false if it is disabled.
If Input Port Function Disabled
Condition is true if the input port function is disabled, false if it is enabled.
If Recovering From Power Failure
Condition is true if the controller is currently in the power failure recovery process, false if not. This
condition is only true while the controller is executing your power failure recovery event and any
macros that are called from it.
If Not Recovering From Power Failure
Condition is true if the controller is not currently in the power failure recovery process, false if it is.
If Video Mode Is Active
Condition is true if the video mode is active, false if it is not.
If Video Mode Is Not Active
Condition is true if the video mode is not active, false if it is active.
If Controller Error
Condition is true if the controller has detected an error condition, false if not. Any error conditions
are reset (erased) when:
•
•
•
•
Power is cycled
The Reset Controller command is executed
The Clear Error Message command is executed
A scheduled is loaded into the controller
If No Controller Error
174
Chapter 15
Controller Functions
Condition is true if the controller has not detected an error condition, false if it has.
If TW-523 OK
Condition is true if the TW-523 is connected and functioning, false otherwise. The TW-523 LED on
the front panel should be lit whenever the TW-523 is OK.
If TW-523 Error
Condition is true if the controller cannot communicate with the TW-523, false if it can. The TW-523
LED on the front panel should be off whenever the TW-523 is missing, unconnected, or defective.
Chapter 16
Serial Interface
175
CHAPTER 16: SERIAL INTERFACE
Introduction
The serial interface provides the following features and capabilities:
•
This is the communications interface between the computer and the controller. It is used to load
your schedule.
•
The controller can also use the serial interface to transmit messages to a computer or other device.
Any event can be reported, such as:
-
Input port changed
X-10 signal received
IR signal received
Scheduled time has occurred
Periodic time has occurred
•
Commands can also be issued to the controller from a computer or other device. Simple ASCII
commands can be issued to perform almost any of the controller’s functions.
•
The controller can read ASCII and binary data in from external devices like security systems,
thermostats, weather stations, etc.
•
You can send serial commands to a PC running the HomeVision software to:
-
•
Play a WAV file (a sound file)
Start another program
Send keystrokes to a program
Write specific data to a text file
Write all serial data to a daily log file
Send data to another serial port on the computer
Receive data from another serial port on the computer
Display a message in the message window
You can add on two HomeVision-Serial and one HomeVision-Phone/Serial devices, each which
provide an extra serial port. Thus, you can have four serial ports total, two of which can be RS-485.
The controller communicates with the computer via a standard serial interface (RS-232). The supplied cable
connects the computer’s 9-pin serial port (a male DB-9 connector) to the controller’s 9-pin serial port (a
female DB-9 connector). If your computer uses a 25-pin serial connector instead of a 9-pin connector, an
adapter is required.
The PC-based computer program supplied with your controller uses the serial interface to communicate with
it. You can also use this interface to send your own commands to the controller or receive information from
the controller. You can use a standard communications (or terminal) program for this purpose, or you can
incorporate the communications in your own program. In fact, any device that can transmit RS-232 serial
data can be used to operate the controller.
You do not need to know anything about the serial interface except how to connect the cable between the
controller and your computer. The rest of this chapter is a detailed description of the interface protocol for
those who wish to perform their own interfacing to the controller. If you do not plan to use this capability, you
may wish to skip the rest of this chapter.
This chapter is divided into three sections describing:
176
Chapter 16
Serial Interface
1) How to transmit commands to the controller.
2) How to read data from external devices.
3) How to interpret command responses and other messages from the controller.
4) How to include commands in your schedule to transmit serial data.
Serial Interface Commands To The Controller
Transmitting Commands To The Controller
Nearly every command that can be included in a schedule can also be transmitted to the controller over the
serial interface. When received by the controller, it executes the command and reports the results back over
the serial interface.
This capability provides you with powerful control over your home automation system. You can program the
controller to run independently of your computer, but still be able to execute any command at any time from
the computer. It’s also possible to design a complete automation system running on your computer. The
computer could decide what to do and when, and then issue the appropriate command to the controller. The
format for transmitting commands to the controller is described in the “Serial Protocol” file installed in the
HomeVision directory. By default, only the main HomeVision serial port supports this standard protocol.
However, if you have an add-on HomeVision serial port, you can configure it to also use the standard
protocol. Do this with the “Serial” tab on the “Controller Settings Screen”.
Reading Serial Data From External Devices
Overview
The controller can read in virtually any format of serial data and take action based on it. This serial data is
called "User Data" to distinguish it from the "Command Data" used to send direct commands to the
controller. This capability allows the controller to communicate with serial devices such as:
•
•
•
•
Security systems
Thermostats
Weather stations
Modems
In brief, the controller can:
•
•
•
•
Read in serial data (ASCII and binary).
Compare the data or any portion of it to a known value (with an In-Then statement).
Count the number of received characters and put the number into a variable.
Convert a number anywhere in the data to a valued and store it in a variable.
There are several important factors to note about this capability:
•
The first character of the incoming data CANNOT BE A COMMA (,). A comma is used as the first
character of the controller's commands. Any incoming data beginning with a comma may be
improperly interpreted as a command.
•
The first character of the incoming data CANNOT BE THE BINARY CHARACTER DC1 (ASCII
VALUE 17) OR DC3 (ASCII VALUE 19). These characters are used for serial interface
"handshaking" using the XOn/XOff protocol and could interfere with communications. As long as the
Chapter 16
Serial Interface
177
serial device the controller is communicating with is using ASCII format, this will not be a problem (as
binary data won't be used).
•
Up to 254 characters can be included in a single data string.
Before you use this serial input capability, it's important to understand exactly how the controller handles
incoming data. Otherwise, errors or data loss could occur in your application. This section describes the
serial receive process.
1) When the first serial character is received, the controller checks to see if it's a comma. If so, it is
interpreted as a command (i.e., this is "Command Data").
The serial interface protocol
documentation describes how commands are handled. The following steps are not applicable.
Any other character (other than the prohibited DC1 and DC3 characters) are interpreted as the first
character of a new incoming data string, called "User Data". At this point, the "User Data" is
considered "In Process", and you can check for this condition in an If-Then statement if necessary.
2) Subsequent incoming characters are added to the end of the "User Data" string.
3) When the data is terminated (as explained below) the incoming data is considered "Complete". You
can check for this condition in an If-Then statement if necessary.
4) When the data is complete, the controller executes any actions you've specified in the "Serial Data
Input" event. This is where you will check the "User Data" string and do whatever you need to with
it.
5) While the controller is performing the "Serial Data Input" event actions, NO FURTHER SERIAL
DATA WILL BE READ IN. Any incoming characters will be ignored. This includes commands that
might come in from the software running on the PC.
6) When the controller finishes the "Serial Data Input" event actions you defined, it clears the "User
Data" input string. Thereafter, you will not be able use the string. The controller is now ready to
receive more serial input data (either commands or user data).
Data Terminator
HomeVision needs to know when the incoming serial data is complete, or "terminated", so it knows when to
take action on it. You can set HomeVision to use either of two methods:
1) Carriage return: Reception is terminated when a carriage return (a binary value of 13) is received.
It is also terminated if there is a one second gap after a character (this is necessary to prevent the
controller from locking up if the data does not contain a carriage return). This is the default method
and works well for receiving ASCII data.
2) 50ms timeout: Reception is terminated when a gap of 50 milliseconds or longer occurs after a
character. It is not terminated by a carriage return. This allows reception of binary data.
Select the method to use from the "Controller Settings" screen under the "Configure" menu.
Note that HomeVision is limited to receiving 254 characters. If this limit is reached before it is terminated by
one of the two above methods, it will be immediately terminated (as there is no more room to store the
incoming data).
178
Chapter 16
Serial Interface
How to Receive Serial Data
You may be asking yourself: All these serial commands and conditions are great, but just how do I use them
to read in serial data? The first thing to think about in setting up your system is WHEN the data will come
into the controller. There are two general possibilities:
1) Data comes into the controller only in response to commands issued from the controller. An
example is when you request the temperature setting from a thermostat, and it responds by sending
serial data. Another example is when you send an ARM command to a security system, and it
responds with OK. This type of data is called "Expected Serial Data" since you issued the command
and you know to expect a response.
2) Data can come in at any time from the attached serial device. An example would be a security
system that sends a serial message every time a zone is opened or closed. This type of data is
called "Unexpected Serial Data" since it can come in any time.
It may surprise you to know that the second case is easier to handle than the first case. Connecting to a
device that uses BOTH of these methods to communicate requires special care. However, the controller can
still work with all such systems.
Receiving Unexpected Serial Data
As an example of receiving serial data at any time, let's assume the serial port is connected to an alarm that
can report the following three serial messages:
Alarm Armed
Alarm Disarmed
Alarm Condition
Here's how to setup the controller to recognize when any of these messages come in:
1) Select "Serial Data Input" from the "Object/Events" menu. This opens the actions entry screen for
the Serial Data Input event. The actions entered here will be run each time a complete serial
message is received.
2) In the actions entry screen, enter three separate If-Then statements, each checking for one of the
possible messages. In the "Then" portion, enter whatever you want to do when the message is
received. Here's an example:
If
Serial Input Character Numbers 1 - 11 are 'Alarm Armed'
Then
{Do whatever you want here when the alarm gets armed}
End If
If
Serial Input Character Numbers 1 - 14 are 'Alarm Disarmed'
Then
{Do whatever you want here when the alarm gets disarmed}
End If
If
Serial Input Character Numbers 1 - 15 are 'Alarm Condition
Then
{Do whatever you want here when the alarm goes off}
End If
3) Click OK, then load the new schedule.
Here's how this works:
Chapter 16
Serial Interface
179
1) As a serial message comes in, it gets saved to memory (a buffer).
2) When the data is complete, the controller executes the actions you've specified in the "Serial Data
Input" event. If the message matches any of the If-Then statements, the specified actions are
performed. The incoming message can be used in If-Then statements repeatedly throughout this
event.
3) When the controller finishes the actions, it clears the incoming message. The controller is now ready
to receive more serial input data (either commands or user data).
The key to this approach is that all the conditions and actions involving the incoming serial data are
contained in the Serial Data Input event. The controller automatically executes this event when the message
is complete. Although you can receive and use serial data outside of the Serial Data Input event, it becomes
more difficult, as you have to figure out on your own when the message complete.
Receiving Expected Serial Data
As an example of receiving expected serial data, let's assume the serial port is connected to a thermostat.
The thermostat can report the current temperature in response to a command from the controller. Assume
the command:
Report Current Temperature
causes the thermostat to respond with:
Temperature is 85
Here's how we STRONGLY RECOMMEND reading this:
1) Wherever you want to read the temperature, enter the necessary command(s). In this example, you
would use this command:
Serial Transmit: "Report Current Temperature"
2) Select "Serial Data Input" from the "Object/Events" menu. This opens the actions entry screen for
the Serial Data Input event. The actions entered here will be run each time a complete serial
message is received.
3) In the actions entry screen, enter an If-Then statement to check for the temperature reporting
message, then put the temperature into a variable:
If
Serial Input Character Numbers 1 - 15 are 'Temperature is '
Then
Put Value Of 2 Received Characters 16-17 Into Result Value
Var #0 (Current Temperature) = Result Value
End If
Here's how this works:
1) The command is sent to the thermostat whenever you command it.
2) As the response comes in, it gets saved to memory.
3) When the response is complete, the controller executes the actions you've specified in the "Serial
Data Input" event. If the message is the temperature report, the temperature is put into a variable.
180
Chapter 16
Serial Interface
4) When the controller finishes the actions, it clears the incoming message. The controller is now ready
to receive more serial input data (either commands or user data).
This recommended approach may surprise you.
something like this:
The first idea that probably comes to your mind is
Serial Transmit: "Report Current Temperature"
Wait 0:00:00:50 with timer #0 (Thermostat Timer), Then:
If
Serial Input Character Numbers 1 - 15 are 'Temperature is '
Then
Put Value Of 2 Received Characters 16-17 Into Result Value
Var #0 (Current Temperature) = Result Value
Else
{We didn't get the expected response.}
{You might want to try again or just leave.}
End If
End Wait
However, with this approach, the wait timer must wait long enough for the complete response to come it. If
not, the If-Then-Else statement will be false and the temperature won't be read. Figuring out how long to
wait can be tricky. You have to wait long enough for the serial transmission to go out, and for the response
itself:
•
If you happened to send a lot of other serial transmissions just prior to running these commands, the
serial output buffer could contain up to 256 characters. ALL of these would have to be transmitted
before the command "Report Current Temperature" would go out.
Under worst-case conditions, you could have to wait for 282 characters to be transmitted (256 in the
buffer, plus the 26 in "Report Current Temperature"). The response is 17 more. If the port speed is
2400 baud, it will transmit 240 CHARACTERS per second). 282 characters will take 1.175 seconds.
•
Then, it will take some time for the thermostat to begin its response. You must figure out the
maximum possible delay and account for it.
•
Finally, it will take some time for the response itself to be transmitted.
You can get around this problem by using an extra-long wait period. However, if you're reading the response
and displaying it on a TV screen, a long delay may be unacceptable. Using the approach we recommend,
the controller will determine when the message is over and execute the actions immediately. This gives you
the fastest possible response.
Serial Transmissions From The Controller
There are three types of data that can be transmitted by the controller over its serial interface:
•
Report Messages: The controller can be configured to report the occurrence of a variety of events.
These include X-10 signals received, input ports changing, IR signals received, scheduled event
occurring, and more. This feature makes it very easy to record events and determine whether the
controller is running your schedule the way you expect.
•
Command Responses: Whenever a command is sent to the controller over the serial interface, the
controller will provide a response over the same interface. The response will acknowledge the
command received, provide any data that’s requested, and provide an indication of completion.
•
Commanded Serial Transmissions: Commands can be included in the schedule to transmit data
over the serial interface. Data can be sent in a variety of formats, including ASCII, hexadecimal, or
binary. If the HomeVision software is running on a connected PC, the serial transmission can play
WAV files, display messages, and much more.
Chapter 16
Serial Interface
181
The general data formats for the three types of transmissions are described below.
Controller Report Messages
The controller can be set up to report different types of events when they occur, such as:
•
•
•
•
X-10 command received
IR signal received
Input port changed state
Scheduled event has occurred
To use this feature, the desired report mode(s) must first be enabled. This can be done from the PC
program or within a schedule, as described in chapter 15, Controller Functions.
Report Message Format
When the controller is configured to report events, it will transmit a new message every time the event
occurs. The message follows the following format:
XX <Message> {CR} {LF} {Terminator}
-
“XX” is the Message ID Number. Each type of report message from the controller has a unique ID
number in a 2-digit hexadecimal format. Each digit will be a hexadecimal value (numbers 0-9 or
letters A-F). When converted to decimal, they represent the numbers 0 through 255. See Table 161 for the Message ID Numbers of each type of report message. They range from 80h through A3h.
By reading these two bytes, a user program can quickly identify the type of message from the
controller.
-
“<Message>” will contain a text description of the event. Typical messages are:
IR Signal #85 Received
Input Port #4 Changed High
Scheduled Event #2A Occurred
-
{CR} signifies that a carriage return is sent.
-
{LF} signifies that a line feed is sent.
-
{Terminator} signifies that a single-byte terminator code is sent. The byte has a value 1d, which is
the ASCII code SOH. The terminator is provided to make it easier for a PC program to read and
interpret the messages from the controller.
NOTE: The carriage return and line feed do not actually appear on the screen if you’re using a
terminal emulation program. Rather, they cause the cursor to move to the beginning of the next line.
The terminator code (ASCII code SOH) also will not appear on some terminal programs (although
other programs may display it as a special symbol). The PC software's built-in terminal emulator
strips this character out.
ID # (Hex)
80
81
82
MEANING
Power Restored
Self Test Passed
Self Test Failed
182
Chapter 16
Serial Interface
83
84
86
88
89
8A
90
91
92
93
98
A0
A1
A2
A3
New Error Message
Time/Date Message
Controller Reset (due to error)
Scheduled Event Occurred
Periodic Event Occurred
Timer Expired
X-10 House and Unit Codes Received
X-10 House and Function Codes Received
X-10 Function Code Only Received
X-10 Transmit Failed (Collision)
Input Port Changed
Infrared Signal
Received Infrared Signal ID #
Received Infrared Code #
Unknown Infrared Signal
Table 16-1
Serial Report Message ID Numbers
Time and Date Report Format
The controller can also be configured to report the time and date along with the event description. This is
done by setting the “Report Time and Date” mode from the PC program command screen or through the
video interface control screen. When enabled, the controller will transmit the following message immediately
after reporting the event:
84 Time: HH:MM:SS
Date: MM/DD/YY {CR} {LF} {Terminator}
-
84 is the message ID number for the Time/Date message and precedes each report.
-
HH:MM:SS represents the time (hours, minutes, and seconds) and MM/DD/YY represents the date
(month, day, and year). Note that the time is reported in military time (0-23 hours instead of
AM/PM). The numbers are already in decimal format. The example below shows a time of 11:04
PM and 50 seconds, and a date of March 5, 1995.
84 Time: 23:04:50
Date: 3/5/95 {CR} {LF} {Terminator}
The best way to understand the format of specific messages is to use the built-in control/response window or
a stand-alone terminal emulation program to watch the various messages from the controller.
Command Responses
Whenever the controller receives a valid command, it provides a response confirming it was performed or
reporting an error. You will only see this message if you send a command with a terminal emulator.
Details on issuing commands to the controller and the resulting responses are provided in the text file
“Serial” installed in the application directory.
Chapter 16
Serial Interface
183
Commanded Serial Transmissions
Commands can be placed in the schedule to transmit data over the serial interface. In most applications,
there would be a computer on the other end of the interface to receive the data. The data could be displayed
using a simple communications program. It could also be used to interface with a program running on the
PC to command other actions. It’s also possible to connect to another controller or electronic device instead
of a computer.
When serial commands are executed, only the specified data is transmitted. Unlike Controller Report
Messages and Command Responses, no Message ID Numbers or “Done” notes are added and no carriage
returns and line feeds are sent. However, it is possible to put carriage returns, line feeds, and other
characters into the data if desired.
Serial Commands
The following serial commands can be included in a schedule.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command is chosen from the pull-down list.
Serial Transmit Commands
Transmit ASCII String “XXXXXXXXXX”
This command transmits the text string “XXXXXXXXXX” (without the quotation marks) in ASCII
format, where the Xs can be any ASCII characters. If computer on the receiving end is running a
terminal emulation program, the text string “XXXXXXXXXX” will be displayed exactly as typed. The
string can be up to 255 characters long.
It’s important to understand the differences between ASCII, hexadecimal, and binary data formats
and how they are actually transmitted. As a first example, consider how the ASCII character “2” is
transmitted so that it will be displayed as the number 2 on a terminal program. In ASCII, the number
2 is represented as a 1-byte value of 32h (50d). In binary form, the 8 bits are 00110010 (the most
significant bit is written first). It’s these 8 bits that are transmitted over the serial interface. When the
computer on the receiving end reads the byte, it’s read as 32h. A terminal program will then convert
the 32h to its ASCII equivalent character (the number 2) and display it a 2. However, if you develop
your own program and read the byte in as a variable, it will be read as 32h (50d), not 2. If you intend
for it to be a 2, you’ll need to convert it from ASCII first.
This command is useful for transmitting messages to be displayed on a terminal emulation program.
However, since it transmits in ASCII format, it can only transmit characters that can be entered with
a single keystroke. The next command overcomes this limitation and can transmit any value over
the serial interface, even those that can’t be properly displayed on a terminal emulation program.
NOTE: If you want to transmit a binary value in your schedule, first set a variable equal to the
desired value. Then perform the command “Transmit Variable ## As 1 Binary Byte”, described
below.
Transmit Time and Date
This command causes the controller to transmit the current time and date in the following format:
Time: 23:04:50 Date 03/05/95
184
Chapter 16
Serial Interface
Note that the time is reported in military time (0-23 hours instead of AM/PM). The date format in
Month/Day/Year. The numbers are already in decimal format. The above example shows a time of
11:04 PM and 50 seconds, and a date of March 5, 1995. The time and date is the only part of the
message in decimal format. All other numbers are in hexadecimal format.
Transmit Carriage Return and Line Feed
As its name implies, this command causes the controller to transmit a carriage return and line feed.
Most of the other commands do not transmit a carriage return and line feed, so you may want to
perform this command when you’re through with a line of text.
Transmit Variable ## As 1 Binary Byte
Transmits the value of variable number ## as a single byte in binary format. For example:
A variable value of 0 is transmitted as:
A variable value of 1 is transmitted as:
A variable value of 128 is transmitted as:
A variable value of 254 is transmitted as:
00000000b
00000001b
10000000b
11111110b
Remember that many values cannot be displayed on standard terminal programs that convert the
data to ASCII. For example, a variable with a value of 0 would correspond to the Null character in
ASCII, which can’t normally be displayed.
This command is most appropriate for transmitting data to a program that can receive the full range
of values from 0 to 255. If you simply want to display data using a terminal emulation program, you
should use one of the following two commands instead.
Transmit Variable ## As 2 Hex Bytes
Transmits the value of variable number ## using two bytes in hex/ASCII format.
For example, assume the variable contains 23d (17h). First, the digit “1” will be transmitted in ASCII
format (since the number 1 is represented as 31h (00110001b) in ASCII, the 8 bits will be
00110001). Assuming you’re viewing the data on a communications program, the program will
convert this to the number “1” for display. Next, the second digit of “7” will be transmitted in ASCII
(the number 7 is represented as 37h (00110111b) in ASCII, so the 8 bits will be 00110111). The
communications program will convert the 00110111 to the number “7” and display it. Thus, the
variable’s value is displayed as two hex bytes:
17
This is the hexadecimal representation of the decimal number 23.
Transmit Variable ## As 3 Decimal Bytes
Transmits the value of variable number ## using 3 bytes in decimal/ASCII format. These examples
show how values would be displayed on a terminal emulation program:
A variable value of 145d is displayed as:
A variable value of 31d is displayed as:
A variable value of 4d is displayed as:
145
031
004
Notice that the value is always transmitted as three bytes, with leading zeros for value less than 100.
Chapter 16
Serial Interface
185
For a comparison of the three variable formats, consider transmitting a variable that contained the
value 106d (6Ah). The table below shows the data that would actually be transmitted and how it
would be displayed on a terminal emulation program that was expecting ASCII characters.
COMMAND
1 Binary Byte
2 Hex Bytes
3 Decimal Bytes
BYTE(S) TRANSMITTED
6Ah
36h, 41h
31h, 30h, 36h
AS-DISPLAYED
j
6A
106
Transmit Variable ## As ASCII Bytes Without Leading Zeros
This is similar to the previous command, but leading zeros are omitted. Here's how the variable
values would be transmitted:
A variable value of 145:
A variable value of 31:
A variable value of 4:
A variable value of 0:
145
31
4
0
Transmit Timer ## As 4 Binary Bytes
Transmits the value of timer number ## as 4 binary bytes. The byte order is:
-
Centiseconds (hundredths of a second)
Seconds
Minutes
Hours
This command is most appropriate for transmitting data to a program that can receive the full range
of values from 0 to 255. If you simply want to display data using a terminal emulation program, you
should use the following command instead.
Transmit Timer ## As 8 Hex Bytes
Transmits the value of timer number ## as 8 hex bytes. Each of the four time values is transmitted
as two bytes in hex/ASCII format. The value order is:
-
Centiseconds (hundredths of a second)
Seconds
Minutes
Hours
Clear Transmit Checksum Value
Put Transmit Checksum Value Into Result Value
These two commands allow calculating a checksum value on data transmitted out a serial port.
These may be useful if you need HomeVision to communicate with external devices that require a
checksum. HomeVision automatically calculates a running checksum on all data you send out a
serial port using one of the serial port commands. If you need to calculate a checksum on the data
you transmit, you would first use the “Clear Transmit Checksum Value” prior to starting the
transmission. This resets the checksum value to zero. You would then transmit the data that must
be checksummed. The controller will automatically calculate a running checksum on the data. After
you’ve finished transmitting the data, use the “Put Transmit Checksum Value Into Result Value”
command. As the name implies, this will put the value of the checksum into the system variable
“Result Value”. You can then use a variable command to put Result Value into one of your own
186
Chapter 16
Serial Interface
variables, at which point you can do anything you like with it. Most commonly, you would transmit
this value either as a single binary character or two hex characters.
Note several things about the checksum process:
•
•
•
The controller maintains a single checksum value – there is not one for each serial port.
Therefore, you must send all the data for a port and obtain its checksum before you transmit
out another port. You don’t have to worry about HomeVision automatically transmitting data
out a serial port, as they won’t be added to the checksum.
The checksum is an 8-bit value, and is therefore limited to the range of 0 to 255. If the sum
exceeds 255, only the lower 8 bits are kept. In effect, the total sum is divided by 256, and
the remainder is the checksum.
The checksum is calculated by summing the raw binary values of the transmitted data. For
example, the capital letter “A” has a value of 65, and the number “1” has a value of 49. See
Appendix B for a table of the values of the standard ASCII characters.
As an example, assume you transmit “ABC123”, followed by a carriage return and line feed. Here
are the values that will be summed up:
A = 65 decimal (41 hex)
B = 66 decimal (42 hex)
C = 67 decimal (43 hex)
1 = 49 decimal (31 hex)
2 = 50 decimal (32 hex)
3 = 51 decimal (33 hex)
CR = 13 decimal (0D hex)
LF = 10 decimal (0A hex)
The total sum is 371 decimal (173 hex). The checksum value is 115 decimal (73 hex). Thus, the
“Put Transmit Checksum Value Into Result Value” command will put the value of 115 into Result
Value.
Serial Receive Commands
These commands are used to read serial data from external devices.
Put Number Of Characters Received Into Result Value
This command determines the number of serial characters received and puts the value into the
system variable "Result Value". You can then use a variable command to move Result Value into a
regular variable that you created. From there, you can do anything with it you like.
Put Value Of Received Character # Into Result Value
Put Value Of 2 Received Characters ## Into Result Value
Put Value Of 3 Received Characters ### Into Result Value
These three commands look at the specified location(s) in the serial data string, convert it to a
number, and put it into the system variable "Result Value". After the value is put in "Result Value",
you can use variable commands to move it to a variable and perform other operations on it.
If the specified locations are not valid numbers, Result Value will be set equal to 255 to indicate an
error. The difference between these commands is how many characters are used to determine the
value:
-
The first command looks at a single character that must be a number between 0 and 9.
-
The second command looks at two consecutive characters, both of which must be a number
between 0 and 9.
Chapter 16
-
Serial Interface
187
The third command looks at three consecutive characters, all of which must be a number
between 0 and 9.
EXAMPLES:
1) If the received data string is:
149
The following command sets Result Value equal to 1:
Put Value Of Received Character 1 Into Result Value
The following command sets Result Value equal to 4:
Put Value Of Received Character 2 Into Result Value
The following command sets Result Value equal to 14:
Put Value Of 2 Received Characters 1-2 Into Result Value
The following command sets Result Value equal to 149:
Put Value Of 3 Received Characters 1-3 Into Result Value
2) If the received data string is:
Current Temperature is 85
The following command sets Result Value equal to 85:
Put Value Of 2 Received Characters 24-25 Into Result Value
The following command sets Result Value equal to 255 to indicate an error condition (because
character #23 is not a valid number):
Put Value Of 2 Received Characters 23-24 Into Result Value
Put Value Of Received Hex Character # Into Result Value
Put Value Of 2 Received Hex Characters ## Into Result Value
These two commands look for a hex value at the specified location(s) in the serial data string,
convert it to a number, and put it into the system variable "Result Value". After the value is put in
"Result Value", you can use variable commands to move it to a variable and perform other
operations on it.
If the specified locations are not valid numbers, Result Value will be set equal to 255 to indicate an
error. The difference between these commands is how many characters are used to determine the
value:
-
The first command looks at a single character that must be a number between 0 and 9, a
letter between a and f, or a letter between A and F. The result will be a value between 0 and
15.
188
Chapter 16
-
Put
Put
Put
Put
Put
Value
Value
Value
Value
Value
Serial Interface
The second command looks at two consecutive characters, both of which must be a number
between 0 and 9, a letter between a and f, or a letter between A and F. The result will be a
value between 0 and 255.
Of
Of
Of
Of
Of
Received Hex Character At Variable # Into Result Value
2 Received Hex Characters At Variable # Into Result Value
Received Character At Variable # Into Result Value
2 Received Characters At Variable # Into Result Value
3 Received Characters At Variable # Into Result Value
These five commands are similar to the five previous commands. The difference is that instead of
specifying a fixed character location in the serial message, you specify a variable. When the
command runs, it will use the variable’s value as the character location to start reading from.
Put Binary Value Of Received Character # Into Result Value
This command takes the character at the specified location in the serial data string and puts it into
the system variable "Result Value". This command uses the binary value of the character. Refer to
Appendix B of the User's Manual to convert between binary and ASCII values. Here are some
examples:
RECEIVED CHARACTER
VALUE PUT IN VARIABLE
A
B
a
2
#
Carriage return
65
66
97
50
35
13
Clear Serial Input Buffer
This command clears all incoming serial data from the buffer. Any message or command coming in
will be lost. This includes both "User Data" and "Command Data". You will normally never need to
use this command. However, in rare cases it may be beneficial to clear all incoming data before
sending serial commands to certain types of devices, so this command is provided.
WARNING: Do not use this command unless you fully understand its effects.
Copy XX characters of text, starting at character YY, into text storage buffer
starting at location ZZ
This command copies some or all of the received serial data into the "text storage buffer". It has
three parameters:
•
•
•
“XX” is the number of serial input characters to copy. It can range
from 1 up to the length of the received serial message.
“YY” is the character location in the received serial message to
start copying from.
“ZZ” is the location in the text storage buffer to start copying the
text to.
If you try to copy characters past the end of the serial message, blank spaces will be copied for
these. If you write past the end of the text storage buffer (location 256), it will wrap around and write
to the start of the buffer. Refer to the video chapter for details on how the text storage buffer works.
Chapter 16
Serial Interface
189
Serial Conditions
The following serial conditions can be checked by an If-Then or If-Then-Else statement. They are used
when reading data from external devices.
If Exactly ## Serial Characters Are Received
If >= ## Serial Characters Are Received
If <= ## Serial Characters Are Received
These three conditions compare the number of characters received (i.e., the serial string length) to
the value ##. Use one of these when you need to know that the string was a certain length.
If Serial Input Character Numbers X - Y are 'ZZZZZZZZ'
This condition is used to compare the input string or a portion of it to certain characters. The symbol
meanings are:
-
X refers to the location in the string of the first character to compare (i.e., the character
number).
-
Y refers to the location in the string of the last character to compare.
-
ZZZZZZZZ are the characters to compare the received data to. The number of characters in
ZZZZZZZZ must equal the number in the received data specified by X and Y. See the
examples for more information.
The condition is true if all characters match exactly, false is any do not match.
EXAMPLES:
1) To see if the received data string is:
Alarm Armed
enter this:
If
Serial Input Character Numbers 1 - 11 are 'Alarm Armed'
Then
{Do whatever you want here}
End If
2) To see if the received data string is:
Q
enter this:
If
Serial Input Character Numbers 1 - 1 are 'Q'
Then
{Do whatever you want here}
End If
3) To see if the received data string contains the letters:
190
Chapter 16
Serial Interface
OK
as the third and fourth characters, enter this:
If
Serial Input Character Numbers 3 - 4 are 'OK'
Then
{Do whatever you want here}
End If
4) Assume you're reading a thermostat that reports the current temperature in the following format:
Temperature is 85 degrees
You may want to check that all the expected text is received properly. However, you wouldn't
want to include the number 85 in the check, as it could be a different number each time. Here's
how to do this:
If
Serial Input Character Numbers 1 - 15 are 'Temperature is '
AND Serial Input Character Numbers 18 - 25 are ' degrees'
Then
{Do whatever you want here}
{You can even read the temperature into a variable}
End If
If No Serial Input Data Being Received
This condition is true if no "User Data" is currently being received. It's false if "User Data" is either
"In Process" or "Complete" (conditions which are described below).
Note that this condition only refers to receiving "User Data". When "Command Data" is being
received, this condition is true.
If Serial Input Data In Process
This condition is true if "User Data" is currently being received but is not yet complete.
Note that this condition only refers to receiving "User Data". When "Command Data" is being
received, this condition is false.
If Serial Input Data Complete
This condition is true if the "User Data" input is complete. It's complete when either:
1) The 50 millisecond gap between consecutive characters is exceeded, or
2) 254 characters are received.
This condition becomes false when the controller finishes the "Serial Data Input" event actions you
defined.
Note that this condition only refers to receiving "User Data". When "Command Data" is being
received, this condition is false.
Serial Commands To Control Computer
Chapter 16
Serial Interface
191
You can send commands to a computer running the HomeVision software to:
•
•
•
•
•
•
•
Play a WAV file (a sound file)
Start another program
Send keystrokes to a program
Write specific data to a text file
Write (log) all serial data to a daily log file
Send data to another serial port on the computer
Send messages to the computer for display
You send these as serial commands, where the ASCII text you send has special meanings to the
HomeVision software. The HomeVision application then performs the specified tasks. These are detailed in
the following sections.
Playing Wave (WAV) Files
You can play a wave sound file on your computer upon command from the controller. This requires that the
controller be connected to the computer's serial port and that the HomeVision software be running on the
computer.
To command a wave file to be played, enter a serial interface command in your schedule to transmit the
following ASCII text:
Play wav file filename.wav
Replace "filename.wav" with the complete name of the wave file, including the ".wav" extension.
example, to play the wave file "chimes.wav", send this ASCII text:
For
Play wav file chimes.wav
To help test playing wave files, use the "Serial Command Test" screen located under the "Other" menu. In
the text box, enter the ASCII command exactly as you would send it over the serial interface, and then click
the "Try It" button. The HomeVision software will then run just as if it had received that ASCII command over
the serial interface. If the command is entered properly and the wave file exists, the wav file will play.
Notes
•
•
•
•
•
•
To play wave files, you must have a sound card installed.
The sound card's volume level must be set properly in order to hear the wave file.
The serial commands are not case sensitive.
The wave files must be located in the same directory as the HomeVision application.
If you command a wave file while another is still playing, the one playing will be aborted and the new
one will start.
Status of the wave file will be shown on the bottom of the main software screen.
Running Other Computer Programs
You can run other programs on your computer upon command from the controller. This requires that the
controller be connected to the computer's serial port and that the HomeVision application be running on the
computer.
To command a program to run, enter a serial interface command in your schedule to transmit the following
ASCII text:
Run program filename.exe
192
Chapter 16
Serial Interface
Replace "filename.exe" with the complete name of the program (or a file), including the extension. The
extension would usually be ".exe", but could be ".com" or ".bat". It could also be the extension of a
document (such as ".doc" for a Microsoft Word document). For example, to run the Windows program
NotePad, send this ASCII text:
Run program notepad.exe
For this to work, the file to run must be located in the same directory as the HomeVision application, or the
file's path must be specified in your computer's path (usually in the Autoexec.bat file).
You can also include a path or command line arguments by enclosing them in double quotes. In this
example, Microsoft Excel is located in the directory "excel" within the directory "msoffice" on drive C:
Run program "c:\msoffice\excel\excel"
To help test running external programs, use the "Serial Command Test" screen located under the "Other"
menu. In the text box, enter the ASCII command exactly as you would send it over the serial interface, and
then click the "Try It" button. The HomeVision software will then run just as if it had received that ASCII
command over the serial interface. If the command is entered properly and the program exists, the program
will run.
Notes
•
•
The serial commands are not case sensitive.
Status of the program execution will be shown on the bottom of the main software screen.
Sending Keystrokes To Other Programs On A PC
You can run other programs on your computer upon command from the controller, as described above. You
can also send keystrokes to those applications. This requires that the controller be connected to the
computer's serial port and that the HomeVision application be running on the computer.
Activating The Desired Application Window
When the controller sends keystrokes to a program, the keystrokes will go to the active window. Therefore,
you need to make sure the desired application window is active before sending them. If you use the "Run
program" command discussed above, that program will be active.
You can make the desired window active at any time by sending an "Activate window" command. This is
done by entering a serial interface command in your schedule to transmit the following ASCII text:
Activate window "window title"
Replace "window title" with the window's title. The title is shown in the title bar at the top of the application
window you want to activate. If no window has a title that matches this, a window with a title that begins with
the same text will be activated. If no window begins with the same text, the command will not be performed.
For example, assume the NotePad application is open, but not the active (topmost) window. To activate it,
send a serial interface command from your schedule that transmits the following ASCII text:
Activate window "NotePad"
The NotePad window is usually titled "Notepad - (filename)". Since the first seven letters match those in the
command (upper/lower case doesn't matter), the window is activated. If you had several Notepad windows
open, one would arbitrarily be chosen.
Sending Keystrokes
Chapter 16
Serial Interface
193
To send keystrokes to the active window, enter a serial interface command in your schedule to transmit the
following ASCII text:
Send keys "keystrokes"
Replace "keystrokes" with the desired keystrokes. The keys will be sent just as if you typed them by hand.
Note that the double quotes (") are not sent; they are only used to indicate the beginning and end points. For
example, to send "Hello", enter a serial interface command in your schedule to transmit the following ASCII
text:
Send keys "Hello"
The format for entering keystrokes is described below. Note that it is not possible to send double quotes (").
•
To send the standard keys (letters, numbers, punctuation marks), simply enter the desired
character(s).
•
The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meaning. To
specify one of these characters, enclose it in braces. For example, to specify the plus sign, use {+}.
Brackets ([]) have no special meaning, but must be enclosed in braces as well. To send brace
characters, use {{} and {}}.
•
To specify characters that aren't displayed when you press a key (such as ENTER or TAB) and keys
that represent actions rather than characters, use the codes shown below:
KEY
BACKSPACE
BREAK
CAPS LOCK
DEL
DOWN ARROW
END
ENTER
ESC
HELP
HOME
INS
LEFT ARROW
NUM LOCK
PAGE DOWN
PAGE UP
PRINT SCREEN
RIGHT ARROW
SCROLL LOCK
•
CODE
{BACKSPACE}, {BS},
or {BKSP}
{BREAK}
{CAPSLOCK}
{DELETE} or {DEL}
{DOWN}
{END}
{ENTER}
{ESC}
{HELP}
{HOME}
{INSERT}
{LEFT}
{NUMLOCK}
{PGDN}
{PGUP}
{PRTSC}
{RIGHT}
{SCROLLLOCK}
KEY
CODE
TAB
{TAB}
UP ARROW
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
F13
F14
F15
F16
{UP}
{F1}
{F2}
{F3}
{F4}
{F5}
{F6}
{F7}
{F8}
{F9}
{F10}
{F11}
{F12}
{F13}
{F14}
{F15}
{F16}
To specify keys combined with any combination of the SHIFT, CTRL, and ALT keys, precede the
regular key code with one or more of the following codes:
KEY
CODE
SHIFT
CTRL (CONTROL)
ALT
+
^
%
194
Chapter 16
Serial Interface
•
To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other
keys are pressed, enclose the code for those keys in parentheses. For example, to specify to hold
down SHIFT while E and C are pressed, use "+(EC)". To specify to hold down SHIFT while E is
pressed, followed by C without the SHIFT, use "+EC".
•
To specify repeating keys, use the form {key number}. You must place a space between key and
number. For example, {RIGHT 20} means press the RIGHT ARROW key 20 times.
Example
As an example, use the "Serial Command Test" screen located under the "Other" menu. From the dropdown
list, select and run:
Run program notepad.exe
The NotePad application should run and it's main will window appear (it's now the active window). Click
back on the HomeVision application to activate it, then select and run:
Activate window "NotePad"
This should bring the NotePad window to the front. Click back on HomeVision. It's difficult to demonstrate
sending keystrokes here because you have to activate HomeVision to enter the command, so the keystrokes
will be sent to HomeVision instead of NotePad. However, we can get around this by entering two commands
in one. Type in the text box and run it:
Activate window "NotePad"
send keys "Hello{ENTER}%fp"
The first command will activate NotePad. The keystrokes will enter "Hello" followed by a carriage return.
The percent sign (%) is the ALT key, which selects the menu, and the letters "fp" select the FILE menu, then
the PRINT command. This should print the file.
Writing To Text Files
You can write text to a file on your PCupon command from the controller. This requires that the controller be
connected to the PC's serial port and that the HomeVision application be running on the PC.
Writing Text
To write a line of text to a file, enter a serial interface command in your schedule to transmit the following
ASCII text:
Write to file filename.txt "TEXT TO WRITE"
Replace filename.txt with the complete name of the desired file, including the extension (which must be .txt).
Replace "TEXT TO WRITE" with the desired text. For example, to write "Security system armed" to the file
log.txt, send this ASCII text:
Write to file log.txt "Security system armed"
To write a blank line, send this ASCII text:
Write to file log.txt ""
You can also write to a file with a .htm extension (which can be read be a web browser) like this:
Write to file filename.htm "TEXT TO WRITE"
Clearing A Text File
Chapter 16
Serial Interface
195
You can also clear (erase) a text file. To do this, enter a serial interface command in your schedule to
transmit the following ASCII text:
Clear text file filename.txt
Replace filename.txt with the complete name of the desired file, including the extension (which must be .txt
or .htm). For example, to clear the file log.txt, send this ASCII text:
Clear text file log.txt
To clear the file webpage.htm, send this text:
Clear text file webpage.htm
Notes
•
•
•
•
•
•
You must place the desired text between the double quotes, but the quotes will not be written to the
file. There is no way to write double quotes (") to the file.
The serial commands are not case sensitive. However, the text to write (the text between the double
quotes) will be written in whatever case you enter.
If the specified file does not exist, it will be created. This is true for both the writing and clearing
commands.
If the specified file is already opened when the software tries to write to it, the text will not be written.
A carriage return is automatically added to the end of each line. Therefore, each ASCII command
starts writing at the beginning of a new line.
Status of the file writing will be shown on the bottom of the main software screen.
Automatically Logging Serial Data To A Text File
The PC software can automatically write all the serial data it receives from the controller to a text file. This
requires that the controller be connected to the computer's serial port and that the HomeVision application be
running on the computer. The controller reports a variety of information over the serial interface that can be
useful for debugging. You can view the data using the "Terminal Emulator" screen. In some cases,
however, it may be more useful to write it to a text file for later viewing. Any word processor program can
view it.
Logging is controlled using the status bar at the bottom of the main software screen. It indicates whether the
logging feature is turned on or off by displaying "Logging On" or "Logging Off". There is also a button that
turns it on and off. When on, any received serial data is written to a log file.
The software creates a new log file each day.
convention:
The file is automatically named using the following
yymmdd.log
where: yy = the last two digits of the year (00 to 99)
mm = two digits for the month (01 - 12)
dd = two digits for the date (01-31)
The software can also automatically turn the logging feature on each time it starts up. This option is set from
the "Preferences" screen under the "Configure" menu. Check the box "On startup, begin logging serial data
to file". This is useful if you have the HomeVision software set to start up each time your computer starts,
and you want to have logging start automatically also. Then, after a power failure, it can resume logging.
Notes
196
Chapter 16
•
•
•
Serial Interface
If the specified file is already opened when the software tries to write to it, the text will not be written.
Therefore, you should turn the logging off when you want to view today's log file.
To reduce the number of times the hard disk is written to, the software holds the received data in a
buffer. The data is written to the log when the buffer reaches 400 characters. When you turn
logging off, any unwritten data will be written. For this reason, if you view the active log file while
logging is still turned on, the log may not contain the latest data. Also, if the computer shuts off or
the program terminates unexpectedly, the last serial data may not be written to the log.
Most serial messages from the controller end with an unprintable character (a value of 1). You will
usually see these in the file as a (square) at the start of the following line.
Sending Data To Other Serial Ports On A PC
The controller can send data to the PC via the serial interface, and have the data forwarded to another serial
port (called the "user" comm port). This requires that the controller be connected to the computer's serial
port and that the HomeVision application be running on the computer.
To perform this function, there are commands to:
•
•
•
Open a comm port.
Send data to the currently-opened comm port.
Close the currently-opened comm port.
Before sending the text, you must open the desired serial comm port on the PC (note that you cannot open
the port that the controller is currently connected to). To do this, enter a serial interface command in your
schedule to transmit the following ASCII text:
Open comm port "port,baud,parity,data bits,stop bits,handshaking"
where the settings are as follows:
port
baud
Parity
data bits
stop bits
handshaking
=
=
=
=
=
=
Comm port to open (1, 2, 3, etc.)
Valid values are 110, 300, 600, 1200, 2400, 9600, 14400, 19200
N (no parity), E (even parity), O (odd parity), M (mark), S (space)
Number of data bits. Valid values are 4, 5, 6, 7, and 8
Number of stop bits. Valid values are 1 and 2
0 (none), 1 (Xon/Xoff), 2 (RTS/CTS), 3 (both Xon/Xoff and RTS/CTS)
Note that there cannot be any spaces between the values, as shown in this example of a common setting:
Open comm port "2,9600,N,8,1,2"
After the comm port is open, you can send data to it by entering a serial interface command in your schedule
to transmit the following ASCII text:
To comm port "DATA TO SEND"
Replace "DATA TO SEND" with the desired data. The HomeVision software will append a carriage return
and line feed at the end. As an example, to send "Arm alarm" to the currently opened comm port, send this
ASCII text:
To comm port "Arm alarm"
After sending the data, you should close the comm port by entering a serial interface command in your
schedule to transmit the following ASCII text:
Close comm port
The complete process is shown in this example showing the serial text that should be sent to the PC:
Chapter 16
Serial Interface
197
Open comm port "2,19200,N,8,1,2"
To comm port "Arm alarm"
Close comm port
Notes
•
•
•
•
•
•
•
If you try to send data without opening a comm port first, or you close a comm port that wasn't
opened, an error will occur. This will be shown on the message bar on the main software screen,
but will not affect any other operations. Once you open a comm port, it will work properly.
You will also get an error if you try to open the comm port that the controller is connected to (as
shown at the bottom right of the main software screen).
To send data, you must place the desired data between the double quotes, but the quotes will not be
sent. There is no way to send double quotes (").
The HomeVision software will automatically append a carriage return and line feed at the end of
each "To comm port" command.
The serial commands are not case sensitive. However, the data to send (the text between the
double quotes) will be sent in whatever case you enter.
The status bar on the bottom of the main software screen will show the status of commands
associated with the user comm port.
While the user comm port is open, any data received by it will automatically transmitted to the
controller. Thus, the port provides two-way communications with the controller. This is further
detailed in the section "Receiving Data from Other Serial Ports on a PC".
The software screen "Serial Command Test" (located under the "Other" menu) can help you test this
function. In the text box, enter the ASCII command exactly as you would send it over the serial interface,
and then click the "Try It" button. The HomeVision software will then run just as if it had received that ASCII
command over the serial interface.
Receiving Data From Other Serial Ports On A PC
As discussed above, the controller can send data to the PC via the serial interface, and have the data
forwarded to another serial port. This requires that the controller first send a serial command to the PC to
open the desired serial port (as described above). While this port (called the "user" comm port) is open, any
data received by it will also automatically transmitted to the controller. Thus, the controller has two-way
communications capability with both the HomeVision software on the PC and the user comm port.
Sending Messages To The PC For Display
The controller can send text messages to the PC for display in a message window. The window will show
the message, along with its date and time (based on the computer's clock). This can assist in debugging
your schedule, and for alerting the computer user to important events. This requires that the controller be
connected to the computer's serial port and that the HomeVision application be running on the computer.
The message window is accessed with the "View Messages" command under the "Other" menu. In addition,
the first time the PC receives a message from the controller, it will open this window automatically.
To send a message to the PC, enter a serial interface command in your schedule to transmit the following
ASCII text:
Display message "TEXT TO WRITE"
Replace "TEXT TO WRITE" with the desired text. For example, to display the message "Security system
armed", send this ASCII text:
Display message "Security system armed"
198
Chapter 16
Serial Interface
Notes
•
•
You must place the desired text between the double quotes, but the quotes will not be displayed.
There is no way to display double quotes (").
The serial commands are not case sensitive. However, the text to write (the text between the double
quotes) will be written in whatever case you enter.
The software screen "Serial Command Test" (located under the "Other" menu) can help you test sending
messages. In the text box, enter the ASCII command exactly as you would send it over the serial interface,
and then click the "Try It" button. The software will run just as if it had received that ASCII command over
the serial interface. If the command is entered properly, the text will be displayed in the message window.
HV Desktop Control Program
A small software program was created that provides another way to control your home. This program allows
icons on your computer desktop to send a command to HomeVision. For example, one icon might turn on a
light, another might lower your thermostat setpoint by one degree, another might trigger a macro, etc. This
program is called “HV Desktop” and is automatically installed in the same directory you installed
HomeVision. Here’s how it works.
In order for this to function, the regular HomeVision application must be running on the PC and be connected
to the HomeVision controller. You can then create “shortcuts” on your desktop that run the “HV Desktop”
program. Each shortcut must contain a “command line” parameter that specifies an ASCII serial message to
send to HomeVision. When this shortcut is run, the “HV Desktop” program will run (but will be invisible), will
send a Windows message to the HomeVision application, and will then shut down. The message tells the
HomeVision application to send the serial message to the HomeVision controller, which it does (after adding
a carriage return to the end). The controller then executes the command. The HomeVision application will
display a message at the bottom of the main screen indicating that it transmitted the serial data. The
message will say "Received command: TO HV:XXXX", where XXXX is the transmitted data. If the
HomeVision application is not running, an error message will be displayed.
Here’s how to create a shortcut that can send a command:
•
•
•
•
•
Use the Windows Explorer to create a shortcut to the HV Desktop application.
Give the shortcut a meaningful name (“Porch light on”, “TV Off”, etc.).
Place the shortcut on your desktop (or anywhere else, such as the “Start” menu).
Right-click the shortcut icon and select “Properties” from the pop-up menu.
The shortcut “target” field will show the path to the HV Desktop application. At the end of this (after
any quotation marks that may be present), enter:
\S?????
{note: there should be a space before this}
Replace “?????” by the serial message to send to HomeVision. For example, to send the X-10
command A-1 FORCE ON, enter this:
\S,X0001
The “\S” tells HV Desktop that this is a command line parameter containing a serial message, and
the “,X0001” is the serial data (the serial format is discussed below).
•
Click OK.
In order to use this program, you will need to determine what serial message to send to perform your
command. Refer to the “Serial” file installed in the HomeVision directory for full details on the serial protocol.
Following are examples of commonly used commands:
Macro Commands:
Chapter 16
,O0300
,O1000
Serial Interface
199
(Run macro 3)
(Run macro 16d (10h))
Output Port Commands:
,30001
,30100
,30700
(Set output port 0 high)
(Set output port 1 low)
(Set output port 7 low)
Infrared Commands:
,;0500
,;1400
,<1407
(Transmit IR signal 5)
(Transmit IR signal 20 (14h))
(Transmit IR signal 20 (14h) 7 times)
X-10 Commands:
X-10 commands use two characters to indicate the module address (device and house code).
The following table shows these characters for each address:
HOUSE CODE
U
N
I
T
C
O
D
E
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
A
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
B
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
C
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
D
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
E
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
F
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
G
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
H
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
I
80
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
J
90
91
92
93
94
95
96
97
98
99
9A
9B
9C
9D
9E
9F
K
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
AA
AB
AC
AD
AE
AF
L
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
BC
BD
BE
BF
M
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
N
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB
DC
DD
DE
DF
O
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EE
EF
X-10 commands follow one of these two general formats:
,Xaabb
or
,Paabbcc
Where aa is the address, bb is the command, cc is the data (for some commands)
Here are some examples:
,X0001
,X0003
,X0106
,X0F0C
,P301109
,P001604
,PF01606
,P521D20
,P532112
(A1 - Force On)
(A1 - Force Off)
(A2 - Force Dim)
(A16 - Force Brighten)
(D1 - Set To Level 9)
(A - All Lights On)
(P - Brighten)
(F3 - Preset Dim To Level 32 (20 hex))
(F4 - Set PCS Light To Level 18 (12 hex))
Serial Port Forwarding
P
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF
200
Chapter 16
Serial Interface
If you have a HomeVision add-on serial port, HomeVision can automatically take data received from one
serial port and transmit it out one or more of the other ports. To enable this “port forwarding”, open the
Controller Settings screen under the Configure menu and select the “Serial” tab. You can then select which
port(s) should be forwarded to which other port(s). Note that you can select either or both directions for
forwarding. For example, you can forward data received from port 2 out port 1, but you don’t have to forward
data received from port 1 out port 2 (although you can). There are several important things to note about
how this feature works:
•
•
•
•
Data is forwarded to the destination port(s) after the received message is “terminated” (not as each
character is received). This normally is when a carriage return is received, although it can occur
after a designated timeout.
“Line feeds” received from a port will normally not be forwarded to another port (“carriage returns”
will be forwarded).
The built-in HomeVision serial port supports a serial command protocol for sending serial commands
to HomeVision (detailed in separate documentation). This protocol uses commands that start with a
comma character (i.e. “,”). Messages received on this serial port that start with a comma will not be
forwarded to another port.
Serial messages received while the controller is halted will not be forwarded to another port. Since
the controller is halted during a schedule download, no forwarding will occur during a schedule
download (so the messages won’t affect any devices attached to a serial port).
Chapter 17
Macros
201
CHAPTER 17: MACROS
Introduction
A macro is a set of conditions and actions. Macros are useful when you want to perform the same set of
actions/conditions at several different places in your schedule. Instead of repeating the actions/conditions
each place, you can enter them into a macro. Then wherever you want to perform the actions, you enter a
command to perform the macro.
Macros provide the following features and capabilities:
•
Can hold an unlimited number of conditions and actions.
•
Can be run with a single command in a schedule.
•
Can be run upon command from the PC software’s macro control screen.
•
Can be run upon command over the serial interface.
•
Can be viewed and run from the video screen system.
•
Can call other macros.
•
Can be of unlimited length.
•
255 macros are available for use.
Entering Macro Actions
You enter the actions and conditions for a macro as follows:
•
Open the “Macro” screen under the “Objects/Events” menu.
•
Double-click on the “Actions Defined” field of the macro you want. The actions entry screen will
appear.
•
Enter the actions and conditions, then click “OK”. You’ll return to the macro summary screen.
•
Enable the actions by checking the “Actions Enabled” field. The actions are automatically enabled
after you enter them, but you’re free to enable or disable them at any time.
•
Load the new schedule into the controller.
Macro Commands
The following macro commands can be included in a schedule. They can also be issued to the controller
over the serial interface. The format for sending commands over the serial interface is described in a text file
installed in the application directory.
These commands are entered in your schedule from the actions entry screen by clicking the appropriate
toolbar button. The command and selected macro are chosen from the pull-down list.
202
Chapter 17
Macros
Do Macro ##
This command performs the specified macro one time.
Run Macro At Variable ## Once
This command uses the value of variable number ## as the ID number of the macro to run. If the
value is not a valid macro number, the command is skipped.
Enable Macro ##
This command enables the specified macro. A macro must be enabled before it can be used.
Disable Macro ##
This command disables the specified macro. A macro must be enabled before it can be used. A
command to run a disabled macro will be ignored.
Macro Conditions
There are no macro conditions that can be checked by an If-Then or If-Then-Else statement.
Power Failure Options
Macros events do not have a “Power Fail State” that can be automatically set after a power failure.
Chapter 18
Caller ID
203
CHAPTER 18: CALLER ID
Introduction
The controller contains a caller ID TV display screen that can display the name and phone number of the
caller. It uses three lines on the screen, as in this example:
Phone call from:
John Doe
407-555-1234
This feature requires leaving the controller connected to your computer. There are three different ways to get
the caller ID information into the controller:
1) A special caller ID device is connected to another PC serial port, and the HomeVision software is
running on the PC. HomeVision currently works with the Call Editor RSA from Flashline (formerly
Vive Synergies), and the PC Caller ID Plug from ITU Technologies. Users have reported that other
caller ID devices work with HomeVision as well, although we have not tested these ourselves.
2) Another software program is running on the PC that can get the caller ID data from an internal
modem. Several software companies are developing products to perform this function.
3) With the HomeVision-Phone/CID add-on device. Unlike the two above methods, this device works
without a PC being connected. This device also adds phone control capabilities. To use this device
for caller ID, refer to the instructions provided with it.
Each method requires caller ID service from your phone company that provides both the number and name
of incoming callers. If your service only provides the phone number, the controller will not be able to display
the caller's name.
Caller ID Setup For Call Editor RSA
When a call is received, the Call Editor RSA routes the caller ID information to the PC. If the HomeVision
application is running, it will read the information from the Call Editor. The application then formats the data
for display on the caller ID TV screen and sends it to the controller. The controller then executes a macro
that you wrote. This macro will display the caller ID screen. Once displayed, you can shut the display off
with your infrared remote. Pressing any of the 16 standard buttons (the same ones that control the video
screen system) will shut the display off.
Here's how to configure the controller for caller ID using the Call Editor RSA:
1) Install the Call Editor according to the manufacturer's instructions. However, you do not need to
connect a phone if you do not wish. The required Call Editor connections are:
-
Power input
Telephone line input
Serial connection to your computer
2) Add a new macro using the macro summary screen (you may want to name it "Handle Phone Call"
or something similar). This macro will be run automatically whenever a call is received. It must
contain one of the following two commands:
Display Caller ID Screen On Solid Background
or
204
Chapter 18 Caller ID
Display Caller ID Screen On External Video
These are the commands that actually start the controller's video system and display the caller ID
information. The first command displays the information on a solid background, while the second
command overlays it onto any incoming video.
You may want to include other commands in this macro. For example, if the controller's video output
is connected to your TV's A/V input 1, you could transmit the infrared signals necessary to switch to
that input. Otherwise, the controller would be sending out the video data, but your TV might not be
displaying it.
You could also include commands to mute your TV or stereo, flash a light, or take any number of
other actions.
You may also want to have the macro automatically turn the display off after a certain amount of
time. For example, these commands will shut it off after 15 seconds:
Wait 00:00:15.00 with timer #0 (Caller ID Timer), Then:
Stop Video Mode
End Wait
3) Open the caller ID configuration screen under the "Configure" menu:
A) Select "PC + Call Editor RSA" in the "Caller ID Configuration" option box.
B) Select the serial port the Call Editor is connected to.
C) Select the macro that you want to run when a call is received.
4) Load your schedule.
5) Start the HomeVision application and open your schedule. Your schedule must be opened so that
the software will configure the PC’s serial port to receive the caller ID information.
Caller ID Setup For ITU Technologies Device
The PC Caller ID Plug from ITU Technologies can also be used with HomeVision. Setup is the same as with
the Call Editor RSA, except that you much select the "PC + ITU Device" option box on the Caller ID
Configuration screen. Other caller ID devices may work with HomeVision when configured this same way,
but we haven’t tested them. For example, several users have reported that the popular Rochelle device
"ANI-232" works with HomeVision.
Caller ID Setup For Other Software Programs
Here's how to configure the controller for caller ID if you're using another program to get the caller ID info:
1) Add a new macro using the macro summary screen that will be run automatically whenever a call is
received. See the discussion in the "Caller ID Setup for Call Editor RSA" section above for details.
2) Open the caller ID configuration screen under the "Configure" menu:
A) Select "PC + Other S/W" in the "Caller ID Configuration" option box.
B) Select the macro that you want to run when a call is received.
3) Load your schedule.
Chapter 18
Caller ID
205
4) Configure the other software package as described in its documentation.
NOTE: Some programs may not run the caller ID macro entered in step 1. Instead, they may write the caller
ID information directly to the TV screen. In this case, you do not need to set up the controller as described
here.
Caller ID Phone Number Display Format
Use the Caller ID Configuration screen to select the phone number display format. The default method is to
format it for the United States standard with the area code in parenthesis, like this:
(407) 555-1234
Such formatting does not work properly for international users, as the number of digits and the spacing
between them differ widely. For international use, you can display the phone number exactly as it is
received, eliminating the formatting problems.
Caller ID Log
All calls will be logged to a text file on the hard disk. The file will be located in the same directory as the
HomeVision application. The file name is "cid_log.txt", and will look something like this:
Began Waiting for Call: 7/31/97 11:12:57 PM
9/31/97 at 10:22:12 PM: 555-726-8864
Custom Solutions
9/31/97 at 11:13:16 PM: 555-234-4444
Johnson, Bill
Caller ID Name Lookup
If you are getting the caller ID information from the PC, HomeVision can do a caller ID name "lookup". When
a call is received, HomeVision will look in a special file for the caller's phone number. If it finds it, it will use
the name you've associated with it, instead of the name provided over the phone line. This is useful when
your caller ID service only sends you the caller's number, as you can associate a name with it. When using
HomeVision-Phone/CID to get the caller ID information, this feature is not available.
To use this feature, create a text file named "cid_name.txt" and put it in the same directory as the
HomeVision program. Edit the file to include the number and name of potential callers in this format:
555-726-8864 = Custom Solutions
555-973-6547 = Jane's parents
555-345-2388 = Bill's parents
If you selected the option to display the phone number exactly as it is received, enter the phone number here
exactly as it is received and displayed by HomeVision. Note that after creating or making changes to
this file, you must restart the HomeVision software. You can also use the following wildcard symbols in
the phone number field:
?
*
(Any single character)
(Zero or more characters)
For example, to match any call from a number starting with 321-555, use 321-555-???? or 321-555*. To
match any call from area code 321, use 321*. Note that you should put these general numbers at the end of
the file, so they don’t take precedence over more specific numbers. The software looks through the file for
206
Chapter 18 Caller ID
the first matching number, so the more general numbers need to go last. For example, the “CID_Name.txt”
file could look like this:
321-555-1234 = John’s parents
321-555-5678 = Amy’s parents
321-555-???? = Local call
321* = Area code 321
Play WAV File To Announce Caller
HomeVision can also automatically play a unique WAV file for each caller. To do this, add a message to the
"cid_name.txt" file after the caller's name, like this:
555-973-6547 = Jane's parents
play wav file parents.wav
You can use any number of spaces or tabs between the caller name (Jane's parents) and the phrase "play
wav file". Follow the phrase "play wav file" with the WAV file name, including the extension. The specified
WAV file must be located in the same directory as HomeVision. In addition, you can have two wav files
named "Unavail.wav" and "Private.wav" that play if the caller's number is unavailable (same as "out of area")
or private.
Direct Control Of Caller ID Screen
You can also directly control the caller ID screen. You could create your own system for displaying the caller
ID information, even one using a different caller ID device. Several types of commands are provided that
allow you to:
•
Specify the text to display on lines 2 and 3 of the caller ID screen (the first line is always "Phone call
from:"). These commands are located under a new button titled "Other" on the actions entry screen.
•
Display the caller ID screen whenever you want to. This command is located under the "Video"
button on the actions entry screen.
•
Execute the caller ID macro (using the standard "Do Macro" command).
Caller ID Commands
These commands are located under a new button titled "Other" on the actions entry screen.
Set Caller ID Line 2 Text To ########################
This command specifies the text that will be displayed on line 2 of the caller ID TV screen. This line
is normally used to display the caller's name. Line 1 always displays "Phone call from:". This
command isn't needed when using the automatic caller ID display. It's provided in case you want to
display something you create yourself.
Set Caller ID Line 3 Text To ########################
This command specifies the text that will be displayed on line 3 of the caller ID TV screen. This line
is normally used to display the caller's phone number. Line 1 always displays "Phone call from:".
This command isn't needed when using the automatic caller ID display. It's provided in case you
want to display something you create yourself.
Put All 48 Bytes of Caller ID Data Into User Text Area Starting at Byte ##
Chapter 18
Caller ID
207
This command writes all the caller ID information to the “text storage buffer”. The 48 bytes
correspond to the two lines of text that HomeVision displays on the caller ID TV screen. The first 24
bytes are the caller’s name, and the last 24 bytes are the caller’s number. However, the TV screen
“indents” the lines by placing 2 blank spaces at the start of each line. Therefore, bytes 1, 2, 25, and
26 should be ignored. The actual caller’s name will start at byte 3, and the phone number will start
at byte 27. This command is intended to be used with the variable command that can read a byte
from the text storage buffer into a variable. Used together, these commands allow you to move the
caller ID information into your own variables, at which point you can do anything you like with them.
Set Caller ID Line 2 First 12 Characters To ############
This command specifies the first 12 characters of text that will be displayed on line 2 of the caller ID
TV screen.
Set Caller ID Line 2 Last 12 Characters To ############
This command specifies the last 12 characters of text that will be displayed on line 2 of the caller ID
TV screen.
Set Caller ID Line 3 First 12 Characters To ############
This command specifies the first 12 characters of text that will be displayed on line 3 of the caller ID
TV screen.
Set Caller ID Line 3 Last 12 Characters To ############
This command specifies the last 12 characters of text that will be displayed on line 3 of the caller ID
TV screen.
EXAMPLE
The following 5 commands sent over the serial interface:
Set Caller ID Line 2 First 12 Characters To “ The John D”
Set Caller ID Line 2 Last 12 Characters To “oe Family
”
Set Caller ID Line 3 First 12 Characters To “ 555-555-12”
Set Caller ID Line 3 Last 12 Characters To “34
”
Display Caller ID Screen On Solid Background
Will display the following:
Phone call from:
The John Doe Family
555-555-1234
Caller ID Conditions
You can check the phone number of a caller in an If-Then statement. Enter these conditions with the “Other”
button on the Actions Entry Screen Toolbar, and then select “Caller ID Condition” from the popup menu.
These conditions should be used inside your “caller ID” macro that runs whenever caller ID information is
received. If you place them elsewhere in your schedule, they may not work as expected, as the caller ID
information may have been cleared.
Caller’s Phone Number is ‘Out of area’
This condition will be true if the caller’s number is sent as “Out of area”.
208
Chapter 18 Caller ID
Caller’s Phone Number is ‘Private’
This condition will be true if the caller’s number is sent as “Private.
Caller’s Phone Number is ‘###-###-####’
This condition will be true if the caller’s number exactly matches your condition. For this condition,
you enter the specific phone number you want to check. Note several things about this:
•
You can enter as few or as many digits as you want. For example, you could enter only the
first three digits to determine if the call is from a specific area code.
•
If HomeVision is configured to display a formatted number, your condition must include the
same formatting. In other words, you must include the dashes like this:
If
Caller’s Phone Number is ‘123-456-7890’
Then
If you’re not displaying formatted numbers (most likely, only international users would not
use a formatted display), then enter just the digits.
•
You can enter a question mark (?) as a wild-card character. This will match any digit. For
example, the following condition will be true for any number where the last four digits are
“7890” (although we can’t think of any reason to do this!):
If
Caller’s Phone Number is ‘???-???-7890’
Then
Chapter 19
Thermostats
209
CHAPTER 19: THERMOSTATS
Introduction
The controller provides extensive capabilities to control and monitor multiple thermostats. The key features
include:
•
TV screens to control and view status of two HVAC zones.
•
Automatic control of two zones to custom time/temperature schedules. At the specified times, the
controller sends commands to the thermostat(s) to change to the new temperature setting.
Capabilities include:
-
Schedules can contain 8 times/temperatures per day, for three different days (MondayFriday, Saturday, and Sunday).
There are separate schedules for Heat, Cool, and Auto modes.
You can modify the schedules from your TV or PC.
•
Commands you can include in your schedule to directly control each zone (up to a maximum of 16
zones). These commands control RCS TX10, TX10-B, TX15, and TX15-B thermostats. They can
also read the settings back from the bi-directional TX10-B and TX15-B. In addition, they support the
RCS serial (RS232 and RS485) thermostats. There are also a variety of conditions you can use in
If-Then statements. Note: The newer TXB16 thermostat should function similar to the TX15-B
thermostats discussed herein.
•
Internal controller "system" variables to track the status of up to 16 HVAC zones. These thermostat
variables are automatically updated by the controller, making thermostat control much simpler than if
you had to create your own variables to do this.
•
A PC Thermostat Configuration Screen to configure up to 16 thermostats.
•
A TV Thermostat Configuration Screen to set up or change the zone 1 and 2 thermostat
configurations.
•
A PC Thermostat Control Screen to control the zone 1 and 2 thermostats.
•
With a few simple commands in your schedule you can easily set up your HVAC system to do these
things and more:
-
•
When you leave home, set the thermostat back and put it into the "Hold" mode.
When you return home, put the thermostat into the "Run" mode and change the temperature
setting to the currently-scheduled temperature.
Automatically switch between Heat and Cool modes based on the current temperature (as
read from the thermostat itself or from an analog temperature sensor).
Periodically check the temperature setting, current temperature, or HVAC system mode for
errors (or wrong settings) and correct them or issue an alert.
If you can leave your PC running, you can control EnerZone StatNet thermostats. Refer to the file
"StatNet" installed in the HomeVision directory for details.
This description is divided into three sections:
1) Built-in control. Describes the capability for automatically controlling two zones of RCS X-10
thermostats. You can use these features to setup your thermostat(s) in virtually no time.
210
Chapter 19 Thermostats
2) Advanced control. Describes commands and conditions you can include in your schedule. You
can use these to get more control over zone 1 and 2 thermostats. You can also use them to control
additional zones.
3) Custom control. Describes how you can write macros to use in place of the built-in controls. This
allows you to customize the system for virtually any thermostat type. Most users will never need to
use this capability, but it's there just in case.
Built-In Thermostat Control
This section describes how the controller can automatically control two zones of RCS TX10 or TX10-B
thermostats. It shows you how to quickly set up your system. If you wish to control more zones (up to the
maximum limit of 16), you can use the commands described in the "Advanced Thermostat Control" section.
Step 1 - Initial Thermostat Configuration
Separate sections below discuss configuring the RCS X-10 thermostats and serial thermostats.
RCS X-10 Thermostats
To initially configure your thermostat(s), use the PC software Thermostat Configuration Screen located under
the "Configure" menu. You should make the following settings:
•
The number of zones. Two zones can be controlled using the built-in TV screens and controls.
•
For each zone, select the thermostat type. Currently, TX10, TX10-B, TX15, and TX15-B thermostats
are supported.
•
Select the X-10 house code for each RCS thermostat.
•
Select the "setback" temperatures for the Heat and Cool modes. These should be energy-saving
temperatures to use when you're away from home. When you perform a "setback temperature"
command in your schedule, the controller will use one of these temperatures as the new setpoint
(depending on whether the system is in the Heat or Cool mode).
•
If either the zone 1 or 2 thermostat is a bi-directional thermostat, then a "status request rate" text box
will be shown. Set it as follows:
-
When using the TX10-B, enter the frequency at which the controller should read the status
from the thermostat.
-
When using the TX15-B (which has an "auto send" feature", set the request rate to 0.
See the section "Reading Thermostat Data" for more details.
This screen tells the controller what type of thermostat you have for each zone. If you use a thermostat
command in your schedule or from the Thermostat Control Screens, the controller uses this configuration
information to figure out the appropriate X-10 signal(s) to send to perform the command.
RCS Serial Thermostats
Allowable RCS Serial Thermostat Configurations
There are two general types of RCS serial thermostat controllers:
1. Single-zone
Chapter 19
Thermostats
211
2. Multi-zone
You can use a mixture of single-zone and multi-zone serial thermostats with HomeVision. However, there
are a few restrictions:
•
All thermostat controllers must connect to the same HomeVision serial port. This can be the main
HomeVision port, or any of the add-on ports. Note that the main port is used to load a schedule into
HomeVision, and to communicate with it from the PC. It’s usually best if you can leave it free for this
purpose, and use an add-on port for the thermostats.
•
When using more than one thermostat controller, they must all be of the RS-485 type (RS-232 does
not allow multiple devices). Only the HomeVision-Serial add-on ports support RS-485, so you
typically must use one of these ports. However, many companies make RS-232 to RS-485
converters, which you could use with the main HomeVision RS-232 port.
•
You can have a maximum of two multi-zone controllers.
•
You can have a maximum of 9 zones total.
Configure RCS Serial Thermostats
You must first install the thermostat(s); refer to the RCS documentation for details. You must also assign
addresses to each unit; this is done by setting switches. This section explains how to determine the correct
addresses. Refer to the RCS documentation for details on actually setting the address switches (note that
when you change the address setting, you must remove and reapply power to the thermostat before it will
recognize the new address).
In HomeVision, thermostats are referenced by their zone number. Zones are numbered consecutively from
1 up to the last zone, and zone numbers cannot be skipped. The RCS thermostats are configured by setting
their address. In configuring your system, it’s important to understand how the HomeVision zone numbers
correspond to the thermostat addresses. Once they’re configured, you’ll refer to them by zone numbers in
your HomeVision schedule.
The addresses must be assigned in a certain manner, and depend upon whether you’re using single-zone or
multi-zone controllers, and how many.
The following notes explain the settings for the various
configurations:
One or more single-zone thermostats:
The address on each thermostat must match its zone number in HomeVision. For example, if you
have three thermostats, they will be zones 1, 2, and 3, and their addresses must be set to 1, 2, and 3
(note that thermostat address 0 is not used).
One or two multi-zone controllers:
The multi-zone controller address may be 1 or 2 (note that thermostat address 0 is not used). If you
have two multi-zone controllers, one will be address 1 and the other address 2. Unlike single-zone
controllers, the addresses of multi-zone controllers do not match their zone numbers. Instead, you
will use the HomeVision software to indicate which zones use which controller address and output
connection.
Single-zone thermostat(s) and multi-zone controller(s) together:
The address of each single-zone thermostat must match its zone number. For example, you could
use a single-zone thermostat for zones 1 and 6, and a 4-zone controller for zones 2 through 5. In
this case, the single-zone thermostats must be set to addresses 1 and 6. The multi-zone controller
address may be 1 or 2. If you have two multi-zone controllers, one will be address 1 and the other
address 2.
212
Chapter 19 Thermostats
As an example, here’s a system with 2 single-zone thermostats and one 4-zone thermostat:
HomeVision
Zone Number
Thermostat
Type
Thermostat
Address
Thermostat
Board Zone #
1
2
3
4
5
6
Single-zone
Single-zone
1
2
4-zone
1
Not applicable
Not applicable
1
2
3
4
“Thermostat Board Zone #” refers to the number system used on the controller board of multi-zone
thermostats. For example, a 4-zone controller has four connections numbered 1 through 4. In this
example, these connections correspond to HomeVision zones 3 through 6.
Configure HomeVision Software
Next, you should configure the HomeVision software. First, tell HomeVision about the thermostats you’re
using:
1.
2.
3.
4.
5.
Open the Thermostat Configuration screen under the Configure menu.
In the “Thermostat type” box, select “RCS serial stats connected to HV".
In the “# of zones” box, select the total number of thermostat zones you have.
In the “Comm port” box, select the HomeVision serial port the thermostats are connected to.
For each zone, select the corresponding “tab”, and then:
• If this zone uses a single-zone thermostat, select “RCS serial single-zone” in the “Stat type” field.
• If this zone uses a multi-zone thermostat controller, select “RCS serial multi-zone” in the “Stat
type” field. In the “Unit address” field, select the address of this thermostat controller (either 1 or
2). In the “Zone number” field, select the zone number as shown on the thermostat controller
circuit board that this zone is connected to.
6. Select the "setback" temperatures for the Heat and Cool modes. These should be energy-saving
temperatures to use when you're away from home. When you perform a "setback temperature"
command in your schedule, the controller will use one of these temperatures as the new setpoint
(depending on whether the system is in the Heat or Cool mode).
Next, configure the HomeVision serial port the thermostat(s) will be connected to:
•
If you’re using the built-in HomeVision port (RS-232), set its baud rate to 9600, which is the rate
used by the RCS thermostats. You can use the Controller Commands Screen (under the Control
menu) to change the controller’s baud rate to 9600. After doing this, you must configure the PC
software to 9600 baud also (using the Serial Interface Configuration Screen located under the
Configure menu). Note that this same port is used to load a schedule into HomeVision, and to
communicate with it from the PC. If you use this same port for the thermostats, you will have to
switch connections each time you download a schedule.
•
If you’re using an add-on HomeVision port, configure it as described in its documentation. Set the
baud rate to 9600, which is the rate used by the RCS thermostats. Set the “Serial Timeout”
parameter to “none” (although this really doesn’t matter). If you’re using the add-on port’s RS-485
mode, select the “half-duplex” mode, which is what the RCS RS-485 thermostats use.
Step 2 - TV Screen Configuration
Enable the TV Thermostat Control Screen(s) so you can control the thermostat(s) from the TV. Do this using
the PC software "AC/Heating TV Screen" located under the "Advanced" menu. Check the "Enable Screen"
checkbox for each zone. Underneath each, select the "Use built-in commands" option (the other option
allows you to write your own macros to control the thermostat).
Chapter 19
Thermostats
213
Step 3 - Thermostat Schedule Setup
The controller can control the zone 1 and 2 thermostats to independent time/temperature schedules. If you
wish to use this feature, you should first enter the schedule using Thermostat Schedule Screen. This screen
is located under the "Advanced" menu in the PC software. Alternately, you can bypass this step and enter
the schedule using the TV Thermostat Schedule Screen as described in "Using the TV Thermostat Schedule
Screen". However, we recommend you do it from the PC first.
Use this screen to enter separate schedules for each HVAC system mode (Heat, Cool, and Auto) for each
zone. Here are some tips:
•
The scheduled times do not have to be in sequence, although it's easier to read if they are.
•
If there are times at which you don't want the temperature to change, you can enter a dash (-)
instead of a temperature. If you enter any temperature less than 10 degrees, it will also be
interpreted as a dash.
•
If you don't plan to use the Auto mode (most user's don't), you can skip it.
Just like standard programmable thermostats, the controller can put any zone into a "Run" mode or "Hold"
mode:
Run mode:
The controller controls the thermostat to the specified time/temperature schedule.
Hold mode: Holds the current temperature and does not send the scheduled temperature changes
(however, you can still include commands in your schedule to change the temperature if
you want).
This is called the thermostat "control mode", and you can change it from your TV screen or with a command
in your schedule. Each zone can be controlled independently.
Step 4 - Loading The Schedule
After making the settings described in steps 1-3, you will need to load the schedule into the controller. The
load screen contains an option to "Reload thermostat time/temperature schedule". This refers to the
schedule entered in step 3. You should check this box the first time so that it loads. On subsequent
schedule downloads, you may wish to leave it unchecked. This will cause the controller to keep the current
time/temperature schedule in its memory unchanged.
Remember that the user can change the thermostat schedule from the TV screen. Such changes ARE NOT
reflected in the schedule file on the computer. Therefore, if you download a new schedule with this option
checked, any changes the user made from the TV will be overwritten. To preserve them, uncheck the box
before downloading. Once you've loaded the schedule, you can use it as described in the following sections.
The first time you load a schedule, the settings (temperature, system mode, etc.) will likely be incorrect. We
recommend you use the TV Thermostat Control Screen to set them properly. The settings are preserved on
subsequent downloads so you only need to do this once.
Using the TV Thermostat Control Screen
Main Menu Page 3 of the video screen system allows you to access the Thermostat Control Screens
(assuming they have been enabled as described in step 2). These screens look similar to the following:
214
Chapter 19 Thermostats
AC/HEAT CONTROL <Zone 1>
1-Control Mode: RUN
2-HVAC Mode
: COOL
3-Fan Mode
: AUTO
4-Current Setting: 75
Current Temp
: 76
5-View/Edit Schedule
6-Refresh Settings Now
7-Main Menu
ENTER MENU NUMBER
These screens give you direct control over HVAC zones 1 and 2. How the screens work depends on your
thermostat:
RCS TX10-B, TX15-B, And Serial Thermostats
Use the buttons on your infrared remote as follows:
•
Pressing button 1 cycles the control mode between Run and Hold. When in the Run (or Auto) mode,
the controller will automatically control the thermostat to your time/temperature schedule, just like a
standard programmable thermostat. When in the Hold (or Off) mode, the schedule is not run (this
acts just like the "Hold" or "Vacation" mode on standard thermostats). You should set the control
mode to Hold when leaving home, and to Run when you return home (you can do this from this TV
screen, or with commands in your schedule).
•
Pressing button 2 cycles the HVAC system mode between Off, Heat, Cool, and Auto. This sends
the appropriate X-10 or serial command to the thermostat to set it to the new mode.
•
Pressing button 3 cycles the fan between On and Auto. "On" means the fan runs all the time, while
"Auto" means it runs only when commanded by the thermostat. This sends the appropriate X-10 or
serial command to the thermostat to set the fan to the new mode.
•
Pressing button 4 allows you to enter a new temperature setting. You enter the setting with the
number keys or with the channel and volume keys. After making the setting, you can enter it with
the enter key, or cancel it. If you enter it, the new setting is sent to the thermostat.
•
Pressing button 5 takes you to the schedule screen, where you can change the time/temperature
schedule for this zone and system mode.
•
Pressing button 6 causes the controller to immediately send the HVAC system mode, fan mode, and
temperature settings to the thermostat. You can do this if you want to ensure the thermostat is set
properly.
RCS TX10 And TX15 Thermostat
With a TX10/15 thermostat, the screen works similarly to the bi-directional version, with several exceptions:
•
The fan mode control and status don't function.
•
The current temperature will probably be incorrect, as the TX10/15 doesn't report this.
•
The screen will not update if someone manually changes a thermostat setting.
These differences are due to the limited capabilities of the TX10/15 as compared to the bi-directional
version.
Chapter 19
Thermostats
215
Using The TV Thermostat Schedule Screen
Entry 5 on the TV Thermostat Control Screen opens the Thermostat Schedule Screen, as shown:
ZONE 1 HEAT SCHEDULE
TIME
2:30 AM
6:00 AM
8:00 AM
8:30 AM
5:15 PM
7:30 PM
10:30 PM
11:45 PM
M-F
70
72
66
70
72
71
-
SAT
70
72
72
71
-
SUN
72
66
70
72
71
70
You can modify the schedule with your infrared remote. The remote buttons work as follows:
•
•
•
•
•
•
•
The channel up and down buttons move the cursor up and down.
The volume up and down buttons move the cursor left and right.
To enter a value, press the corresponding number button.
To skip a temperature entry, enter a zero for the first digit. A dash (-) will be displayed, indicating
that the temperature won't change at that time.
To change between AM and PM, position the cursor on the "A" or "P" and press any number button.
When you're done with your changes, press "enter" to accept them or "cancel" to cancel.
Note that the times do not have to be in sequence, although it makes it easier to read.
Using The PC Thermostat Control Screen
The PC software has a Thermostat Control Screen that can control the zone 1 and 2 thermostats. It is
located under the "Control" menu. It allows you to change the system mode (Heat, Cool, Auto, or Off) and
the temperature setting. When you click the "Set" button, both settings are sent to the thermostat. For this
screen to function properly, a schedule with the correct Thermostat Configuration Screen settings must have
been downloaded into the controller. The controller uses these settings to determine what X-10 or serial
commands to send.
Reading X-10 Thermostat Data
NOTE: This section applies to the RCS TX10-B and TX15-B thermostats only. For the RCS serial
thermostats, HomeVision will read the status automatically without you doing anything. The TX10-B and
TX15-B thermostats require you to configure them in order to read their data, as discussed below.
TheTX10-B and TX15-B thermostats can report the following data when commanded via X-10:
•
•
•
•
System mode (Off, Heat, Cool, Auto)
Fan mode (On, Auto)
Current temperature
Temperature setting
By reading this data, the controller can determine not only the actual temperature, but also when someone
manually changes a setting. There are three ways for the controller to request and read this information:
1) Automatically. If you've configured HVAC zone 1 and/or 2 for the RCS TX10-B thermostat, the
controller will automatically read the settings from them on a regular basis. If the thermostat is a
216
Chapter 19 Thermostats
newer TX15-B, the HomeVision command "Initialize Thermostat" will enable the TX15-B's "auto
send" feature, after which it will automatically report changes to HomeVision.
2) With a direct command in your schedule. There are commands to request each of the four different
data types. There's usually no need for you to do this with zones 1 and 2, as the controller does it
automatically. However, there are some instances where you may want to. These commands are
described in the section "Advanced Thermostat Control".
3) By directly sending and reading X-10 "preset dim" signals to/from the thermostat. Prior to version
2.5, this was the only way to communicate with the TX10-B. The "How To" file includes a thorough
description of how to control the TX10-B in this fashion (which requires you to write fairly complex
macros). Since version 2.5 and later now include commands to directly control the TX10-B, there's
no need to do it this way anymore.
Reading Data From Thermostats
Reading data from a thermostat requires two steps:
1) Sending a data request command to the thermostat. If you have configured zone 1 or 2 as a TX10B, the controller will automatically periodically request the thermostat settings. If you have additional
thermostats, you will have to request their data in your schedule (using the commands described in
the "Advanced Thermostat Control" section). If you have a TX15-B with the "auto send" feature, you
do not need to request status from it, as it will report changes.
2) Reading the thermostat response and updating the system variables accordingly. The controller
automatically reads responses from the TX10-B thermostat. For more details on this, see the
"Request Report" commands in the "Advanced Thermostat Control" section.
The automatic process of requesting data for zones 1 and 2 is described below.
Automatic X-10 Data Requests
TX10-B
If you have configured zone 1 or 2 as a TX10-B, the controller will periodically request the thermostat
settings. You can set the "status request rate" to between 1 and 15 minutes, in 1 minute increments. You
can also disable the automatic requests. Since this requires sending and receiving X-10, it can clog up the
power line if done too frequently. On the other hand, the less frequently the status is read, the longer it takes
for temperature changes and manual changes at the thermostat to be detected by the controller. Thus, there
is a tradeoff between response time and the amount of X-10 traffic.
After the controller sends a data request, the thermostat responds with the requested data. If the controller
were to send another data request (or any X-10 signal) immediately after sending the first data request, it
could collide with the thermostat response and corrupt it. To get around this problem, each time the
controller requests data, it requests only ONE of the four data types from one thermostat zone. This gives
the thermostat time to respond before the next data request a minute or more later.
Each time the controller requests data, it requests a different setting then the prior time. However, it doesn't
simply loop through the four different data types. Instead, it only requests the system mode (Off, Heat, Cool,
or Auto) and fan mode (On or Auto) once every 256 requests. The other times, it alternates between
requesting the current temperature and the temperature setting. This approach gives the best response time
for the temperature data, which changes the most frequently. The system and fan modes are not manually
changed very often at the thermostat, so the delay in recognizing such changes is usually not a problem.
If you have two TX10-B thermostats, the controller will alternate between them in this fashion:
Request 1
Request 2
: Zone 1 temperature
: Zone 1 temperature setting
Chapter 19
Request
Request
Request
Request
Request
Request
.
.
.
Request
Request
Request
Request
Request
Request
Request
Request
3
4
5
6
7
8
:
:
:
:
:
:
Zone
Zone
Zone
Zone
Zone
Zone
2
2
1
1
2
2
temperature
temperature setting
temperature
temperature setting
temperature
temperature setting
249
250
251
252
253
254
255
256
:
:
:
:
:
:
:
:
Zone
Zone
Zone
Zone
Zone
Zone
Zone
Zone
1
1
2
2
1
1
2
2
temperature
temperature setting
temperature
temperature setting
system mode
fan mode
system mode
fan mode
Thermostats
217
It then starts over, repeating the process continually.
TX15-B
The newer RCS TX15-B thermostats support an "auto send" feature. When enabled, the thermostat will
send an X-10 message reporting any local changes (changes made at the thermostat) of system mode, fan
mode, or temperature setpoint. It will also report a change in the actual temperature.
HomeVision will
automatically receive and decode the X-10 messages from this thermostat. However, you must disable
HomeVision's "automatic reading" function to prevent it from periodically polling the thermostat. You can do
this from the PC software Thermostat Configuration Screen by unchecking the "Enable automatic reading"
checkbox, or from the TV video menu system Thermostat Configuration Screen by setting the "request rate"
to zero. If you do not disable automatic reading, HomeVision could misinterpret setpoint messages as
temperature messages and vice-versa.
Note that the command "Initialize Thermostat" will enable the TX15-B "auto send" mode. However, the
TX15-B may lose this setting after a power failure. Therefore, we recommend you perform the "Initialize
Thermostat" command in your power failure recovery event, and also in a periodic event running every few
hours, to ensure the correct setting.
Advanced Thermostat Control
This section describes thermostat commands and conditions you can include in your schedule. You can use
these to get more control over zone 1 and 2 thermostats than is provided with the built-in control capability.
You can also use these to control additional zones (up to 16).
Thermostat-Related Commands
There are two types of commands related to thermostats:
•
Thermostat commands. These directly control the thermostats and are the primary commands
you'll use.
•
Thermostat data commands. These are used to manipulate the temperature setting and current
temperature values. For example, you can put these values into a variable, then do anything you
can with a variable (display it on the TV, send it over the serial port, perform math on it, etc.).
Both types of commands are entered in your schedule from the actions entry screen by clicking the "Other"
toolbar button. In the pop-up menu, you then select either "Thermostat Commands" or "Thermostat Data".
Both types are described below.
218
Chapter 19 Thermostats
Thermostat Commands
The following thermostat commands can be included in a schedule. They can also be issued to the
controller over the serial interface. The format for sending commands over the serial interface is described
in a text file installed in the application directory.
For all of these commands, the controller uses the settings in the Thermostat Configuration Screen to
determine how to send the command to the thermostat.
Set
Set
Set
Set
Zone
Zone
Zone
Zone
##
##
##
##
System
System
System
System
Mode
Mode
Mode
Mode
to
to
to
to
Off
Heat
Cool
Auto
The controller sets the specified thermostat zone (from 1 to 16) to the specified HVAC system mode.
The controller also updates its internal system variable "Zone Status" for the specified zone to reflect
the new system mode.
Set Zone ## Fan Mode to On
Set Zone ## Fan Mode to Auto
The controller sets the specified thermostat zone (from 1 to 16) to the specified fan mode. The
controller also updates its internal system variable "Zone Status" for the specified zone to reflect the
new fan mode.
Since the RCS TX10 thermostat cannot change the fan mode via X-10, this command will be ignored
for these thermostats.
Set Zone ## Temperature Setting to XX
The controller sets the specified thermostat zone (from 1 to 16) to the specified temperature setpoint.
The controller also updates its internal system variable "Temperature Setting" for the specified zone
to reflect the new setting.
Set Zone ## Temperature Back
The controller set the specified thermostat zone (from 1 to 16) to your "setback" temperature. It also
updates its internal system variable "Temperature Setting" for the specified zone to reflect the new
setting. There are separate setback temperatures for the Heat and Cool modes (they are entered in
the PC Thermostat Configuration Screen). These setback temperatures apply to all zones; there are
not separate temperatures for each zone.
This command is usually used to save energy when away from home. The Heat mode temperature
is set at a fairly low temperature (perhaps 60 degrees), and the Cool mode temperature is set fairly
high (perhaps 85 degrees). The controller determines the current system mode, looks up the
setback temperature for that mode, then commands the thermostat to that temperature.
Raise Zone ## Temperature 1 Degree
Lower Zone ## Temperature 1 Degree
The controller sets the specified thermostat zone (from 1 to 16) to 1 degree higher (or lower) than
the current temperature setpoint. It also updates its internal system variable "Temperature Setting"
for the specified zone to reflect the new setting.
Note that these commands only work properly if the controller can keep track of the temperature
setting accurately. If the controller's status in wrong, the commanded temperature will also be
wrong.
Chapter 19
Thermostats
219
For example, assume you have an X-10 controller by your bed to send commands to the controller.
When the controller receives a certain X-10 signal, it performs the command "Raise Zone 1
Temperature 1 Degree". Now, assume the thermostat setpoint is 70 degrees, and the controller's
status also shows 70. Then, someone manually changes the thermostat setpoint to 71. Then,
before the controller has read the new setpoint, you send the X-10 command from your bed to raise
the temperature. The controller will think the current setting is 70, add 1 to it, and send a command
to set the thermostat to 71. Since the thermostat is already at 71, it doesn't change. This error
usually isn't too serious, though, since you can press the button again a few minutes later when you
realize it hasn't warmed up.
The RCS TX10-B thermostat has a command that raises or lowers the setpoint 1 degree. Since the
TX10-B always knows what its setting is, you may prefer using this command instead of the
previously described built-in method. However, the controller does not directly implement this RCS
command. Instead, you have to do it with X-10 "Preset Dim" signals. Refer to the RCS
documentation on the X-10 signals for details on doing this.
Set Zone 1 to Currently Scheduled Temperature
Set Zone 2 to Currently Scheduled Temperature
The controller sets the thermostat to the temperature specified in the time/temperature schedule for
the zone's current HVAC system mode (Heat, Cool, or Auto). It also updates its internal system
variable "Temperature Setting" for the specified zone to reflect the setting. If the system mode is Off,
no action is performed since there is no time/temperature schedule for the Off mode.
These commands are only work for zones 1 and 2 because they are the only zones that have a builtin time/temperature schedule. These commands are normally used when the homeowner returns
home and wants the thermostat to start running again.
Set Zone ## Control Mode to Run (Auto)
Set Zone ## Control Mode to Hold (Off)
The controller updates its control mode variable for the specified zone (from 1 to 16) to indicate the
new control mode. It does not send any commands to the thermostat.
When in the Run (or Auto) control mode, the controller will control the thermostat to your
time/temperature schedule, just like a standard programmable thermostat. When in the Hold (or Off)
control mode, the schedule is not run (this acts just like the "Hold" or "Vacation" mode on standard
thermostats).
Note that these commands do not send any commands to the thermostat. They are usually used in
conjunction with other commands. For example, when you leave home, you can use these
commands:
Set Zone 1 Control Mode to Hold (Off)
Set Zone 1 Temperature Back
When you return home you'd do this:
Set Zone 1 Control Mode to Run (Auto)
Set Zone 1 to Currently Scheduled Temperature
220
Chapter 19 Thermostats
Initialize Zone ## Thermostat
This command initializes the specified thermostat (from 1 to 16). This is only applicable to the RCS
TX10-B and TX-15B thermostats; the command will be ignored if the zone is configured for any other
thermostat. This command sets the following thermostat settings:
-
Enable "Preset Dim Command Mode" (sends Preset Dim level 18 command).
Disable "Ack Message Mode" (sends Preset Dim level 21 command).
Disable "Echo Command Mode" (sends Preset Dim level 23 command).
Disable "Safe Command Mode" (sends Preset Dim level 25 command).
Disable "Unit Code On/Off Mode" (sends Preset Dim level 17 command).
Enable "Auto Send Mode" (sends Preset Dim level 26 command) (ignored by TX10-B).
NOTE: These Preset Dim levels are 1 number smaller than that shown in RCS's
documentation. This is because RCS numbers the levels as 1 to 32, while HomeVision
numbers them 0 to 31.
You typically have to initialize the TX10-B thermostat only once. You can do it by putting this
command in a macro, then running the macro from the Macro Control Screen. However, some
users like to periodically initialize the thermostat to ensure it's set properly. If you wish to do this, we
recommend you do it with a scheduled event set to run in the middle of the night (maybe 3:00 AM).
This way the X-10 signals probably won't interfere with any others. Note that the TX15-B may lose
it's "auto send" setting after a power failure. Therefore, we recommend you perform this command
in your power failure recovery event, and also in a periodic event running every few hours, to ensure
the correct setting.
Request
Request
Request
Request
Zone
Zone
Zone
Zone
##
##
##
##
Current Temperature Report
Temperature Setting Report
System Mode Report
Fan Mode Report
These commands request that the specified thermostat (from 1 to 16) report the specified data back.
These are only applicable to the RCS TX10-B thermostat; the commands will be ignored if the zone
is configured for any other thermostat (including RCS serial thermostats). The TX10-B reports the
data using an X-10 house and unit code, followed by a "Preset Dim" signal and level (from 0 to 31).
They can also be used with the TX15-B, but since this thermostat has an “auto send” mode, it’s
normally not necessary to request status manually.
When the controller receives the response X-10 signals back from the thermostat, it automatically
updates the appropriate thermostat settings. It does this by first checking to see whether the X-10
house code matches that for any of your thermostats. If it does, it checks to see whether the unit
code was a valid report code and whether the signal was "Preset Dim" of a valid level. If everything
is OK, the setting is changed for the appropriate thermostat. These thermostat settings are stored in
separate internal system variables for each zone.
You normally don't need to use these commands for HVAC zones 1 and 2 if you set up the controller
to control them automatically as described earlier. The controller will request the data periodically.
However, you can still use these commands to force the controller to request the data immediately.
For example, assume there's a place in your schedule where it's important to know the current
system mode with certainty. Since the controller only requests the system mode occasionally,
someone could manually change the thermostat and without the controller knowing about it yet. You
can run the "Request Zone 1 System Mode Report" command, wait a few seconds for the response,
then continue knowing that the setting is correct.
If you have more than two HVAC zones, you will have to include these commands in your schedule
to read their status. It's easiest to put the commands in a periodic event set to run every 1 or 5
minutes to do this. However, these events would then run right on the minute mark, which is the
same time as the controller would automatically request the TX10-B data for zones 1 and 2. The
controller would space out the transmissions, but it's possible the thermostats would report back at
the same time and the X-10 signals would collide. To avoid this, use a Wait Timer to wait a few
seconds after the periodic event to request the data, as shown here:
Chapter 19
Thermostats
221
Wait 0:00:10.00 with timer #1 (Thermostat Request Timer)
Request Zone 3 Temperature Report
End Wait
Refresh Zone ## System Mode
Refresh Zone ## Fan Mode
Refresh Zone ## Temperature Setting
These commands "refresh" the specified thermostat (from 1 to 16) setting. "Refresh" means that the
controller looks at the current setting (a system variable maintained inside the controller) and sends
the same command to the thermostat.
This command can be used to ensure that the thermostat is in the desired state. If the thermostat
has been changed manually and the controller does not know it, this will put the thermostat back into
the old state.
Thermostat Data Commands
These thermostat data commands operate on the thermostat system variables, described below.
Thermostat System Variable Summary
The controller has 64 internal "system" variables that it uses to hold the thermostat data. Each of the 16
available zones has these four variables:
Current Temperature: The zone's current temperature. For zones 1 and 2, this is the temperature
reading that is displayed on the TV Thermostat Control Screen. This value can
be changed in the following two ways:
- By a command in your schedule (perhaps after reading the temperature
from a temperature sensor).
- By the thermostat reporting a new temperature setting to the controller. Of
course, this is only possible if the thermostat can report its temperature (like
the RCS TX10-B and TX15-B or serial thermostats can).
Temperature Setting: The zone thermostat's temperature setting. For zones 1 and 2, this is the
temperature setting that is displayed on the TV Thermostat Control Screen.
This setting can be changed in the following ways:
-
From the TV Thermostat Control Screen.
By a command in your schedule.
By the thermostat reporting a new temperature setting to the controller.
If the controller is running the zone to a time/temperature schedule, this
variable will be set to the desired temperature at the scheduled time (and
the setting will also be transmitted to the thermostat).
Zone Configuration:
This variable stores the thermostat type and house code for the zone. It can
only be changed from the Thermostat Configuration Screens in the PC software
and video menu system.
Zone Status:
This variable stores the current operating modes of the zone. Three different
modes are tracked and stored in this variable:
- HVAC system mode (Heat, Cool, Auto, or Off)
- Fan mode (On or Auto)
- Control mode (Run or Hold)
222
Chapter 19 Thermostats
These three modes control most of the thermostat operation. For zones 1 and 2,
these are the values that are displayed on the TV Thermostat Control Screen.
There are two ways to change them:
- From the TV Thermostat Control Screen.
- With a command in your schedule.
Thermostat Data Commands
These thermostat data commands give you access to the Current Temperature and Temperature Setting
system variables for each of the 16 zones. You cannot access the Zone Configuration or Zone Status
variables with these commands.
These commands are entered in your schedule from the actions entry screen by clicking the "Other" toolbar
button, then selecting "Thermostat Data" from the pop-up menu. They can all also be issued to the controller
over the serial interface. The format for sending commands over the serial interface is described in a text file
installed in the application directory.
Thermostat Variable "Zone X Current Temperature" = Variable "###"
There are actually 16 of these commands, one for each available HVAC zone (replace the X with the
desired zone). These commands set the Current Temperature variable for the specified zone to the
value of variable "###". Variable ### is any variable that you've created in your schedule.
These commands are useful if you have a way to determine the current temperature using variables
(perhaps by reading an analog temperature sensor) and want it to appear on the TV Thermostat
Control Screens.
Variable "###" = Thermostat Variable "Zone X Current Temperature"
There are actually 16 of these commands, one for each available HVAC zone (replace the X with the
desired zone). These commands set variable "###" to the Current Temperature value for the
specified zone. Variable ### is any variable that you've created in your schedule. Once the
temperature value is in the variable, you can do anything you want with it.
Here's an example of how this command might be used. Assume you have an RCS TX10-B
thermostat controlling HVAC zone 1. The controller can automatically request the current
temperature from this thermostat, and it will put it in the system variable "Zone 1 Current
Temperature". This temperature will then be displayed on the TV Thermostat Control Screen. To do
other things with it, you can use this command to put the temperature value into your own variable.
You can then:
•
•
•
Display it on a custom TV screen (perhaps putting it in the top left corner overlaid onto the
TV channel you're watching).
Perform some math functions on it to decide whether to switch HVAC system modes,
open/close air ducts in certain rooms, turn on/off a whole-house ventilation system, etc.)
Report it out the serial interface every 5 minutes and log it to a PC file. You could then open
the file in a spreadsheet program and create a graph of your house's temperature!
Thermostat Variable "Zone X Current Temperature" = Constant "###"
There are actually 16 of these commands, one for each available HVAC zone (replace the X with the
desired zone). These commands set the Current Temperature variable for the specified zone to the
constant value "###". ### can be any integer between 0 and 255.
These commands are primarily intended for use with the temperature values that are displayed on
the TV Thermostat Control Screens. If you don't have a thermostat that can report the temperature,
Chapter 19
Thermostats
223
you may want to set the temperature to zero so that the user doesn't confuse it with the true
temperature.
Thermostat Variable "Zone X Temperature Setting" = Variable "###"
There are actually 16 of these commands, one for each available HVAC zone (replace the X with the
desired zone). These commands set the Temperature Setting variable for the specified zone to the
value of variable "###". Variable ### is any variable that you've created in your schedule.
This command DOES NOT send a temperature setting command to the thermostat. It merely
changes the system variable value stored in the controller. This command is useful if you want to
use variables to calculate a temperature setting. You can use this command to change the setting,
and then perform the "Refresh Zone X Temperature Setting" command to send it to the thermostat.
Variable "###" = Thermostat Variable "Zone X Temperature Setting"
There are actually 16 of these commands, one for each available HVAC zone (replace the X with the
desired zone). These commands set variable "###" to the Temperature Setting value for the
specified zone. Variable ### is any variable that you've created in your schedule. Once the
Temperature Setting value is in the variable, you can do anything you want with it.
You can use this command to periodically check the temperature setting for errors, send it to the
serial port, and many other things.
Thermostat Variable "Zone X Temperature Setting" = Constant "###"
There are actually 16 of these commands, one for each available HVAC zone (replace the X with the
desired zone). These commands set the Temperature Setting variable for the specified zone to the
constant value "###". ### can be any integer between 0 and 255.
This command DOES NOT send a temperature setting command to the thermostat. It merely
changes the system variable value stored in the controller. There probably isn't much use for this
command, but we included it for the heck of it!
Thermostat Conditions
The thermostat conditions described below can be checked by an If-Then or If-Then-Else statement. They
are entered in your schedule from the actions entry screen by clicking the "Other" toolbar button, then
selecting "Thermostat Condition" from the pop-up menu.
If
If
If
If
If
If
If
If
Zone
Zone
Zone
Zone
Zone
Zone
Zone
Zone
##
##
##
##
##
##
##
##
System Mode is Off
System Mode is Heat
System Mode is Cool
System Mode is Auto
Fan Mode is On
Fan Mode is Auto
Control Mode is Run (Auto)
Control Mode is Hold (Off)
Condition is true if the specified HVAC zone is in the specified operating mode.
If Zone ## Current Temperature < XX
Condition is true if the current temperature of the specified HVAC zone is less than the value XX (a
number from 0 to 255).
224
Chapter 19 Thermostats
If Zone ## Current Temperature > XX
Condition is true if the current temperature of the specified HVAC zone is greater than the value XX
(a number from 0 to 255).
If Zone ## Current Temperature = XX
Condition is true if the current temperature of the specified HVAC zone is equal to the value XX (a
number from 0 to 255).
If Zone ## Current Temperature <> XX
Condition is true if the current temperature of the specified HVAC zone is not equal to the value XX
(a number from 0 to 255).
If Zone ## Temperature Setting < XX
Condition is true if the temperature setting of the specified HVAC zone is less than the value XX (a
number from 0 to 255).
If Zone ## Temperature Setting > XX
Condition is true if the temperature setting of the specified HVAC zone is greater than the value XX
(a number from 0 to 255).
If Zone ## Temperature Setting = XX
Condition is true if the temperature setting of the specified HVAC zone is equal to the value XX (a
number from 0 to 255).
If Zone ## Temperature Setting <> XX
Condition is true if the temperature setting of the specified HVAC zone is not equal to the value XX
(a number from 0 to 255).
EnerZone StatNet Thermostats
If you can leave your PC running, you can control EnerZone StatNet thermostats. Refer to the file "StatNets"
installed in the HomeVision directory for details.
Custom Thermostat Control
As discussed in previous sections, the controller can automatically control zones 1 and 2 if they use RCS
TX10, TX10-B, TX15, TX15-B, or serial thermostats. If you have different thermostats, you can still use the
TV Thermostat Control Screens to control them, but you will have to write your own macros to do this. Even
if you do use these RCS thermostats, you may want to modify the way the automatic control works (although
this is rarely needed).
To do this, you have to write your own macros that perform all the commands, and use your own variables to
hold the data (mode, temperature, etc.). If you wish to do this, you should read two files installed in the
application directory first:
1) The "Video Screens" file, which describes the general process of how the TV Thermostat Control
Screens work.
2) The "How To" file, which contains a detailed description of how to control the RCS TX10-B
thermostat. It was written before we added all the thermostat commands, so it does everything
using the basic X-10 commands. Use this as a guide in determining what to implement and how.
Chapter 20
Expansion Boards
225
CHAPTER 20: EXPANSION BOARDS
This chapter covers some of the expansion boards that are available for the controller.
Multifunction Expansion Board
The controller can connect to up to two multifunction expansion boards.
features:
•
•
•
•
•
•
•
•
•
Each board provides these
Eight digital inputs identical to the controller's port B.
Two sets of eight digital inputs similar to the input capability of the controller's port C.
Any or all of the three sets of eight digital inputs can instead be used as a port extender for the
controller's ports A, B, or C.
Eight analog inputs.
Eight zones of infrared output.
Up to 64 digital temperature sensors can be connected.
I/O board connector for other I/O boards.
Memory expansion socket (for future use).
Connect to the controller via 14-pin connector J6 on the controller.
Refer to the documentation provided with the expansion board for more details.
Sylva Control Systems I/O Boards
Sylva Control Systems manufactures a variety of input/output boards for their own control systems. One of
these boards provides 8 relays and 8 opto-isolated inputs. You can connect up to four of these boards to
HomeVision.
Sylva Control Systems can be contacted at:
519 Richard Street
Thunder Bay, Ontario, Canada P7A-1R2
807-768-2487
807-767-0587 (FAX)
http://www.sylvacontrols.com
Sylva IO-8O8I And IO-8O8I/485 Board Description
•
•
•
•
•
8 SPST (Form A) relays
8 opto-isolated 12-24 VAC/VDC inputs
LEDs to indicate relay and input states
Pluggable terminal block connectors
4.5 inches X 4.5 inches
Two different versions of this board can be used with HomeVision:
•
IO-8O8I board: Connects to HomeVision through the Multifunction Expansion Board. Powered by
Multifunction Expansion Board. However, the relays must be powered by an external 12VDC
transformer.
226
Chapter 20 Expansion Boards
•
IO-8O8I/485 board: Connects to HomeVision through an RS-485 port. Must be powered by an
external 12VDC transformer
IO-8O8I Setup
1) Remove power from the controller and the Multifunction Expansion Board(s).
2) Connect a 10-wire ribbon cable to connecter H2 "I/O Board". Be sure to align pin 1 on the connector
with the red wire on the cable. Plug the other end of the cable into either of the 10-pin connectors on
the IO-8O8I board. Note that pin 1 (the red wire) goes towards the left edge of the board.
If you have multiple IO-8O8I boards, you can chain them together. Use 10-wire ribbon cables to
connect the first board to the second board, the second board to the third board, and so on.
3) Insert jumpers on the IO-8O8I board(s) to set their addresses, as shown below:
Board #
Address
Jumpers to Install
1
2
3
4
0
1
2
3
None
1
2
1 and 2
These jumper settings will take affect the next time power is applied to the board.
4) Apply power to the controller and the Multifunction Expansion Board.
5) Connect a 12VDC power supply to the +12V connector on the IO-8O8I.
WARNING: do not use the same power supply that's powering the controller. Switching noise from
the power supply could affect the controller's operation.
6) Connect your inputs and outputs to the appropriate IO-8O8I connectors.
7) In the HomeVision software, open the Expansion Board Configuration Screen located under the
"Configure" menu. Select the "Sylva I/O Boards" tab, then place a checkmark next to the board(s)
installed. Select the “Expansion Port” option.
IO-8O8I/485 Setup
The IO-8O8I/485 boards connect to HomeVision through an RS-485 serial port. Since HomeVision can have
up to four serial ports, you have several options for connecting the IO-8O8I/485 boards:
1) Through a HomeVision-Serial add-on set to the RS-485 mode. This is the preferred approach and is
easiest to set up.
2) Through a HomeVision-Phone/Serial add-on connected to a 232-to-485 converter.
These
converters are available from a variety of sources and are needed to convert HomeVisionPhone/Serial's RS-232 serial port to RS-485. You may want to use this approach if you have a
HomeVision-Phone/Serial device and aren't using its serial port. However, the cost of a 232-to-485
converter is about the same as a HomeVision-Serial device, so option 1 costs about the same and
gives you an extra serial port.
3) Through the built-in HomeVision serial port connected to a 232-to-485 converter. This is the most
difficult way, but if you already have a 232-to-485 converter, it's the least expensive option. The
main drawback is that you can't leave HomeVision connected to your PC, since it must be connected
to the same HomeVision serial part. Therefore, you'd have to swap the cables each time you
needed to load a new schedule into the controller.
Chapter 20
Expansion Boards
227
The setup process depends on which HomeVision serial port you’re going to connect the boards to.
IO-8O8I/485 To HomeVision-Serial Port
If you’re using a HomeVision-Serial add-on serial port in the RS-485 mode (the recommended method),
proceed as follows:
1) Connect HomeVision-Serial to HomeVision as described in its documentation.
2) From the “Expansion Board” option under the “Configure” menu, select the “Other” tab and configure
the HomeVision serial port as follows:
•
•
•
9600 baud (this is what the IO-8O8I/485 boards use)
Timeout: None
Half-duplex (485 two-wire) mode
3) From the “Expansion Board” option under the “Configure” menu, select the “Sylva I/O Boards” tab
and configure the Sylva board(s) as follows:
•
•
•
Check each board that you are using
Select the “Serial Port” option for the “Board connection method”
Select the HomeVision serial port the board(s) will be connected to. Each of the four
possible HomeVision serial ports is identified by a unique port number, as follows:
- HomeVision built-in port (RS-232):
Port 1
- HomeVision-Phone/Serial port (RS-232):
Port 2
- First HomeVision-Serial port (RS-232 or RS-485):
Port 3
- Second HomeVision-Serial port (RS-232 or RS-485):
Port 4
4) Set the configuration jumpers on the IO-8O8I/485 board as follows:
•
•
•
Remove the RS-485 termination jumper
Remove jumper J1 (which causes a 4ms delay in board response)
Set the board address jumpers on each board as shown below:
- First board
= address 0 (no jumpers installed)
- Second board = address 1 (jumper 1 installed)
- Third board = address 2 (jumper 2 installed)
- Fourth board = address 3 (jumpers 1 and 2 installed)
5) Connect the IO-8O8I/485 board(s) to HomeVision-Serial. Follow the process described in the “RS485 two-wire (half-duplex) mode” section of the HomeVision-Serial documentation. The connections
are summarized below.
•
•
•
•
Connect the HomeVision-Serial TXA position to the IO-8O8I/485 board’s “RS485 S-“
position
Connect the HomeVision-Serial TXB position to the IO-8O8I/485 board’s “RS485 S+“
position
Connect the HomeVision-Serial TXA position to the HomeVision-Serial RXA position
Connect the HomeVision-Serial TXB position to the HomeVision-Serial RXB position
The first two connections connect HomeVision-Serial to the IO-8O8I/485 board, while the last
two tie the HomeVision-Serial transmit and receive lines together (which is required for a twowire RS-485 connection). If you have more than one IO-8O8I/485 board (you can have a
maximum of four), connect each to the HomeVision-Serial TXA and TXB positions.
6) Connect 12VDC to the IO-8O8I/485 board(s) power terminal block.
7) Download your schedule into HomeVision.
228
Chapter 20 Expansion Boards
IO-8O8I/485 To Other Serial Port
If you’re using one of the other HomeVision serial ports in the RS-232 mode with an external 232-to-485
converter, proceed as follows:
1) If you’re using the HomeVision-Phone/Serial add-on, connect it to HomeVision as described in its
documentation.
2) Connect the 232-to-485 converter to the HomeVision port using a serial cable. Refer to the
converter’s documentation to determine if you need a regular serial cable or a null modem cable.
3) Configure the HomeVision serial port for 9600-baud operation.
4) From the “Expansion Board” option under the “Configure” menu, select the “Sylva I/O Boards” tab
and configure the Sylva board(s) as follows:
•
•
•
Check each board that you are using
Select the “Serial Port” option for the “Board connection method”
Select the HomeVision serial port the board(s) will be connected to. Each of the four
possible HomeVision serial ports is identified by a unique port number, as follows:
- HomeVision built-in port (RS-232):
Port 1
- HomeVision-Phone/Serial port (RS-232):
Port 2
- First HomeVision-Serial port (RS-232 or RS-485):
Port 3
- Second HomeVision-Serial port (RS-232 or RS-485):
Port 4
5) Set the configuration jumpers on the IO-8O8I/485 board as follows:
•
•
•
Remove the RS-485 termination jumper
Remove jumper J1 (which causes a 4ms delay in board response)
Set the board address jumpers on each board as shown below:
- First board
= address 0 (no jumpers installed)
- Second board = address 1 (jumper 1 installed)
- Third board = address 2 (jumper 2 installed)
- Fourth board = address 3 (jumpers 1 and 2 installed)
6) Connect the IO-8O8I/485 board(s) to your 232-to-485 converter.
converter and IO-8O8I/485 board documentation.
Follow the instructions in the
7) Connect 12VDC to the IO-8O8I/485 board(s) power terminal block.
8) Download your schedule into HomeVision.
Using The I/O Boards
The IO-8O8I board's inputs and outputs are used in exactly the same manner as the other the controller I/O
ports. The new ports will be listed in the input and output port summary screens.
Digital Temperature Sensors
The Multifunction Expansion Board can connect to Dallas Semiconductor digital temperature sensors (part
number DS1820 or DS18S20). The main features are:
•
•
•
Temperature range of -50 to +205 degrees F.
1 degree F resolution.
Each sensor requires three wires: 5V, ground, and signal.
Chapter 20
•
•
•
Expansion Boards
229
Up to 64 sensors can be connected to the same wires. Each sensor has it's own unique address so
it can be individually read.
All sensors connect to one analog input port. This port can no longer be used for analog input, but
the other 7 inputs are still available.
15 sensors can be automatically read per second.
DS1820 Connection Modes
The DS1820 (or DS18S20) sensor can be used in either of two modes:
•
Single-drop mode. Only one sensor is connected to a wire. This mode is used only to read the
sensor's address (you cannot read the address if there are multiple devices on the same line).
•
Multi-drop mode. Multiple sensors are connected to the same wire. This is the normal operating
mode.
On the Multifunction Expansion Board, analog input #1 functions as a multi-drop digital temperature sensor
interface. During normal operation, all of your sensors must be attached to this port. All of the eight
analog inputs can function as single-drop interfaces (although there's no point in using more than one).
Each sensor is uniquely identified by an 8-byte address. This is the key feature that makes the multi-drop
mode possible. However, to use this mode, you must know the sensor's address. It is not printed on the
part or it's package. Instead, you have to actually read it from the sensor. This is done in the single-drop
mode, as described in "Reading a sensor address".
Connections
The digital temperature sensors connect to the analog input port(s) on the expansion board. The sensor's
data wire connects to analog input 1. The expansion board can provide 5V power and ground for up to 64
sensors. Alternatively, you can power them from an external source (if you do this, you should connect the
power source's ground to the expansion board's ground). The DS1820/DS18S20 pins are shown below.
You can connect multiple sensors to this single wire (this is the typical multi-drop operating mode), like this:
NOTE: The total wiring length can affect performance of these sensors. Total lengths of up to 400 feet are
possible with good quality, unshielded cable. When choosing cable for very long runs, choose the lowest
possible capacitance per foot. Shielded cable has higher capacitance, and should be avoided. If you do
have shielded cable, leave the shield unconnected at each end to minimize capacitance.
230
Chapter 20 Expansion Boards
Software Configuration
To use these sensors, you must first enable a Multifunction Expansion Board with the Expansion Board
Configuration Screen. Once this is done, you can access the Digital Temperature Sensor Configuration
Screen (located under the "Configure" menu).
To add sensors, click the "Add Sensor" button. Each sensor is uniquely identified by an 8-byte address.
You have to enter each sensor's address in the sensor table. If you do not know the address, you can read it
from the sensor. Check the "Enable automatic sensor reading" option so the controller will automatically
read the sensors.
Reading A Sensor Address
To read a sensor's address:
1) Connect it to any of the eight analog inputs (no other sensors may be connected at the same time).
If you already have sensors connected to input 1, use one of the other seven inputs.
2) In the Digital Temperature Sensor Configuration Screen, select the single-drop mode.
3) Select the analog input # (1-8) the sensor is connected to.
4) Click "Read Address". If successful, the 8-byte address will be displayed. Otherwise, an error
message will be shown.
5) To add this sensor to the sensor table, click the "Add Sensor" button.
6) After reading the address, click "Paste Address" to copy it to the sensor selected in the table. This
saves you from having to type the numbers in manually.
7) You can also click "Read Temp" to read the current temperature.
After adding sensors in this manner, you must download the schedule for the changes to take affect.
NOTE: The sensors shown in the table must be present on the wires during normal operation. If not, an
error will occur (although this error will not affect the operation of the rest of the system, it’s not desirable.
Reading The Sensor From The PC
The configuration screen has controls that allow you to directly access the attached sensors. You should
note several things about how these work:
•
The "Check Device" button issues a "reset" pulse and looks for a "presence" pulse back from the
sensor. There is no way to tell if more than one device responds (you can only know that at least
one did). If this check fails, then the device is either not properly connected or not functioning.
•
The "Read Address" button is only active in the single-drop mode.
•
The "Read Temperature" button works differently depending on the mode:
-
In the multi-drop mode, it uses the sensor ID # you entered in the text box, looks up that
sensor's address in the controller memory, then reads that device's temperature. To work
properly, the schedule with this data must already have been downloaded into the controller
(entering it into the configuration table is not sufficient). If the address is incorrect, the
temperature cannot be read. The devices must be connected to analog input #1.
Chapter 20
-
Expansion Boards
231
In the single-drop mode, the controller does not use any sensor address. Instead, the
controller requests all connected devices to report their temperature (which is the reason
you can only have one connected). If more than one is connected, they will report at the
same time and the data will be corrupted.
Digital Temperature Sensor Commands
There is only one command you can include in your schedule related to digital temperature sensors. It is a
variable command (located under the "Variable" toolbar button), as described below:
Variable “XXX” = Value of Digital Temperature Sensor ##
This command puts the temperature of the digital temperature sensor specified by ## into variable
"XXX". This command is only available if you have a multifunction expansion board attached to the
controller.
This command does not actually read the temperature sensor. The controller automatically reads
each sensor on a periodic basis and stores the result. This command puts that stored temperature
into the variable. This approach maximizes speed, because if we were to read the sensor
immediately, it could interfere with all the other sensors, requiring the process to start over.
This is the only command related to the digital temperature sensors. To use a digital sensor, first
use this command to put the temperature value into a variable. Then, use any of the other variable
commands or conditions to work with the temperature value.
Note that the temperature value is stored in degrees Fahrenheit plus 50, as shown below:
Variable Value
0
50
100
150
200
255
Actual Temperature
-50
0
50
100
150
ERROR (See note)
Storing the temperature in this manner allows negative temperatures. You will need to subtract 50
from the variable value if you want to get the actual temperature.
NOTE: If there is an error during the temperature process, the value is set to 255. You can check for
this to detect errors, such as a broken or disconnected sensor, and ignore these readings.
Digital Temperature Sensor Conditions
There are no specific If-Then conditions for the digital temperature sensors. However, you can put the
temperature value into a variable, then use any of the variable conditions.
Port Numbering System
The large number of I/O ports available with the controller can be difficult to keep track of. To help, the
controller uses a numbering system to uniquely identify each digital I/O port. Each port has a unique letter as
shown in the table below. This port letter is used in the software as the default port name.
232
Chapter 20 Expansion Boards
If you have one IO-8O8I board, the opto-isolated inputs will be Port J and the relay outputs will be Port K.
Note that you do not have to have Multifunction Expansion Board #2, so ports G, H, and I may not exist in
your system.
Port
Letter
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
Located On
Main controller unit
Main controller unit
Main controller unit
Multifunction board #1
Multifunction board #1
Multifunction board #1
Multifunction board #2
Multifunction board #2
Multifunction board #2
IO-8O8I board #1
IO-8O8I board #1
IO-8O8I board #2
IO-8O8I board #2
IO-8O8I board #3
IO-8O8I board #3
IO-8O8I board #4
IO-8O8I board #4
Type
Description
Output
Input
Either
Input
Input
Input
Input
Input
Input
Input
Output
Input
Output
Input
Output
Input
Output
Relay driver outputs
+/-30V inputs
digital inputs or outputs
Port #1 (+/-30V inputs)
Port #2 (5V digital inputs)
Port #3 (5V digital inputs)
Port #1 (+/-30V inputs)
Port #2 (5V digital inputs)
Port #3 (5V digital inputs)
Opto-isolated inputs
Relays
Opto-isolated inputs
Relays
Opto-isolated inputs
Relays
Opto-isolated inputs
Relays
Chapter 21
Data Logging
233
CHAPTER 21: DATA LOGGING
Introduction
The controller can "log" data to memory and later transmit it over the serial interface. This capability is
summarized below:
•
The amount of space available for the data log depends on the size of your schedule actions and the
number of learned infrared signals. The total memory available for these three functions is
approximately 85,000 bytes. Any memory not used by your actions and IR signals can be used for
data logging, up to a maximum of 65,535 bytes. The status screen (located under the "Other" menu)
will show how much space is available for the data log.
•
The command "Write variable ## to data log" is used to write data into the log.
•
Any or all of the data log can be transmitted out in ASCII or binary format.
•
You can check the amount of free space in the log in an If-Then statement.
Data Logging Commands
The following data logging commands can be included in a schedule. They are entered in your schedule
from the actions entry screen by clicking the "Other" toolbar button, then selecting "Data Log" from the popup menu. They can also be issued to the controller over the serial interface. The format for sending
commands over the serial interface is described in a text file installed in the application directory.
Write Variable ## To Data Log
Writes the value of variable ## to the next spot in the data log, then advances the data log pointer to
the following location. If the data log is full, the data will not be written and error number 125 will
occur (this error will not affect the controller’s operation). To prevent this error, you can check that
there is space available in the log before performing this command.
Clear Data Log
Clears the entire data log by writing zeros to each byte. This command does not reset the data log
pointer.
Reset Data Log Pointer To Start Of Log
Resets the data log pointer to the first location in the data log (giving it a value of zero). You would
normally do this after reading the data log.
Transmit Data Log Pointer Value (Location)
Transmits the value of the data log pointer (ranging from 0 up to the size of the log). This value
indicates how many bytes have been logged. If the pointer is at the beginning of the log (meaning
no data has been logged), the pointer value will be zero. When the log is full, the pointer value will
equal the size of the log.
234
Chapter 21 Data Logging
Transmit Complete Data Log In ASCII Format
Transmits the entire data log contents out the serial port in ASCII format. “ASCII format” means
each byte is transmitted as two hex digits (ranging from 00H to FFh), followed by a blank space.
Data will be transmitted beginning with the first byte in the log and ending with the byte at the data
log pointer location. For example, if you have logged 10 bytes of data, the pointer will be at byte 10,
and this command will transmit bytes 1 through 10.
When entering this command in your schedule, you must specify the number of bytes to transmit in
each line of text. The controller will put a line feed and carriage return at the end of each line. For
example, if the data log contains 20 bytes and you command it to transmit 5 bytes per line, it will look
similar to this:
01
02
03
04
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
If the pointer points to the first byte in the log when this command is run (indicating no data has been
logged), no data will be transmitted. Therefore, you should transmit the data from the log before
using the “Reset Data Log Pointer” command.
Note that while the controller is transmitting this command, it will not be able to perform other
actions. This can take a while if there is a large amount of data in the log. For example, a full log
(65,535 bytes) transmitted in ASCII format (using 3 characters per byte) at 19,200 baud would
require approximately 100 seconds minimum. It may take longer if the computer cannot keep up
with the serial data and slows the controller down.
Transmit Complete Data Log In Binary Format
This command is similar to the previous command, except that each data log byte is transmitted as a
single binary value (ranging from 0d to 255d). No spaces are placed between the bytes. Also, there
is no carriage return or line feed at the end of the line. Thus, all the bytes are transmitted back-toback.
This mode is intended for use by a computer program that can read binary data. It will only take
one-third as long as the ASCII command. Note that if you view the transmission on a terminal
emulator screen, the data will likely be incorrect, as terminal emulators can’t display most binary
characters.
Transmit Partial Data Log In ASCII Format
Transmits only the specified data log contents out the serial port in ASCII format. “ASCII format”
means each byte is transmitted as two hex digits (ranging from 00H to FFh), followed by a blank
space.
When entering this command in your schedule, you must specify three parameters:
•
The byte number to begin transmitting from. This can range from 1 up to the size of the data
log (a maximum of 65,535).
•
The number of lines of data to transmit. This can range from 1 to 65,535.
•
The number of bytes to transmit in each line of text. The total number of data bytes
transmitted will be this figure multiplied by the number of bytes per line. The controller will
put a line feed and carriage return at the end of each line.
If you request data that extends beyond the end of the data log, the controller will transmit data from
the corresponding locations in RAM. This data will be meaningless, so it’s up to you to determine
the proper number of lines to transmit. You can do this by first reading the data log pointer, which
will indicate the number of bytes used in the data log.
Chapter 21
Data Logging
235
Transmit Partial Data Log In Binary Format
This command is similar to the previous command, except that each data log byte is transmitted as a
single binary value (ranging from 0d to 255d). No spaces are placed between the bytes. Also, there
is no carriage return or line feed at the end of the line. Thus, all the bytes are transmitted back-toback.
Data Logging Conditions
The data logging conditions described below can be checked by an If-Then or If-Then-Else statement. They
are entered in your schedule from the actions entry screen by clicking the "Other" toolbar button, then
selecting "Data Log" from the pop-up menu.
If <= ## Bytes Free In Data Log
True if less than or equal the specified number of bytes are free in the data log. “Free” means that
space is available to log more data. The condition value can range from 0 to 255. This command
can be used to tell if the data log is full or close to becoming full.
If >= ## Bytes Free In Data Log
True if greater than or equal the specified number of bytes are free in the data log. “Free” means
that space is available to log more data. The condition value can range from 0 to 255. You can use
this command to ensure there is sufficient space available before logging a set of data to it. If there
is insufficient space, you may want to report this is some fashion.
Using The Data Log
Writing To The Data Log
We recommend that you write to the data log in fixed “record” sizes. This will simplify reading and
interpreting the data from it. For example, assume you want to record four analog temperature sensor
values every 5 minutes. You can create a periodic event set to run every 5 minutes, and include these
commands in it:
Var #1 (Temporary
Write variable #1
Var #1 (Temporary
Write variable #1
Var #1 (Temporary
Write variable #1
Var #1 (Temporary
Write variable #1
Var #1 (Temporary
Write variable #1
Var #1 (Temporary
Write variable #1
Var #1 (Temporary
Write variable #1
Var #1 (Temporary
Write variable #1
Variable) = current month
(Temporary Variable) to data log
Variable) = current date of month
(Temporary Variable) to data log
Variable) = current hour
(Temporary Variable) to data log
Variable) = current minute
(Temporary Variable) to data log
Variable) = Analog input #1 (Temp.
(Temporary Variable) to data log
Variable) = Analog input #2 (Temp.
(Temporary Variable) to data log
Variable) = Analog input #3 (Temp.
(Temporary Variable) to data log
Variable) = Analog input #4 (Temp.
(Temporary Variable) to data log
Sensor 1)
Sensor 2)
Sensor 3)
Sensor 4)
The first eight commands write the current date and time to the log, and the second eight write the
temperature sensor values. When you want to read the data log, use this command:
236
Chapter 21 Data Logging
Transmit complete data log in ASCII format, using 8 bytes per line
Assuming there are six entries in the log (48 bytes total), the report would look similar to this:
05
05
05
05
05
05
0A
0A
0A
0A
0A
0A
08
08
08
08
08
08
00
05
0A
0F
14
19
30
30
30
31
31
31
31
31
32
32
32
32
32
32
33
33
32
33
31
32
30
31
32
33
By recording the same number of bytes to the log each time (in this case, 8 bytes), the data log report is
easy to interpret. In this example, the first column is the month (05 = May), the second is the date (0A hex
means the 10th), the third is the hour (8:00 AM), the fourth is the minute, and so on.
Reading From The Data Log
There are two general ways to get data out of the log:
1) Use a computer to command the controller to transmit the data.
2) Set up the controller to automatically transmit the data.
Requesting Data From A Computer
One convenient way to read and save the data log results is by logging the serial transmission to a file. You
can do this from a computer by following these steps:
1) From the main software screen, click the “Logging” button so it’s green. All serial transmissions from
the controller will now be written to a text file. The file will be named with today’s date, in this format:
yymmdd.log
where: yy = the last two digits of the year (00 - 99)
mm = two digits for the month (01 - 12)
dd = two digits for the date (01 - 31)
2) Command the controller to transmit the data log. It’s probably easiest to first write a macro with this
command in it:
Transmit complete data log in ASCII format, using 8 bytes per line
Then, you can use the macro control screen to issue the command. The screen may report that the
command failed; this is normal, as the large amount of serial data coming from the controller
confuses the software into thinking the command failed.
As an alternative to running a macro, you can issue the command directly to the controller from the
terminal emulator screen. The command to do this is:
,f030000000000
Refer to the serial protocol documentation for more details on sending serial commands to the
controller.
3) Open the terminal emulator screen to view the data being transmitted. The data may take a while to
transmit.
4) After the transmission is complete, disable the logging from the main screen.
Chapter 21
Data Logging
237
5) Open the text file. You may want to remove some of the extra serial data. If you entered a direct
serial command, you’ll see that command in the file. Immediately prior to the data you’ll also see “36
Cmd:” (which is the controller’s acknowledgment of the command) and following the data you’ll see
“Done” (indicating the command is complete).
Once the data is in a file, you may wish to import it into a spreadsheet program. The evenly aligned columns
of data make this quite easy.
Automatically Transmitting Data Log
Another approach is to have the controller automatically transmit the data log when it fills up or at a preset
time each day. We recommend using a scheduled event set for some time in the early morning. The
transmission can take a while, so it’s better to do it when nothing else is going on. For this to work, the
HomeVision software should be running and automatically writing the serial messages to a text file.
Chapter 22
Weather Data
239
CHAPTER 22: WEATHER DATA
Introduction
Page 3 of the video (TV) menu system accesses a weather screen. This screen can display a variety of
weather data, as shown in this example:
WEATHER CONDITIONS
NOW LO HI
Inside Temp
72 70 74
Outside Temp 77 68 82
Inside RH
65 60 70
Outside RH
85 79 100
Wind Speed
16
Wind Direct 340 NNW
Rain Today 0.58 Inches
Pressure
30.05
PRESS ANY KEY TO RETURN
This feature is intended primarily for use with the controller connected to a computer. Third-party computer
software may be able to collect weather data from weather instruments, the Internet, or other sources, and
then transmit it to the controller for display. The HomeVision PC software cannot currently do this, but may
at a future time. Creative users may also find ways to directly connect weather instruments to obtain this
data.
To activate this screen, select the "Controller Settings" screen under the "Configure" menu in the PC
software. Then select the "Other" tab and check the "Enable Weather Conditions Screen" option.
Weather Variables
The controller contains internal variables (called "system variables") to hold weather data. These variables
are in addition to the variables you can create and name yourself. Some of these variables are used for
displaying information on the weather screen. Other weather variables are not displayed, but can be used
for other purposes. In future versions, we will be adding more commands to take advantage of these other
weather variables.
Each weather variable is limited to the range of 0 to 255. This makes it tricky to hold negative numbers or
decimals. To get around this problem, different variables have different formats. Some variables have an
"offset" which must be added to or subtracted from the actual value. Other weather data requires two
variables to hold the complete information (such as one variable to hold the rainfall inches, and another to
hold the rainfall hundredths of inches).
Some of the weather variables have special values that determine how they are displayed on the weather
conditions video screen. For example, a relative humidity variable with a value of 255 is displayed as blank
spaces instead of a number. You can use this if you don't have a way to determine the actual relative
humidity. Set it to 255, and it won't appear on the weather screen. If you didn't do this, it might display an
incorrect number.
Before using these variables, you should carefully read the descriptions provided below. You will set these
variables using the weather data commands, described later.
240
Chapter 22 Weather Data
Temperature Variables
Six different temperatures can be tracked:
•
•
•
•
•
•
Current
Today's
Today's
Current
Today's
Today's
inside temperature
low inside temperature
high inside temperature
outside temperature
low outside temperature
high outside temperature
The temperatures can range from -99 to +154 degrees in 1-degree increments. Temperatures are stored as
the actual temperature plus 100. When using the weather conditions video screen, the controller
automatically subtracts 100, and then displays the result. This allows negative numbers to be displayed.
There are two exceptions to how the temperature is displayed:
1) The value of 0 is displayed as -99 degrees instead of -100. This is because the screen does not
have enough space for "-100".
2) A value of 255 is displayed as blank spaces instead of a number. This is so that temperatures that
aren't available can be left blank instead of displaying a meaningless number.
Here are some examples of how different variable values would be displayed:
VARIABLE VALUE
0
1
2
99
100
101
175
254
255
DISPLAYED VALUE
-99
-99
-98
-1
0
1
75
154
Relative Humidity Variables
Six different relative humidity values can be tracked:
•
•
•
•
•
•
Current
Today's
Today's
Current
Today's
Today's
inside relative humidity
low inside relative humidity
high inside relative humidity
outside relative humidity
low outside relative humidity
high outside relative humidity
Relative humidity’s can range from 0 to 100 in increments of 1%. A value of 255 is displayed as blank
spaces.
Barometric Pressure Variables
Both pressure and the direction of change can be stored:
•
•
•
Current barometric pressure - inches
Current barometric pressure - hundredths
Barometric Pressure Direction
The barometric pressure requires two variables for storage, one for the inches reading, and one for the
hundredths. Each variable can range from 0 to 99 in increments of 1. All other values are displayed as
blank spaces.
Chapter 22
Weather Data
241
The barometric pressure direction of change is stored as follows:
0 = steady
1 = falling
2 = rising
anything else = blank spaces are displayed
For example, to display a pressure of 29.75 inches and rising, set the weather variables as follows:
Current barometric pressure - inches = 29
Current barometric pressure - hundredths = 75
Barometric Pressure Direction = 2
Wind Variables
The controller can track wind direction and speed:
•
•
•
•
•
Wind direction digit 1
Wind direction digits 2-3
Current wind speed
Today's low wind speed
Today's high wind speed
Wind direction (in degrees from 0 to 359) requires two variables for storage. The first variable holds the first
digit, which can range from 0 to 3. The second variable holds the second and third digits, which can range
from 00 to 99. If the first variable is >3, then blanks will be displayed on the weather conditions TV screen.
Wind speed can range from 0 to 254 in increments of 1. A value of 255 is displayed as blank spaces.
For example, to set the current wind direction to due south (180 degrees) and the wind speed to 15, set the
weather variables as follows:
Wind direction digit 1 = 1
Wind direction digits 2-3 = 80
Current wind speed = 15
Rainfall Variables
Four different rainfall amounts can be tracked, with each requiring two weather variables for storage:
•
•
•
•
•
•
•
•
Today's rainfall - inches
Today's rainfall - hundredths
Rainfall this week - inches
Rainfall this week - hundredths
Rainfall this month - inches
Rainfall this month - hundredths
Rainfall this year - inches
Rainfall this year - hundredths
The "hundredths" values can range from 0 to 99. Only for the variable "Today’s rainfall - inches", a value of
>99 is displayed as blank spaces instead of the digits. The other rainfall "inches" amounts are not included
on the weather conditions screen and can range from 0 to 255 inches.
For example, to set today's rainfall to 1.29 inches, set the weather variables as follows:
Today's rainfall - inches = 1
Today's rainfall - hundredths
= 29
242
Chapter 22 Weather Data
Weather Data Commands
The following weather data commands can be included in a schedule. They are entered in your schedule
from the actions entry screen by clicking the "Other" toolbar button, then selecting "Weather Data" from the
pop-up menu. They can also be issued to the controller over the serial interface. The format for sending
commands over the serial interface is described in a text file installed in the application directory.
Weather Variable XXXXX = Variable ##
Sets the weather variable indicated by XXXXX to the value of variable ##. This is the primary
command to set a weather variable within your schedule. For example, you might read the indoor
temperature from a temperature sensor and store the result in one of your variables. Then, you
would set the indoor temperature weather variable to the value of your variable. When doing this,
you may need to adjust the variable value to match the format of the weather variable.
Variable ## = Weather Variable XXXXX
This command is the opposite of the prior command. It sets variable ## equal to the weather
variable indicated by XXXXX. This command can be used to extract values which were previously
stored in a weather variable.
Weather Variable XXXXX = Constant Value ##
Sets the weather variable indicated by XXXXX to the constant value ## (which can range from 0 to
255). This is the primary command to set a weather variable over the serial interface. For example,
a computer may be able to determine the temperature is 75 degrees. It would then send this
command over the serial interface to set the proper variable to 75 degrees.
Read Value Of Weather Variable XXXXX Over Serial Interface
This command can only be performed over the serial interface, and not within your schedule. It
transmits the value of the weather variable indicated by XXXXX over the serial interface
Chapter 23
Telephone
243
CHAPTER 23: TELEPHONE
Overview
There are two accessories that add telephone capabilities to HomeVision:
•
•
HomeVision-Phone/Serial
HomeVision-Phone/CID
These devices are summarized below. Refer to the documentation provided with them for more details.
HomeVision-Phone/Serial
This device adds phone interfacing capabilities and an extra serial port to HomeVision. It provides the
following features:
Phone capabilities:
•
•
•
•
•
•
•
Detects touchtone (DTMF) inputs from users to trigger any actions (X-10, infrared, macros,
thermostat, etc.)
User can input values into variables (for example, to set the temperature with the phone!)
Can transmit DTMF signals as notification to user or to dial out
Detects phone on-hook and off-hook conditions
Detects and counts phone rings
Can answer and hang up the phone
Works with phones inside and outside the house
Serial port capabilities:
•
•
•
•
•
•
•
RS-232 serial port (standard PC serial port)
Supports baud rates of 300, 600, 1200, 2400, 4800, 9600, and 19200
Uses standard communication settings of 8 data bits, 1 start bit, 1 stop bit, and no parity
Does not use flow control
Connects to HomeVision through provided ribbon cable
RS-232 connections through male DB9 connector
Your software can use this serial port just like the built-in HomeVision serial port (with a few
minor exceptions)
HomeVision-Phone/CID
This device adds phone interfacing and caller ID capabilities to HomeVision. The phone capabilities are the
same as HomeVision-Phone/Serial. It also detects caller ID information from the phone line for display on
TV. It does not provide an extra serial port.
Chapter 24
Security Systems
245
CHAPTER 24: SECURITY SYSTEMS
Overview
HomeVision can be used with the CADDX NetworX line of security systems. When used with a such a
system, HomeVision provides the following capabilities:
•
•
•
HomeVision can arm or disarm the system, switch between Home and Away modes, bypass zones,
turn the keypad chime mode on and off, and more.
HomeVision can track the status of the security system, detect alarm conditions, detect zone trouble
conditions, and more.
The Security System video screen can display system and zone status, and also allow users to
control the system with an infrared remote.
Installation And Setup
Follow the steps described below to install the system and configure it for use.
1) Install Security System
You must first install the security system; refer to the CADDX documentation for details. You must also
install an NX-584 device into the security system (note: some newer CADDX systems include a built-in serial
interface and do not require the NX-584). This provides the RS-232 serial interface that HomeVision
connects to. We strongly recommend you get the security system up and running before connecting it to
HomeVision. This will reduce the likelihood of problems and make troubleshooting much easier.
2) Configure Security System Communication Settings
The CADDX NX-584 provides a variety of configurable settings that control how it works. Several of these
must be properly set up before it can be used with HomeVision. The table below shows the required settings
and the NX-584 programming locations for each. Refer to the NX-584 Installation Manual for details on how
to program these. NX-584 parameters not shown in the table can be set to any value.
REQUIRED SETTING
NX-584 PROGRAMMING LOCATIONS
Set to ASCII mode
Set to 19200 baud
Disable transition messages
Enable zones snapshot request
Enable partitions snapshot request
Enable primary keypad function without PIN
Enable secondary keypad function
Enable zone bypass toggle
Set Location 0, Segment 1, Bit 1 ON
Location 1, Bit 5 ON
Set Location 2, both segments, all bits OFF (to zero)
Set Location 3, Segment 1, Bit 6 ON
Set Location 3, Segment 1, Bit 8 ON
Set Location 3, Segment 4, Bit 6 ON
Set Location 3, Segment 4, Bit 7 ON
Set Location 3, Segment 4, Bit 8 ON
In addition to the above settings, you must assign HomeVision a user number for the security system. It can
be the same user number as you or a family member, or it can be a separate user number for HomeVision.
The only requirement is that this user number be assigned arm/disarm authority to all partitions. Refer to the
security system installation manual (in the “Assigning Authority Level” section) for instructions on making
these settings.
246
Chapter 24 Security Systems
3) Connect Serial Port
The NX-584 can connect to the built-in HomeVision serial port, or to any of the optional add-on serial ports.
The add-on ports are provided by external HomeVision-Serial and HomeVision-Phone/Serial boards. The
built-on port is the one you use to download a schedule into HomeVision, and is normally connected to your
computer. If you want to use this built-in port for the security system, you will have to switch cables
whenever you need to connect HomeVision back to the PC. In addition, the Master Serial Report Mode will
be automatically disabled to prevent HomeVision event reporting messages from being sent to the security
system. To avoid these issues, we recommend you instead use one of the add-on ports for the security
system. This allows you to have HomeVision connected to the security system and the PC simultaneously.
Set up the serial port as follows:
1. If you’re using one of the add-on serial ports, set it up as described in its documentation.
2. Configure the HomeVision port for 19200-baud operation (you may choose another baud rate, but
the NX-584 must be set for the same rate, as described previously).
3. Connect the serial cable:
• When using the built-in HomeVision port, use a standard serial cable (just like the one that
comes with HomeVision). However, you shouldn’t connect the security system until you’ve
completed the other setup steps and downloaded your schedule into HomeVision.
• When using an add-on port, use either a “null modem” cable, or a standard cable with a null
modem adaptor. These are available from most electronics stores, such as Radio Shack.
NOTE: The NX-584 has four jumpers that can switch the functions of the serial port pins. The
cable types described in step 3 above are appropriate if you leave the NX-584 jumpers in their
default positions.
4) Configure HomeVision Software
Next, you should configure the HomeVision software. First, tell HomeVision about the security system you’re
using:
1. Open the Security System Configuration screen under the Configure menu.
2. In the “Security system type” box, select “CADDX NetworX RS-232".
3. In the “Number of zones” box, select the number of security system zones you have. There can be a
maximum of 64.
4. In the “Number of partitions” box, select the number of partitions in your security system. There can
be a maximum of eight, although most users have only one.
5. In the “Controller serial port” box, select the HomeVision serial port number the thermostats are
connected to.
6. In the “User number” box, enter the security system user number you’ve assigned to HomeVision (as
described previously).
7. For each zone, you can enter a descriptive name. This name will be used in your schedule and
displayed on the security system TV screen.
8. Click OK.
9. Open the Security TV Screen Configuration screen under the Advanced menu.
10. Check the “Enable video (TV) control screen” box if you want page 3 of the built-in video menu
system to access the security system control screens.
11. Click OK.
At this point, you can download your schedule into HomeVision if you like. You will then be able to use the
security system control screens on the TV menu system. Use these screens to verify HomeVision is
communicating with the security system properly. If the screen reports a communications error, here are
some things to try:
•
•
•
Remove power from the security system then reapply it.
Verify the serial cable is properly connected between HomeVision and the NX-584. Be sure you
have the correct cable type. This is a common problem when using serial devices.
Verify that the NX-584 parameters were set up properly. It’s quite easy to make a mistake, and that
may prevent HomeVision from communicating with it.
Chapter 24
•
Security Systems
247
If you’re using a HomeVision add-on serial port, verify it is working properly. One way to do this is to
disconnect the add-on port from the security system and connect it to another serial port on your PC
(using a null modem cable). Use the HomeVision software to open that serial port, then view the
Terminal Emulator screen. The HomeVision serial device should be sending out messages like
“0227042D58”. These are HomeVision messages requesting data from the security system. If you
don’t see these messages, then either the add-on serial port isn’t properly configured or connected,
or the security system settings in the HomeVision software are incorrect.
You will most likely want to add commands to your schedule to fully use the security system capabilities.
This is described in the following sections.
Security System Commands
The following security system commands can be used anywhere in your schedule.
Arm partitions ### in Home mode
This command arms the partition(s) specified by ### in the Home (Stay) mode. There will be separate
check boxes on the screen for each partition in your system. You can select any or all of the partitions to
arm.
Arm partitions ### in Away mode
This command arms the partition(s) specified by ### in the Away mode. There will be separate check
boxes on the screen for each partition in your system. You can select any or all of the partitions to arm.
Disarm (or silence) partitions ###
This command disarms the partition(s) specified by ###. There will be separate check boxes on the
screen for each partition in your system. You can select any or all of the partitions to disarm. If an alarm
is going off, this command will silence it.
Toggle zone ## bypass
This command toggles the bypassed state of zone number ##. If the zone is not currently bypassed, it
will become bypassed. If it is currently bypassed, it will become unbypassed.
Turn partitions ### chime mode on
This command turns on the chime mode for the partition(s) specified by ###. There will be separate
check boxes on the screen for each partition in your system. You can select any or all of the partitions to
turn on.
Turn partitions ### chime mode off
This command turns off the chime mode for the partition(s) specified by ###. There will be separate
check boxes on the screen for each partition in your system. You can select any or all of the partitions to
turn off.
Toggle partitions ### “instant” mode
This command toggles the “instant” mode for the partition(s) specified by ###. There will be separate
check boxes on the screen for each partition in your system. You can select any or all of the partitions to
control. If the partition instant mode is currently off, it will turn on. If it is currently on, it will turn off.
248
Chapter 24 Security Systems
Sound partitions ### fire panic
This command sounds the “fire panic” alarm for the partition(s) specified by ###. There will be separate
check boxes on the screen for each partition in your system. You can select any or all of the partitions to
sound.
Sound partitions ### medical panic
This command sounds the “medical panic” alarm for the partition(s) specified by ###. There will be
separate check boxes on the screen for each partition in your system. You can select any or all of the
partitions to sound.
Sound partitions ### police panic
This command sounds the “police panic” alarm for the partition(s) specified by ###. There will be
separate check boxes on the screen for each partition in your system. You can select any or all of the
partitions to sound.
Request all partitions status
This command causes HomeVision to request the status of all partitions from the security system. This
command is normally not needed, as HomeVision will request status periodically. This command is
provided mainly for possible future use with other security systems.
Request zones 1-16 status
This command causes HomeVision to request the status of zones 1 through 16 from the security system.
This command is normally not needed, as HomeVision will request status periodically. This command is
provided mainly for possible future use with other security systems.
Request zones 17-32 status
This command causes HomeVision to request the status of zones 17 through 32 from the security
system. This command is normally not needed, as HomeVision will request status periodically. This
command is provided mainly for possible future use with other security systems.
Request zones 33-48 status
This command causes HomeVision to request the status of zones 33 through 48 from the security
system. This command is normally not needed, as HomeVision will request status periodically. This
command is provided mainly for possible future use with other security systems.
Request zones 48-64 status
This command causes HomeVision to request the status of zones 49 through 64 from the security
system. This command is normally not needed, as HomeVision will request status periodically. This
command is provided mainly for possible future use with other security systems.
Security System Events
Several types of “events” are associated with security systems. Your schedule can determine when one of
these events occurs and take any action you desire. The events are:
•
•
•
A partition is armed by a user
A partition is disarmed by a user
A partition alarm occurs
To detect when one of these events occurs and perform actions, use the Security System Event screen
under the Objects/Events menu. This event will run whenever any of the security system events occur,
performing the actions you’ve specified. To determine which event occurred, use an If-Then statement with
Chapter 24
Security Systems
249
the event as the condition. For example, to do something whenever a partition 1 alarm occurs, enter this in
the Security System Event:
If
EVENT: Partition 1 alarms occurs
Then
DO WHATEVER YOU WANT
End If
The events you can check for in an If-Then statement are described in detail below. These events can only
be used inside the Security System Event.
EVENT: Partition ## becomes manually armed
This event occurs once, and only once, each time the specified partition is manually armed. It does not
occur when HomeVision arms the system, but only when a user arms it from a keypad. This event can
be used in an If-Then condition, allowing you to perform actions whenever the partition gets armed
manually. This If-Then condition can only be used in the "Security System Event" actions section (if you
need to know elsewhere in your schedule whether the partition is currently armed, use the "Partition ## is
armed" condition).
When the specified partition is manually armed, the Security System Event will run once, and this
condition will be true. After the Security System Event is finished running, this condition will be false.
This ensures that the condition is true only once for each arming.
EVENT: Partition ## becomes manually disarmed"
This event occurs once, and only once, each time the specified partition is manually disarmed. It does
not occur when HomeVision disarms the system, but only when a user disarms it from a keypad. This
event can be used in an If-Then condition, allowing you to perform actions whenever the partition gets
disarmed manually. This If-Then condition can only be used in the "Security System Event" actions
section (if you need to know elsewhere in your schedule whether the partition is currently disarmed, use
the "Partition ## is disarmed" condition).
When the specified partition is manually disarmed, the Security System Event will run once, and this
condition will be true. After the Security System Event is finished running, this condition will be false.
This ensures that the condition is true only once for each disarming.
EVENT: Partition ## alarms occurs
This event occurs once, and only once, each time an alarm occurs for the specified partition. This event
can be used in an If-Then condition, allowing you to perform actions whenever an alarm occurs. This IfThen condition can only be used in the "Security System Event" actions section (if you need to know
elsewhere in your schedule whether an alarm is currently occurring, use the "Partition ## has alarm
condition" condition).
When a partition alarm occurs, the Security System Event will run once, and this condition will be true.
After the Security System Event is finished running, this condition will be false. This ensures that the
condition is true only once for each alarm.
Security System Conditions
The following security system conditions can be checked in an If-Then statement anywhere in your schedule
(they are not limited to use in the Security System Event, like the security system events are).
250
Chapter 24 Security Systems
Partition ## is disarmed
This condition is true if the specified partition is currently disarmed.
Partition ## is armed in Home mode
This condition is true if the specified partition is currently armed in the Home (Stay) mode. It will be false
if armed in the Away mode or disarmed.
Partition ## is armed in Away mode
This condition is true if the specified partition is currently armed in the Away mode. It will be false if
armed in the Home (Stay) mode or disarmed.
Partition ## is armed (in Home or Away mode)
This condition is true if the specified partition is currently armed (regardless of whether it’s in the Home
(Stay) or Away mode). It will be false if disarmed.
Partition ## is ready to arm
This condition is true if the specified partition is currently ready to arm.
Partition ## is not ready to arm
This condition is true if the specified partition is currently not ready to arm.
Partition ## has alarm condition
This condition is true if the specified partition currently has an alarm condition.
Partition ## has no alarm condition
This condition is true if the specified partition currently does not have an alarm condition.
Partition ## chime mode is on
This condition is true if the specified partition’s chime mode is currently on.
Partition ## chime mode is off
This condition is true if the specified partition’s chime mode is currently off.
Zone ## is faulted
This condition is true if the specified zone is currently faulted.
Zone ## is not faulted
This condition is true if the specified zone is not currently faulted.
Zone ## is bypassed
This condition is true if the specified zone is currently bypassed.
Zone ## is not bypassed
This condition is true if the specified zone is not currently bypassed.
Chapter 24
Security Systems
251
Zone ## is in trouble condition
This condition is true if the specified zone is currently in a “trouble” condition.
Zone ## is not in trouble condition
This condition is true if the specified zone is not currently in a “trouble” condition.
Zone ## has alarm in memory
This condition is true if the specified zone has an alarm stored in its memory (i.e., this zone is currently or
was previously in an alarm condition).
Zone ## does not have alarm in memory
This condition is true if the specified zone does not have an alarm stored in its memory.
Any zone is faulted
This condition is true if any of the system zones are currently faulted.
Any zone is bypassed
This condition is true if any of the system zones are currently bypassed.
Any zone is in trouble condition
This condition is true if any of the system zones are currently in a “trouble” condition.
Any zone has an alarm in memory
This condition is true if any of the system zones currently have an alarm stored in memory.
Security system communications is OK
This condition is true if communications between HomeVision and the security system are OK.
Security system communications error
This condition is true if there is currently a communications problem between HomeVision and the
security system.
Chapter 25
Web Server
253
CHAPTER 25: INTERNET ACCESS
Introduction
HomeVision provides three different means of Internet access:
1. HomeVision Internet Control Group. This is a group of software programs and components that
allows you to access HomeVision over the Internet. This was our first approach to Internet access. It
was never officially released, but is available in a beta version for your use. Most users, however, will
prefer the HomeVision web server described below. No further development work is planned for the
Internet Control Group software.
For more details on it, see out web page at
http://www.csi3.com/HV_web.htm.
2. HomeVision Web Server. HomeVision contains a built in web server. This allows web browsers to
control HomeVision.
3. Remote Internet Access. HomeVision contains a “Remote Internet Access” capability. This allows
a copy of the HomeVision software running on one PC (the “client” PC) to control a HomeVision unit
connected to another PC (the “server” PC). Basically, the client PC can control the remotely-located
HomeVision unit as if it was directly connected to the client PC.
Web Server
Overview
The HomeVision Web Server provides several capabilities:
•
•
•
•
Turns your computer into a web server that serves files to web browsers.
Can be accessed by any web browser. The browser can be on the same PC as HomeVision, on
another PC on a network within your home, or anywhere in the world (if you have an Internet
connection to your home PC).
Can automatically create web pages showing HomeVision status.
Can insert HomeVision status and control objects into custom web pages you create.
The HomeVision installation program will create a directory named “HTML” in the HomeVision application
directory and will place several HTML files in it. These files can be used for displaying a wide variety of
HomeVision status and control web pages. They contain standard HTML codes, plus some HomeVisionunique “tags”. You don’t have to do anything special to use these web pages. However, if you want to, you
can modify them to change the web pages’ appearance. You can also create as many new pages as you
like. You do this by changing the HTML and/or embedding HomeVision-unique tags in the pages. You must
be familiar with HTML before attempting this.
After installation, you need to configure the HomeVision web server built into the HomeVision software. This
is done with the Web Server Configuration Screen under the Configure menu. After this, you can open any
web browser and enter the web address (URL) for your PC. The web address will contain the IP address of
the PC, the web server port number, and the file name to display. Depending on the file name, the web
server will send a file back to the browser for display. There are several types of files you can access. Some
files will be sent to the browser exactly as is. Other files will be read by the web server, which will replace
custom tags with HomeVision status information and send the resulting file to the browser. You can then use
control buttons on the web page to send commands back to the HomeVision web server. These commands
can control the software (for example, tell it to open a HomeVision schedule file) or the HomeVision controller
(for example, tell it to transmit an X-10 signal).
254
Chapter 25 Web Server
Configuration
After installing the HomeVision software, configure the web server. Use the Web Server Configuration
Screen under the Configure menu. Under the “Configure” tab, set the following items:
Port Number
You must tell the software what port number you want it to use on your computer. It defaults to using
port 1033, which will work in most situations. You will normally never need to change this. However,
you may need to if the server fails to start when using the chosen port. You can set it to any number
between 0 and 32,000, although numbers above 1024 are recommended.
Automatically run server at startup
Check this if you want the web server to start running each time the HomeVision software starts.
Regardless of whether you enable this, you can start and stop the server manually from the Web
Server Configuration Screen.
Report results of server commands
When checked, the web server will report back to the browser the results of the command received
from the browser. The result message will appear in the main browser frame. You will then have to
click “Back” to get back to the previous page (unless you use the approach described below to
automatically return). When unchecked, no message will be sent back to the browser, and the
browser will continue to display the last page (this saves you from having to press the “Back” button,
but it might not be clear whether the command was performed properly or not).
If you enable this option, there is a way to automatically return to the page that issued the command.
To do this, edit the file “HVCommandStatusFormat.htm” using a text editor. Between the <HTML>
and <BODY> tags in the file, insert the following text:
<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=AUTORETURN">
</HEAD>
The start of the file will then look like this:
<HTML>
<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=AUTORETURN">
</HEAD>
<BODY BGCOLOR="#F8FBFF" text="#000000" link="#004080" vlink="#004080">
The number 5 specifies that the browser should automatically return to the previous page after 5
seconds. You can change this to any number you like. If you do not wish to automatically return to
the previous page, you can either delete the text between the <HEAD> and </HEAD> tags, or delete
the text “AUTORETURN”.
Create Log File
Check this if you want the web server to create a log file of its activity. This will be a text file in the
HTML directory named in the format “WebLogXX.txt”. “XX” represents the date of the month.
Require password
Check this box if you want to require a user name and password when accessing the server. If your
PC is connected to the Internet, we recommend you enable this to minimize the chance of
unauthorized users accessing your system. If this option isn’t enabled, users have complete access
to the server (and HomeVision) without entering a user name or password. You might disable this if
you’re using the server on a local area network within your home, or only on the same PC as the
Chapter 25
Web Server
255
server, where you’re not worried about unauthorized use. When the password option is enabled and
you first access a web page, you will be requested to enter your user name and password. After that,
you don’t have to reenter it unless you wait more than five minutes between accesses (in which case
you will have to reenter it).
User name and password
If you require a password, you will need to enter the user name and password.
Using The Web Pages With A Browser
In order to access the web pages, the HomeVision software must be running and the web server started. If
the server is not running, you will not be able to access it remotely. The schedule file loaded in the controller
should also be opened in the PC software. If not, the server will not properly display the object names and
status.
Once the server is running, you can access the main HomeVision web page by opening this URL in your
browser:
HTTP://IPAddress:PortNumber/HVWebPage.htm
Replace “IPAddress” with the IP address of the computer that HomeVision is running on. If you’re running the
browser on the same PC as HomeVision (which you’ll probably do when first testing it), use the IP address
“127.0.0.1”. “127.0.0.1” has special meaning, and tells the browser to use the local PC. If the browser is on a
different PC, you’ll need to determine the HomeVision PC’s IP address. Replace “PortNumber” with the port
number you assigned to the server (using the Web Server Configuration Screen). 1033 is the default web
server port number. Here’s an example:
HTTP://127.0.0.1:1033/HVWebPage.htm
After the web address is the file name to open. “HVWebPage.htm” is a file installed in the HomeVision HTML
directory, and is the starting point to access the HomeVision web page. This page defines the framework of
the main HomeVision Internet web page. It makes extensive use of HTML “frames” to display the information.
It displays the HTML page “HVTop.htm” in the top frame (named “top-frame”) and the HTML page
“HVIndex.htm” in the left frame (named “index-frame”). Both “HVTop.htm” and “HVIndex.htm” are files
installed in the HomeVision HTML directory. “HVTop.htm” displays a small title bar across the top of the
window. “HVIndex.htm” displays a menu that you can select from, which determines what is displayed in the
main frame. You can edit any of these three pages to change the appearance or functionality of the web
page. If you do, make backup copies of each file in case you run into problems and need to return to the
original versions.
The “HVWebPage.htm” page also contains a frame named “main-frame”. This is the largest frame and is
where all the HomeVision status information and control buttons are located. “HVIndex.htm” contains links
that determine what information to display in the main frame. For example, if you study the “HVIndex.htm”
file, you’ll see links such as:
<A REF HVTableFlag.htm target=“main-frame”>Flags</A>
These HTML tags tell the browser to display the specified file (HVTableFlag.htm, for example) in the frame
named “main-frame”. The HTML files, such as HVTableFlag.htm and HVTableVar.htm, do not exist in the
HomeVision HTML directory. Instead, the HomeVision software will create them on the fly. The software will
use the information in the currently-opened schedule to display the specified information. The information is
generally presented in a table with one line used for each object. For example, if you have 20 flags defined,
the table will list the 20 flags by name. It will also contain fields to display the flag status and control buttons
to change them. The basic format for these pages is specified in the HTML file named “HVMainFormat.htm”.
If you read this file, you’ll see the text “InsertStatusHere” in the middle of some standard HTML code. The
HomeVision software will replace this with the table containing the desired data. You can edit this file to
256
Chapter 25 Web Server
change how the page is displayed (for example, you can change the background color, add text and graphics,
etc.).
Note: If you want the password option enabled to restrict outside access, but also want to access the server
from within your home without entering your name and password, you can. You do this by enabling the
password option, then from within your home you include your password in the URL to access the page. In
the browser window, include at the end of the URL the following:
?ACCESS=password
Replace “password” with your password. For example, if your password is “abcde” and you want to access
the web page named “HVTableStatus.htm”, the complete URL would look like this:
HTTP://127.0.0.1:1033/HVTableStatus.htm?access=abcde
Note that URLs contained in web page links must also have this text added (otherwise, when you click on a
link, you will have to manually enter your name and password when requested). For example, the default
web page “HVWebPage.htm” includes a frame whose source file is “HVTableStatus.htm“. You should
change it to “HVTableStatus.htm?access=abcde“. That way, when you open “HVWebPage.htm” and the
server requests the file “HVTableStatus.htm” to fill in the main frame, the password will be sent to the server
and you won’t have to enter it manually.
You should add the text “?access=abcde” at the end of all links within your web pages. If you’re using the
default web pages installed in your HomeVision HTML directory, the two files you need to edit are
“HVWebPage.htm” and “HVIndex.htm”. It would be best if you created two new pages, perhaps named
“HVWebPageNoPassword.htm” and “HVIndexNoPassword.htm”.
Those pages would have the
“?access=abcde” embedded in all the links. You could then access these pages from within your home
without having to enter your password. From outside your home, you would access the regular web pages.
The only risk with this is that is someone happened to access one of the pages with the “?access=abcde”
embedded in it, they could read it and find your password. However, they won’t be able to access the page in
the first place unless they know your password, so this isn’t a real issue.
Object Status Information
Most of the web pages can display status (such as flag states, variable values, etc.). In most cases, you will
need to click the “Read status now” button to tell the server to read the status. The next time you display the
web page, the new status will be shown. There is one exception to the need to click the “Read status now”
button: If you have the “auto-report” feature enabled, some objects will report their status to the PC
automatically. See the next section for details.
Auto-Report Feature
The "Auto Report" feature allows the controller to automatically report state changes to the PC. It can
automatically report changes of X-10 addresses, input ports, output ports, flags, variables, analog inputs, and
digital temperature sensors. To use the auto report feature, you must first enable it. This is done with the
Controller Settings screen under the Configure menu, using the PC Communications tab. You can
individually enable or disable reporting of each object type. You must download the schedule for any
changes to take affect.
You should note several things about how this auto report mode works:
•
The controller will report whenever an object changes state, regardless of what caused the change.
For example, changes in any of the following ways will be reported:
-
The controller receives an X-10 signal such as A-1 ON or B-All Lights Off
A command in the schedule causes the controller to send an X-10 signal
The user transmits an X-10 signal using the PC software's X-10 control screen or the TV
screen
Chapter 25
-
Web Server
257
The user changes a flag or variable using the PC software's flag and variable control screen
or the TV screen
An input port changes
•
When an object changes state, the new states of all objects of the same type are reported in a single
message. For example, if you have 20 flags in your schedule, and one of the flags changes state, the
serial message will show the new state of all 20 flags.
•
The controller will sometimes send a report even if no object changed state. This can occur when a
command in your schedule is performed, but the object is already in the commanded state. For
example, if a flag is currently SET, and your schedule performs a command to SET it, the flag doesn't
change state. However, the controller will still send an auto report. In general, the controller sends a
report if a command to change an object's state is performed, regardless of whether the object
actually changes state. This normally doesn't pose any problem, but just means some unnecessary
messages may be sent. However, this will be a problem if your schedule performs such commands
repeatedly, such as in a periodic event running every loop (discussed next).
•
Your schedule should not perform certain commands repeatedly, or else serial messages will be
transmitted continuously (which could slow down both the controller and the PC software). This
problem mainly occurs in a periodic event running every loop. For example, if a periodic event has a
command to SET a flag, and it does so every loop, you'll get a new message every loop. The same
thing will happen if you have a variable that increments every loop. This situation is easy to observe,
as you simply have to open the terminal emulator screen and you'll serial messages filling the screen.
It's OK to use periodic events running every loop, but the actions should be inside an If-Then
statement. Assuming the If-Then statement is only true occasionally (and not continually), you won't
get repeated messages.
If you decide to enable this feature, after doing so, we recommend you open the Terminal Emulator screen.
You can then view any messages coming from the controller. The auto-report messages will look something
like this:
FLAGUPDATE:009001110100
X10HCUPDATE:[email protected]
If you see messages repeatedly, you probably have a periodic event repeatedly performing the same action.
You may want to modify the event or disable reporting of that object type to prevent the continuous messages
from slowing down performance.
Customizing The Web Pages
HomeVision is pre-configured to display a variety of web pages for HomeVision status and control. However,
you can also customize them if you like. There are several ways to do this, listed below in order of increasing
difficulty (and flexibility).
1. Edit the files “HVWebPage.htm”, “HVIndex.htm”, “HVTop.htm”, “HVFiles.htm”, “HVComm.htm”,
“HVMainFormat.htm”, or “HVBlank.htm”. You can change the page layout, color schemes, displayed
text, link titles. You can add graphics or fancier menus using JavaScript or VBScript.
2. Create your own status pages for objects (flags, variables, X-10, etc.) using the built-in object tables.
You can then display these pages in the main frame instead of displaying the automatically-generated
pages. This would allow you to change the table color, display multiple tables on a page, etc. You
don’t have to create the table that displays the information, but can instead include a tag in your page
that tells HomeVision to generate the table and insert it. For example, the tag:
<HV:Table Flag #0099FF|#FFFFDD|#FFFFCC>
tells the software to generate the flag status table. It will use a heading background color of #0099FF
(medium blue) and alternating table row colors of #FFFFDD (light yellow) and #FFFFCC (a slightly
darker yellow).
258
Chapter 25 Web Server
3. Create your own status pages for objects (flags, variables, X-10, etc.) without using the built-in object
tables. This gives you the same capabilities as the previous option, but allows you to display the
object information in any way you like. For example, you could:
•
•
•
•
Create a table containing only the flags you want to display (omitting unwanted flags).
Use images to display the status of each flag.
Use the flag status in JavaScript or VBScript functions.
Create an “image map” (which could show the floor plan of your home) that you can click on
to send X-10 commands.
To display status information, you will include tags such as this in your HTML file:
<HV:X10 A1 state level%>
<HV:Var 23>
<HV:Flag 4 Home|Away|Unknown>
To send a command from the web page, you will include “forms” in your HTML page and “post” them
to the HomeVision server. Here’s an example that displays a button that, when clicked, will send the
X-10 signal A1 Off:
<form method=“POST”>
<input type=“submit” name=“X10 A1 Off” value=“Turn light off”>
</form>
These methods are detailed in the following sections.
Displaying Complete Web Pages
There are a variety of web pages that you can view simply by opening them. You access them just as you
would a regular web page. There are two ways to do this:
1. By typing the complete address and page name in the browser URL line, like this:
HTTP://127.0.0.1:1033/HVTableX10.htm
2. By putting the file name in a web page using an “address” tag, like this:
<A HREF="HVTableX10.htm">Display Variable Table</A>
You can then click on this link to open the desired page.
The following table describes the standard pages, giving their name and the file used to format the page:
Chapter 25
PAGE DESCRIPTION
General status (clock time, schedule name,
etc.)
X10 addresses (will only display X10
addresses for which you checked the “Load
Name” field in the HomeVision software)
Macros
Input ports
Output ports
Analog inputs
Digital temperature sensors
Flags
Variables
Timers
Scheduled events
Periodic events
Infrared signals
HVAC system
Security system
Event log
Schedule file access
Serial communications
Main HomeVision web page (framework for
displaying other pages)
Heading displayed at top of main
HomeVision page
Index (table of contents) displayed along left
side of main HomeVision page
Blank page used by HVWebPage.htm to
display blank areas
Page used to report status of commands
sent to the server from the browser
PAGE NAME
Web Server
259
FORMAT BASED ON
HVTableStatus.htm
HVMainFormat.htm *
HVTableX10.htm
HVMainFormat.htm *
HVTableMacro.htm
HVTableInput.htm
HVTableOutput.htm
HVTableAnalog.htm
HVTableDTS.htm
HVTableFlag.htm
HVTableVar.htm
HVTableTimer.htm
HVTableSE.htm
HVTablePE.htm
HVTableIR.htm
HVTableHVAC.htm
HVTableSecurity.htm
HVTableEventLog.htm
HVFiles.htm
HVComm.htm
HVWebPage.htm
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVMainFormat.htm *
HVFiles.htm file **
HVComm.htm file **
HVWebPage.htm **
HVTop.htm
HVTop.htm **
HVIndex.htm
HVIndex.htm **
HVBlank.htm
HVBlank.htm **
HVCommandStatusFormat.htm
HVCommandStatusFormat.htm
***
Notes:
* The format for these pages is based on the file named “HVMainFormat.htm”. The web server will
read this file and replace the text “InsertStatusHere” with a table containing the desired information.
You can edit this file to change the overall format (if you do this, be sure to include the text
“InsertStatusHere” somewhere in it so the server knows where to insert the status table).
**
The format for these pages is based on the indicated file. The web server will read these files and
send them to the browser exactly as-is. You can edit these files in any way you like.
*** The format for this page is based on the file named “HVCommandStatusFormat.htm”. The web
server will read this file and replace the text “InsertStatusHere” with the status (result) of the
command sent to the server. You can edit this file to change the overall format (if you do this, be sure
to include the text “InsertStatusHere” somewhere in it so the server knows where to insert the status).
260
Chapter 25 Web Server
Using Tags That Return Values
You can also embed custom tags in your HTML page. When you request a page from the HomeVision
server, the server will scan the page looking for any custom tags. The server will then replace the tag with the
data specified by the tag. When the entire page has been scanned and converted, the resulting page will be
sent to the browser for display. Thus, the custom tags won’t appear in the page that’s sent to the browser;
the browser only sees the final page that results.
The tags can be divided into two groups:
1. Tags that return individual values, such as the value of a variable or the name of the schedule file
currently running in the HomeVision controller.
2. Tags that return an entire HTML table, such as a table displaying all the HomeVision macros or
scheduled events.
These tags are described in the following sections.
Tags That Return Individual Values
You can place these tags in your web page to display status information from HomeVision. For example, you
can display such things as:
•
•
•
•
The value of a variable
The state of an X-10 device
The state of an input port
The HomeVision controller’s clock time and date
The web server scans the HTML file for these custom tags and replaces them with the appropriate text. The
allowable tags are shown in the following table, along with examples. The commands are not case-sensitive.
Chapter 25
RETURNED
TEXT
X-10 device
state
Variable value
Flag state
Timer value
Input port
state
Output port
state
Analog input
value
Digital temp
sensor
TAG FORMAT
EXAMPLES
TAG
<HV:X10 # STATE LEVEL LEVEL%> where:
# is X-10 address (house code and unit code).
STATE means to display state as “On” or “Off”.
LEVEL means to display level as a number (0 to 100).
LEVEL% means to display level as a % (0% to 100%).
<HV:Var #> where:
# is variable ID # in decimal format (0-255).
<HV:Flag # SET|CLEAR|NEUTRAL> where:
# is flag ID # in decimal format (0-255).
SET is the text to display if flag is set.
CLEAR is the text to display if flag is clear.
NEUTRAL is the text to display if flag is neutral.
<HV:Timer # STATEHMSC>
# is timer ID # in decimal format (0-255).
STATEHMSC indicates which values to display:
STATE = either ‘Running’, ‘Halted’, or ‘Ringing’
H = hour value
M = minute value
S = second value
C = centisecond (hundredths) value
<HV:Input # HIGH|LOW> where:
# is input port ID # in decimal format (0-255).
HIGH is the text to display if input is high.
LOW is the text to display if input is low.
<HV:Output # HIGH|LOW> where:
# is output port ID # in decimal format (0-255).
HIGH is the text to display if output is high.
LOW is the text to display if output is low.
<HV:Analog #> where:
# is analog input ID # in decimal format (0-15).
<HV:DigitalSensor #> where:
# is digital temp sensor ID # in decimal format (0-63).
NOTES:
• 50 will be subtracted from the value so the actual
temperature is displayed.
• If the value is 255, “ERROR” will be displayed.
Web Server
DISPLAYED AS
<HV:X10 A1 STATE>
<HV:X10 D16 level>
<HV:x-10 P10 state level%>
On
50
On 75%
<HV:Var 0>
<HV:VAR 23>
<HV:Flag 4 Home|Away|Error>
<HV:flag 12 Door open|Door closed>
<HV:Flag 6 Home|Away|Error>
16
154
Home
Door closed
Error
<HV:Timer 0 STATEHMSC>
<HV:TIMER 3 MSC>
<HV:Timer 23 HM>
<HV:timer 223 STATE>
Running 1:12:55.98
4:32.65
3:17
Ringing
<HV:INPUT 12 ARMED|Disarmed>
<HV:input 1 Door open|Door closed>
ARMED
Door closed
<HV:Output 16 On|Off>
<HV:Output 1 Open|Closed>
On
Closed
<HV:Analog 0>
<HV:Analog 7>
<HV:DigitalSensor 0>
<HV:DigitalSensor 1>
219
50
75
“ERROR”
261
262
Chapter 25 Web Server
RETURNED
TEXT
Scheduled
event time
Periodic event
rate
HVAC zone
control mode
HVAC zone
system mode
HVAC zone
fan mode
HVAC zone
setpoint
HVAC zone
temperature
Security
partition status
Security zone
status
HomeVision
clock date and
time
Name of file
loaded in
controller
Date and time
of file loaded
in controller
HomeVision
status
Selftest results
TAG FORMAT
EXAMPLES
TAG
DISPLAYED AS
<HV:SE #> where:
# is scheduled event ID # in decimal format (0-255).
<HV:PE #> where:
# is periodic event ID # in decimal format (0-255).
<HV:HVAC # ControlMode> where:
# is the zone # in decimal format (0-15).
<HV:HVAC # SystemMode> where:
# is the zone # in decimal format (0-15).
<HV:HVAC # FanMode> where:
# is the zone # in decimal format (0-15).
<HV:HVAC # Setpoint> where:
# is the zone # in decimal format (0-15).
<HV:HVAC # Temperature> where:
# is the zone # in decimal format (0-15).
<HV:SecPartition # Status> where:
# is the partition # in decimal format (0-7).
<HV:SecZone # Status> where:
# is the zone # in decimal format (0-63).
<HV:HVDateTime>
<HV:LoadedFileName>
<HV:LoadedFileName>
<HV:LoadedFileDateTime>
<HV:LoadedFileDateTime>
5 Jul 2000 at 1:11:00 PM
<HV:RunningHalted>
<HV:RunningHalted>
Running
NOTES: Indicates whether the controller is running or halted.
<HV:SelftestResults>
<HV:SelftestResults>
Passed
NOTES: Indicates the results of the self-test that runs when
power is applied to controller.
<HV:SE 12>
6:45 PM
<HV:PE 12>
5 minutes
<HV:HVAC 0 ControlMode>
Run
<HV:HVAC 0 SystemMode>
Hold
<HV:HVAC 1 FanMode>
Auto
<HV:HVAC 3 Setpoint>
75
<HV:HVAC 3 Temperature>
76
<HV:SecPartition 0 Status>
Armed (home)
<HV:SecZone 13 Status>
OK
<HV:HVDateTime>
5 Jul 2000 at 1:11:21 PM
Chapter 25
RETURNED
TEXT
X-10 interface
status
HomeVision
error number
PROM version
PROM
checksum
PC clock date
and time
File name
open in
HomeVision
software
PC serial port
#
PC serial port
baud rate
PC serial port
status
TAG FORMAT
Web Server
EXAMPLES
TAG
DISPLAYED AS
<HV:X10Status>
<HV:X10Status>
Error
NOTES: Indicates whether the X-10 interface device (TW523 or PSC-05) is connected and running OK.
<HV:ErrorNumber>
<HV:ErrorNumber>
No error
NOTES: Indicates the number of the latest error (if any) that
has occurred in the controller.
<HV:PromVersion>
<HV:PromChecksum>
<HV:PromVersion>
<HV:PromChecksum>
2.70
A5h
<HV:PCDateTime>
<HV:PCDateTime>
5 Jul 2000 at 1:11:21 PM
<HV:OpenedFileName>
<HV:OpenedFileName>
Example.haf
<HV:ComPort>
<HV:ComPort>
1
<HV:ComBaud>
<HV:ComBaud>
19200
<HV:ComStatus>
<HV:ComStatus>
Opened
263
264
Chapter 25 Web Server
Tags That Return Complete HTML Tables
The HomeVision web pages that are automatically generated use tables to display information for the
HomeVision object types. There are tables for flags, variables, timers, input ports, infrared signals, and so
forth. The tables have a heading row followed by one row for each object. The tables are generated with
embedded tags for displaying the status of the objects. Before the web page is sent to the browser, the
server replaces these tags with the current status of the object. In addition, most tables contain buttons to
control the object (for example, the macro table has buttons to run each macro, and the X-10 table has
buttons to send on and off commands to each X-10 address). The resulting table displays the object status
information and gives the user a way to control them from the web page.
You can include these tables in your custom web page using a single HTML tag. All the tags follow a similar
format:
<HV:TABLE TableName HeadColor|EvenRowColor|OddRowColor>
Where:
• TableName is the name of the table to display.
• HeadColor is the background color of the heading row (for example, #0099FF is medium blue).
• EvenRowColor is the background color for the even numbered table rows (for example,
#FFFFDD is light yellow).
• OddRowColor is the background color for the odd numbered table rows (for example, #FFFFCC
is a slightly darker yellow).
Here’s an example:
<HV:Table Flag #0099FF|#FFFFDD|#FFFFCC>
The allowable tags are shown in the following table. The commands are not case-sensitive.
TABLE DESCRIPTION
General status (clock time,
schedule name, etc.)
X10 addresses
Macros
Input ports
Output ports
Analog inputs
HVAC zones
Security system
Digital temperature sensors
Flags
Variables
Timers
Scheduled events
Periodic events
Infrared signals
TV event log
TAG FORMAT
<HV:TABLE Status HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE X10 HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Macro HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Input HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Output HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Analog HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE HVAC HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Security HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE DigitalSensor HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Flag HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Var HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE Timer HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE SE HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE PE HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE IR HeadColor|EvenRowColor|OddRowColor>
<HV:TABLE EventLog HeadColor|EvenRowColor|OddRowColor>
Chapter 25
Web Server
265
Using Tags That Perform Actions
You can also use your web page to control HomeVision. Your web page sends commands to the
HomeVision server, which then sends them to the HomeVision controller via the PC’s serial port. To do this,
you add an HTML “form” to your web page and “post” it to the HomeVision server. The form element “name”
usually defines the action to perform (although the “value” field can be used in some cases). You can have
as many forms as you want on a page.
As an example, here’s the HTML code to display a button that, when clicked, will command HomeVision to
send the X-10 signal A1 Off:
<form method=“POST”>
<input type=“submit” name=“X10 A1 Off” value=“Bedroom light off”>
</form>
The “name” field indicates this is an X-10 command for address A1, and that an OFF signal should be sent.
The “type” field, named “submit”, tells the browser to display a button. The “value” field indicates the button
label (text) that is displayed (this can be anything you want).
You can also use a text box to enter a value. Here’s the HTML code to display a text box for changing the
value of a HomeVision variable:
<form method=“POST”>
<input type=“text” name=“Var 12 =”
</form>
value=“0”>
In this case, the “name’ field specifies the variable and also contains an equal sign indicating to set the
variable equal to the “value” field. The “value” field will contain the desired variable value. The “0” tells the
text box to initially display the number zero. The user can then type in a new number and press “Enter”. The
new value will be placed in the “value” filed and sent to the web server. The server will set the variable to this
value.
One way to learn the command formats is to study the web pages automatically created by the web server.
To do this, view one of the pages (like the X-10 page or macro page) in your web browser. Then select “view
source” to see the HTML code generated by HomeVision. Most of the pages contain buttons that perform
actions, and you can study how they are written.
The following table identifies the allowable commands and describes what to put in the “name” and “value”
fields. The commands are not case-sensitive.
266
Chapter 25 Web Server
COMMAND
FORMAT
X-10
X10 # COMMAND
Macro
Macro #
Infrared
IR # XX times
Output Port
Flag
Output # COMMAND
Flag # COMMAND
“NAME” FIELD
NOTES
# is X-10 address (house code
and unit code)
“VALUE” FIELD
FORMAT / NOTES
EXAMPLE
FORMAT
## values can be contained in
the value field if desired
(Server will look for the ##
values in the name field. If
not found, the server will look
in the value field.)
name="X10 A1 On"
name="X10 P11 Off"
name="X10 A1 Level 10"
name="X10 A1 Level" value="10"
name="X10 A1 Bright" value="4"
name="X10 A1 PCSLevel 5"
name="X10 A1 PCSLevel" value="5"
Not used. You may enter
anything you like.
Not used. You may enter
anything you like.
name=”Macro 4”
XX is the number of times to
transmit it
# is output ID # in decimal format
(0-255)
Not used. You may enter
anything you like.
name=”Output 0 HIGH”
name=”Output 12 low”
name=”Output 15 toggle”
Allowable values for COMMAND:
High
Low
Toggle
# is flag ID # in decimal format (0255)
Not used. You may enter
anything you like.
name=”Flag 127 LOW”
name=”flag 43 High”
name=”FLAG 22 neutral”
name=”FLAG 2 Toggle”
Allowable values for COMMAND:
On
Off
Bright ##
Dim ##
Level ##
PresetDim ##
HouseUnit
FunctionOn
FunctionOff
FunctionBright
FunctionDim
FunctionAllLightsOn
FunctionAllLightsOff
FunctionAllUnitsOff
PCSLevel ##
DirectToLevel ##
X10Scene ##
LevitonScene ##
# is macro ID # in decimal format
(0-255)
# is infrared signal ID # in decimal
format (0-255)
Allowable values for COMMAND:
Set
Clear
Neutral
Toggle
name=”IR 9 1 time”
name=”IR 12 10 times”
Chapter 25
COMMAND
FORMAT
Variable
Timer
Var # COMMAND
Timer # COMMAND
“NAME” FIELD
NOTES
# is variable ID # in decimal
format (0-255)
Allowable values for COMMAND:
Increment
Decrement
: ## (where ## is the value to
set the variable equal to,
in decimal format (0-255).
Note spaces before and
after :)
= (where the value to set
the variable equal to is in
the value field)
# is timer ID # in decimal format
(0-255)
“VALUE” FIELD
FORMAT / NOTES
Periodic Event
PE # COMMAND
Allowable values for COMMAND:
DoNow
Enable
Disable
Rate=EveryLoop
Rate=1Minute
Rate=5Minutes
Rate=15Minutes
Rate=1Hour
Rate=2Hours
Rate=4Hours
Rate=8Hours
Note there are no spaces.
EXAMPLE
FORMAT
For the “=” command, the
desired value (in decimal
format 0-255) must be in
value field. This is how you
would do it if you want the
user to enter the desired
value into a text box.
name=”Var 13 Increment”
name=”Var 63 decrement”
name=”Var 12 : 255”
name=”Var 12 =” value=”255”
Not used. You may enter
anything you like.
name=”Timer 0 Start”
name=”Timer 12 STOP”
name=”Timer 4 load with 0:30:00.00”
name=”Timer 5 load with 0:30:00.00
and start”
Not used. You may enter
anything you like.
name=”PE 4 DoNow”
name=”PE 5 Enable”
name=”PE 6 Disable”
name=”PE 12 Rate=5Minutes”
name=”PE 12 Rate=1Hour”
Allowable values for COMMAND:
Start
Stop
Load With HH:MM:SS.CC
Load With HH:MM:SS.CC
And Start
Note: The last two commands (to
load the timer with a value) are
not yet implemented).
# is periodic event ID # in decimal
format (0-255)
Web Server
267
268
Chapter 25 Web Server
COMMAND
FORMAT
Scheduled
Event
“NAME” FIELD
NOTES
SE # COMMAND
# is scheduled event ID # in
decimal format (0-255)
“VALUE” FIELD
FORMAT / NOTES
EXAMPLE
FORMAT
Not used. You may enter
anything you like.
name=”SE 1 DoNow”
name=”SE 1 Enable”
name=”SE 1 Disable”
For the “Setpoint”
command, the desired
temperature (in decimal
format 0-255) must be in
value field. This is how
you would do it if you want
the user to enter the
desired temperature into a
text box. For other
commands, the value field
isn’t used – you may enter
anything you like.
name=“HVAC 0 Run”
name=“HVAC 1 COOL”
name=“HVAC 1 FanOn”
name=“HVAC 0 Setpoint”
value=“255”
Allowable values for COMMAND:
DoNow
Enable
Disable
HVAC Zone
HVAC # COMMAND
# is zone # in decimal format
(0-15)
Two allowable values for
COMMAND set the control
mode:
Run
Hold
Four allowable values for
COMMAND set the system
mode:
Cool
Heat
Auto
Off
Two allowable values for
COMMAND set the fan mode:
FanOn
FanAuto
One allowable value for
COMMAND to set setpoint:
Setpoint (where the
temperature to set the
zone to is in the value
field)
Chapter 25
COMMAND
Security
Partition
FORMAT
SecPartition #
COMMAND
“NAME” FIELD
NOTES
# is partition # in decimal
format (0-7)
Allowable values for
COMMAND:
ArmHome
ArmAway
Disarm
ToggleChime
SoundFire
SoundMedical
SoundPolice
# is zone # in decimal format
(0-63). This command toggles
the zone bypass setting
Web Server
“VALUE” FIELD
FORMAT / NOTES
Not used. You may enter
anything you like.
EXAMPLE
FORMAT
name=“SecPartition 0 ArmHome”
name=“SecPartition 1 DISARM”
Not used. You may enter
anything you like.
name=“SecZone 3 ToggleBypass”
Security Zone
SecZone #
ToggleBypass
Sync clock
(sets the
controller’s clock
to the PC’s time)
Open schedule
file
(opens the
specified file in
the PC
software)
SyncClock
Not used. You may enter
anything you like.
name=”Sync clock”
Method 1:
Not used. You may enter
anything you like.
name=”OpenFile example.haf”
Filename.haf
name=”OpenFile” value=”example.haf”
Not used. You may enter
anything you like.
name=”LoadFile”
OpenFile filename.haf
Method 2:
Load schedule
file
(downloads the
currentlyopened file into
the controller)
OpenFile
LoadFile
269
270
Chapter 25 Web Server
COMMAND
FORMAT
Serial
transmission
Method 1:
SerialTX XXXX
“NAME” FIELD
NOTES
XXXX is the serial string to
transmit to HomeVision. A
carriage return will be added to
the end of the serial message to
the controller
Method 2:
SerialTX
Close serial port
ClosePort
Open serial port
OpenPort # BAUD
# is the desired serial port.
“VALUE” FIELD
FORMAT / NOTES
EXAMPLE
FORMAT
Not used. You may enter
anything you like.
name=”Serial TX Arm alarm”
The value field holds the
serial string to transmit to
HomeVision. A carriage
return will be added to the
end of the serial message to
the controller
Not used. You may enter
anything you like.
Not used. You may enter
anything you like.
name=”Serial TX” value=”Arm alarm”
name=”ClosePort”
name=”OpenPort 2 19200”
BAUD is the desired serial port
baud rate. Allowable values:
2400
4800
9600
19200
Serial command
to HomeVision
software
Method 1:
SwCmd XXXX
Method 2:
SwCmd
This command can be used to
change the baud rate without
closing the port first.
XXXX is the serial string for the
HomeVision software to perform.
This will have the same effect as if
the serial message was received
from the controller.
Not used. You may enter
anything you like.
name=” SwCmd Play wav file
chimes.wav”
The value field holds the
serial string for the
HomeVision software to
perform. This will have the
same effect as if the serial
message was received from
the controller.
name=” SwCmd” value=” Play wav file
chimes.wav”
Chapter 25
Web Server
271
Using Tags To Request Object Status
You can also use buttons on your web page to request the PC software to read object status from the
controller. The software needs to know the object states in order to send them to your browser. To tell the
PC to read the status, you add an HTML “form” to your web page and “post” it to the HomeVision server.
The form element “name” defines the object type to read.
As an example, here’s the HTML code to display a button that, when clicked, will command the PC software
to read the status of all flags from the controller:
<FORM method="POST">
<input type="submit" name="UpdateFlag" value="Read flag status now"
</FORM>
The “name” field indicates this is request to read the flag status. The “type” field, named “submit”, tells the
browser to display a button. The “value” field indicates the button label (text) that is displayed (this can be
anything you want).
The allowable tags are shown in the following table (the commands are not case-sensitive):
OBJECTS TO READ
General status (clock time,
schedule name, etc.)
X10 addresses
Input ports
Output ports
Analog inputs
Digital temperature sensors
Flags
Variables
Timers
Scheduled events
Periodic events
HVAC zones
Security system
TV event log
“NAME” FIELD TO USE IN FORM
UpdateStatus
UpdateX10
UpdateInput
UpdateOutput
UpdateAnalog
UpdateDTS
UpdateFlag
UpdateVar
UpdateTimer
UpdateSE
UpdatePE
UpdateHVAC
UpdateSecurity
UpdateEventLog
272
Chapter 25 Web Server
Remote Internet Access
The “Remote Internet Access” feature provides an internet access capability that differs from the web server.
The following table summarizes how the two methods work:
Server PC setup
Client PC software
Client PC capabilities:
• Web pages to control
HomeVision
• Download schedule into
HomeVision
• View all serial data from
HomeVision
Intended use
Web Server
• HomeVision unit is connected
to server PC serial port
• HomeVision software is
running and web server
function is enabled
Any web browser
Remote Internet Access
• HomeVision unit is connected to
server PC serial port
• HomeVision software is running
and remote internet access server
function is enabled
HomeVision software
Yes
No
No
Yes
No
Yes
For easily monitoring and
controlling your home from a
remote location
For loading new schedules into the
controller and/or debugging problems
from a remote location
Server Configuration
To use the remote internet access capability, you must first configure the HomeVision software on the PC
the HomeVision controller is connected to (the “server” PC). Use the Remote Internet Access Screen under
the Configure menu to do this. In the “Select Connection Mode” field, select the “Server” option. In the
“Local Server” field, set the following items:
IP Address
Enter the computer’s IP address.
Port Number
You must tell the software what port number you want it to use on your computer. It defaults to
using port 1043, which will work in most situations. You will normally never need to change this.
However, you may need to if the server fails to start when using the chosen port. You can set it to
any number between 0 and 32,000, although numbers above 1024 are recommended. If you’re also
running the HomeVision web server, use a different port number for it.
Password
If you want to require the client to enter a password when accessing the server, enter the password
here. If you don’t want to require a password, leave this field blank. If your PC is always connected
to the Internet, we strongly recommend you use a password to minimize the chance of unauthorized
users accessing your system. Without a password, users have complete access to the server (and
HomeVision). You might disable this if you’re using the server on a local area network within your
home, where you’re not worried about unauthorized use.
Next, check the “Automatically start; reconnect if connection is lost” box if you want the server to
automatically start whenever the HomeVision software starts, and to automatically restart if the connection
doesn’t properly start or is lost. If you want the server always running, you should check this. When you
first check it, the server will also try to start immediately.
Chapter 25
Web Server
273
Click the “Start” button to start the server (if it didn’t start automatically). If the server doesn’t start, the IP
address is probably incorrect (although it’s also possible that the port number is already in use) “Starting”
the server means telling it to start “listening” on the selected port for connection requests from clients. The
“Status” field will indicate whether the server is currently listening (running) or not. When a client connects to
the server, the “Remote Client Connection” field will show the connection status. While the server is
listening, you can use the HomeVision software in it’s normal fashion. The Remote Internet Access Screen
may be closed or left open.
Client Configuration
To access your HomeVision controller from a remote PC (the “client” PC), you must first install the
HomeVision software on it. You must also start the server “listening”, as described above. When you are
ready to connect the client PC to the HomeVision server PC, open the Remote Internet Access Screen
under the Configure menus. In the “Select Connection Mode” field, select the “Client” option. In the
“Remote Server” field, set the following items:
IP Address
Enter the IP address of the server PC you wish to connect to.
Port Number
Enter the port number of the server PC you wish to connect to.
Next, check the “Automatically start; reconnect if connection is lost” box if you want the client to
automatically start whenever the HomeVision software starts, and to reconnect if the connection doesn’t
properly open or is lost. If you want the client always running, you should check this. When you first check
it, the client will also try to immediately connect to the server.
Click the “Open Connection” button to connect to the server (if it didn’t connect automatically). “Connecting”
the client means establishing a communications link with a “listening” server. The “Connection Status” field
will indicate whether a connection with the server is open or not. Once a connection is opened, the
“HomeVision Serial Port” field will indicate whether the server’s serial port (which should be connected to the
HomeVision controller) is open. If it is not open, the client will not be able to access the HomeVision
controller. Once the connection is opened, you can use the HomeVision software as if it was directly
connected to the HomeVision controller. The Remote Internet Access Screen may be closed or left open.
Using Remote Internet Access
Once a connection is opened, you can use the client HomeVision software as if it was directly connected to
the HomeVision controller (with a few limitations discussed below). Using software on one PC to control a
HomeVision unit connected to another PC may be confusing at first. It’s important to understand which PC
software screens are accessing the remote HomeVision unit and which are using data from the local PC.
Anytime the client software needs to communicate with the HomeVision controller, it will send an internet
message to the server PC. The server PC will then send it out its serial port to HomeVision. Any serial
messages received from HomeVision by the server will be sent to the client software. The client software
will operate as if the HomeVision controller were directly connected to the local serial port, while it will
actually be communicating via the internet. Therefore, any software screen that communicates with the
controller will be using the internet to access the remote unit. This includes the following screens:
•
•
•
Load screen (under the File menu)
Controller Time/Date screen (under the Configure menu)
Video Remote Control Configuration screen (under the Configure menu) when it displays received IR
messages
274
Chapter 25 Web Server
•
•
•
Digital Temperature Sensor Configuration screen (under the Configure menu) when it reads the
sensors
All of the control screens under the Control menu
All of the screens under the Other menu, except for the View Schedule and Serial Command Test
screens
All of the other screens will be accessing the local (client) PC. That is, any schedule you open, edit, or save
will be on the local PC.
Remote Internet Access Notes
•
The settings on the configuration screen are automatically saved in the Windows System Registry. If
you select either “Client” or “Server” in the “Select Connection Mode” field, whenever the
HomeVision software starts up, it will automatically try to start the client or server. If you do not want
it to automatically start, select the “None” option.
•
From the client software, you cannot open, close, or change the server PC’s serial port. Therefore,
the serial port must already be opened on the server PC.
•
Any schedule you open or save in the client program will be read from or written to the client PC.
You cannot retrieve a file from the server PC (although the HomeVision web server can do this).
•
Communications with the HomeVision controller will be slower than normal because the data must
pass through the internet. The delay is usually not significant when sending or receiving one or two
messages (such as when issuing an X10 command). However, communications intensive
operations such as downloading a schedule into HomeVision or reading the event log will usually
take several times longer than normal.
•
Any serial data sent from the HomeVision controller will be received by both the client and server PC
software. If this data commands the software to do something, both programs will try to do it. For
example, if the controller sends a serial command telling the software to play a WAV file, both the
client and server software will attempt to play it.
Chapter 26
Miscellaneous
275
CHAPTER 26: MISCELLANEOUS
Custom Lighting Systems
Some users would like to use HomeVision with lighting systems that don’t use the X-10 protocol (such as
(Lutron, C-Bus, CentraLite, UPB, etc.). To facilitate this, the controller supports what are called “custom
lighting” commands. The HomeVision controller does not include built-in control of such lighting systems;
i.e., there are not specific commands for these lighting systems. Instead, the user or system developer must
do one of the following:
1. Create a macro within the HomeVision schedule that controls the lighting system. It is expected that
the macro would transmit serial messages to an external lighting system controller. However, the
macro could also control HomeVision relay outputs that directly connect to the external lights. We
call this method the “User-Created Macro and Variables Method”.
2. Create PC software that controls the lighting system. The HomeVision controller would then transmit
serial messages to the PC, and the PC software would control the lighting system. We call this
method the “HomeVision Default Method”.
With either method, it is anticipated that once someone has created a macro or software, others could use it
rather easily. Once this is done, HomeVision will provide the following capabilities:
•
•
•
•
•
•
Define and name up to 255 lights.
Track light levels in an internal state table.
Enter commands in the schedule for these lights, such as “Light 3 (Porch light) On”, “Light 7 (Kitchen
light) to level 50”, and “Light 45 (Master bath) select scene 6”.
Use the HomeVision software, web browser, or other PC software to control the lights and read
status.
View a TV screen showing the light status and allowing them to be controlled.
Check the current light status in If-Then conditions.
The file “Custom Lighting”, installed in the HomeVision directory, describes how to use this capability.
Object Names
The video screen system allows you to display information about many object types on your TV. You can
also display the object’s name if you’ve loaded it into the controller. In creating your schedule, you can give
names up to 30 characters long to all objects. However, the controller is limited to storing 512 names of 16
characters each.
Each of the object summary screens contains a “Load Name” field. This specifies whether or not the item’s
name should be loaded into the controller. Initially, you should probably leave this field enabled (checked)
and load all your object names. If you ever reach the 512-name limit, you can selectively disable loading of
the names you won’t be using often.
You can see how many names are set to be loaded with the status screen under the “Other” menu.
As noted above, the PC software can handle names of 30 characters, but the controller can only store the
first 16 characters of each name. Subsequent characters will be ignored. If you want the name to be clear
when viewed on the video screen, make the first 16 characters descriptive and unique by themselves.
276
Chapter 26 Miscellaneous
Power Failure Recovery Process
The controller is designed to automatically recover from a power failure. It can also “catch up” your house to
where it would have been if the power hadn’t gone out. It does this by keeping track of the actions that
would have been performed while the power was out and performing them after it is restored. However, you
have complete control of which actions the controller will “catch up” and which ones it won’t.
The process the controller goes through immediately after power is restored is known as power failure
recovery. During this process, the controller performs the following steps:
1) The controller tests itself to ensure it is functioning properly.
2) The controller checks most objects (modules, variables, output ports, etc.) and sets them to the
states you specified with the Power Fail State option. You specify the Power Failure States using
the object summary screens of the PC program. This allows you to put any object into the specified
state automatically after a power failure. Here are several examples of the Power Fail States:
-
Flags can be set to SET, CLEAR, or NEUTRAL, or left unchanged.
-
Timers can be stopped, left unchanged, or only stopped under certain conditions.
-
Output ports can be set high or low or left unchanged. They can also be disabled.
-
Input ports can be disabled.
For a detailed description of these, refer to the “Power Fail Options” section in the each object’s
chapter.
3) The controller next attempts to “catch up” any actions that should have occurred during the power
outage. It does this by performing any scheduled events that the user specified as “catch up”. It
also counts down all timers and performs any actions which you’ve specified if they expire. The
controller will perform these scheduled events and timer actions in the proper sequence, even if they
are intermixed. There are several important points regarding this process:
-
If the power is out for more than a day, this process can result in some scheduled events being
performed multiple times. For example, assume power goes out at 6:00 PM Monday and is
restored 11:00 PM Tuesday. Assume also that scheduled event #1 turns a light on with an X-10
command at 7:00 PM every day and scheduled event #2 turns it off at 10:00 PM. While catching
up, the controller will send the following sequence of X10 commands:
X-10
X-10
X-10
X-10
ON command (scheduled event #1 for 7:00 PM Monday)
OFF command (scheduled event #2 for 10:00 PM Monday)
ON command (scheduled event #1 for 7:00 PM Tuesday)
OFF command (scheduled event #2 for 10:00 PM Tuesday)
All of these events should have occurred during the power outage and are therefore performed
during the recovery. As a result, the light will go on and off twice, but will end up in the correct
position.
-
This “catch up” process is designed to work for power outages lasting less than two days. For
example, if power is removed on Monday and restored later Monday or on Tuesday, the catch
up process will work properly. However, it works differently if it lasts longer than two days.
-
If the power is out for more than 2 days, the controller will not attempt to catch up. It was
designed this way because such a long power outage would be a very unusual occurrence. The
controller assumes that it was intentionally disconnected during this time and that it’s not a real
power failure. When power is restored, no scheduled events will be performed. Any timers that
were running when power went out will be stopped and cleared. The controller determines when
more than 2 days have passed based on passing midnight twice while power was out.
Chapter 26
Miscellaneous
277
4) Next, the controller executes the commands specified by the user in “Power Failure Recovery” event
(if it is enabled). These actions are done regardless of how long the power was out for.
5) The controller resumes normal operation.
There are several important points to note about this power failure recovery process.
•
Periodic events that should have occurred during the power outage will not be performed in the
recovery routine. After the controller resumes normal operation, periodic events will again be
performed at the specified rate.
•
During this recovery routine, normal operation is suspended. The controller will not respond to any
input commands or execute any scheduled or non-scheduled events.
After recovery is complete, the controller returns to the normal operating mode.
Power Failure Recovery Actions
You can define a set of actions to perform after power is restored as follows:
•
Open the “Power Failure Recovery” screen under the “Objects/Events” menu.
•
Click the “Enter/Edit Actions” button and the actions entry screen will appear.
•
Enter the actions and conditions, then click “OK”. You’ll return to the power failure recovery screen.
•
Enable the actions by checking the “Actions Enabled” field. The actions are automatically enabled
after you enter them, but you’re free to enable or disable them at any time.
•
Load the new schedule into the controller.
Remote Modem Control
The controller can be controlled over the phone line using modems. You can download a new schedule,
check the controller's status, and even send X-10, IR, and video commands. Anything you can do when
you're connected directly to the controller can also be done remotely. This requires:
•
The controller connected to a modem, which in turn is connected to a phone line.
•
A computer with a modem (internal or external) running the HomeVision software and connected to
a phone line.
The connections are shown in the following figure.
Modem Cable
Null Modem Cable
Phone Line
Local
Computer
Local
Modem
Remote
Modem
Remote
HomeVision
278
Chapter 26 Miscellaneous
Initial Controller/Modem Setup
The modem connected to the controller must meet the following requirements (virtually all modems meet
these):
•
•
•
Hayes compatible.
2400 baud or higher.
Capable of auto-answering.
The modem must be connected to the controller with a NULL MODEM CABLE OR ADAPTER (a standard
modem cable will NOT work). Radio Shack has two types of null modem adapters that will work: 1) a male
DB9 to female DB9 (catalog # 26-264A), and 2) a male DB25 to female DB25 (catalog # 26-1496B). You
may also need a DB9 to DB25 adapter or cable if your modem uses a DB25 connector.
The modem itself must also be configured properly. This is only done one time and requires using either the
software that came with the modem or a terminal emulator program. The table below shows the required
settings. It also shows the commands necessary to make these settings for most Hayes-compatible
modems. Refer to your modem owner's manual for more information if necessary.
MODEM SETTING
COMMAND
Echo off
XOn/XOff flow control
Ignore DTR line
Auto answer (N = # of rings to answer)
TYPE THIS
E
ATE <CR>
&K4
AT&K4 <CR>
&D0
AT&D0 <CR>
S0=N
ATS0=N <CR>
^{the number zero)
NOTE: All commands must be preceded by the two letters "AT" and ended with a carriage return <CR>.
For example, to make these settings and set the modem to auto answer on the third ring, type:
ATE <CR>
AT&K4 <CR>
AT&D0 <CR>
ATS0=3 <CR>
{the last character is the number zero)
You may also want to set whether the modem's speaker is on and at what volume. The options are
summarized below:
SETTING
Speaker
Speaker
Speaker
Speaker
Speaker
Speaker
always on
always off
on when dialing
volume low
volume medium
volume high
COMMAND
M2
M3
M1
L
L2
L3
TYPE THIS
ATM2
ATM3
ATM1
ATL
ATL2
ATL3
Once you've entered the modem's settings, you must save them to the modem's internal memory. This
ensures they are reloaded each time power is applied to the modem. The command for this is usually:
AT&W <CR>
You can also combine all the commands into a single line, as in this example:
ATE&K4&D0&S0=3M1L&W <CR>
Chapter 26
Miscellaneous
279
Setting The Controller And The Modem To The Same Baud Rate
Lastly, you must ensure that the controller is set to the same baud rate as the modem's serial interface, since
they will be talking together. Note that the modem's serial baud rate may be different than the baud rate
between the two modems. When people talk about having a "19,200 baud modem", they're referring to the
phone line speed. The connection from the modem to the computer's serial port may be anywhere from
2400 baud to over 100,000 baud. These are two separate connections with independent baud rates.
Unfortunately, not all modems set the serial port baud rate the same way. You should check your modem's
owners manual to determine what it's default baud rate (called the DTE rate) is. Your options depend on the
modem's speed:
•
If you have a 2400 baud modem, it probably defaults to 2400 on the serial port also. Set the
controller to 2400 baud and you're ready to go.
•
Most modems faster than 2400 baud also default to 2400 baud on the serial port. If your’s does, you
can set the controller to 2400 baud also. However, you will lose the speed advantage of a faster
modem.
There are several possible ways to get a higher speed:
-
Some modems allow you to change the default serial port (DTE) rate. This is usually done using
S-register 23. Refer to your modem's owner manual for setting a higher baud rate. If you do
this, then set the controller to the same baud rate (19,200 is recommended).
-
Other modems default to using the same baud rate as the baud rate of the last command sent to
it over the serial interface. They remember the rate even if power goes out. If you have this
type of modem, configure it using the same baud rate as you will have the controller set to.
For example, assume you want to run the controller at 19,200 baud. Before you configure the
modem as described earlier, set your computer's serial port baud rate to 19,200. When you
finish configuring the modem by sending the &W command, the modem will store the current
baud rate also. Then, every time it powers up, it will default to 19,200 baud, matching the
controller.
-
If your modem does not remember the baud rate after a power outage, and you can't change its
default baud rate, you have one more option to get higher than 2400 baud. This involves having
the controller periodically set the attached modem to match the controller's baud rate. This
requires you to create a periodic event in the schedule. Set the event's rate to every 1 minute
and include the following commands in it:
Serial transmit: "AT"
Serial transmit: Carriage return and line feed
When the modem receives this command, it will determine the baud rate it was received at. It
will then use the same baud rate when transmitting data to the controller. This command must
be sent periodically so that if the modem's power is lost, it is reset properly when it comes back.
If you choose this option, we recommend you set the controller to 19,200 baud.
This may seem like a complex process, but it's necessary if you want to communicate faster than 2400 baud.
Making a Remote Connection
Follow this procedure whenever you want to connect to the controller from a computer at a different site:
•
Start the HomeVision software.
280
Chapter 26 Miscellaneous
•
•
•
•
•
•
•
•
Open the serial interface configuration screen.
Select the "Thru Modem" option button and click the "Setup / Dial" button.
Select the com port your local modem is connected to.
Type the phone number where the controller is located into the phone number text box.
Select the desired speaker and volume settings for the local modem.
Check the "Enable Pulse Dialing" checkbox if your local phone does not support tone dialing.
If you need to send any additional commands to your local modem, type them in the provided text
box. This will normally not be necessary.
Click the "Dial" button. Status is shown as the software makes the connection. It follows this
general procedure:
-
•
•
•
•
Opens the com port to your local modem.
Initializes the modem.
Dials the phone number.
Connects with the remote modem.
Checks the controller to ensure it's communicating properly.
If the connection is successful, it displays the message "HomeVision responding properly. Ready for
remote operations". The main software screen also displays the message "Remote". If an error
occurs, a message will be displayed and the modem will hang up. Refer to the trouble-shooting
section.
After the connection is made, click the "OK" button to close the "Dial Remote Modem" screen.
Click the "OK" button to close the "Serial Interface Configuration" screen.
You can now use the controller just as if you were connected to it. When you're done, return to the
"Dial Remote Modem" screen and click "Hang Up". Note that there are two limitations to what you
can do remotely:
1) When you download a schedule, the remote unit will keep the serial port baud rate
unchanged.
2) You will not be able to send commands from the controller command screen to change the
remote the controller's baud rate.
These limitations are necessary to prevent the baud rate from changing and the modem
connection to be lost.
Remote Modem Trouble-Shooting
•
You may want to check the connection between the modem and the controller before leaving the
controller's location. There are two ways to do this:
1) Make sure the master serial interface reporting mode is enabled. Then remove and then reapply
power to the controller. When power is restored, the controller will transmit a serial message.
The modem's receive LED (usually labeled "RD") will flash briefly. If it doesn't, then the modem
is not connected properly.
2) Include in your schedule the following commands:
Serial transmit: "ATM2L2H1"
Serial transmit: Carriage return and line feed
These commands will cause the modem to go off-hook (pick up the phone line). Put them
somewhere you can easily trigger them, such as in an X-10 signal event. Then trigger the event
and verify the phone goes off hook. Remove power from the modem to hang up. If the modem
doesn't pick up the phone, then the modem is not connected properly.
•
If an error occurs while opening the com port, verify you have selected the correct port. Make sure
no other application is using it. If the problem persists, restart the computer.
Chapter 26
Miscellaneous
281
•
If an error occurs while initializing the modem, verify you have selected the correct com port. Make
sure the modem is connected properly and turned on (if an external modem). If the problem
persists, refer to your modem owner's manual and verify the modem is Hayes-compatible.
•
If an error occurs while dialing or connecting with the remote modem, try redialing. There may be a
noisy phone line. If you're using a 2400 baud modem, you may need to use the F5 command
discussed below to force the connection to be 2400 baud. Otherwise, it may take too long for the
local modem to determine the remote modem's baud rate, and the remote modem will hang up.
•
If the program is unable to communicate with the controller (after dialing OK), try redialing. If the
problem persists, the remote modem is probably not set up correctly.
Additional Modem Notes
•
Problems connecting can sometimes occur if you're calling with a high speed (9600 baud or greater)
modem and the remote modem is much slower (such as 2400 baud). You can fix this by forcing
your local modem to connect at a slower rate. The commands shown below are used by many
modems for this purpose, but you should check your modem's manual to verify it. Enter the
command in the "Extra Modem Commands" text box, as described in the next paragraph.
PHONE LINE CONNECTION RATE
Highest possible speed (default)
1200 baud
2400 baud
4800 baud
9600 baud
12000 baud
14400 baud
•
COMMAND
F
F4
F5
F6
F8
F9
F10
You can send any additional commands to your local modem. We don't expect this to be necessary
very often, but the capability is provided just in case. You include these commands in the "Dial
Remote Modem" screen. They will be sent to the modem immediately prior to dialing. You do not
need to include the letters "AT" or a carriage return. You can also string multiple commands
together. For example, force the modem to connect at 2400 baud, fill the text box in with the
following:
F5
•
You can include the following special characters in the phone number text box to control how the
number is dialed:
,
!
@
pause (typically for 2 seconds)
hook-flash (go on-hook for 0.7 seconds)
wait for 5 seconds of silence before continuing
Spaces, hyphens, and parenthesis entered in the phone number field are ignored. Refer to your
modem owner's manual for more information.
•
If you have call waiting, you should cancel it before you dial. This can usually be done by entering a
code immediately before the phone number in the phone number text box. The code *70 is
commonly used (check with your local phone company). It may also require a pause afterwards
(using a comma). Here's an example of how you might enter it in the phone number text box:
*70, (407) 555-1234
282
Chapter 26 Miscellaneous
Graphic Background On Main Form
You can display a bitmap graphic on the main software screen. Name the desired bitmap file
"backgrnd.bmp" and place it in the same directory as the HomeVision application. At startup, it will be
displayed scaled to fill the form.
Exporting Schedule Data
There is an "Export" function on the "File" menu. This command exports a list of the objects in your schedule
to a text file. It's provided primarily as a way to send schedule information to other home automation
software that several other companies are developing.
Reading Data Files Into The Controller
Introduction
Many users would like to be able to have programs running on a PC send data to the HomeVision controller.
One way to do this is with Dynamic Data Exchange, which is discussed elsewhere. Another method is with
the use of text files containing data.
If a program can create a data file in the proper format, the HomeVision controller can send a serial
command to the PC (which is running the HomeVision software), telling it to read the file and load the data
into the controller. The data can be loaded into HomeVision variables or “weather condition variables”, which
hold weather information. For example, if you have a weather station or weather program that can output the
data periodically into a “comma-separated value” file, you will be able to read the data into the controller and
display it on the TV screen.
The rest of this section describes how to use this capability. There are three basic steps required:
1. Set up another PC program to create a comma-delimited text file.
2. Create a configuration file that tells HomeVision the text file format (i.e., what data is contained in
each field).
3. Set up HomeVision to send a serial command to the PC requesting the text file be read and its data
be loaded into the controller.
Step 1 – Set Up Other Program
Any program you wish to use must be able to output data into a comma-separated value (CSV) file. The
required format for this file will be described in the next section. However, the process for configuring other
programs to create the file is beyond the scope of this document.
Step 2 – Create Configuration File
Starting in HomeVision 32-bit software version 2.75, you can create a “configuration file” on the PC. This file
can control certain aspects of how HomeVision operates. Currently, its only use is to tell HomeVision the
format of a data file you want to read into the controller. In the future, other uses for this configuration file will
be developed. You only need to create this file if you want to be able to read data files into the controller. To
enable use of this file, open the Preferences screen under the Configure menu, then check “Enable use of
HVConfig.txt file”.
The configuration file must be a text file named “HVConfig.txt”. It must be located in the same directory as
the HomeVision application. You can create it with any word processor – just be sure to save it as a text file.
The HomeVision application will read this file each time it starts. If you make a change to the configuration
file, you must shut down the HomeVision program then restart it before it the changes take effect.
Chapter 26
Miscellaneous
283
The configuration file must contain separate sections for each function (or feature). Currently, only one
function exists (reading in a text file), so the file will have only one section. Each section consists of three
parts: a section name, a section format, and the data. The first two parts are one line each, while the data
part can be one or more lines. The general format is shown below:
SECTION NAME: Section name
SECTION FORMAT: Format description
Data
The individual parts are described below.
Section Name
This section consists of a single line starting with “SECTION NAME:”. Following this (with or without blank
spaces) is the name of the section. Currently, only one name is supported, “Custom data file”. The
complete line looks like this:
SECTION NAME: Custom data file
This indicates this section describes a custom data file that can be read and loaded into the HomeVision
controller.
Section Format
This section consists of a single line starting with “SECTION FORMAT:”. Following this (with or without blank
spaces) is the format of the data. Currently, only one format is supported, “comma-separated values”. The
complete line looks like this:
SECTION FORMAT: Comma-separated values
This indicates the data file will be in CSV format (in rows, where each row contains one or more fields
separated by commas).
Data
This section defines the use of each field (or column) of data in the text file you want to read in. One row is
used for each field of data. The first row defines the first field, the second row defines the second field, and
so on. For each field in the text file, you need to tell HomeVision what to do with the data (load it into a
variable, ignore it, etc.). You do this by the name you assign. The table below shows the allowed names
and what HomeVision will do with the corresponding data:
ALLOWED FIELD NAME
Variable ###
WHERE HOMEVISION WILL PUT THE DATA
Into HomeVision variable ###
Unused
Nowhere - this field will be ignored
InsideTemperature
DailyHighInsideTemperature
Into the weather variable “Inside Temperature”
Into the weather variable “Daily High Inside
Temperature”
Into the weather variable “Daily Low Inside
Temperature”
Into the weather variable “Outside Temperature”
Into the weather variable “Daily High Outside
Temperature”
Into the weather variable “Daily Low Outside
Temperature”
DailyLowInsideTemperature
OutsideTemperature
DailyHighOutsideTemperature
DailyLowOutsideTemperature
NOTES
### can be any
HomeVision variable from
0 to 255 that you’ve
defined in your schedule
Use this for any value that
doesn’t get loaded into the
controller
Degrees F
Degrees F
Degrees F
Degrees F
Degrees F
Degrees F
284
Chapter 26 Miscellaneous
InsideHumidity
DailyHighInsideHumidity
DailyLowInsideHumidity
OutsideHumidity
DailyHighOutsideHumidity
DailyLowOutsideHumidity
WindSpeed
DailyHighWindSpeed
DailyLowWindSpeed
WindDirection
Pressure
PressureDirection
Into the weather variable “Inside Humidity”
Into the weather variable “Daily High Inside Humidity”
Into the weather variable “Daily Low Inside Humidity”
Into the weather variable “Outside Humidity”
Into the weather variable “Daily High Outside Humidity”
Into the weather variable “Daily Low Outside Humidity”
Into the weather variable “Wind Speed”
Into the weather variable “Daily High Wind Speed”
Into the weather variable “Daily Low Wind Speed”
Into the weather variable “Wind Direction”
Into the weather variable “Pressure”
Into the weather variable “Pressure Direction”
DailyRainfall
WeeklyRainfall
MonthlyRainfall
Into the weather variable “Daily Rainfall”
Into the weather variable “Weekly Rainfall”
Into the weather variable “Monthly Rainfall”
0 to 100%
0 to 100%
0 to 100%
0 to 100%
0 to 100%
0 to 100%
0 to 254
0 to 254
0 to 254
0 to 359 degrees
Inches
0=Steady, 1=Falling,
2=Rising
Inches
Inches
Inches
Also note that, if you wish, you can include comments in the configuration file by preceding a line with a
semicolon (;). Any line starting with a semicolon will be ignored.
Example
Assume you have a comma-delimited file that holds the time, the outdoor and indoor temperature, plus the
number of e-mail messages you have waiting to be read, in that order. Also assume this file gets updated
periodically by adding a new line at the end containing the most recent data. The file might look like this:
10:35 AM,50,72, 3
10:40 AM,52,72, 5
10:45 AM,55,73, 5
10:50 AM,56,73, 5
This means that at 10:50 AM, the outdoor temperature was 56, the indoor temperature was 73, and you had
5 e-mail messages waiting.
Assume you want to be able to read the most recent data from this file into HomeVision. You want to load
the temperatures into the controller’s weather variables and the e-mail message count into HomeVision
variable number 7 (which you use in your schedule to track the number of unread messages), but ignore the
time field. Here’s what the configuration file would look like:
SECTION NAME: Custom data file
SECTION FORMAT: Comma-separated values
Unused
OutsideTemperature
InsideTemperature
Variable 7
Note how the last four rows define the four fields (or columns) of data in the data file. Since we don’t want to
read the time into the controller, the first field is named “Unused” so that HomeVision will ignore it.
After creating this file, save it in the same directory as the HomeVision application, naming it “HVConfig.txt”.
Shut down HomeVision and restart it, and the HomeVision PC software will read the file in. At this point, the
software knows the format of your custom data file. It is now ready to read it in and load the contents into the
HomeVision controller.
Step 3 – Send Serial Command To Read In File
To command a data file to be read, enter a serial interface command in your schedule to transmit the
following ASCII text:
Read data file filename.txt
Chapter 26
Miscellaneous
285
Replace "filename.txt" with the complete name of the text file containing the data you want to read. This file
must be located in the same directory as the HomeVision application. To read a file located in another
directory, enter the full path name between double-quotes, like this:
Read data file "c:\weather station\data\filename.txt"
When the HomeVision PC software receives this serial command, it will read the specified file and load the
data into HomeVision variables. It uses the field definitions in the configuration file to determine where to
load each variable. Note the following about how this works:
•
•
•
•
•
The text file must be in comma-separated values format, as described previously.
Spaces and tabs in the file will be ignored.
If there are multiple lines in the file, only the last line is used. This is assumed to be the most recent
reading.
If you have a data file that is created or updated regularly, you may want to use a periodic event to
read the data. Reading it every 5 minutes will ensure the HomeVision variables are kept up to date.
It may take several seconds after the serial command is sent before the HomeVision variables are
updated with the data from the file. Therefore, you can’t send the serial command and expect the
variables to be updated immediately. For example, assume you have these commands in a
schedule:
Serial port 1 transmit: “Read data file temperatures.txt”
If
Variable #1 (Indoor temperature) >=80
Then
'Do something
End If
Assume that the file “temperatures.txt” contains data that updates variable #1. The If-Then
condition checking variable #1 will be performed before data file is read and the new
temperature loaded into variable #1. Thus, the condition will be checking the old value, not the
new value.
Complete Example
Here’s an example of the complete process. It reads a data file containing 23 weather condition variables.
In addition, there are four fields that will be read into your variables number 0 through 3 (you may delete
these lines or change the variable number if this would interfere with your schedule operation). Here are the
steps:
1. Paste the following text into a word processor. Save it as a text file named “HVConfig.txt” and place
it in the same directory as the HomeVision (32-bit) application.
SECTION NAME: Custom data file
SECTION FORMAT: Comma-separated values
Unused
OutsideTemperature
InsideHumidity
DailyLowInsideHumidity
DailyHighInsideHumidity
OutsideHumidity
DailyLowOutsideHumidity
DailyHighOutsideHumidity
WindSpeed
WindDirection
Pressure
PressureDirection
DailyRainfall
InsideTemperature
286
Chapter 26 Miscellaneous
InsideHumidity
WeeklyRainfall
MonthlyRainfall
DailyLowWindSpeed
DailyHighWindSpeed
PressureDirection
DailyLowOutsideTemperature
DailyHighOutsideTemperature
DailyLowInsideTemperature
DailyHighInsideTemperature
Variable 0
Variable 1
Variable 2
Variable 3
2. Paste the following text into a word processor. Save it as a text file named “Weather.txt” and place it
in the same directory as the HomeVision (32-bit) application. Note that this is one long line of text
that wraps around. If your word processor puts a carriage return in the middle, delete it.
12:15 AM,86.5,70.2,60,80,82,87.5,100.0,2.4,359,30.06,2.6,0.35,
75.9,60.1,.95,13.01,0.9,17.5,0,55,89,74,78,252,253,254,255
3. Enter the following command in your schedule somewhere you can easily command it to run
(perhaps in a macro):
Serial port 1 transmit: “Read data file weather.txt”
4. From the HomeVision Configure menu, open the Controller Settings screen. Select the Video tab,
then check “Enable weather conditions screen”. This allows the weather conditions screen to be
displayed on your TV.
5. Download the schedule into the controller.
6. Shut down then restart the HomeVision software (this causes it to read the configuration file).
7. Display the weather conditions screen on your TV. You can start it from page 3 of the main video
menu system, or by commanding HomeVision to display video screen # 59.
8. Command the controller to send the serial message you entered in Step 3. The PC software will
display a status message along the bottom of the main screen as it reads in the file. The data will be
loaded into the weather variables and displayed on the weather conditions screen. In addition,
variables 0 through 3 will be set to the values 252, 253, 254, and 255 respectively.
Front Panel LEDs
Seven LEDs are provided on the controller's front panel. They are:
•
ON. On continuously when running. Blinks when the schedule is halted (such as when loading a
new schedule). Off while recovering from a power failure.
•
TW-523. On when the TW-523 module is connected and powered. Also turns on while the
controller is recovering from a power failure. After recovery is complete, the LED will turn off if the
TW-523 module is not connected.
•
U. The “U” stands for “user”, as this LED is entirely under the user’s control. You can turn it on or
off at any time by executing the appropriate controller command. The LED always turns off after
recovering from a power failure.
Chapter 26
Miscellaneous
287
•
X-10 RX. Turns on whenever the TW-523 module detects an X-10 signal on the power line. Will
also turn on while the controller is transmitting an X-10 signal, as the TW-523 detects its own
transmissions.
•
X-10 TX. Turns on whenever the controller is transmitting an X-10 signal on the power line.
•
IR RX. IR RX is short for Infrared Receive. Turns on whenever infrared energy is detected from a
remote control unit. Will also turn on while the controller is transmitting from the front panel, as it
detects its own transmissions.
•
IR TX. IR TX is short for Infrared Transmit. Turns on whenever the controller is transmitting
(whether from the front panel infrared diode or the external jack on the rear panel).
The first two LEDs can be used to assess the controller’s status, as follows:
1) At the initial application of power, the controller will spend a short time recovering from the power
failure. The exact amount of time depends on how many scheduled events and timer actions
occurred during the outage and how many commands you included in your power failure
recovery event. During this time, the LEDs will be in the following states:
“ON” LED will be off
“TW-523” LED will be on
“U” LED will be off
The other LEDs will go on and off as associated X-10 or IR signals are received or
transmitted.
2) After the recovery is complete, the “ON” LED will go on and the other LEDs will assume their
normal states as described earlier.
3) If the “ON” LED is blinking, the schedule is halted. This is normal while a schedule is being
downloaded. There are several other reasons the schedule could be halted:
•
If an error occurs during the schedule load, the controller will remain halted, even if power is
cycled. The schedule must be reloaded.
•
If the controller’s self-test fails or another serious error occurs, the controller will halt itself.
This is done to prevent it from doing unexpected things.
•
If you’ve executed a “Halt Controller” command in your schedule or from the controller
command control screen.
Specifications
•
Maximum object quantities:
-
X-10 modules:
Flags:
Variables:
Timers:
Macros:
IR Signals:
Scheduled Events:
Periodic Events:
Input Ports:
256
255
255
255
255
255 (although there are tricks that allowing using more than this)
255
255
8 or 16
288
Chapter 26 Miscellaneous
-
Output Ports:
8 or 16
Object names loaded into controller: 512 names of 16 characters each
•
Maximum schedule length: Approximately 8000 lines (with average line 5 bytes long)
•
Maximum macro length: Limited only by maximum schedule length
•
Learned IR signal memory: Approximately 40,000 bytes. This should be more than enough to hold
255 typical signals.
•
If-Then and Macro nesting limit: 15 levels
•
Maximum ASCII string transmit length: 255 bytes
•
X-10 communications:
-
•
Signals supported: All
Receive buffer: 32 signals
Transmission: Selectable to transmit on one or all three phases of the AC line
Collision avoidance: Waits for clear power line plus additional delay before transmitting
Collision detection: Automatic
Transmission retry limit (when transmission fails): User selectable from 0 to 31 attempts
Serial port:
-
Speed: 1200 baud to 19,200 baud
Communication settings: 8 data bits, 1 stop bit, no parity
Receive and transmit characters: ASCII or binary
•
IR receive and transmit carrier frequency limits: Between 10kHz and 100kHz
•
Video format: baseband NTSC video (color) (PAL video in Beta test)
•
On Screen Display capability:
-
•
Clock:
-
•
Number of rows: 12 (with typically only 11 displayed on most TVs)
Number of columns: 24
Number of characters available: 90
Number of background colors: 8
Number of characters sizes: 4
Number of blink rates: 4
Screen refresh rate: Typically every 15ms or faster
Clock resolution: 10 milliseconds
Leap year adjustment: Automatic
Daylight savings time adjustment: Automatic, but can be disabled
Sunrise and sunset calculations: Automatic
Battery backup data retention: 12 years minimum
Connectors
Serial Port
The serial port connector is a DB-9 female with the following pin assignments:
Chapter 26
Miscellaneous
289
Viewed looking into
end of connector
Pin 2 - TXD (transmit from unit)
Pin 3 - RXD (receive input into unit)
Pin 5 - Ground
All other pins are unused (not connected)
Infrared Transmit Jack
This is a 3.5mm stereo jack. However, only two of the three wires are used. When connecting a stereo
plug, the connections are as follows:
•
•
•
The plug's tip is the infrared output (5V when transmitting, open when not transmitting).
The plug's body is ground.
The plug's center ring is not unconnected.
A mono plug has the same tip and body connections, but no center ring.
Power Jack
This is a 2.1mm jack (although plugs of 2.0 to 2.3mm work fine). The shell (outer ring) is ground, and the
inner contact is the voltage). HomeVision requires 9VDC or 12VDC (9VDC is recommended to minimize
power dissipation and heat inside the unit). 300mA of current is sufficient, although we recommend 500mA to
have plenty of margin.
Dynamic Data Exchange (DDE)
Dynamic Data Exchange (DDE) is a process by which Windows-based programs can exchange data. The
HomeVision software incorporates a DDE interface that programmers can use when writing software to
communicate with the controller. This DDE capability is enabled with check boxes on the preferences
screen. If you use other software that uses this DDE capability, you will need to enable these check boxes.
Otherwise, leave these disabled. If you are a programmer and need information on interfacing with
HomeVision via DDE, we can provide you the necessary details.
Control Style
The controller is primarily an “event-driven” controller. It performs the actions you define when specific
events occur. However, the controller also provides some features of “loop-type” controllers. An
understanding of how these types of systems differ will help explain how the controller works.
In a “loop” system, the schedule is essentially a long list of conditions (If-Then statements) and associated
actions. The controller continually runs through them in a loop evaluating each condition. If a condition is
met, the controller then executes the associated actions. These systems can be powerful because you can
specify complex combinations of conditions. Loop systems have several drawbacks, however:
•
The controller spends most of its time checking conditions that are rarely true. This slows down its
response when an input changes or a command is received. The response time may be OK for
290
Chapter 26 Miscellaneous
simple applications, but not for more advanced applications. For example, an infrared remote
control used to control video text on the TV screen needs a quick response in order to be usable.
•
When an If-Then-Else statement is used, either the THEN or ELSE part will be executed every time
through the loop. Thus, some commands will be executed each loop. This is rarely the desired
behavior, as most commands only need to be executed once in response to some event.
Preventing repeated actions requires cumbersome programming techniques (such as setting a flag
after performing the action to indicates that it has already been done).
An “event-driven” system, in contrast, only executes actions when an event occurs. The controller constantly
checks for the events, then immediately performs the actions associated with it. This provides several
advantages over a loop-type system:
•
The controller can respond much faster to the event.
•
Programming is simpler, as the user can easily specify the actions to perform in response to any
event.
There is one disadvantage to an event-driven controller. What if the event that you care about is not one the
controller is looking for? For example, say you want to turn on a light when a variable is equal to 67 and it’s
dark outside. If the controller doesn’t have a built-in function checking for these precise conditions, you can’t
do it. For this reason, loop-type controllers can be more powerful, as you can typically set any combination
of conditions you care about.
The controller provides the best features of both types of systems. At its heart, it’s an event-driven controller
that provides the rapid input response typical of such systems. With it, you can develop powerful schedules
with only limited “programming”. However, the controller can also execute a group of user-specified
commands at a rapid rate (every few milliseconds with a periodic event set to execute every “loop”),
simulating the loop-type systems. You can then use combinations of If-Then-Else statements to check for
any set of conditions you desire and perform appropriate actions. You could even put the entire schedule
into this group of actions and have a completely loop-type system, although you’d lose many of the benefits
of an event-driven system.
Controller Error Messages
During operation, the controller constantly checks for errors. If one occurs, an ID number uniquely
identifying the error is stored in internal memory. There would normally be no need for you to worry about
this. However, if you’re experiencing problems or erratic operation, you may want to check for an error.
Table 26-1 provides a brief description of the error ID numbers. Most of the descriptions are probably too
cryptic to be of much use to you. However, they may be of help to us in diagnosing your problem.
There are several instances that could lead to errors:
•
Sending commands over the serial interface. Errors might occur in the physical interface (perhaps
due to noise), or in the format of a command you send. This is especially possible as you’re first
becoming familiar with the serial interface’s command structure and the format of the many
commands. One wrong keystroke could potentially cause an error. Extensive error checking is used
to reduce this possibility, but it is still possible for errors to occur. In extreme cases, such errors
could possibly corrupt the schedule, requiring reloading.
•
Failure of the schedule download process. If while you’re loading a schedule, power goes out, the
serial cable to the controller becomes disconnected, or another error occurs, the load will be
incomplete. The controller recognizes this and will remain “halted”. If you then command it to restart
(with the “Resume Controller” command), an error will occur because the schedule is invalid.
Chapter 26
Miscellaneous
291
•
The schedule memory becomes corrupted. Extensive error checking and data validation is
performed by the controller. Should the internal memory somehow become corrupted, the controller
should detect the problem and set an error message. You would then have to reload your schedule.
•
An invalid infrared signal is received. A few infrared signal types could generate error messages.
These will not cause any operational problems.
Table 26-1 Controller Error Message Summary
ID #
Decimal Hex
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
15
16
17
18
19
0F
10
11
12
13
DESCRIPTION
OK (no error)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if RS-232 serial receive buffer overflows
Set if RS-232 serial transmit buffer overflows
Set when an illegal flag command is encountered in your schedule
Set when an illegal variable command is encountered in your schedule
Set when an illegal output port command is encountered in your schedule
Set when an illegal X-10 command is encountered in your schedule
Set when an illegal timer command is encountered in your schedule
Set when an illegal condition type is encountered in your schedule
Set when an illegal variable condition type is encountered in your schedule
Set when an illegal time condition type is encountered in your schedule
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set if invalid data is found in RAM (reload your schedule)
Set when an illegal X-10 condition type is encountered in your schedule
Set when an illegal command type is encountered in your schedule
Set when an invalid output port number is encountered in your schedule
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
292
Chapter 26 Miscellaneous
ID #
Decimal Hex
20
21
14
15
22
23
24
25
16
17
18
19
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27
28
29
2A
43
44
45
2B
2C
2D
46
47
48
49
50
51
52
53
2E
2F
30
31
32
33
34
35
54
55
56
57
58
36
37
38
39
3A
59
60
3B
3C
DESCRIPTION
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set when an invalid flag number is encountered in your schedule
Set when an invalid variable number is encountered in your schedule
Set when an invalid timer number is encountered in your schedule
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if error receiving IR signal
Set if error receiving IR signal
Set if error receiving IR signal
Set if error receiving IR signal
Set if error receiving IR signal
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid input port number is encountered in your schedule
Set when an illegal input port command is encountered in your schedule
Set by TxBufString if serial transmit buffer is full
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set when an invalid IR signal number is encountered in your schedule
Set when an invalid macro number is encountered in your schedule
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set if error communicating with Port C or a device connected to the expansion port
Set if error communicating with Port C or a device connected to the expansion port
Set if error communicating with Port C or a device connected to the expansion port
Set when an illegal full output port command is encountered in your schedule
Set by HandleInPort if a port which has it’s state change bit set is disabled
Set if X-10 receive buffer overflows (and message is lost)
Set if any self-test fails
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set when an illegal I2C command is encountered
Set when an illegal controller command is encountered in your schedule
Set when an illegal IR command is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set if an X-10 transmission failed
Set if error receiving IR signal
Chapter 26
ID #
Decimal Hex
61
62
63
64
65
66
67
68
69
3D
3E
3F
40
41
42
43
44
45
70
71
72
73
74
75
76
77
78
79
80
81
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
60
97
98
99
100
101
102
103
104
105
61
62
63
64
65
66
67
68
69
Miscellaneous
DESCRIPTION
Not used
Not used
Not used
Set when an invalid macro number is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid video command is encountered in your schedule
Not used
Set if invalid data is found in RAM (reload your schedule)
Set if 82C55 is not set up properly or if invalid data is found in RAM (reload your
schedule)
Set when an invalid scheduled event number is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid scheduled event command is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid periodic event number is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid periodic event command is encountered in your schedule
Not used
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid macro command is encountered in your schedule
Set if invalid data is found in RAM or there's a major schedule error (reload your
schedule)
Set when an invalid serial command is encountered in your schedule
Set when an illegal special date condition type is encountered in your schedule
Set when an illegal controller condition type is encountered in your schedule
Set when an illegal time condition type is encountered in your schedule
Set when an illegal timer condition type is encountered in your schedule
Set when an illegal input port condition type is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set if invalid data is found in RAM (reload your schedule)
Set when If-Then statement or macro nesting is more than 16 levels deep (you must
change your schedule !)
Set if invalid data is found in RAM (reload your schedule)
Set if clock can’t be read properly or is an invalid value
Set when an illegal flag condition type is encountered
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid caller ID command is encountered
Set when presence pulse is missing from DS1820
Set when DS1820 sensor read fails
Set when an invalid thermostat command is encountered
Set when an illegal serial condition type is encountered in your schedule
293
294
Chapter 26 Miscellaneous
ID #
Decimal Hex
106
107
108
109
110
111
112
113
114
115
116
117
118
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
119
120
121
122
123
124
125
126
127
128
129
130
77
78
79
7A
7B
7C
7D
7E
7F
80
81
82
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
90
91
DESCRIPTION
Set if expansion board 1, part U18 is not responding
Set if expansion board 1, part U19 is not responding
Set if expansion board 2, part U18 is not responding
Set if expansion board 2, part U19 is not responding
Set if expansion board 1 doesn’t respond to IR zone command
Set if expansion board 2 doesn’t respond to IR zone command
Set if invalid data is found in RAM (reload your schedule)
Set when an invalid weather command is encountered in your schedule
Set when an invalid weather command is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set when an illegal thermostat condition type is encountered in your schedule
Set when an illegal Sylva I/O board number command is encountered in your schedule
Set if DS1820 sensor read fails and temperature conversion never completed
(probably wrong device address)
Set if DS1820 sensor read fails
Set if DS1820 sensor address fails
Set if DS1820 sensor access fails in multi-drop mode
Set if reading DS1820 sensors and no devices respond
Set if reading DS1820 sensors and data is invalid
Set when an invalid data log command is encountered in your schedule
Set if invalid data is found in RAM (reload your schedule)
Set when an illegal data log condition type is encountered in your schedule
Set when an invalid miscellaneous command is encountered in your schedule
Set when an invalid phone command is encountered in your schedule
Set when an illegal phone condition type is encountered in your schedule
Set when HomeVision-Phone/Serial or HomeVision-Phone/CID device does not
respond
Set when first HomeVision-Serial device does not respond
Set when second HomeVision-Serial device does not respond
Set when an illegal caller ID condition type is encountered in your schedule
Set when an invalid memory access command is encountered in your schedule
Not used
Not used
Not used
Not used
Set when an invalid security system command is encountered in your schedule
Set when an security system command accesses an invalid serial port
Set when a security system does not respond to HomeVision over the serial port
Set when an illegal security system condition type is encountered in your schedule
Set when a serial message received from a Sylva 8O8I/485 board is invalid
Set when a Sylva 8O8I/485 board does not respond to HomeVision over the serial port
Set when a Sylva 8O8I/485 board sends a Negative Acknowledgement message to
HomeVision over the serial port
Chapter 27
Trouble-Shooting
295
CHAPTER 27: TROUBLE-SHOOTING
Note: Our web site at www.csi3.com/homevis2.htm has a wide variety of trouble-shooting information. If this
manual doesn’t solve your problem, please visit this web site.
The trouble-shooting procedures are divided into seven topics:
•
•
•
•
•
•
•
Problems communicating with the controller
Infrared signal receive problems
Infrared signal transmit problems
Video problems
X-10 receive problems
X-10 transmit problems
X-10 noise/interference problems
Problems Communicating With The Controller
What is the controller’s “ON” LED doing?
1) Off:
Is the controller’s “TW-523” LED on?
A) Yes:
The controller is recovering from a power failure. It must complete this process before it will be able
to receive commands from the serial interface. This process typically only takes a few seconds.
However, if it’s performing many X-10 or IR transmissions or you’ve included delays in your power
failure recovery routine, it could take considerably longer.
B) No:
Are any of the controller’s other LEDs on or blinking?
I)
Yes:
Try removing and then reconnecting the power transformer jack several times. The jack can
sometimes seem to be inserted properly, but is barely making electrical contact, leading to
intermittent operation. If this does not solve the problem, then the controller is defective.
II) No:
Transmit an IR signal or X-10 signal to the controller. Does the appropriate “IR RX” or X-10 RX”
LED blink?
a) Yes:
The controller has power. Try removing and then reconnect the power transformer jack. If
this does not solve the problem, then the controller is defective.
b) No:
The controller is not running. Try the following:
•
Disconnect any devices you have connected to the I/O ports or IR TX jack. A short
circuit could be shutting down the controller’s internal power supply.
296
Chapter 27 Trouble-Shooting
•
•
Remove and then reconnect the power transformer jack. The jack can sometimes seem
to be inserted properly, but is barely making electrical contact, causing problems.
Verify the electrical outlet is functional.
If none of these solve the problem, then the controller or power transformer is defective.
2) On steady or blinking:
If the “ON” LED is on steady, the controller is running. If blinking, the controller is halted. However, it
should still communicate over the serial interface. Open the terminal emulator screen under the “Other”
menu. Remove then reapply power to the controller. Observe what is shown in the emulator window
immediately after power is restored:
A) Garbage characters:
The PC is probably set to a different baud rate then the controller. Try different baud rate settings in
the serial port configuration screen (under the “Configure” menu). If none of the baud rates work:
•
•
•
•
Verify the serial cable connectors are properly mated and secured.
Try a different serial cable.
Reboot your computer and try again. There may be a problem with the serial port.
Try a different serial port.
If none of these solve the problem, either the controller or the computer’s serial port is defective.
B) No characters:
Try the following:
•
•
•
•
•
•
•
Verify the computer’s communications port is opened (the status will be shown at the bottom
right of the main software screen). If not, select the correct serial port from the serial port
configuration screen (under the “Configure” menu). If the port will not open, shut down all other
applications and try again. If it still won’t open, reboot your computer. If it still won’t open, there
is a problem with your computer.
Verify the proper computer serial port is selected.
Verify the computer baud rate is correct. Try each of the baud rate settings on the serial port
configuration screen one at a time and see if the computer can communicate with the controller.
Verify the serial cable is connected and the connectors are properly mated and secured.
Reboot your computer and try again. There may be a problem with the serial port.
Try a different serial port.
Try a different serial cable.
If none of these solve the problem, either the controller or the computer’s serial port is defective.
C) Message received OK:
The computer is receiving serial transmissions from the controller OK. Now check transmissions to
the controller. Open the controller command screen under the “Control” menu. Send the commands
to turn the user LED on and off. Does the controller “U” LED change as commanded?
I)
No:
Try the following:
•
•
•
•
Verify the serial cable connectors are properly mated and secured.
Reboot your computer and try again. There may be a problem with the serial port.
Try a different serial port.
Try a different serial cable.
If none of these solve the problem, either the controller or the computer’s serial port is defective.
Chapter 27
Trouble-Shooting
297
II) Yes:
Communications seems to be working. To perform a thorough communications test, open the
“Debug” screen under the “Other” menu. Click the “Start” button under the “Serial Comm. Test”.
The test will run until aborted. The fields display the number of trials and errors. Each trial
consists of 512 separate commands of about 12 serial characters each. If there are any errors,
then the serial communications is intermittent. If this happens, try the following:
•
•
•
•
Verify the serial cable connectors are properly mated and secured.
Reboot your computer and try again. There may be a problem with the serial port.
Try a different serial port.
Try a different serial cable.
If none of these solve the problem, either the controller or the computer’s serial port is defective.
IR Receive Problem
Transmit an IR signal to the controller from several feet away. Does the “IR RX” LED blink?
1) No:
Check the remote’s batteries and/or try another remote device. Verify the controller is powered (the
“ON” LED is lit). If the “IR RX” LED never blinks, the controller is defective.
2) Yes:
Open the IR test screen under the “Other” menu. Transmit another IR signal to the controller. Does the
“LED” on the IR test screen blink and are the Device Code and Key Code fields filled in (either with
numbers or question marks)?
A) No:
Verify the following from the status screen (under the “Other” menu):
•
•
•
•
The controller is running and not halted.
The IR receive function is enabled
The IR report mode is enabled.
The master report mode is enabled.
If any of these are improperly set, correct them and try again. If the controller still doesn’t report the
signals on the IR test screen, check communications with the controller as discussed earlier in this
trouble-shooting chapter. If the controller still doesn’t report IR signals, it may be defective.
B) Yes:
Are the Device and Key Codes filled in with numbers or question marks?
I)
Numbers:
The controller correctly received IR signals which follow the “standard” format. Test each of your
remote’s buttons and record their Device and Key Codes. Make sure these codes match those
shown:
•
•
On the video remote control configuration screen under the “Configure” menu. These codes
are used to navigate through the video screen system.
On the IR signal summary screen (if you’ve set up any signals to perform actions when they
are received).
298
Chapter 27 Trouble-Shooting
If the signal’s Device and Key Codes are correct, the controller should respond to the signals
(assuming they have been loaded into the controller). If necessary, change the Device and Key
Code settings and reload the schedule.
II) Question Marks:
The remote signal doesn’t follow the standard format. This signals cannot be used to control the
video screen system or to issue commands to the controller (they can still be “learned” for retransmission, however). If you expected this signal to follow the standard format and it didn’t, try
the following:
•
•
•
Verify your remote is set to the desired code.
Make sure you’ve selected the right function on your remote (i.e., TV, VCR, cable, etc.).
If necessary, you may have to try a different code.
IR Transmit Problem
From the IR control screen, transmit an IR signal that you’ve previously learned. Does the “IR TX” LED on
the controller blink?
1) No:
The signal was not transmitted. Examine the signal using the IR signal summary screen.
“Transmit Enabled” box checked? If not, you must enable it and reload the schedule.
Is the
NOTE: The “Transmit Enabled” box shows the setting that will take effect when the schedule is
loaded in the controller. It is possible to enable and disable signals from commands in the schedule
also; such changes will not be reflected on the IR signal summary screen. If your schedule disables
signals in this way, you may not realize that it’s currently disabled. You can view the current status
on the TV screen from the IR signal screen.
If the signal is enabled but the “IR TX” LED still won’t blink, the signal may have been learned
improperly. Try learning it again, resaving it to your schedule, then reloading it.
2) Yes:
The signal was transmitted. If your equipment did not respond to the signal, try the following:
A) If you’re using the controller’s built-in LED to transmit, aim the controller squarely at the controller
and/or move it closer to the equipment. Verify the jumper (JP) on the circuit board is in place.
B) If you’re using an external transmitter to transmit, make sure its cable is plugged into the IR TX jack.
Verify the transmitter is properly connected and powered. Aim the transmitter squarely at the
controller and/or move it closer to the equipment.
If the signal still does not control the equipment, the signal may have been learned improperly. Try
learning it again, resaving it to your schedule, then reloading it. If you cannot get the signal learned
properly so that it controls your equipment, contact us. Be prepared to provide the brand name and
description of your equipment. It would also be very helpful if you could provide the brand and code
number of a programmable remote that works with your equipment. If you do, we can test the signal
ourselves to determine why it isn’t working.
Video Problem
Is the video output jack providing any video output?
1) No:
Chapter 27
Trouble-Shooting
299
Try the following:
•
•
•
Verify the video cable is properly connected from the controller’s video output jack to the video input
jack on your TV (or VCR, modulator, etc.).
Make sure your TV (or other device) has selected the video jack for input. This is a common
problem.
Open the video control screen under the “Control” menu. To provide video text output, perform
these commands:
Stop video system
Start video menu system
This should display page 1 of the video menu system. If the display is erratic or unclear, refer to the
video chapter to make adjustments to the video signal level. If there is still no output at all, the
controller may be defective.
2) Yes:
What is the exact problem?
A) Text is blurry:
Refer to the video chapter to make adjustments to the video signal level.
B) Screen appears scrambled:
Refer to the video chapter to make adjustments to the video signal level.
C) Characters are flickering on and off:
If you’re displaying your own video screen, this problem can be caused by:
•
•
•
Periodically clearing the screen, then rewriting it.
Repeatedly writing two or more characters to the same spot on the screen.
Writing a text string that wraps around to the following line, then writing the next line starting
at the first column (thus over-writing the wrapped-around text from the previous line).
D) External video is not passed through the controller:
Verify the following:
•
•
•
The video switch is set to the external video position.
The video cable is properly connected from the output jack of the video source to the
controller’s input jack.
The external video source is providing a video signal.
NOTE: It is usually not possible to connect both of the controller’s video jacks to a TV and
have the TV act as the video output source. The TV’s video output will normally be the
same as what’s being displayed. If the TV’s video input is being received from the controller,
and the controller is passing the external video straight through, then the TV will try to
display its own output. This is, in effect, an endless loop where the TV really has no video
input and cannot display anything. Therefore, the video input source for the controller
should normally be another device, such as VCR, cable box, camera, etc.
300
Chapter 27 Trouble-Shooting
X-10 Interface Cable Problem
1) The TW-523 connects with a 4-conductor "straight-thru" phone cable. "Cross-wired" phone cables will
not work. If you use a cross-wired cable, the “X-10 RX” LED will go on and the “TW-523” LED will go off.
If you see this condition, you have a crossed cable (or a defective TW-523 module). You can also
determine which type of cable you have by butting the ends together (as if trying to plug one end into the
other). When you do this, the colored wires should all be aligned.
X-10 Receive Problem
1) Verify the LED on the TW-523 module is lit. If not, make sure it’s plugged into a live circuit. If the LED is
still not lit, then the TW-523 is defective.
2) Verify the controller's “TW-523” LED is lit. If not, try the following:
•
•
•
Verify that the phone cable between the controller and the TW-523 module is installed and the
connectors are securely mated.
If you’re using your own phone cable, make sure it’s a 4-conductor cable. Many cables are only twoconductor and will not work. Test the controller with its original cable.
Try using a different TW-523 module.
If the controller's “TW-523” LED still does not light, check communications with it as described earlier. If
communications are OK, but the “TW-523” LED will not light when the TW-523 module is properly
installed, the controller is defective (although this particularly failure is extremely unlikely).
3) Open the X-10 control screen from the “Control” menu. Transmit X-10 signals to the controller using a
mini-controller or other X-10 transmitting device. Are the X-10 signals reported on the control screen?
A) No:
Does the controller’s “X-10 RX” LED blink when the signal is transmitted?
I)
Yes:
Try the following:
•
•
•
•
•
Verify the controller is running (not halted) by using the status screen under the “Other”
menu. If halted, either resume it or reload your schedule.
Verify the X-10 receive function is enabled (using the status screen under the “Other” menu).
If necessary, enable it from the controller command screen.
Verify that the X-10 report mode and the master report mode are both enabled. If
necessary, enable them from the controller command screen.
Verify communications with the controller as described earlier.
Try using a different TW-523 module.
If none of these solve the problem, the controller may be defective.
II) No:
Does the LED on the TW-523 module blink when the signal is transmitted?
a) Yes:
Try the following:
•
Verify that the phone cable between the controller and the TW-523 module is installed
and the connectors are securely mated.
Chapter 27
•
•
Trouble-Shooting
301
If you’re using your own phone cable, make sure it’s a 4-conductor cable. Many cables
are only two-conductor and will not work. Test the controller with its original cable.
Try using a different TW-523 module.
If none of these solve the problem, either the TW-523 module or the controller is defective
(although this particularly failure is extremely unlikely).
b) No:
Either the signal is not reaching the TW-523 module or the TW-523 is defective. Try
plugging an X-10 appliance module (or other receiver) into the same outlet as the TW-523.
If it responds to X-10 signals but the TW-523 LED doesn’t blink, the TW-523 is defective. If
the appliance module doesn’t respond either, the problem is elsewhere in your house. Refer
to “X-10 Noise/Interference Problems” for help in isolating this type of problem.
B) Only some signals are reported:
The problem is probably with the X-10 signals traveling through your household wiring. Refer to “X10 Noise/Interference Problems” for help is isolating this type of problem.
C) Yes, all signals are reported:
The controller is properly receiving X-10 signals.
X-10 Transmit Problem
1) Verify the LED on the TW-523 module is lit. If not, make sure it’s plugged into a live circuit. If the LED is
still not lit, the TW-523 is defective.
2) Verify the controller’s “TW-523” LED is lit. If not, try the following:
•
•
•
Verify that the phone cable between the controller and the TW-523 module is installed and the
connectors are securely mated.
If you’re using your own phone cable, make sure it’s a 4-conductor cable. Many cables are only twoconductor and will not work. Test the controller with its original cable.
Try using a different TW-523 module.
If the controller’s “TW-523” LED still does not light, check communications with it as described earlier. If
communications are OK, but the “TW-523” LED will not light when the TW-523 module is properly
installed, the controller is defective (although this particularly failure is extremely unlikely).
3) Open the X-10 control screen from the “Control” menu. Use it to transmit an X-10 signal to a device you
can observe. What message is reported at the bottom of the window”?
A) “Command Failed - No Controller Response” or “Command Failed - Invalid Controller Response”:
This could occur if the controller is halted or if there was a communications problem between the
controller and the computer. Open the status screen under the “Other” menu and read the
controller’s status. If the controller is halted or there are other errors, reload your schedule. If there
are no errors, refer to the communications troubleshooting section to verify proper communications.
B) “Command Executed”:
The controller transmitted the signal. Did the device respond properly?
I)
Yes:
The transmission worked.
302
Chapter 27 Trouble-Shooting
II) No:
Did the controller’s “X-10 TX” LED blink when the signal was transmitted?
a) No:
This could occur if the controller is halted or experienced an error. Open the status screen
under the “Other” menu and read the controller’s status. If the controller is halted or there
are other errors, reload your schedule. If no errors are reported, try transmitting again. If
this problem persists, the controller may be defective.
b) Yes:
Did the LED on the TW-523 module blink when the signal was transmitted?
i)
Yes:
The command was properly transmitted. The problem is probably with the X-10 signals
traveling through your household wiring. Refer to “X-10 Noise/Interference Problems”
for help is isolating this type of problem.
ii) No:
Try the following:
•
•
Verify that the cable between the controller and the TW-523 module is installed and
the connectors are securely mated.
Make sure the phone cable is a 4-conductor cable. Many cables are only twoconductor and will not work. Test the controller with its original cable.
If these do not solve the problem, the TW-523 module is probably defective. There is a
very slight chance that the controller is defective.
X-10 Noise/Interference Problems
X-10 systems often experience problems with the signals properly transmitting through household wiring. If
your X-10 communications are intermittent or only some module work, try the following:
•
•
•
•
Try plugging either the controller of the X-10 transmitter/receiver into a different electrical outlet. If
the controller and the X-10 device are on different electrical circuits, you may need a phase coupler
or amplifier to ensure proper communications. This is especially true with larger houses, where the
signal gets attenuated significantly.
Make sure the controller’s TW-523 module and other X-10 devices are not plugged into a surge
protector. These sometimes filter out the X-10 signal.
Turn off other electrical appliances. Some of these can generate noise and drown out the X-10
signals. Filters are available that can eliminate this problem.
You can test transmissions from the controller throughout your house in the following manner:
1) In your schedule, create a periodic event that first sends out a specific X-10 ON command, then
an OFF command. Load this into the controller.
2) Connect a lamp, radio, or other small electrical device to a lamp or appliance module.
3) Plug the lamp or appliance module into the various electrical outlets throughout your house. If
the controller’s X-10 transmissions are getting through, the device will go on and off.
Use this to determine if you’re having communication problems with certain areas in your house.
If this doesn’t solve your problem, refer to the “X10 debugging tips” file installed in the HomeVision directory.
Appendix A
FCFCC/CE Information
A-1
APPENDIX A: FCC/CE INFORMATION
FCC Rules Part 15 - Digital Devices
The United States Federal Communications Commission has specified that the following notice be brought
to the attention of users of this product.
This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to
Part 15 of the FCC rules. These limits are designed to provide reasonable protection against harmful
interference in a residential installation. This equipment generates, uses, and can radiate radio frequency
energy and, if not installed and used in accordance with the instructions, may cause harmful interference to
radio communications. However, there is no guarantee that interference will not occur in a particular
installation. If this equipment does cause harmful interference to radio or television reception, which can be
determined by turning the equipment off and on, the user is encouraged to try and correct the interference by
one or more of the following measures:
•
Reorient or relocate the receiving antenna.
•
Increase the separation between the equipment and receiver.
•
Connect the equipment into an outlet on a circuit different from that to which the receiver is
connected.
•
Consult the dealer or an experienced radio/TV technician for help.
The user may find the following booklet, prepared by the Federal Communications Commission, helpful: How
to Identify and Resolve Radio/TV Interference Problems. This booklet is available from the U.S. Government
Printing Office, Washington, D.C. 20402, Stock No. 004-000-00345-4.
Use of shielded cables for the video and input/output ports is required to comply with Class B limits of Part
15 of the FCC rules.
Any changes or modifications to this equipment not expressly approved by Custom Solutions, Inc. may
cause harmful interference and void the FCC authorization to operate this equipment.
CE Compliance Information (For Europe)
HomeVision is CE-compliant and marked. Harmonized Standards were used in the product design and
testing, and a conformity assessment was performed to evaluate compliance. Custom Solutions, Inc. has
issued a Declaration of Conformity stating the products meet the essential requirements of the
Electromagnetic Compatibility Directive (EMC Directive 89/336/EEC). A copy of the Declaration of
Conformity will be provided upon request.
HomeVision and other Custom Solutions, Inc. products are usually combined with other products to make a
complete home automation system. The overall performance and CE compliance of the end system
depends on a variety of factors. The following information is intended to help end users and installers
ensure the end-system incorporating Custom Solutions, Inc. products meets CE requirements and user
needs:
•
International (220V) versions of HomeVision and HomeVision-PC are almost always used with two
accessories not provided by Custom Solutions, Inc. These are a 9 to 12 VDC power supply and an
X-10 powerline interface module. It is the responsibility of the distributor, installer, and end user to
A-2
Appendix A
FCC/CE Information
ensure that the chosen devices are CE-compliant. Failure to do so may result in a non-compliant
system and, potentially, EMC problems.
•
•
To minimize radiated emissions, “ferrites” should be placed on all cables connected to HomeVision,
HomeVision-PC, the Multifunction Expansion Board, Port Extender Board, and HomeVision-Serial
devices. These ferrite devices simply clamp around one or more cables. The ferrite device should
be placed as close to the HomeVision device as practical. Custom Solutions, Inc. does not provide
these ferrite devices - the distributors, installers, or end users are responsible for obtaining them.
The following table lists common ferrite devices that are suitable and some of their distributors.
Although the system will function without these devices, emissions might exceed CE limits.
Cable Type
Manufacturer
Round
Round
Round
Round
Flat (ribbon)
Flat (ribbon)
Flat (ribbon)
Round
Round
Flat (ribbon)
Round
Round
Steward
Steward
Steward
Steward
Steward
Steward
Steward
Fair-Rite
Fair-Rite
Fair-Rite
Fair-Rite
Fair-Rite
Manufacturer
Part Num.
28A0392-0A0
28A0392-0A2
28A2025-0A0
28A2025-0A2
28S2022-0M0
28S2022-0P0
28S2023-0M0
044 316 4151
044 316 7251
044 316 6651
264 316 4151
264 316 7251
Distributor
Digi-Key
Digi-Key
Digi-Key
Digi-Key
Digi-Key
Digi-Key
Digi-Key
Mouser
Mouser
Mouser
Distributor
Part Num.
240-2068
240-2070
240-2074
240-2075
240-2102
240-2103
240-2104
623-0443164151
623-0443167251
623-0443166651
Other cables connected to the home automation system can present risks of EMC problems. Cables
may interconnect many devices throughout the home. These cables could be many meters in
length, and can both emit electromagnetic radiation and pick up electromagnetic radiation from other
sources. There are several things that can be done to minimize such interference:
•
•
•
•
•
Use ferrites on the cables
Use shielded, twisted-pair cables
Minimize the total cable length
Route the cables away from the home’s AC power lines
Route the cables away from sensitive equipment such as radio receivers
If the end user believes EMC problems may exist in the automation system and is unable to resolve
them, he/she should contact a professional installer for assistance. Custom Solutions, Inc. is not
responsible for the performance of the overall automation system using products from other
companies.
Appendix B
ASCII Code Chart
APPENDIX B: ASCII CODE CHART
Most Significant Figure
L
e
a
s
t
S
i
g
n
i
f
i
c
a
n
t
F
i
g
u
r
e
HEX|| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
===++=====+=====+=====+=====+=====+=====+=====+=====+
0 || NUL | DLE |
| 0 | @ | P | ` | p |
---++-----+-----+-----+-----+-----+-----+-----+-----+
1 || SOH | DC1 | ! | 1 | A | Q | a | q |
---++-----+-----+-----+-----+-----+-----+-----+-----+
2 || STX | DC2 | " | 2 | B | R | b | r |
---++-----+-----+-----+-----+-----+-----+-----+-----+
3 || ETX | DC3 | # | 3 | C | S | c | s |
---++-----+-----+-----+-----+-----+-----+-----+-----+
4 || EOT | DC4 | $ | 4 | D | T | d | t |
---++-----+-----+-----+-----+-----+-----+-----+-----+
5 || ENQ | NAK | % | 5 | E | U | e | u |
---++-----+-----+-----+-----+-----+-----+-----+-----+
6 || ACK | SYN | & | 6 | F | V | f | v |
---++-----+-----+-----+-----+-----+-----+-----+-----+
7 || BEL | ETB | ' | 7 | G | W | g | w |
---++-----+-----+-----+-----+-----+-----+-----+-----+
8 || BS | CAN | ( | 8 | H | X | h | x |
---++-----+-----+-----+-----+-----+-----+-----+-----+
9 || HT | EM | ) | 9 | I | Y | i | y |
---++-----+-----+-----+-----+-----+-----+-----+-----+
A || LF | SUB | * | : | J | Z | j | z |
---++-----+-----+-----+-----+-----+-----+-----+-----+
B || VT | ESC | + | ; | K | [ | k | { |
---++-----+-----+-----+-----+-----+-----+-----+-----+
C || FF | FS | , | < | L | \ | l | | |
---++-----+-----+-----+-----+-----+-----+-----+-----+
D || CR | GS | - | = | M | ] | m | } |
---++-----+-----+-----+-----+-----+-----+-----+-----+
E || SO | RS | . | > | N | ^ | n | ~ |
---++-----+-----+-----+-----+-----+-----+-----+-----+
F || SI | US | / | ? | O | _ | o | DEL |
---++-----+-----+-----+-----+-----+-----+-----+-----+
B-1
Appendix C
Latitudes and Longitudes
APPENDIX C: LATITUDES AND LONGITUDES
City
Birmingham
Gadsden
Huntsville
Mobile
Montgomery
Anchorage
Fairbanks
Juneau
Nome
Sitka
Calgary
Edmonton
Lethbridge
Flagstaff
Phoenix
Tucson
Yuma
Fort Smith
Hot Springs
Little Rock
Nelson
Prince Rupert
Vancouver
Victoria
Bakersfield
Berkeley
El Centro
Eureka
Fresno
Long Beach
Los Angeles
Oakland
Pasadena
Sacramento
San Bernadino
San Diego
San Francisco
San Jose
Santa Barbara
Santa Cruz
Stockton
State/Province
Alabama
Alabama
Alabama
Alabama
Alabama
Alaska
Alaska
Alaska
Alaska
Alaska
Alberta
Alberta
Alberta
Arizona
Arizona
Arizona
Arizona
Arkansas
Arkansas
Arkansas
British Columbia
British Columbia
British Columbia
British Columbia
California
California
California
California
California
California
California
California
California
California
California
California
California
California
California
California
California
Latitude
Longitude
33.52
34.02
34.73
30.70
32.38
61.17
64.80
58.30
64.50
57.17
51.05
53.55
49.70
35.20
33.45
32.22
32.72
35.38
34.52
34.75
49.50
54.32
49.32
48.43
35.38
37.87
32.63
40.80
36.73
33.77
34.05
37.80
34.15
38.58
34.12
32.72
37.78
37.33
34.42
36.97
37.97
86.82
86.02
86.58
88.05
86.32
149.98
147.85
134.42
165.42
135.25
114.05
113.48
112.83
111.65
112.07
110.97
114.62
94.43
93.05
92.28
117.28
130.32
123.08
123.37
119.02
122.27
115.55
124.13
119.78
118.18
118.23
122.27
118.15
121.50
117.28
117.15
122.42
121.88
119.70
122.02
121.28
C-1
C-2
Appendix C
City
Colorado Springs
Denver
Grand Junction
Pueblo
Bridgeport
Hartford
Meriden
New Britain
New Haven
Stamford
Waterbury
Washington
Wilmington
Daytona Beach
Gainesville
Jacksonville
Key West
Miami
Orlando
Pensacola
St. Petersburg
Sarasota
Tallahassee
Tampa
West Palm Beach
Atlanta
Augusta
Columbus
Macon
Savannah
Hilo
Honolulu
Lihue
Boise
Idaho Falls
Lewiston
Pocatello
Bloomington
Champaign
Chicago
Decatur
Moline
Peoria
Rockford
Springfield
Urbana
Latitudes and Longitudes
State/Province
Colorado
Colorado
Colorado
Colorado
Connecticut
Connecticut
Connecticut
Connecticut
Connecticut
Connecticut
Connecticut
D.C.
Delaware
Florida
Florida
Florida
Florida
Florida
Florida
Florida
Florida
Florida
Florida
Florida
Florida
Georgia
Georgia
Georgia
Georgia
Georgia
Hawaii
Hawaii
Hawaii
Idaho
Idaho
Idaho
Idaho
Illinois
Illinois
Illinois
Illinois
Illinois
Illinois
Illinois
Illinois
Illinois
Latitude
Longitude
38.83
39.75
39.07
38.27
41.18
41.77
41.53
41.67
41.30
41.05
41.55
38.90
39.75
29.22
29.65
30.33
24.57
25.78
28.55
30.42
27.77
27.33
30.45
27.95
26.72
33.75
33.47
32.47
32.83
32.08
19.73
21.30
21.98
43.62
43.50
46.40
42.87
40.48
40.12
41.87
39.85
41.52
40.70
42.27
39.80
40.12
104.82
104.98
108.57
104.62
73.18
72.68
72.80
72.78
72.93
73.53
73.05
77.02
75.55
81.02
82.32
81.67
81.80
80.20
81.38
87.22
82.63
82.55
84.28
82.45
80.05
84.40
81.97
84.98
83.63
81.10
155.08
157.87
159.38
116.20
112.02
117.03
112.45
89.00
88.25
87.63
88.95
90.52
89.60
89.10
89.65
88.20
Appendix C
City
Evansville
Fort Wayne
Gary
Indianapolis
Lafayette
Muncie
South Bend
Terre Haute
Cedar Rapids
Davenport
Des Moines
Dubuque
Iowa City
Sioux City
Waterloo
Dodge City
Kansas City
Salina
Topeka
Wichita
Ashland
Bowling Green
Lexington
Louisville
Paducah
Baton Rouge
New Orleans
Shreveport
Augusta
Bangor
Eastport
Portland
Brandon
Churchill
Winnipeg
Baltimore
Boston
Brockton
Cambridge
Fall River
Holyoke
Lawrence
Lowell
New Bedford
State/Province
Indiana
Indiana
Indiana
Indiana
Indiana
Indiana
Indiana
Indiana
Iowa
Iowa
Iowa
Iowa
Iowa
Iowa
Iowa
Kansas
Kansas
Kansas
Kansas
Kansas
Kentucky
Kentucky
Kentucky
Kentucky
Kentucky
Louisiana
Louisiana
Louisiana
Maine
Maine
Maine
Maine
Manitoba
Manitoba
Manitoba
Maryland
Massachusetts
Massachusetts
Massachusetts
Massachusetts
Massachusetts
Massachusetts
Massachusetts
Massachusetts
Latitudes and Longitudes
Latitude
Longitude
37.97
41.07
41.60
39.77
40.42
40.18
41.68
39.47
41.97
41.52
41.58
42.50
41.67
42.50
42.50
37.75
39.12
38.85
39.05
37.70
38.48
37.00
38.05
38.25
37.08
30.45
29.95
32.52
44.32
44.80
44.90
43.67
49.85
58.75
49.90
39.28
42.35
42.08
42.37
41.70
42.20
42.70
42.63
41.63
87.57
85.13
87.33
86.17
86.90
85.38
86.25
87.40
91.67
90.58
93.62
90.67
91.53
96.42
92.33
100.02
94.63
97.62
95.67
97.33
82.63
86.45
84.50
85.77
88.60
91.18
90.07
93.75
69.77
68.77
67.00
70.25
99.95
94.17
97.13
76.62
71.05
71.02
71.10
71.15
72.62
71.17
71.32
70.93
C-3
C-4
Appendix C
City
Pittsfield
Somerville
Springfield
Worcester
Mexico City
Ann Arbor
Battle Creek
Bay City
Detroit
Flint
Grand Rapids
Jackson
Kalamazoo
Lansing
Saginaw
Duluth
Minneapolis
Rochester
St. Cloud
St. Paul
Biloxi
Gulfport
Jackson
Natchez
Columbia
Joplin
Kansas City
St. Joseph
St. Louis
Springfield
Billings
Butte
Great Falls
Havre
Helena
Alert
Yellowknife
Lincoln
Omaha
Carson City
Las Vegas
Reno
Fredericton
Moncton
St. John
Latitudes and Longitudes
State/Province
Massachusetts
Massachusetts
Massachusetts
Massachusetts
Mexico
Michigan
Michigan
Michigan
Michigan
Michigan
Michigan
Michigan
Michigan
Michigan
Michigan
Minnesota
Minnesota
Minnesota
Minnesota
Minnesota
Mississippi
Mississippi
Mississippi
Mississippi
Missouri
Missouri
Missouri
Missouri
Missouri
Missouri
Montana
Montana
Montana
Montana
Montana
N.W. Territories
N.W. Territories
Nebraska
Nebraska
Nevada
Nevada
Nevada
New Brunswick
New Brunswick
New Brunswick
Latitude
Longitude
42.45
42.38
42.10
42.27
19.43
42.28
42.32
43.60
42.33
43.02
42.97
42.25
42.28
42.73
43.43
46.78
44.98
44.02
45.57
44.95
30.40
30.37
32.30
31.57
38.95
37.08
39.08
39.77
38.63
37.22
45.78
46.02
47.50
48.55
46.60
82.50
62.45
40.82
41.25
39.17
36.17
39.52
45.97
46.08
45.27
73.25
71.10
72.60
71.80
99.12
83.75
85.18
83.88
83.05
83.70
85.67
84.40
85.58
84.55
83.93
92.10
93.27
92.47
94.17
93.10
88.88
89.10
90.18
91.40
92.33
94.50
94.58
94.85
90.20
93.30
108.50
112.53
111.30
109.72
112.03
62.35
114.38
96.70
95.93
119.77
115.15
119.82
66.65
64.78
66.07
Appendix C
City
Concord
Manchester
Portsmouth
Atlantic City
Camden
Elizabeth
Jersey City
Newark
Paterson
Trenton
Albuquerque
Carlsbad
Gallup
Santa Fe
Albany
Binghamton
Buffalo
Central Islip
New York
Niagara Falls
Rochester
Schenectady
Syracuse
Troy
Utica
White Plains
Yonkers
St. John’s
Asheville
Charlotte
Durham
Greensboro
Raleigh
Wilmington
Winston-Salem
Bismark
Fargo
Minot
Dartmouth
Halifax
Sydney
Akron
Canton
Cincinnati
Cleveland
State/Province
New Hampshire
New Hampshire
New Hampshire
New Jersey
New Jersey
New Jersey
New Jersey
New Jersey
New Jersey
New Jersey
New Mexico
New Mexico
New Mexico
New Mexico
New York
New York
New York
New York
New York
New York
New York
New York
New York
New York
New York
New York
New York
Newfoundland
North Carolina
North Carolina
North Carolina
North Carolina
North Carolina
North Carolina
North Carolina
North Dakota
North Dakota
North Dakota
Nova Scotia
Nova Scotia
Nova Scotia
Ohio
Ohio
Ohio
Ohio
Latitudes and Longitudes
Latitude
Longitude
43.20
42.98
43.08
39.37
39.95
40.67
40.73
40.73
40.92
40.22
35.08
32.43
35.53
35.68
42.65
42.10
42.88
40.78
40.75
43.10
43.17
42.82
43.05
42.73
43.10
41.03
40.93
47.57
35.60
35.23
36.00
36.07
35.78
34.23
36.10
46.80
46.88
48.23
44.67
44.65
46.15
41.08
40.80
39.10
41.50
71.53
71.47
70.75
74.43
75.12
74.22
74.07
74.17
74.17
74.77
106.65
104.25
108.75
105.93
73.75
75.92
78.87
73.20
74.00
79.05
77.60
73.93
76.15
73.68
75.23
73.77
73.90
52.72
82.55
80.85
78.92
79.78
78.63
77.95
80.25
100.78
96.78
101.30
63.57
63.58
60.18
81.52
81.38
84.52
81.70
C-5
C-6
Appendix C
City
Columbus
Dayton
Hamilton
Lima
Lorain
Springfield
Steubenville
Toledo
Youngstown
Zanesville
Enid
Oklahoma City
Tulsa
Belleville
Brantford
Burlington
Guelph
Hamilton
Kingston
Kitchener
London
Mississauga
Niagara Falls
North Bay
Oshawa
Ottawa
Peterborough
Port Arthur
St. Catharines
Sault Ste. Marie
Sudbury
Thunder Bay
Toronto
Windsor
Baker
Eugene
Klamath Falls
Portland
Salem
Charlottetown
Allentown
Altoona
Bethlehem
Erie
Harrisburg
Latitudes and Longitudes
State/Province
Ohio
Ohio
Ohio
Ohio
Ohio
Ohio
Ohio
Ohio
Ohio
Ohio
Oklahoma
Oklahoma
Oklahoma
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Ontario
Oregon
Oregon
Oregon
Oregon
Oregon
P.E. Island
Pennsylvania
Pennsylvania
Pennsylvania
Pennsylvania
Pennsylvania
Latitude
Longitude
40.00
39.77
39.40
40.75
41.47
39.93
40.37
41.65
41.10
39.93
36.40
35.47
36.15
44.17
43.15
43.33
43.55
43.25
44.23
43.45
42.98
43.55
43.10
46.32
43.90
45.43
44.32
48.50
43.17
46.50
46.48
48.38
43.65
42.32
44.78
44.05
42.17
45.52
44.93
46.23
40.60
40.52
40.62
42.12
40.27
83.00
84.20
84.57
84.10
82.18
83.80
80.62
83.55
80.65
82.02
97.88
97.52
96.00
77.38
80.27
79.80
80.25
79.88
76.48
80.48
81.23
79.58
79.07
79.47
78.87
75.70
78.32
89.28
79.25
84.33
80.98
89.25
79.38
83.03
117.83
123.10
121.73
122.68
123.03
63.13
75.47
78.40
75.38
80.08
76.88
Appendix C
City
Johnstown
Lancaster
Philadelphia
Pittsburgh
Reading
Scranton
Wilkes-Barre
York
San Juan
Hull
La Salle
Laval
Montreal
Quebec City
Sherbrooke
Trois-Rivieres
Providence
Regina
Saskatoon
Moose Jaw
Charleston
Columbia
Greenville
Spartanburg
Pierre
Rapid City
Sioux Falls
Chattanooga
Knoxville
Memphis
Nashville
Abilene
Amarillo
Austin
Beaumont
Brownsville
Corpus Christi
Dallas
El Paso
Fort Worth
Galveston
Houston
Laredo
Lubbock
Marshall
State/Province
Pennsylvania
Pennsylvania
Pennsylvania
Pennsylvania
Pennsylvania
Pennsylvania
Pennsylvania
Pennsylvania
Puerto Rico
Quebec
Quebec
Quebec
Quebec
Quebec
Quebec
Quebec
Rhode Island
Saskatchewan
Saskatchewan
Saskatchewan
South Carolina
South Carolina
South Carolina
South Carolina
South Dakota
South Dakota
South Dakota
Tennessee
Tennessee
Tennessee
Tennessee
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Texas
Latitudes and Longitudes
Latitude
Longitude
40.33
40.03
39.95
40.43
40.33
41.42
41.25
39.97
18.45
45.43
45.43
45.55
45.52
46.82
45.40
46.35
41.83
50.45
52.13
50.40
32.78
34.00
34.85
34.95
44.37
44.08
43.55
35.05
35.97
35.15
36.17
32.45
35.20
30.27
30.08
25.90
27.80
32.78
31.77
32.75
29.30
29.75
27.50
33.58
32.55
78.92
76.30
75.15
80.00
75.93
75.67
75.88
76.73
66.07
75.72
73.67
73.75
73.55
71.22
71.85
72.55
71.42
104.62
106.67
105.53
79.93
81.03
82.40
81.93
100.35
103.22
96.73
85.32
83.92
90.05
86.78
99.73
101.83
97.75
94.10
97.50
97.40
96.80
106.48
97.33
94.80
95.37
99.52
101.85
94.38
C-7
C-8
Appendix C
City
Port Arthur
San Angelo
San Antonio
Texarkana
Waco
Wichita Falls
Ogden
Provo
Richfield
Salt Lake City
Brattleboro
Burlington
Montpelier
Norfolk
Portsmouth
Richmond
Roanoke
Virginia Beach
Bellingham
Seattle
Spokane
Tacoma
Walla Walla
Yakima
Charleston
Huntington
Wheeling
Eau Claire
Green Bay
Kenosha
Madison
Milwaukee
Racine
Sheboygan
Superior
Cheyenne
Sheridan
Dawson
Whitehorse
Latitudes and Longitudes
State/Province
Texas
Texas
Texas
Texas
Texas
Texas
Utah
Utah
Utah
Utah
Vermont
Vermont
Vermont
Virginia
Virginia
Virginia
Virginia
Virginia
Washington
Washington
Washington
Washington
Washington
Washington
West Virginia
West Virginia
West Virginia
Wisconsin
Wisconsin
Wisconsin
Wisconsin
Wisconsin
Wisconsin
Wisconsin
Wisconsin
Wyoming
Wyoming
Yukon Territory
Yukon Territory
Latitude
Longitude
29.88
31.47
29.43
33.43
31.55
33.92
41.23
40.23
38.77
40.75
42.85
44.48
44.27
36.85
36.83
37.53
37.27
36.85
48.77
47.62
47.67
47.25
46.07
46.60
38.35
38.42
40.07
44.82
44.52
42.60
43.07
43.03
42.73
43.75
46.72
41.13
44.80
64.07
60.72
93.93
100.43
98.48
94.05
97.13
98.48
111.97
111.65
112.08
111.88
72.57
73.22
72.58
76.28
76.30
77.43
79.95
75.97
122.48
122.33
117.43
122.43
118.33
120.52
81.63
82.45
80.72
91.50
88.02
87.83
89.38
87.90
87.78
87.72
92.10
104.82
106.95
139.43
135.05
Appendix D
Warranty
D-1
APPENDIX D: WARRANTY
Three Year Limited Warranty
WARRANTOR: Custom Solutions, Inc.
ELEMENTS OF WARRANTY: Custom Solutions, Inc. warrants, for the duration of this warranty,
HomeVision (hereafter referred to as the "Product") to be free from defects in materials and workmanship
with the limitations or exclusions set out below.
WARRANTY DURATION: This warranty shall terminate and be of no further effect three years after the
date of original purchase of the Product or at the time the product is (A) damaged or not maintained as
reasonable and necessary, (B) modified, (C) improperly installed, (D) repaired by someone other than the
warrantor for defect or malfunction covered by this warranty, (E) used in a manner or purpose for which the
product was not intended, (F) damaged by an act of God (such as a lightning strike), or (G) sold by the
original purchaser.
STATEMENT OF REMEDY: In the event the product does not conform to this warranty at any time while
this warranty is in effect, the warrantor shall repair the defect and return it to you without charge for parts,
service, or any other costs incurred by the warrantor or its representative in conjunction with the performance
of this warranty. THIS WARRANTY DOES NOT COVER OR PROVIDE FOR THE REIMBURSEMENT OR
PAYMENT OF INCIDENTAL OR CONSEQUENTIAL DAMAGES. THIS INCLUDES DAMAGE CAUSED BY
THE PRODUCT DUE TO A PRODUCT DEFECT OR INCORRECT APPLICATION OF THE PRODUCT.
Some states do not allow this exclusion or limitation of incidental or consequential damages, so the above
exclusion or limitation may not apply to you.
PROCEDURE FOR OBTAINING PERFORMANCE OF WARRANTY: In the event that the Product does not
conform to this warranty, you may return the unit to the company you purchased it from, or to Custom
Solutions, Inc. To return it to Custom Solutions, call 321-726-8864 to obtain a Return Material Authorization
number (RMA #). Any unit returned without an RMA # clearly marked on the exterior package may be
refused and returned at the sender's expense. Ship the Product, freight prepaid, along with evidence of
original purchase, to the warrantor at the address provided with the RMA #.
LEGAL REMEDIES: This warranty gives you specific legal rights, and you may also have other rights that
vary from state to state.
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