Version 3.0 of Reactor (beta) is now available on Github in the project’s beta3.0 branch.
The current beta version stamp is: 3.0beta-19105
Before installing, here is what you need to know and do:
- Please make sure you are currently running Reactor 2.5.
- Make a backup of your current Reactor configuration. Use the Backup/Restore tab in your Reactor master device to make a backup. There’s also a link to download the backup file so you can store it locally, and I strongly encourage this practice. Version 3.0 configurations are not backward compatible with 2.x, so while 3.0 will automatically upgrade your configs to the new format, but if you later choose to downgrade back to 2.x, you will need to restore the backup you made above.
Please report any issues as replies on this topic only!
The big new feature in 3.0 is that condition groups are now a user-configurable tree (hierarchy), and each group can now have its logic operation (AND/OR/XOR) determined by the user as required. Aside from adding considerable flexibility to the logic, it eliminates (in most cases) the need to create separate ReactorSensors for different parts of the same logic project. It goes further, in fact, to allow users to create modular, reusable logic blocks that can be used within a ReactorSensor or across many ReactorSensors. This version also allows the creation of activities on a per-group/per-state basis, meaning each logic group can separately control a set of devices, rather than having the trip/untrip state of the ReactorSensor be the only place where actions are run.
Enhancements, from the CHANGELOG:
- Enhancement: Condition groups are now a hierarchical construct, and group logic is user-settable (AND/OR/XOR/NUL + NOT). This adds considerable flexibility to the condition logic for users, at the expense of some complexity in the UI (implementation/operation is not significantly different).
- Enhancement: Users may now create Activities for each condition group, not just the over trip/untrip of the sensor.
- Enhancement: New “Group State” condition allows the user to condition upon the state of another group in the same or another ReactorSensor.
- Enhancement: New “Delay reset” option allows false state of condition to be delayed by the specified number of seconds (this can be used to debounce device states, or as an “off” delay for motion sensing, for example) [issue #16];
- Enhancement: Activities are now collapsable, and since the number of activities is equal to the number of groups plus two, it’s possible to hide unused groups as well (this is a persistent state/choice that operates plugin-wide) [issue#24];
- Enhancement: It is now possible to copy the contents of one activity to another.
- Enhancement: POSSIBLE BREAKING CHANGE FOR SOME USERS As of this version, the evaluation order of expressions is explicitly sequential. Previously, the order was system-determined. By going to sequential evaluation, it is possible for variable to store the previous value of another (e.g. by the expression “OldVal=Val” preceding the expression/calculation of Val). In addition, the values stored in state variables are no longer the primary values used in evaluations. Now, the actual returned values from LuaXP are stored on the ReactorSensor state and saved between sensor updates, and across restarts and reboots (that is, they are now persistent).
- Enhancement: Loading of action data from Vera now retries automatically–improves remote user experience.
- Enhancement: Reporting of errors (such as reference to a device or scene that no longer exists) in conditions and activities is improved through the use of the (notification-capable)
Troublestate variable. Related diagnostic information is written to the Logic Summary events list. A new icon with a yellow warning triangle superimposed calls attention to ReactorSensors reporting trouble.
- Enhancement: The new expression function
trouble( msg [, title] )has been added to allow expressions to signal trouble for any purpose. The msg argument is written to the Logic Summary event list, along with the optional title. The default title is simply “trouble()”.
- Enhancement: The
finddevice()expression function now takes an optional second boolean argument that determines if an error is thrown (and thus trouble is reported) if the referenced device is not found. If not provided or false,
nullis returned (the legacy behavior); if true, an eval error is thrown and trouble is signalled.
- Enhancement: The
getstate()expression function now takes an option fourth boolean argument that determines if an error is thrown (and trouble is reported) if the referenced device is not found. If not provided or true, an error is thrown and trouble is signalled (the legacy behavior); if false,
Note: The default legacy behaviors (i.e. when the new optional argument is not provided) described above for
finddevice()are different; this is intentional and consistent with their operation prior to this enhancement, so that the behavior of existing expressions does not change. The new argument is, however, consistent, in that when a device cannot be found and true has been explicitly passed, an error will be thrown and trouble signalled by both functions, or if false is passed,
nullwill be returned by both functions.
- Enhancement: The status display now highlights errors and changed values.
- Enhancement: The expressions editor now shows the most recent sensor evaluation result for each expression.
Installation Instructions (Vera)
- Again, make sure you currently have Reactor 2.5 installed before installing 3.0 Beta. If not, install it first (via the App > Install apps menu).
- Go to the Github repository’s beta3.0 branch: https://github.com/toggledbits/Reactor/tree/beta3.0
- Click the green “Clone or download” button and choose “Download ZIP”. Save the file.
- Unzip the downloaded file.
- Upload each of the unzipped files to your Vera using the uploader at Apps > Develop apps > Luup files. You can drag/drop them as a group; if you upload them individually, make sure you turn off the “Restart Luup after upload” checkbox and keep it off until you get to the last file–turn it back on before uploading the last file.
- Do a hard refresh on your browser (CTRL-F5 for Chrome/Win, SHIFT-F5 for Firefox/Win, CMD+SHIFT+R for Macintosh).