Linux Homevision Features

This page describes the features of the Linux HomeVision software that behave different from the Windows version, or are completely new.

Action editing

Screen shots
Multi-line copy/paste
Many HomeVision users have been asking for the posibility to perform multi-line copy/paste operations. The Linux HomeVision software allows the user to select multiple lines in the action editor. Only if the selection is a consistent piece of the code, it will be possible to cut/copy/delete that piece of code. A consistent piece of code is a sequence of code lines that contain neither or all parts of a matching set of If/Then/EndIf, If/Then/Else/EndIf and/or Wait/EndWait commands.
Conversion of If-Then to If-Then-Else and vice versa
Sometimes it may be desirable to add an else clause to an existing If/Then/EndIf command. With the multi-line copy facility it is already quite easy to just copy the condition part and the then-part to a new If/Then/Else/EndIf template, but there is an even easier way. The context menu that pops up when you click the right mouse button on the If command will show the appropriate option to "Convert to If-Then-Else-EndIf" or "Convert to If-Then-EndIf". When removing the else clause from an If/Then/Else/EndIf command, any commands in the Else section will be placed after the EndIf code line.
Conversion of a line of code into comment
During action development it can be useful to temporarily disable part of the code. The context menu contains a "Comment out" option to convert a command to a note. This option will convert the command into a note describing the command. The original command is hidden in the note in such a way that it will not be visible. Notes created in this way can later be converted back into the original command. When the text of the note is edited, the hidden command is lost and it will not be possible to convert the note text back to a command again.
Shortcut to actions of referenced objects
On code lines that reference other objects that may have actions attached, the context menu contains an option to edit those actions.
Editing multiple actions concurrently
It is possible to open editing windows for different actions at the same time, making it very easy to copy pieces of code from one action to another.
Named constants
Numerical values in variables don't always have an obvious meaning. For example they may refer to an object number of a certain type or represent a screen in a custom menu system. If a change in the numbering scheme is required at a later time, it is very difficult to identify all locations that need to be changed. To simplify this job, named constants have been introduced. The value of the constant is defined in one place. A change to the value is automatically propagated throughout the schedule. Object references are automatically updated when the objects are reordered (see the tools section below).

Additional commands and conditions

Lookup tables
When converting a value into another value cannot be easily done using a formula, a lookup table can be used. For each value between 0 and 255 a translated value can be defined. This may be useful for instance when a non linear sensor is connected to an analog input. A total of 32 lookup tables can be defined. The value is converted using the command:
Additional commands
Additional Flag commands:
Make flag equal to flag at variable XX
Make flag at variable XX equal to second flag
Additional Variable commands:
Variable @ VAR = second variable
Variable @ VAR = Result Value
Set bits in VAR from constant ...
Clear bits in VAR from constant ...
Set bits in VAR from second variable ...
Clear bits in VAR from second variable ...
Variable = Byte @ VAR in Text Storage Buffer
Put Variable into byte @ VAR in Text Storage Buffer
Additional Output port commands:
Set entire 8-bit port to variable ...
Additional Controller commands:
Set Baud Rate to 57600
Report controller status
Report status of all X10 modules
Report status of all flags
Report status of all variables
Report status of all input ports
Report status of all output ports
Report status of all analog ports
Report status of all digital temperature sensors
Recalculate scheduled events
Enable automatic reporting
Disable automatic reporting
Enable auto reporting of controller status
Disable auto reporting of controller status
Enable auto reporting of X-10 modules
Disable auto reporting of X-10 modules
Enable auto reporting of flags
Disable auto reporting of flags
Enable auto reporting of variables
Disable auto reporting of variables
Enable auto reporting of input ports
Disable auto reporting of input ports
Enable auto reporting of output ports
Disable auto reporting of output ports
Enable auto reporting of analog ports
Disable auto reporting of analog ports
Enable auto reporting of temperature sensors
Disable auto reporting of temperature sensors
Additional Scheduled event commands:
Enable Scheduled Event at Var ...
Disable Scheduled Event at Var ...
Do Scheduled Event at Var ... Now
Additional Periodic event commands:
Enable Periodic Event at Var ...
Disable Periodic Event at Var ...
Do Periodic Event at Var ... Now
Set Periodic Event at Var ... Rate To: ...
Additional Phone commands:
Put phone ring count into variable
Additional conditions
Additional Flag conditions:
Flag @ VAR is clear
Flag @ VAR is set
Flag @ VAR is neutral
Flag @ VAR is not clear
Flag @ VAR is not set
Flag @ VAR is not neutral

Configuration

Screen shots
User location in standard format
The user loacation should be specified as 0 to 180 degrees east or west of Greenwich and 0 to 90 degrees north or south of the equator.
Sunrise and sunset times graph
The overview of the sunrise and sunset times resulting from the selected user location are displayed in a graph, just like in the pre-3.0 versions of the Windows software.
Communication speed of upto 57.600 baud
In addition to the baud rates available in the Windows software, the Linux program also supports 57,600 baud.
Telnet access to the serial port
The Windows HomeVision software provides the ability to use Dynamic Data Exchange (DDE) for other software to communicate with the HomeVision controller. DDE is a Windows specific protocol which does not exist in the Linux environment. To allow other software simultaneous access to the HomeVision controller, the Linux program incorporates a telnet interface that programmers can use when writing software to communicate with the controller. This telnet server capability is controlled from the "Remote internet servers" configuration screen in the Configure menu.
Remote internet server can handle multiple clients
The remote internet server in the Linux HomeVision program will keep track of all incoming connections. This way it is possible to connect remote internet clients from multiple remote machines simultaneously, or different programs using the remote internet interface from the same machine.

Downloading and Saving

Screen shots
Download progress indication on the video screen
While downloading a new schedule into the controller it is possible to follow the progress on the video screen. A configuration screen is available to select between internal- or external video mode.
Automatically save data log before download
A side effect of downloading a new schedule is that the data log gets cleared. This data log may contain information that may need to be saved. For that reason the program has a configuration screen that allows the user to select a file where the data will automatically be appended before downloading a new schedule.
Serial commands to execute before or after downloading
Before downloading a new schedule it may be desirable to make sure certain objects are in a specific state so no harm will be done while the HomeVision controller is off-line. This can be accomplished by specifying the appropriate serial command as a pre-download string. The string may contain the special symbols ^M for sending a carriage return character (ASCII 13) and ^D for a 0.5 second delay. And if there's a pre-download string, there should also be a post-download string although that functionality has later been made largely obsolete by the introduction of the post download action screen.
Possibility to define actions to be executed after download
A new action screen has been introduced where you can specify actions that should be executed immediately after downloading of a schedule has completed.
Automatic incrementation of the schedule version number after download
To keep backups of all steps in the evolution of your HomeVision schedule, the program recognizes a sequence number in the file name. With an option at the download options screen it is possible to tell the program to automatically increment the sequence number of the schedule file after each download.
Preserving data during download
The schedule download screen gives the user control on whether or not to reload or clear specific parts of the controller's memory:
Initialize RAM video screens
An initial contents for the RAM video screens can be specified and selected for download.
Save as next sequence number
When the current schedule file name contains a sequence number and the Save as... option from the File menu is selected, the program will automatically generate a new file name with the next sequence number. It will display this new file name as the default choice. The user still has the possibility to choose a different file name for saving the schedule.

Experimenting

Screen shots
Try out actions without downloading a whole new schedule
Some actions could benefit from a little bit of experimenting, for instance for determining the optimal delay between sending two infrared signals. It is a bit of a hassle to download a complete schedule for every trial. With the experimental actions screen you can just load one action sequence in an unused part of the controller memory and execute it. If it is not working perfectly just change it, load it, and execute it again. All this can be done without halting the controller, and so hardly causing any interference with the normal controller operation.
On-line action patching
When the HomeVision doesn't work exactly as expected the problem is frequently just a small mistake: checking the wrong flag, using a less-then in stead of a greater-then comparison or setting an output port low when it should be high. These type of errors can now be fixed without reloading the whole schedule, or even stopping the controller. The "Action patching" entry in the Other menu presents a choice of all objects that can have actions attached. When the desired object has been selected and the "Edit Action" is clicked the program will retrieve the action as it is currently defined in the controller. The user will then have the possibility to edit this action as usual in an action editor screen. As long as the new action doesn't require more memory space than the original version, the action in the controller memory can be updated by clicking the "Patch Action" button. During the patch interval the object is temporarily disabled to make sure the controller doesn't try to execute a mix of old and new code. Also any wait timers used in the action code are stopped and cleared to prevent that invalid code will be executed.

If you are not quite sure about an action and expect that you may need to patch it later, some extra space can be reserved to allow the action to grow. This is accomplished by including a comment somewhere in the action with the following contents:

#Patchspace <size>
Where <size> specifies the number of bytes (e.g.: 12) or percentage of the action length (e.g.: 10%) to reserve as additional patch space.

Tools

Screen shots
Conversion of Pronto infrared codes
The infrared signal learn facility has been extended so it is also able to learn an infrared signal from a Pronto signal specification. Utilities are available to create Pronto data for a number of signal standards (like RC5, RC6, SIRCS, Onkyo, and JVC) by just entering the system and command codes of the signal.
Data file layout editor
The feature that reads a data file into variables needs a definition file that specifies which value belongs in which variable. The Linux program has a built-in editor to create and maintain this definition file. Any changes made are active immediately without the need to shutdown and restart the HomeVision application.
Reordering of objects
To effectively use variable indexed object access, the objects need to be in a specific order. If the requirement to use an index variable was not planned from the beginning it's usually a lot of work to get the objects in the right order at a later time. When some object has become obsolete, it is not possible to delete the object unless it the highest numbered of its kind. Both these problems can be solved by the object reordering tool available in the Other menu of the Linux HomeVision program. The user can select an object and move it to the disired location in the list. The tool will then automatically update all references to the changed objects in the action code as well as in the custom TV menu system, the custom TV menu page and the HVAC custom macros and variables.
Overview of each object's use in actions
After using and updating a schedule for some time, some objects have lost their usefulness. To check if those objects are still referenced somewhere in the schedule you could use the "View Schedule" command and search for the specific object. But this can get very tiresome if you want to check a number of objects. To make this job easier, a "View Object Use" tool has been added to the program. This tool will list all locations where objects are referenced. It can even give details on how the object is being used.

Terminal emulator

Screen shots
Terminal Emulator built into the main window for easy access
To turn the blank area of the HomeVision application main window into something useful, it now contains the Terminal Emulator window. So no more need to explicitly open it. It is just always there ready for you to send commands to the controller.
Name lookup of object numbers in reported events
With the Terminal Emulator window always on the screen, the need arose to get some translation of the standard cryptic messages from the controller. References to objects in the standard messages are automatically translated to the object name which is then appended to the message. To indicate this is not part of the message received from the controller, the object name is displayed in a different color from the rest of the message.
History of emulator commands
When using the terminal emulator it frequently happens that you want to send a command similar to one sent before. Using the arrow keys you can just go back through the list of commands given, edit one if necessary and excute the command again.

Control

Screen shots
Control of Timers, Scheduled- and Periodic events
It may be useful to check the state of timers, scheduled- or periodic events. These overviews were available as web pages and they have now also been added to the Control menu. The timer window will display the timer values and their state. The scheduled event window shows the next exuction time (especially useful for sun based events, or events that contain a random component) and their state. An asterisk will be appended to the time indication if it refers to the next day. The periodic event window shows the event rate and the state of all periodic events. All these windows show a snapshot of the information at the time of the last request for an update.
Timers can be configured to catch up after download
The Timer summary screen has a new option that allows the user to specify initial state of each timer. Available choices are "Stop & Clear", "Stop" and "No Change". "Stop and Clear" is the familiar behaviour from the Windows software that causes the "Running" flag of the timer to be cleared and the timer value is reset to "0". The "Stop" selection clears the "Running" flag, but does not change the timer value. The "No change" option keeps the timer running during the download of the schedule. After the download has completed and the controller is running again, the timer will catch up. If the timer would have expired during the download, the "Ringing" flag of the timer is set and the associated actions will be performed.

Plugins

Screen shots
Support of user written plugin scripts.
Users can customize the capabilities of the program by loading one or more plugins. A plugin is a tcl script that has access to HomeVision data and functions in addition to all standard tcl commands. The additional HomeVision tcl procedures are described on the plugin page. There are a number of example plugins available from the download page.
The web server is implemented as a plugin
The web server is a typical example of functionality that users may want to customize to fit their taste and needs. The web server has been implemented as a plugin, giving the user full control over its functionality.

Custom video menu

Screen shots
"Wysiwyg" custom video menu editor
Due to the deviating character set of the HomeVision video chip, the user may sometimes be surprised about what shows up on the screen. To assist in early detection of these kinds of mistakes and to help in the design of the custom video menus the custom video menu editor displays the same character set that is built into the video chip.
Last modified: 9 July 2003, 00:03 CEST