First, apologies about the execution of this change. The execution has been annoyingly haphazard, as have the reasons for it… (That is about all I can really comment on the “back end” pieces and my feelings about it at this time, I’m afraid.) I’ll have a post that outlines some other capability changes (some we have been requested to implement, and some that are still being implemented). This change was meant to be a little less intrusive, but that isn’t how it worked out.
Anyway… The presetPosition command was moved into the Window Shade Preset capability as it was argued that some window shades may not support a presetPosition. Regardless of where it might make sense (there are definitely different correct answers for different avenues of thought), this was needed so that we could mark the Window Shade capability as “live” from “proposed” for use elsewhere. So, with that, Window Shade, as it is “live” now, will no longer have anything removed or moved from it (though it could have things added at a later date). I’ll further explain this in an upcoming post – including plans we have for capabilities, changes that are coming in the near future, and semantics amongst things like “proposed” and “live” and “deprecated” and what those mean and anything else that makes these processes more transparent and provide fore-warning instead of apologizing (something that myself and @tpmanley have been pushing for).
For now, presetPosition might not show up in parts of the new SmartThings app yet and I am working to fix that (there are really weird nuances for that).
As far as using presetPosition in the Groovy world, it should go back to working for custom device handlers if you define “Window Shade Preset” as a capability of the device (that way presetPosition will be treated as a command and any data returned from it will be acted on properly – like, actually making the window treatment go to the preset position ). Just after rolling the change to the capability out we did update device handlers in the SmartThingsPublic repository (as well as any other WWST integrations), so those should be working fine.
As a side note: I don’t have a strong understanding of the backend for Webcore, so I can’t really assist with that. I will reach out to @adrian97c about this.
Anyway, enough with this essay. I’ll have more to come in a bit.