Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
4.8.2 preview
So, there have been a good bit of changes since 4.8.0. I've been working towards a followup, which have been various drops under a 4.8.1 version. However, I kept getting talked into making more changes, so I never got to the point of getting it out. To avoid confusion, I've updated it to 4.8.2, and have been testing hard over the last few days. I've made some good fixes over those days, and wanted to put up this preview of the 4.8.2 version for existing customers to try out.

It would be well worth upgrading, even if you are on the later 4.8.1 variations, since I found and fixed some worthy bits even since then. Let me know if anything seems questionable, though it's fairly unlikely at that point. Actually it would be nice if all of the folks on the 4.8.1 versions upgraded, since that's a non-version now.

Here are the changes since 4.8.0:
  • The CML driver base class' DelConfigStr() method inexplicably had an input string parameter, which must have been a copy and paste error from long ago. Probably few drivers are using the delete config string method, but if so this is going to be a small breaking change. Just remove the useless parameter.

  • The Elk V2 driver has an issue with the ZoneBypass command of the InvokeCmd field. Due to missing a step, it's getting the wrong index for the zone, and then uses that to find the assigned area of the zone, and that may then complain that there's no assigned area, because it's looking at the wrong zone for that info. [PORTED]

  • The event monitor config editing dialog doesn't reload the parameters for editing, so you have to re-enter them every time.

  • JSONAnchor objects are marked as copyable but don't implement the appropriate supporting functionality at the C++ level, so you get an exception when you try it.

  • Get the V2 Oppo BDP driver into the build.

  • Do a new driver for the Harmony Hub, using the undocumented protocol

  • Do a new driver for the SnapAV B500 8x8 matrix. There are other variations, but this one only supports the 8x8, since it's PDL and PDL doesn't have any means to adjust for different numbers of fields.

  • There's a fundamental issue with things like the JSON and XMLParser which keep up with a connection between the parser and the anchors. The debugger, if it tries to display debug info on the anchors, has no idea that the nodes that the anchors are referencing are no longer valid, and can cause an exception. The classes themselves use a set of serial numbers, which the parser bumps each time it does a parse, and gives out in anchors. So if the anchor's number is different from the parser's the anchor is no longer good. But the debugger cannot know about such things. And there's no way to clear all extant anchors upon a new parse. For now, just remove the display of debug info on the anchors, which sucks but at least it's safe.

  • The low level HTTP handler isn't setting the 'code type' enumeration before return, so it never gets set and anything check it will fail. The numeric status code is returned of course, but it's often a lot more convenient to use the more generic code type enum to check status. And the reply text isn't getting back correctly either. That's not often used but could be and may often be logged. [PORTED]

  • Add a new command to the IntfViewer command target called IntfViewer::GetOverlayParm(). It takes a variable name to set, and an index (1 to 4) indicating the overlay parameter to get. Update the overlay widget configuration to allow the user to configure up to four values, which the above command allows you to get access to. The point of this is to allow you to load the same template into multiple overlays, and allow each of instance of that loaded template to adapt itself to some overlay specific setup. For instance, one parameter might be the moniker of an A/V receiver, of which you have more than one, and where you want to load up the same receiver control template multiple times on the same screen, each into its own overlay. The actions in the template being loaded can access the per-overlay configured values in order to adapt themselves appropriately.

  • Add another command to set those parameters dynamically at runtime. In this case, you are addressing the overlay itself since you are setting a value on it, so it would be something like MyOverlay::SetOverlayParm(value, param # 1 to 4).

  • Change the device info file for the Monoprice 10796 multi-sensor device to allow user configuration of the F/C temp scale, since it appears that it can be changed, whereas before it was assumed to be fixed on C scale. What you configure has to match the format of the device or the temp values will not be stored as valid data.

  • Create a new Z-Wave device info file for the GoControl WAPIRZ-1 multi-sensor device.

  • Related to the GetOverlayParm() stuff above, allow the comparison value of the true/false expressions on the boolean tab to be set dynamically. For any of the widgets that use the Bool tab, you can send a command like MyBoolText::SetBoolCompVal(True Expression, Bubba). Or it can be False Expression to change the value on the false expression. So this also gets around an issue where you need to adjust at viewing time when loading the same template into multiple overlays. In the OnPreload of the template being loaded, you can use GetOverlayParm to get one of the overlay specific values and use that to update the comparison value of any of the boolean oriented widgets in the template being loaded.
Dean Roddey
Software Geek Extraordinaire
Continued changed list:
  • When you load a template into an overlay, as when you just load a template, some of the action commands that are ostensibly for the IntfViewer command target really have to get re-vectored to the containing template or overlay. In the overlay case, triggered type events weren't being swizzled correctly, and those types of commands would actually go to the IntfViewer target, which didn't know how to deal with it.

  • Create a new mechanism to allow for the dynamic generation of repeated instances of a layout template, one for each of a list of fields or monikers, into an overlay. This allows the user to create dynamic content that adapts to available lights, temps, dimmers, etc... They can provide a manual list, or they can use a new Devices::GetSemFldInfo() to get all of the fields of a given driver that implement a particular semantic type. The command returns the info in a form ready for use by the new dynamic generation command (which is on the Overlay widget and called DynOverLoad()).

  • When templates are loading, OnPreload actions are done synchronously during the load, but OnLoads are queued up and processed after the load has completed. The stack for such async operations is in the action engie and it's only 32 slots in size. If you have more than 32 widgets with OnLoad commands, you can max it out and the load will fail. So bump that up considerably.

  • Currently, if you do a gesture in an overlay, and that overlay is not scrollable, the gesture is not propagated upwards to a parent overlay (if one exists.) So, if you are using overlays not for scrollable content but for viewing time adjustment to different fields or devices, a parent overlay becomes non-scrollable if the user starts the gesture on one of the contained overlays. There's no apparent reason why this should be so, so that restriction has been removed. If the contained overlay is scrollable, then of course it will eat the gesture either way.

  • When the IV is finding the target widget to process a gesture, it should ignore hidden widgets and keep drilling down. Currently, a hidden widget will stop the process and something that appears like it should be scrollable won't react. [PORTED]

  • The Check Box widget is not making use of the error image, because it's only drawing an image if it has a good value for the field or variable it's associated with. This sort of makes the point of having an error image a waste since it's purpose is to be drawn if there's no good value. [PORTED]

  • Add a second parsing method on the CML JSON parser, to allow for parsing straight from a binary buffer, instead of having to convert to text first and then set that on a text input stream. This can be considerably more efficient in some cases.

  • Add a Set4() to the CML URL class, to allow the same functionality as the BuildURL methods (to build up a URL from constituent parts so that there is no parsing ambiguity), but to build it straight into the URL object, instead of returning a formatted string built up from the parts. This is often more efficient since many times someone would just turn around and pass the resulting string to a URL object to parse it.

  • If you call GetIPEndPoint() on a URL, and it was set up with a zero port (to get the default when it's formatted out), you currently just get a zero port in the end point, which isn't really the intended result of a zero port. It should, if it understands the protocol of the URL, provide the default port in the returned end point. If you actually query just the port, then it can still return zero, because the caller may want to know if one was set explicitly or not. [PORTED]

  • Add a PrintToStream(stream, anchor) method on the CML JSONParser class, to make it easy to dump out the contents of a JSON anchor (and it's children recursively) to a text output stream. Mosty to make debugging JSON based comm easier in the IDE, but could be useful for other purposes.

  • Add new constants to the CML HTTPClient class, for 303, 304, 307, and 308. And now check for 307 and 308 in the redirection handling GET method. [PORTED]

  • Implement support for at least the core formats of the ISO-8601 time stamp format. This is needed for the new Nest driver, and probably for other things in the future. It doesn't support ordinal or week based dates, just the calendar style (year, month, day.) But that's what most everyone will use. It also doesn't support intervals, just single stamps.

  • Implement a new driver for Nest, using the official interface, and supporting async reporting of changes and such, and V2, so that it'll be all nice for everybody. It'll support thermos, cameras, motion sensors,

  • Add a new manifest for the V2 Nuvo Grand Concerto driver, for IP mode. It was assumed to be working, but there hadn't been a system to test against until now, so only the serial version had been shipped. [PORTED]

  • It's possible for the secure channel wrapper to get stuck in a loop if the other side fails to send a complete packet. There should always be complete packets but of course if communications fails, it could end up incomplete, and it just gets stuck reading zero bytes after it hits the timeout and fails to realize it should have already given up. [PORTED]

  • Because of an order of initialization issue, the event server can spin a thread full speed for 45 seconds while the main thread waits (to give underlying servers a chance to get ready.) The thread is calling a method that isn't ready for it until that wait completes and the main thread continues with the init. So move the one thing that needs to be done first, so that it is before the other startup stuff. [PORTED]

  • The CML field definition class doesn't show the 'write always' flag when you examine it in the debugger. [PORTED]

  • If a field is marked 'write always', it's possible that a value that doesn't fall within the field's expressed valued limits might get through to the driver.

  • The IV's image repo cache (where it caches images downloaded from the MS image repo) tries to keep the cache from getting too big by throwing out the oldest one when it gets to a particular size. But, it wasn't actually throwing them out, it was reusing the cache slots, so that anybody out there referencing that slot could start seeing a new image. It should just delete the old reference, leaving any users with their own, stranded copy that will go away when the last user drops it.

  • Yet another 'no value' indicator discovered in the Weather Underground data, which would leave floating point fields showing a value of -9999.00. So catch that and set the fields properly into error state if we get them.

  • Add a new method on the CML driver base class GetDriverInfo(make, model, majver, minver), so that the driver can get that info from the manifest if it needs it.

  • The event monitor engine isn't protecting itself against CML exceptions that occur in the event monitor in some cases, and this can cause the event server to fall over due to an unhandled exception. But, when in IDE mode, it should allow them to propogate back to the IDE for display. If in the event server, we'll log a message then back off for 30 seconds before letting it run again, so it doesn't fill the logs, but trying to keep it running in case the issue is temporary. The monitor really should catch its own errors, but we shouldn't just preemptively stop it if an exception leaks.

  • Noticed really bad banding in the blue blurred image used in the auto-generated interfaces behind the browsing/now-playing media overlays. After wasting a lot of time, figured out it's an error in Inkscape, and is still there many versions later since I upgraded to the latest in the process of trying figure this out. In the end I worked around it by layering multiple blurred rectangles of different sizes, brightness and opacities, so that they sort of fill in each other's bands, to get a reasonably acceptable result.

  • The Login button on the main tiles screen of the auto-generated stuff doesn't do the button depress effect when clicked, because I set both unpressed and pressed images (and didn't offset the pressed.) But, since it's the same image for both, just setting an unpressed image makes the button widget do the pressed effect itself by drawing the image offset, so I just removed the pressed image.

Dean Roddey
Software Geek Extraordinaire
Anyone upgraded yet?
Dean Roddey
Software Geek Extraordinaire
Is everyone in a post-holidays depression or something? :-) Things went quiet suddenly here and on other automation fora.
Dean Roddey
Software Geek Extraordinaire
sunroom. so much sunroom work. Did a little with HA tonight, but fell asleep from 7pm-9pm with laptop in hand.
Devices I can't stand and wish I could replace: SmartThings, Hue, Concerto, VRUSB
My vlogs:
Post holiday depression - It's called having to go back to work. This is on my list for this weekend.
i'm just lazy.

do the needful ...
Hue | Sonos | Harmony | Elk M1G
I'm not smart enough to deal with any issues that pop up, so I'm waiting for the smarter guys posting above to go first.
If you are already on 4.8, it's not that much of an upgrade. Nothing big changed, just plenty of smallish improvements and fixes. It's just good to have it in use by more than me before putting it up as official, as a sanity check.
Dean Roddey
Software Geek Extraordinaire
Dean Roddey Wrote:If you are already on 4.8, it's not that much of an upgrade. Nothing big changed, just plenty of smallish improvements and fixes. It's just good to have it in use by more than me before putting it up as official, as a sanity check.
I'm not one that would give you much comfort, as you know. I probably wouldn't recognize a problem if I had one.

Possibly Related Threads...
Thread Author Replies Views Last Post
  Preview of new Web based RIVA client Dean Roddey 317 10,304 1 hour ago
Last Post: kblagron
  Room config HTML based app preview Dean Roddey 5 712 11-05-2016, 02:53 PM
Last Post: Dean Roddey
  5.0 Preview Stuff Dean Roddey 108 6,666 11-01-2016, 11:06 AM
Last Post: Dean Roddey
  Native iOS app preview Dean Roddey 11 1,569 11-02-2011, 08:35 AM
Last Post: phenix
  1 preview template two repo's help jpants 2 666 10-22-2008, 01:18 PM
Last Post: jpants
  Movie Preview diy8888 2 856 01-09-2007, 11:24 PM
Last Post: fivestar

Forum Jump:

Users browsing this thread: 1 Guest(s)