The 9.4 release had several new features and user interface changes for the better. Please see the version 9.4 release notes for more info.
NEW: Version 2 of the Plugin API, this is huge but isn’t going to affect anything else directly in this version. Watch for the documentation to appear on the wiki in the next few days.
NEW: recycle interface verb to cleanly shutdown and restart an interface without all that previously necessary mucking about with delays or scheduled events.
NEW: plugin API now supports plugins that wish to have access to the entire database. Thus enabling things like the new database sharing system. You can choose to share your entire database or to pick specific lists to share instead.
NEW: plugins implementing the v2 API can make a remote connection to XTension from a separate machine or even across the internet.
FIX: previously setting the xtOnLabel or xtOffLabel property of a unit to an empty string would actually set the on or off label to an empty string making the display for a unit empty until you manually erased them in the Edit Unit dialog window. Now to clear the on or off label of a unit you can just set the values to an empty string and the display will go back to displaying the value as if it was just not there rather than an empty field. like: set xtOnLabel of xUnit “the unit name” to “”
NEW: Every interface now gets an interface script. Back when XTension had only 1 or then 2 interfaces it made sense to have a global interface error script. Now with the potential of dozens of interfaces it makes less sense to trap them in only one place. The global Interface Error script will continue to be called so that if you wish to send a generic alert about something going wrong you can, but also each interface now has the ability to trap errors or status changes for that specific interface to take specific action for that system. You could have done this previously but you would have had to check for thisInterface in a long list of possibilities in the single global script. The new Interface scripts have a hook for on interfaceError as well as interfaceFailed. If the interface is offline but still trying to reconnect the error handler will be called, if the interface has given up on it’s retries then the failed handler will be called letting you decide how best to respond to any connection problems individually. Some interfaces like the DIY interfaces and web remotes already had scripts, these new events can be added to those scripts you already have if you wish.
FIX: The new VeraUI7 plugin now waits a reasonable amount of time before reconnecting after an error making sure that strange circumstances don’t create a fast loop eating a lot of processing power.
FIX: a documentation error used the wrong slash for some of the unit value format string options. This is now more clear.
CHANGE: All scripts get an “on init()” handler call when the database loads upon startup. The name of this handler is now “on loaded()”. If your scripts already have an on init handler that will continue to be called but for future scripting please use the on loaded() handler instead.
NEW: With so many new plugin options the Edit Interface dialogs can become very long. Potentially too long to fit on the smaller virtual screens that we share via VNC. The new Edit Interface window is no long er a sheet but a separate document window and it is resizable so that if it wants to be larger than the available window space it will show a scrollbar and you can scroll to have access to the entirety of the controls even if they would otherwise have been below the bottom of your screen.
NEW: Unit error and other unit events that could be trapped in the unit’s ON script now all bubble up properly to any groups that contain those units so that you can trap for specific things more reliably in the groups where only specific events bubbled properly in the past.
NEW: In the continued battle against OSX Sierra and forward inserting goofy multi-byte characters into our scripts that cause AppleScript to refuse to compile they now will “show invisibles” by default. If strange characters that we are not currently properly handling get pasted into the fields and they cause any trouble with the compile they will be both highlighted and also replaced with “?” chars as if you had selected “show invisibles” in any competent text editor. This will make it much easier to find them and delete them than it was previously where they were highlighted, but basically invisible.
NEW: another addition to the Plugin API v2 any python plugin can find it’s includes from a static location and do not need to always include the needed libraries as part of the plugin. If they end up requiring an earlier version they can link to that version statically or include the needed libraries inside themselves.
FIX: A potential problem with the heartbeat timer recursing when longer scripts were running is fixed which should eliminate some of the odd errors that some people were seeing when executing very long scripts or scripts that took a significant amount of time to get data back from separate applications.
NEW: a new contextual menu item in the Interface List window lets you create a new list that contains all the units assigned to that interface.
NEW: the JSON server is no longer so picky about the line endings during the HTTP headers. It will now accept headers that are separated by just \r or \n as well as the original (and according to the internet the proper) \r\n.
FIX: The “delete this list” menu item in the toolbar of the List window was always disabled previously so you had to use the File menu “delete” option. This is fixed and as long as the list being displayed is not the Master List it will properly give you the option of deleting itself.
NEW: Added an “Eco” button to all the Thermostat controls. You can now select a unit that corresponds to your thermostats economy or “Energy Savings” mode so that it can be toggled on and off from the same interface.
NEW: All the thermostat controls have been updated to use popup menus for HVAC Mode and Fan Mode. If your thermostat accepts more modes than those we previously supported simply setup your unit with an inline control type of Popup and a comma delimited list of the options that is supports and those options will be available to you in the standard Thermostat control. These changes are available globally across the views, the web remote and the mobile web remote interfaces.
NEW: The status of the thermostat is now displayed as a text label rather than the segmented control that it previously used. So any number of statuses other than “off”, “heat”, or “ac” are supported. Use the advanced label syntax to create the proper label for the value of the unit in the HVAC Status Unit assigned to that thermostat and you can display any status that makes sense for your thermostat. These changes are available globally across the View interface, the Web Interface and the Mobile Web Interfaces.
NEW: The return of targeting! Sort of. This version contains a beta build of the new database sharing interface. Any 2 machines running XTension can now share some or all of their database with each other. You can select to share all of the database or select some of the lists to share. On the machine doing the receiving create a Shared Database Receiver interface and enable it. It will also ask you to give it a unique 4 digit ID number. On the machine that will be doing the sharing create a Shared Database Sender interface and enter that same ID number. If the 2 machines are on the same internal network then no extra security is needed. If the machines need to communicate over the internet then you have the option of setting up the Sender to tunnel over SSH. Setting up an SSH passthrough your NAT router is fairly easy. Create a new limited user on the receiver machine and enter that users ID and PASSWORD into the sending machine. The user does not need admin privileges but does need to be able to connect and get a shell. Once connected the sender will connect to the remote machine and create all the units you selected to share. At this moment only the ON/OFF and Set Value commands are passed through the tunnel. I have added initial support for battery level and error information but these are alpha level at the moment. The remote units will be regular units into which you can add on or off scripts that will run locally on the receiving machine. Controlling those units will cause the remote units to be controlled as well. The remote name and the remote description of the unit are also passed through but to named unit properties. You cannot edit the unit on the remote machine and you do not yet have access to any special interfaces that might be available to the remote unit. Color data is not yet passed through. In the future that will expand and I will add the ability to share global scripts and views and all our other interface objects. If there is something that is a priority for you please let me know. At this moment error recovery is iffy at best and the entire system is still brand new, treat it as a beta level release and report any errors you see to me. There is no reason you cannot share some units one way, and other units back to the original machine. This new targeting is not an attempt to duplicate the promised but never quite lived up to ability to make 2 or more machines into a single system. You share units from one system to another. If you are going to share some units back to the first machine make sure that you’re not sharing any units that came from that machine in the first place or hilarity will ensue.
Almost New: if you create a new Vera unit and set it’s type to “Custom” you’ll see the beginnings of a new interface for selecting services and actions. Though the interface looks more or less complete the underlying system is not ready yet. Please do not use the new custom units yet. Though if you have thoughts about them please let me know. What they will be is a way to link specific values from the Vera to the standard XTension values or states as well as the ability to link the XTension basic commands to specific commands to the Vera. This will allow you to better use Vera plugins or non-standard units that I don’t know about but will take some extra configuration and research to find out how the data from those non-standard devices is represented. As people make use of this I will roll what they have discovered into new standard unit types to make things easier for people in the future.
current/previous/v9.4.4.txt · Last modified: 2018/08/05 17:48 by James Sentman