Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Official 5.4 Beta Release Thread
This thread is not for discussion, so please don't post here. It is for official 5.3 beta release information. There is a separate sticky thread for discussion.

To get across the 5.3.903 boundary (which introduced some significant internal plumbing changes) you have to first be on 5.3.2 or beyond, so upgrade to one of those first, then you can take the next step to the latest beta.


Latest Version: 5.3.958
Confidence Level: 99

Download Link:

The subsequent posts list changes in each beta version...
Dean Roddey
Explorans limites defectum
  • We need to provide more ability to track changes in customization content (macros, interfaces, actions, etc...) This requires some housekeeping info to be stored with these things. It isn't feasible to ad hoc this in each of the file formats we currently use for the various content types. So, painful though it will be, we need to come up with a simple but flexible file format that allows for extra info to be stored along with the actual raw data. That is step one in the process and is done. We have a new storage format that allows for a time stamp and arbitrary metadata values to be stored with the data in a generic way that can be used to generate reports, see what has changed since when and so forth.
  • Somewhere along the line, the Scintilla editor stopped correctly processing all of the Ctrl-shifted hot keys it supports internally. Ctrl-Shift-shifted works, but not Ctrl-shifted. I have no idea why. It would just insert a control character into the text instead. The only ones that worked were the ones that were in the IDE's accellerator table, so that it was making them happen from the outside. So I had to add the others (cut, copy, paste, select all, undo, and redo) to that table and do the same. Maybe some others will be found, but I think all of the generally used Ctrl-shifted ones are there now.
  • Add some new stats to the event system. Add one in the guts to count how many events have actually been received and published, and another in the event server that counts how many it has received. Any discrepancy between the two would indicate losses or multiple triggerings from a single trigger (bad dup rejection.) Also add one for outgoing event triggers that have been dropped due to the out going queue getting full. And add a bit more logging in these areas to help diagnose failures.
  • It turns out that, for our standard controls stuff, we are setting our default font in logical units, not in text points. This means we aren't getting DPI'd based on pixel density, so it can come out quite small. That can be chaned, however we are not yet marking ourself as high DPI aware, so we always get 96 DPI if we ask. That's fine for monitors generally, but for smaller RDP clients this can be an issue. So add an option to force the DPI we see for default font calculations (which drives the size of everything else.) This is still a bit experimental yet.
  • There is an issue in the event server that can, if it gets a fast blast of a fairly larger number of triggers, make it lock up the thread that handles triggered events so they stop working. Normally such a blast wouldn't occur unless there is something strange going on, but it could happen. Scheduled events continue to work.
  • In every thread that is constantly active, there's the threat that something could go wrong, so we want to log any exceptions caught. But they are constantly active so there's the risk that this could fill up the logs. So we haae various ad hoc schemes to try to limit log output. This is stupid, make a simple 'log limiter' class that standardizes this and use it instead.
Dean Roddey
Explorans limites defectum
  • Add support for Just Add Power's serial passthrough. So it works like GC-100 ports. You can just define them in CQC and they will show up as available serial ports.
  • In the driver wizard's serial port config screen, show a warning to the user if its a type of serial port we cannot configure (GC-100, Just Add Power), telling them to do it via the device's admin interface.
Dean Roddey
Explorans limites defectum
Version 5.3.903 is posted. This turned out to be quite a large one, that implements both some fundamental plumbing changes and quite a few smaller improvements. Let me know if you have any issues.

  • A drop ago or so a new option was added to force a specific DPI on GUI programs, since Windows always lies to us and tells us it is 96DPI unless we enable high DPI support (and that involves too much to do right now.) But, the dialog box stuff was still letting Windows center dialogs, and it still thinks everything is 96 DPI. We fixed that but menus and standard msg box popups don't get scaled. So, figure out how to enable high DPI support and that should take care of all of these problems.
  • Since the new High DPI support is working fine, remove the previously added /ForcedFontDPI option since it is no longer required. It was an attempt at an interrim hack, since I thought that the High DPI support was going to be a lot harder than it turned out to be.
  • Do a driver family for the Sony Bravia line of drivers. There are various models, but they all share the same protocol. The only difference is what inputs, does it support PIP, and so forth. The differences are small enoug that there's just a single driver class, and the specific features available are set in the per-model manifest files as fixed prompts. So a new model just needs a new manifest.
  • The UPB V2 driver is marking the light switches as boolean switch instead of light switch, and is marking dimmers as light switches instead of dimmers.
  • Get rid of the old command line C++ driver test harness. The new, fancy GUI based one has been working fine and there'd be no reason to use the old one anymore, so it's just time and bits wasted building.
  • There may be some weirdness with getting reconnected to the Bravia TV after it is power cycled, so add some more just in case type code to see if that helps.
  • Do the work to convert over to the new chunked file format we created in 901, and to convert from the old formats to the new. The changes are mostly hidden under the carpet, but they still are very complex. Initially you won't see any overt evidence of the change but here soon some new capabilities will arrive based on this.
  • Update the package system to deal with the fact that packages created on 5.3.903 or beyond will use the new chunked file format for data server resources (images, macros, templates, global actions, events) but any old ones still need to be importable. So we need to know what format to expect and do the right type of read to get the data in. New packages created on 5.3.903 or beyond will not be importable by previous versions.
  • A silly error in the log monitor program can cause it to get an exception if it gets enough entries to start throwing away older ones from its list before it even loads the list window.
  • The event monitor tab's 'select class' button should just be the standard type of ellipsis button at the end of the text field, to be consistent with the general style of the AI.
  • The Bravia driver is showing a fixed model in the DEVI#Model field. Update the field registration code to query the model from the manifest info and set it from that, so that it works for any model that we have a manifest file for.
  • Though it's always painful to expand the IDL compiler, it's usually very beneficial. The enum support had been growing excrementally for a while and had become a mess. So it was necessary to step back and take another run at the whole thing, making fundamental changes to really improve and simplify that stuff.
  • On the Devices::GetSemFields() action command, add a field access type to filter on as well. Currently it is fixed at read/write, so any readonly or writeonly fields are not returned. This requires that we double up the output variable names into a single parameter since we are already using four. So the two output variable names get moved to parameter 3, as two space separated values, and parameter four becomes the required access filter value. Existing commands will be fixed up during upgrade of course.
  • A subtle bug in the IV engine could cause the local caching flag (which you set via the IV's menu) to be ignored in some cases and you still wouldn't see the new content. This can particularly happen in auto-generation.
  • The auto-gen is not getting the position of custom user tile content quite exactly placed in the available tile area.
  • If you select a widget in the widget palette tab, and it's a single selection, we should load up the attribute editor so it can be edited.
  • In the recent move to the new publish/subscribe system, the interface editor's error list window was supposed to be converted but never quite got there, so it stopped working.
  • Reset the special 'load time' driver stats field any time the driver is resumed or reconfigured.
  • Update the installer to do the special case conversion of files when crossing the 5.3.903 boundary, to get them to the new chunked file format. To keep things reasonably sane, set a new minimum upgrade to 5.3.2, so that we can be sure all old updates of data formats and locations are in place and can do a clean upgrade to the new scheme. So you have to get to 5.3.2 first, then can go to 5.3.903 or beyond.
  • Get the Carrier Infinity driver into the release.
  • Add a check in the triggered event editor tab to not allow a triggered event to be configured with just a single "Field Value Equals' filter. This is never right and it can cause lots of problems because every single trigger will run that action when the field value matches. Also check for no filters enabled, which would cause it to never run, and consider that an error as well.
  • There is a mistake in how our combo box control wrapper is implemented. When you ask it for the current selection, it returns the selection in the list. But that can get whatever the mouse is over when the list is dropped down, not the actually selected value. When we updated the AI to scan tabs for changes, it can now cause bogus errors if it scans when you have a list down and have moved the highlight off of the current selection, if that makes the other values associated with that list box selection come out invalid.
  • In the AI, ask tabs if they have any changes before forcing a save (when the tab is closed or the AI is closed) instead of just forcing a save. Otherwise all the tabs have to do that check themselves.
  • The AI shows changes made, for tabs that have data to save, but it doesn't show error state for them. So update to add that, and centralize that functionality to make sure it always gets set correctly. They now show their tab header text red like driver tabs do when the driver is offline.
  • The basic Windows multi-line editor, which we use anywhere there is just basic multi-text editing needs, doesn't by itself implement Ctrl-X/C/Y/A common hot keys, so we need to implement those ourself.
  • The media repo manager's movie description dialog should enable the 'wants enter' option on the text editor since these will almost always be multi-line and otherwise hitting enter will invoke the Save button instead.
  • The Z-Wave client interface should only do a save (upon request from the AI) if it has gotten good config down. Otherwise, it can save back a default constructed object. That happens async, so it's possible you could open it and close it quickly enough to do a save of the unset configuration.
  • The Z-Wave client interface should lock out the storing of new config from the server any time it is accessing the new config and does anything that would be non-blocking (in addition to the replication process where it already did this.) But any time it popups up a dialog that gets a unit from the current config, or when they do the menu for a unit. We need to make sure the config doesn't change behind our back. These non-blocking ops will not stop the background polling thread or the GUI timers which drive the UI thread to pick up any new config the background thread has left for it.
  • A few small goobers in the new Z-Wave driver were causing it to use more CPU than it needs to.
  • Add an Abs() expression to the logic server's Math field type syntax, to get the absolute value of the child expression.
Dean Roddey
Explorans limites defectum
  • Add more logging in the installer where it upgrades the master server data, to make sure we get the path of any file that fails conversion.
  • The interface editor's popup menu is not documented in the written docs. Go ahead and break out the Tools/AdminIntf/Customize/Interfaces page into its own sub-section, with the various bits put into their own pages, and add a new page for the popup menu.
  • Make it clear in the driver base class docs that the field write methods return a status that indicates whether the field value changed or not, and why that would be useful.
Dean Roddey
Explorans limites defectum
  • Add Ceiling/Floor methods to the CML Float4 and Float8 classes.
  • Add some initial report data generation support now that our ChunkedFile conversion is done. This just generates raw data, which won't be of much use to you, but some tools to make use of that information will follow.
  • During the initial 5.x changeover when we completely reworked all of the MS customization data into the new hiearchical system and all that, we made a less than optimum decision to have separate hierarchical and data caches. This was creating complications and confusion, so they have been combined into a single cache. So now the hierarchical cache holds the data as well (when it is loaded, it is only done when required.) This is much more straightforward, and of course coming back to it outside of the huge 5.x rush allowed for a lot of improvements and simplifications as well.
  • Add new MoveToStart(), MakeSpace, and RemoveSpace() methods to the CML memory buffer class, which respectively move trailing bytes down to the start of the buffer, move trailing bytes up to make a hole in the buffer, and move trailing bytes down in the buffer to fill a hole.
  • Indicate in the CML MemBuf class' CopyIn, CopyInAt, and CopyOut methods that the source and target buffers cannot be the same object. And have the CML engine throw if this happens.
  • Add a lot more error reporting info on serial read/write errors to help diagnose issues in the field, and immediately to help with errors in the Aeon Z-Stick hanging up after a certain period of time.
  • The Devices:: DriverIsReady action command got changed to use a different method to do what it does, and that method has a 5 second default timeout, which is not appropriate for this call. Change it to pass a very short timeout just to check and come back quickly if not ready.
  • There's an issue in the upgrading code in 904. I fixed the issue of it picking up stray files and broke something else in the process, a few things actually.
  • During the recent chunked file update, some of the scheduled event modification calls didn't get re-implemented (setting the schedule on the fly stuff.) So those operations won't work in 903 and 904.
Dean Roddey
Explorans limites defectum
  • Increase the minimum inter-msg send interval in the new Z-Wave driver. Let's see if this helps with the serial port lockup folks have been seeing. It may slow it down a bit, but ultimately slightly slower and reliable is better than faster and unreliable.
  • The web server was not expanding out query parameters. So, in the WebRIVA client, if the user name or password has a character in it that the browser decides to encode, the web server would literally try to use that encoded format and fail.
  • Add some more logging to the Z-Stick class of the new Z-Wave driver to have it log more info when it gets the dreaded Z-Stick serial port failure, so that we know at least what msg was being transmitted when it fails.
  • Start getting some automated unit tests in place for the new data server chunked file/caching strategy changes.
Dean Roddey
Explorans limites defectum
  • Add the GE 14288 smart outlet to the Z-Wave driver, at least as best as can be guessed until we get some feedback and adjust as required. This required a new underlying generic handler, for single outlets, so it's quite a bit of code by eye without being able to test it.
  • Judging by some traces from Kevin, update how we deal with CAN replies from the Z-Stick. It looks like maybe a lot of incoming msgs are backing up and getting us into a deadlock where we can't send but we also aren't getting those incoming msgs read and ACK'd. Maybe, maybe not. We'll see if it helps.
  • Add a new LogExcept() method to the CQCLogger class, to make it more convenient to log caught exceptions.
  • Expose the underlying C++ time class' time parsing capabilities in the CML Time class. This could be quite useful in some drivers particularly. It allows you to set a parsing pattern that will be used to parse out textual time stamps, which can be kind of messy in some cases.
  • Revisit the expression editing stuff, of which there are a handful of scenarios, and make sure that enabling/disabling and clearing the comparison value is all taken care of correctly to make it impossible to do the wrong thing, and to fix an issue introduced a couple drops back that causes one of the dialogs to disable the comp value if you select regular expression type.
  • If the currently active AI tab should throw an exception when being asked if has changes, be sure to pause the timer that drives that process. Else we just keep getting stacked up error popups.
  • The interface engine's 'image list' mixin (which is used by any widgets that allow for selection from a set of images) could cause an exception during checks for changes or when asked to save, for those types of widgets that have a variable number of images based on config. The mapped image widget might be the only such, and it would do so if you added a new entry to its mapping table, which would cause it to be a different size from the unedited content. A comparison method would cause an index error because of this.
  • As another experiment with the Z-Wave driver's timing, instead of just setting a fixed minimum inter-out msg interval (which was bumped up a good bit in the previous drop for testing), let it go as fast as it wants as long as things are going well, but delay the next msg when we get a failure to transmit, a CAN, a NAK, etc... As long as things are going well, we never send something until the previous one is done. It's only on failures that we might be able to over-cook it. And there's a fine line to walk in that we have units that have woken up and won't stay awake long, so we need to talk to them while we can.
Dean Roddey
Explorans limites defectum
  • When adding support for the GE 14288 outlet to the Z-Wave driver, failed to get group association info into the device info file.
  • Add a method to the CML XML parser to check for the presence of a child element by name, without actually retrieving the anchor.
  • The ToUpper() and ToLower() methods of the CML Char class are not documented.
  • The installer checks to see if the user account you have configured for CQC Voice exists. If not, it gives you the account creation page to create it. But, if maybe the system is slow to come up or maybe anti-virus blocks things, and the check fails, it thinks it doesn't exist. But, when you then go to the creation page, it might now see that it does exist and it thinks the 'already exists' error is a failure. So you can't move forward until you delete the account. So now it watches specifically for that already exists error and treats that as a success.
  • Doh! The off/on (switch) multi-level switch command class handler in the new Z-Wave driver is only looking for set messages, instead of set and report msgs. So it doesn't store the incoming value whne it gets a report. How this hasn't come up before I cannot understand.
  • Some devices send a node info frame every time their button is pressed in some way. The driver is incorrectly doing an immediate poll (for readable values) when that happens. It should only do this if the unit is in error or has had timeouts since the last good value. The reason being that it can be used to get caught up immediately if a unit is temporarily unavailable. But otherwise if the unit is in good state, it should be ignored.
Dean Roddey
Explorans limites defectum
  • We have a dimmer unit handlers in the Z-Wave driver. But there are other things, like say a fan controller, that is effectively the exact same thing, in terms of the basic functionality. If we just provide a means to override the _xyz part of the field names, we can use this same handler for stuff like that and just provide the override in the device info file.
  • Get support for the GE 14287 fan controller into the Z-Wave driver.
  • Do some more tweaking of the Z-Wave driver's Z-Stick class' handlding of the serial port when we get an error. We'll try to recycle it and keep going.
  • Expand the Weather device class to include a 'WEATH#FCDayCount' field. I'm the only one who has done a weather driver so this is safe enough without the craziness of introducing a version 2 of the device class and such. It mainly exists to help the AutoGen system know how many days to generate. Update the V2 validation to include this new field.
  • Add support for the system, as a replacement for the Weather Underground, which threatened to close the free accounts and only support commercial customers. They have sort of backed off that, but it's good to have another option.
  • Update the auto-gen system to use the new forecast day count field to generate the right number of days. That really means it has to prune off days from the original source template if the driver provides fewer than the 6 days that it has as designed.
  • Sonos has broken the ZonePlayer driver again (but not the V2 media renderer version.) The DeviceProperties service description file causes the Windows UPnP engine to fail to create the service. So that functionality has to be removed, hopefully temporarily.
Dean Roddey
Explorans limites defectum

Possibly Related Threads…
Thread Author Replies Views Last Post
  6.x Beta Release Discussions Thread gReatAutomation 30 5,781 12-21-2022, 12:53 PM
Last Post: pilotguy7ca
  Official 5.5 Beta Release Thread Dean Roddey 46 17,632 09-23-2021, 03:32 PM
Last Post: jokermac
  Official 6.x Beta Release Thread Dean Roddey 2 1,468 04-16-2021, 05:55 AM
Last Post: Dean Roddey
  5.5 Beta Discussions Thread Dean Roddey 291 85,861 04-05-2021, 04:10 PM
Last Post: Dean Roddey
  6.X Discussions Thread gReatAutomation 1 1,250 04-01-2021, 03:23 PM
Last Post: Dean Roddey
  Official 5.4 Beta Discussion Thread Dean Roddey 441 184,070 06-15-2019, 02:33 AM
Last Post: Bugman
  Official 5.3 Beta Discussion Thread Dean Roddey 815 402,792 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.3 Release Thread Dean Roddey 27 21,161 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.2 Beta Discussion Thread Dean Roddey 244 159,905 10-14-2017, 07:57 PM
Last Post: Dean Roddey
  Official 5.2 Beta Release Thread Dean Roddey 13 14,981 10-09-2017, 06:49 PM
Last Post: Dean Roddey

Forum Jump:

Users browsing this thread: 1 Guest(s)