Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Official 4.3 Beta Release Thread
Version 4.2.910 is posted. This one contains a few fixes, some more refinement of the recent driver architecture changes, and one more (and hopefully last) internal plumbing imrpovement for this release cycle. I'd recommend upgrading to this one if you are on any of the betas. It should be solid again now, though of course if you are using some third party driver that no one else who has upgraded yet is using, it may require a tweak to make it happy, but we can do that easily enough. You should check the beta drivers section for new versions of any third party drivers you are using if you are coming from pre4.2.906'ish.

The changes in this release are:
  • The CML IDE's breakpoints dialog doesn't work like it should. If you select a single BP, Remove should clear that one. If you highlight a file, REmove should remove all BPs in that file. If you us Remove All, it should remove all BPs in all files.

  • The toolbar widget isn't initializing an index when it is being streamed in. This will cause an index error in certain situations, such as a command in OnPress. It will also cause an error if you try to get a prompted field value in a field write command in the action editor.

  • Do some more refinement of the new driver architecture changes. We can get rid of a bit more locking, and reduce the CPU usage a bit as well. Go through again and check all the locking to make sure it's correct and no one can step on anyone else's toes.

  • Add the tray monitor's program name in the mouse over popup text, so that folks know what program they are interacting with.

  • Add add a little 'load balancing' in the new driver stuff, so that we can give a little extra time to process client commands if there are more to process, and put off the poll a little bit. This will provide a better apparent performance, and as long as we don't allow it to be put off more than a little, it shouldn't affect anything.

  • There's a subtle issue in the GC-100 serial port that could make a GC virtual port appear like it's open, but never really get closed when the port close method is called.

  • Rework the ORB rebinder. This is a technical,internal thing, but important. It keeps the services (in the general sense, that CQC programs make available to other CQC programs) registered in the name server, putting them back if the MS cycles, and keeping them updated over time so that the NS won't time them out and drop them. It's not optimally done currently, and I had a suspicion that it was responsible for an occasional bogus "driver xxx isn't loaded" type error, and it turned out it probably was. The changes will make it faster to recover and more efficient at the same time, and easier for me to maintain.

  • The installer isn't putting the binding name on the tray monitor, either in the start menu or the task scheduler if you enable auto-start.
Dean Roddey
Explorans limites defectum
Version 4.2.911 is posted. This one has a few small fixes, and one new driver that some folks have asked for at various times. It's like the generic IP trigger driver except it accepts a connection instead of makes one. Be aware that this means anything could connect to it, so it could be a security risk, but it could also have a number of uses if you have some device that can send out text strings you want to trigger CQC actions but it has to connect to a server, not the other way around. This one is called the Generic Listener Trigger Driver.

Like the other generic trigger drivers it supports the divider character which you can set during installation. So you can train it to react to a string like:


If you set the divider character to $ during driver installation, for instance, and send it a command like:

DoCmd$Kitchen 99

The DoCmd part would trigger the action and the "Kitchen 99" part of the string would be passed in as the send action parameter to the invoked action, so the action can parse that text and do something with it. I.e. it supports parameterized actions, instead of making you do a separate action for every possible variation.

This release also fixes one more goober in the driver backdoor command, SendData. This may have been preventing some drivers that use it from working correctly.
  • Fix a couple more wee goobers in the new driver architecture stuff that caused a bogus log message when clients used the SendData or SendCmd backdoor driver commands.

  • Renaming an e-mail account causes an error when you try to save it, because the update code isn't dealing with the fact that the name can be changed.

  • Do a generic trigger driver that accepts connections instead of makes them. This is a security hole but some folks want to have this functionality. It operates otherwise just like the other generic trigger drivers, and you train it via the same IR/RF client side driver interface as those.

  • There's still an error in the SendData backdoor driver command, from the recent driver architcture reworking. This call can also stream some response data back to the client, but it's not getting streamed back because the byte count is being zeroed before the return.
Dean Roddey
Explorans limites defectum
OK, one more fairly quick update to keep chipping away at things I broke with all the recent driver architecture reworkings. Hopefully we are getting pretty close to back to fully solid, and this one deals with the known remaining issues. Plus a couple small general fixes.
  • The E-mail account setup dialog shouldn't force you to enter a password, since not having a password set is what indicates you don't want to use authentication to the server. I don't know for sure if this will work, since I don't have an account to test it on, so let me know.

  • The Text tab is missing from Inc/Dec buttons, still, though I thought I fixed that.

  • The timed field write command got whacked a bit in the recent driver architecture changes. The final value wasn't getting passed in correctly.

  • The Intf Viewer's Reload and Reload/Clear Globals menu items were both using the same menu id by mistake, so the command handler always thought it was supposed to clear globals since it was always getting the latter command.

  • The new driver scheme isn't always taking into account the special case of CML drivers in the IDE, so it wasn't shutting down when requested from within the IDE.

  • After the CML debugger has seen a shutdown request in the IDE, and reported it, it should clear that flag so that the macro can run down normally if the containing application wants that, in the case of drivers allowing it to go through the shutdown procedure. As it stands now, any subsequent calls to CML code see the shutdown request and immediately throw again, so it can't do the regular shutdown.

  • The new HTTP stuff isn't watching for thread shutdown requests while waiting for content, which is making drivers that use it slow to shut down, both in the IDE and in CQCServer.
Dean Roddey
Explorans limites defectum
Version 4.2.913 is posted. This one adds a few small new features, fixes a couple bugs, and takes another whack at the GC-100 serial port support, to tighten it up and make it more robust in the face of network issues.
  • And the updating of scheduled event times is STILL not completely right. Weekly and monthly ones don't compensate in the initial setting up of a new event for the fact that the start time on the left is not on the hour/minute boundary that the event is supposed to run on. SO the calculating of the next time ends up being relative to the start time, not the next possible time on which the event can be scheduled after the start time. So they run on the start time hour/minute instead. Update the next time calculations to work like the daily ones, using a Julian date scheme that makes it naturally adjust for this issue.

  • Take another whack at the GC-100 serial port support, to simplify it and make it as fail safe as possible.

  • Add some methods to the CML event trigger class to make it easier to get event data out based on the type of the trigger, so that they don't have to directly reference paths in the event (which will make user code less likely to break in the future should it become necessary to change those paths.)

  • The ability to run a CML based event handler (at least ones that you can query the event from since they are derived from the event handler base class) got broken over time and apparently no one had used it to notice.

  • The validation logic in the triggered event filter dialog wasn't quite right. If the field/device value was missing but required, but the comp value was ok, that would override the failure and the validation wouldn't complain, but an exception would subsequently occur when the filter data was stored, because of a missing value.
Dean Roddey
Explorans limites defectum
Version 4.2.914 is posted. This one has one more fix (in the CQSL Repo) for an issue introduced during the recent driver architecture changes, and corrects for a change in the Sonos UPnP protocol introduced in a recent firmware update they made, and a couple small improvements.
  • Add some new commands to the TrigEvent action target, to support getting out the info for all the recently added event trigger types, plus one for field changes which was never in there either. This makes it a lot easier (and more robust) to deal with these types of event triggers.

  • One of the Sonos specific service interfaces changed in a recent software update. So the driver now needs to be able to handle the old or new schemes. It's been updated to do so. It should be backwards compatible as well.

  • Update the security device simulator driver to work more like the Elk/Omni, wrt to how it does arming and disarming. Then update the auto-generated code to support the simulator driver as well as the Elk/Omni. This should allow for a fully contained auto-generated system for use in demos for installers and such. The security system stuff was the only bit that couldn't be reasonably done on a standalone laptop demo type setup. It's just a simple driver that has two areas and 8 zones in each area, which should be enough for a demo system.

  • Allow values in the Xlat tab of the Interface Editor to be edited.

  • An error was introduced into the CQSL repo in the recent driver architecture changes. Since this one is unusual in that it has a private ORB interface for the repo mgr, so overrides of the backdoor methods used had to be added, to lock them when called by the mgr, then it calls on down to the parent class. But one of them wasn't calling the parent, it was calling itself, and so went into a loop until it overflowed the stack and killed CQCServer.

Dean Roddey
Explorans limites defectum
Version 4.2.915 is posted. THis one has a number of small improvements and features, some internal only plumbing improvements, and some more bug fixes.

If you are using the Lutron RadioRA2 driver, note that the client side interface has been dropped. The config is in a simple text file now, and you just edit it directly. Until the docs are official updated, I'll update the driver in the beta drivers section with info on the config file format. You'll get an error the first you load the Admin Intf. if you had the client side driver setup to load, since it's no longer there.
  • Add a new 'running average' virtual field type to the logic server. It accepts one source field and averages it over a chosen number of hours. It actually collects a sample per minute, then it averages those and puts them into an overall list of hourly averages. Each time it adds another hourly average it averages those hourly averages to get the actual field value. This should make it fairly accurate and avoid it hitting one non-representative value in a given hour. You can choose which numeric type the field is, separate from the source field.

  • Verify that the CQSL audio player when using the quick time server can access media files on shared directories.

  • The base CML driver class isn't catching C++ exceptions in the SetConfigStr() method, or all C++ exceptions in the GetConfigStr() method, which allows them to propogate up to CML code.

  • Add a DelConfigStr() method to allow CML drivers to delete their configuration string.

  • The CML FileOutStream class leaks a C++ exception if you pass it an empty file name.

  • Since the config data could get fairly large with the Lutron RA2/Homeworks driver, in a larger system, move the driver config out to an external file. For existing drivers, it'll first see if the file is there. If not, it'll read the config server based driver config string in and write it out to the file, then delete the config string. After that it'll get it from the file. It's in the place that drivers always store their external data, partly named after the driver type, which is CQCData\MacroFileRoot\Drivers\RadioRA2\. The actual file will be [moniker].Cfg, i.e. named for the driver moniker, so that you can have more than one if you need. If you change the moniker of the driver just copy this file to the new driver moniker name, and it'll pick up the config again.

  • The static text widget is often used as a text input display, and its 'SendValue' command is often used to send the value it holds to some field after formatting it into a bigger command string. When the action trace is visible, have it display the fully expanded command for debugging purposes. You always get the expanded command at the fundamental command invocation level, but that doesn't include the formatting of that entered text into the value that is ultimately sent.

  • Some plumbing stuff, add a new 'image factory' facility that can sit on top of the bitmap, PNG, and JPEG support (and possibly others in the future) and hide a lot of the details of dealing with images. Currently there is too much redundant code spread around dealing with the nitpicky details of loading images, figuring out what type they are, allocating the correct type of image object, streaming them in and out, converting to a required target type, etc... This also requires that all of the separate graphics format support facilities be exposed to anyone who has to do this, which means more rebuilds as well. Most of that code can now be replaced by one or two calls to this utility facility, and most code then doesn't need to directly see the headers for the various formats (already helpful and more so in the future if others are added.)

  • The image import/preview dialog isn't initializing the flag that it uses to know when the user is dragging the 'color stealer' around. So, based on the random value in that byte location, it will sometimes start changing the transparency color indicator when the dialog is first loaded and you move the mouse around.

  • Update the RadioRA2 driver to support occupancy sensors. This requires extending the configuration format, which is now version 2. It also now allows buttons and occ sensors (and possibly other things in the future) to indicate whether they should send out event triggers or not. Just get rid of client side interface and let folks edit the configuration file. This will reduce the amount of code involved and will allow the addition of new features without having to wait for a new CQC release to expose the configuration changes. Add a ReloadCfg button to allow the user to force the driver to reload the config file.

  • The CML driver IDE isn't picking up the currently set verbosity level on start of the driver. I've been going back and forth between two different things, thinking that the one I was doing was wrong. But, it turns out, because of the special case issue of the IDE and the special startup issues within the IDE, we have to do both of them to insure the level is set before init of the driver, and so that it doesn't get reset back off again once the driver starts up.

  • Add a new method to the CML CQCUtils class to support faking the sending of a User Action event trigger. It's SendUserAction(moniker, type, data). The moniker doesn't have to be a real driver, or it can. The type and data are the same as always for user actions. We need to enable trigger sending support in some processes now that previously didn't bother, in case functionality is invoked.

  • A couple of the Roku driver's SendKey values don't work due to a goober in the code that handles writes to that field.
Dean Roddey
Explorans limites defectum
I just put up 4.2.916, which is a quick update from the one yesterday with just a few small things. I wanted to get it posted because these things were stopping some driver development, and to get the auto-gen improvements (dimmer support) from the last drop fully working.
  • The recent graphics file format plumbing improvements i made in 915 causes a small problem that slipped through. Some of the client side driver interfaces will load a manufacturer logo, and they stopped loading, so this needs to be fixed.

  • There were some wee issues with the new auto-gen support for dimmers, which slipped through. Also need a way to remove the secondary switch field in the load configuration dialog if you decide you don't want to use one (though you always should if it's available.) And it's not clearing the secondary switch field in the configuration if you select a non-dimmer field for the main field as well. So all of those are fixednow.

  • The HTTP rework some time back broke the SSL based GET/PUT operations and it just now was realized, now that some folks are trying to use it and having issues. The string being built up for the request part of the URL was wrong. It would have double question marks before the query part. This would cause it almost invariably to fail, unless you didn't have any query part ot the URL.
Dean Roddey
Explorans limites defectum
Version 4.2.917 is posted. This one has some fairly significant improvements. I'm trying to stuff related to the auto-generation system updated, and that's driven some changes in some of the core drivers to help make that all work better, and while I was in there it didn't make sense not to do some other things.

So the Omni TCP driver has been updated to support renaming things, as opposed to the fixed names that units, zones, etc... currently have. It should be backwards compatible and the default names are the same as they were so until you actually rename something they should have the same names as before. The Elk driver will get the same treatment before long here, but it's not been done yet. It's been updated enough to support the new auto-gen requirements, but that's all.

In the Omni client driver interface double click on something to change the settings. You can also now control on an per-item basis whether it sends out event triggers. And support for motion zones has been added. If you change one to a motion zone now you'll get motion event triggers instead of zone alarm triggers as was the case before.

The configuration was moved out of the configuration server and into a file, since it could get fairly large in the future as more options are added. The first time you run the driver after upgrade it'll move the config out to the file. It'll be in [cqc]\CQCData\Server\Data\HAIOmniTCP\ and named after the moniker of the driver. If you ever change the driver moniker, just rename the file and it'll get picked up again. It's binary so you can't edit it.

If you are using the auto-generation system, check the security settings and make sure they are still good and then regerate in order to get into sync with these new changes. The arming modes presented in the generated login popup are now the native modes instead of the generic ones used before.

These are fairly significant changes, though on the periphery of the system, not in the core. If you aren't using the Omni driver, then unlikely you'll be affected even if I messed something up. If you use the Omni driver, let me know if anything doesn't seem right. It should be happy since mostly the changes were in the configuration stuff, not in the actual driver function.

The changes this time are:
  • The HTTPClient class' SSL methods should force the KeepAlive header line off, since the way the class works right now it doesn't support multiple transactions on the same session. They should also provide a content type header line for you if you don't provide one explicitly, if you provided the content type and have outgoing body data.

  • Do a significant rework of the Omni driver wrt to how item configuration is done internally. This will allow us to support renaming of units, zones, etc... to more meaningful names, and to support whether each item type capable of sending triggers does so or not. And, while we are doing this, add support for motion zones now. If a zone is motion, it only has one field, the current status, and it's boolean, not the enumerated zone status of alarm zones. They are really only there to allow for finding motion sensors via semantic field type searches. Since the sensors are typically battery powered, no attempt is made to poll them really. Mainly these zones are there to trigger events.

    The config is now also moved out to a file, instead of being in the config server. The config can be pretty large, and might get more so over time. It will read any previous configuration in on the first load after upgrade (from the config server) and write it out to the file, then delete the old config server info. The file is binary, so you can't edit it directly.

  • Provide a Negate command for action variable targets. If the variable is boolean, just negates it. If Card, it sets the value to zero if it is non-zero, or one if it is zero. For strings, if it contains 0 or False (any case), it is set to 1 or True, and vice versa. Other types or values are rejected as invalid.

  • Now that we are moving towards the ability to rename the things in the security related drivers (Omni currently, Elk soon), this means that the assumptions made by the auto-gen system are no longer valid. Instead of just using area numbers, we have to use area names since they can have any name you want.

  • The Pentair driver doesn't correctly recognize the F/C temp scale set during install, so it always comes up in C mode.

  • To avoid more issues like the above, where changes in the drivers breaks the auto-gen because of assumptions, add some standard backdoor queries to the security drivers supported by auto-gen. These will allow the auto-gen to query the area names and their related status fields, and to get info on arm/disarm commands and available arming modes. This way, the auto-gen can just query the info and not have to make assumptions. It also allows it to use the native arming modes instead of the generic one it used to. Dump the old generic arming mode command from the drivers since it's not needed anymore.

    Regenerate your interfaces after you upgrade, to get back into sync with these changes. And check your security related config, just in case I mangled it in some way.

  • Not taking on a heavy rework of the Elk yet (as the Omni was above) but update it enough to deal with the above auto-gen changes. The arm/disarm commands now have to look for an area name, not a number, but we don't want to break existing stuff, so still accept a number as well for now. But ultimately we'll update the docs to indicate an area name should be passed.
Dean Roddey
Explorans limites defectum
Version 4.2.918 is posted. This one provides some new features, small and medium size, some fixes, some driver stuff, and some more auto-generation stuff.
  • Factor out the intf system's Xlats tab stuff into a separate mixin class. Currently it's just built into the dynamic text base class. Update the dynamic text widgets to use this new mixin instead of their own functionality. Udpate the designer to edit the xlats via the new mixin.

  • Add the new xlats mixin to the field/variable command button classes. Actually mix it in at the basic pushbutton class level so that other button derivatives can possibly take advantage of it later down the line without further refactoring.

  • Change the room select button in the auto-generated stuff to display the room name, instead of the current overlay name. We need to have the base template set a variable with the current room name.

  • Add a new SetText() method to the CML string input stream, so that you can set up new text on the stream after the stream is constructed. It's inconvenient in many cases to only be able to set it in the stream's constructor.

  • Add a new CompNC method to the CML string class, which allows a non-case sensitive comparison against another string. Returns a boolean to indicate equal or not.

  • Add a CheckFldName() method to the CML field definition class (CQCFldDef), which will check a passed string to make sure it meets the basic requirements of a field name.

  • There is a bug in the CML JSON parser's FindArray and FindObject that can cause a C++ exception due to incorrectly accessing th CML call stack.

  • Add a new driver ostensibly for the Arduino, though it might be useful for some other devices of that type. It requires code to be written on the Arduino side. It allows the device to send it info to tell it what fields it wants to have, their names, types and limits, and then it accepts regular aysnc reports of changes. It's assumed the device will accumulate changes and send them something like every 15 seconds or so, since they are just sensors for things like temp and humidity which won't change that fast. Otherwise the driver is purely passive, and sends nothing. It assumes the device will send a config msg upon connection and then a full report of all sensors. Then after that it assumes it'll get changes, or at least an empty change msg if nothing else to report within 30 seconds. It will drop the connection if nothing comes in for more than 30 seconds.

  • Add support to the auto-generation stuff for some simple miscellaneous stuff, the first bit of which is support for the Roku player. It's a fairly simple device so it won't be hard to support. You just either select a Roku moniker or don't.

  • Implement a driver that can support things like the Arduino, so that it can send us info about sensors. In fact it's sort of generic and might work for other devices, but it's only for receiving data, so it would only be useful for read only sensor devices. It will require support on the device side to send data in the required format.

  • Allow the Lutron RA2/HWQS driver to support switches. This will allow them to be marked as such as semantic field types, and to be boolean fields unlike dimmers (which will control them but not in convenient way.) The cfg file format is changed to support this.
Dean Roddey
Explorans limites defectum
Verson 4.2.919 is posted. It just has a couple fixes, a new driver, and some additions to the XML GW protocol to make life easier for GW based client programs.
  • Add a third parameter to the System::Equals() action command, which is either Case or No Case, to indicate a case sensitive or insensitive comparison. Currently it's always sensitive. Any existing Equals commands will be updated to indicate Case, in order to maintain backwards compatibility.

  • Add a new System::IsInlist() command that will search a list of values to see if any of them match a pattern. The search can be done in a number of ways, partial or full, normal comparison or regular expression, starts with, etc...

  • Most of the Denon drivers had an issue in the FreeCommResource method. They were checking to see if the socket was connected and only closing the socket if so, but this is incorrect. The socket will often be disconnected at that point, and often that's why you are getting there. So they wouldn't close the socket. It probably all came from some original Denon driver uncovered in one of the Pyramids and has been copied ever since.

  • Add a new driver for the Yamaha RX-A3000. It only supports the first two zones as it is now, but it should be fairly straightforward to add the other two if someone wants them.

  • Add a few new things to the room config info reported by the XML GW, to make like easier for third party clients. And also a little addition to the info reported when doing a field list poll. This isn't a breaking change, but if you use an embedded DTD in your app, it might break you because the new values aren't covered in the DTD. You'll need to update it slightly to account for the new values. If you are using a DTD in an XML GW based client, this could cause parsing issues since these new values won't be in your DTD, so you may have to update it.

  • The HTTP client wasn't handling Basic authentication correctly. It was generating the correct hash, but not prepending "Basic " to it to create the ultimate authentication string. Adding that now makes it happy. Some security system cameras use basic authentication and this was preventing stuff like the image e-mailing action command from working.
Dean Roddey
Explorans limites defectum

Possibly Related Threads...
Thread Author Replies Views Last Post
  5.5 Beta Discussions Thread Dean Roddey 8 350 07-07-2019, 11:32 AM
Last Post: Dean Roddey
  Official 5.5 Beta Release Thread Dean Roddey 2 160 07-07-2019, 11:28 AM
Last Post: Dean Roddey
  Official 5.4 Beta Discussion Thread Dean Roddey 441 44,226 06-15-2019, 02:33 AM
Last Post: Bugman
  Official 5.4 Beta Release Thread Dean Roddey 55 7,861 06-07-2019, 07:02 PM
Last Post: Dean Roddey
  Official 5.3 Beta Discussion Thread Dean Roddey 815 155,323 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.3 Release Thread Dean Roddey 27 8,280 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.2 Beta Discussion Thread Dean Roddey 244 89,620 10-14-2017, 07:57 PM
Last Post: Dean Roddey
  Official 5.2 Beta Release Thread Dean Roddey 13 9,035 10-09-2017, 06:49 PM
Last Post: Dean Roddey
  Official 5.1 Beta Discussion Thread Dean Roddey 453 200,732 05-16-2017, 03:45 PM
Last Post: Dean Roddey
  Official 5.1 Beta Release Thread Dean Roddey 28 19,932 05-12-2017, 05:44 PM
Last Post: Dean Roddey

Forum Jump:

Users browsing this thread: 1 Guest(s)