This is the latest version of Engen for Windows. Please post bugs here. Please start a new thread for anything requiring discussion. Non-bug posts will be deleted.
Download:
http://files.jriver.com/engen/channels/v1/beta/jriot/Engen10020.exeHistory:
1.0.20 (7/27/2016)
1. Fixed: A minor crash in remove_node().
2. Changed: Placed UZB version and capability information where dump_nodes() can find it.
3. Changed: The name set_node_tag to set_tag.
4. Fixed: Some bugs in path_set.
5. Changed: Added set_tag() to user.py.
6. Fixed: Fix /api/v1/nodes/:node REST call.
7. Changed: Added code to support zwave scenes and did massive cleanup based on the recommendations of pycharm. Bugs crept in because of the clean up; I found many, but it is likely some remain.
8. NEW: Added support to fetch and update associations, scene controller configuration, and scene actuator configuration. In English, can now activate lighting scenes on devices that support this, using a button controller.
9. NEW: Its now possible to configure the above functions through the web REST API, using the path_get and path_set functions. The long term goal is to make many more functions available to REST.
10. Fixed: A bug that caused "unexpected message" to appear in the log when it should not have.
11. Fixed: A number of problems in the new code to give priority access to battery devices.
12. NEW: A set_all(value) convenience function in the user module that uses broadcast.
13. Changed: Improved scheduling of scene_configuration messages, putting more intelligence in the low level code, and removing it from higher level code.
14. Changed: The code is increasingly stable at high load, and it makes more efficient use of the cpu.
15. Changed: Modified a few convenience routines to do more, and consequently removed a bunch of repetitive code where the convenience routines were used.
1.0.19 (7/22/2016)
1. Changed: Scene support is now about halfway in. It has a way to go before the UI can view and configure it.
2. Changed: Most of the scene protocol encoding/decoding routines are done. As a proof of concept, it's now possible to type in commands and make a button controller turn lights on and off using scene and association commands.
3. Changed: Polling of all scene data in all devices can require thousands of data points. The special scheduling and fetching required is now done. In this commit, the timing was improved and probes were put in to support further adjustment.
4. Changed: There is a new priority function in polling that will allow us to give priority to battery devices and battery controllers when they need fast service.
5. Changed: The code runs with multiple UZBs, but only superficial tests have been done.
6. Changed: Rewrote multicast. Much smarter now.
7. Changed: Queries now have a configurable sleep interval, which evens out the load on the UZB and makes it more reliable.
8. Changed: Added tracing to all low-level commands in zbasic.
9. Changed: Added a termserver function to trace and stop tracing nearly any method.
10. Changed: Rewrote multicast so it multicasts only once, instead of once for each node.
11. Changed: Changed a bunch of lognames to be consistent with the file where they appear.
12. Fixed: Fixed add_node to preserve the types and command classes returned by the UZB.
13. Fixed: mfg_id so it doesn't get an exception after a comm error.
14. Changed: Data is now fetched for the scene controller. Still need to test writing the scene controller.
15. Changed: Improved documentation page to make it more up to date and informative.
1.0.18 (7/13/2016)
1. Changed: Engen is now highly insensitive to offline devices and misbehaving devices. It polls all devices at a near constant rate of 10 seconds, regardless of the number of devices configured or currently active. It takes something like 60 seconds to stabilize after startup, and perhaps 10 minutes before it fully adjusts for any bad devices it finds. It has a number of mechanisms to detect and adjust for bad nodes.
2. NEW: You can monitor the health of devices with the very obscure command: dump_status(nodes) where "nodes" can be blank for all nodes, or you can put in a list of nodes to see only those. dump_nodes() includes the same information under "status". The output is a bunch of statistical counters that summarize recent error trends and estimate the reliability of all attached devices.
1.0.17 (7/7/2016)
1. Changed: Changed node and group names to accept any string that has one non-digit character anywhere in the string.
2. Fixed: The UZB was getting wedged when too many requests were made too fast, and there were a bunch of nodes off-line. Put in a kludge for now to keep that from happening. A better fix is in the works.
3. NEW: Added some scene-oriented command classes message handlers.
1.0.16 (7/6/2016)
1. Fixed: Bug in auto-updater. It wouldn't remember that it had already installed the available update.
1.0.15 (7/6/2016)
1. NEW: Display subnode switches (e.g. power strips)
2. NEW: Support renaming devices.
3. NEW: Buttons to turn all devices On/50%/Off.
4. Fixed: Some problems in path_set with multichannel devices.
5. Changed: Restore Python 3.x support.
1.0.14 (6/30/2016)
1. Changed: Windows Service updated to support new Python web server using Flask & Tornado packages.
2. Fixed: Auto update could fire up two installer programs simultaneously.
3. NEW: New REST web service and interactive website with lots of new functionality.
4. NEW: Generate secret key for local https certificate dynamically.
5. NEW: Got the REST variable path GET stuff working. The PUT is still untested.
1.0.13 (6/27/2016)
Internal testing build.
1.0.12 (6/22/2016)
1. Changed: Removed Stop/Start Service commands from menu. The Engen server is now stopped when the tray application is exited.
2. Changed: Wording visible to the user is now simply 'Engen' rather than tacking on 'Server' or 'Service' to the end.
3. Changed: Tray icon can now be right-clicked or left-clicked to show the menu.
4. Changed: Wording of bottom menu item changed from "Exit program" to "Quit".
5. Changed: Changed the zwave byte ordering routines to use big endian rather than little endian. This got the manufacturer description working but has the side effect of changing the database name.
6. NEW: Manufacturer id is now showing in dump_nodes and list_nodes.
7. Changed: Regenerated sigma_classcmd to eliminate unneded and irritating redundant versioning information. Added a new utility to generate this one file.
8. NEW: Added the scene actuation and scene actuator config command classes.
9. Fixed: Fixed duration encoding in zbasic.py.
1.0.11 (6/21/2016)
1. Fixed: The last build was not signed properly.
2. NEW: send_cmd now does multicasting.
3. NEW: zgroup.general_increment smoothly increments/decrements bulb brightness. Uses multicasting w/o ACK.
4. Fixed: Fixed a startup hang in zman.py that occurs when you have no database on first startup.
5. Fixed: Fixed things so an unexpected exception during startup will terminate rather than hang the server.
6. Changed: Eliminated the no longer used --test parameter to main.py.
7. Fixed: Fixed node name addressing so "switch.A" now properly accesses the first endpoint on "switch".
8. NEW: Added zvar.py which will support REST variable addressing. Partially tested at this point.
1.0.10 (6/16/2016)
1. NEW: Added a simple web server. References to port 52110 that do not begin with /alpha000 and end with *.htm or *.html are interpreted as file names in the server directory to be returned as web pages. The directory can be changed with the --web command line option.
2. NEW: Added the ability to load/store the database through the web. A GET to alpha000/database will return the contents of the database in JSON format. A following PUT to the same URL will restore it.
3. Fixed: A crash in set_node_name(), and one in add_node().
4. Changed: The database format is greatly simplified from its former self. Information that can be learned from the network is no longer stored in the database.
5. Changed: list_nodes() to optionally take node arguments.
6. NEW: Created dump_nodes() which works the same, but shows all information about the nodes. show_node() is gone.
7. NEW: Added set_log_level(name, level) which allows you to change various log levels while the program is running.
8. Changed: A ton of internal restructuring, which hopefully will not be visible to the user. These included an internal trace facility, and a better way to display binary data in logging messages.
1.0.9 (6/4/2016)
1. Fixed: The assert() problem that was showing up at Jim's home.
2. Changed: Added some code to log top-level exceptions, like the one that Jim saw. When such an exception occurs now, it is logged, and the server is automatically shut down. (so you will go look at the log).
3. Changed: Changed zdriver so it now sends ACKs to the UZB out of the receive thread, instead of first forwarding them to the transmit thread. This improves response time, and appears to have fixed the CAN problem under high load. We can now poll at about 10 msgs/second w/o difficulty.
4. Fixed: A problem in node renaming. Previously multiple nodes could get the same name. The fix prevents that from happening, and fixes your database if the problem previously corrupted it.
5. Changed: Added "Updates" item to tray application menu.