Hey nix, sounds like you’ve done a great job with the Soma!
Apologies for not posting my device handler earlier, I got it to the stage where I was happy with its functionality but the UI in the smartthings app needed some work. I wanted to have it looking tidy before posting, but things have been crazy since that point and I havent had the headspace to finish it off (I live in Australia and we were smashed by bushfires late last year for a few months immediately followed this COVID business we are all in the middle of).
But it’s great to hear you have been working on a DH for the Soma and I hope I can still help you out. I havent looked at it since last year, so I cant recall all the details, but the issues you have described sound like the same things I came across. I did pass on the feedback to Soma who said they were working on integration with ST but I havent seen anything come of that yet.
You can find my code here:
Feel free to use my DH as is, use some of the code for your project, or if you prefer you could build on top of mine. Id be more than happy to collaborate with you if you were interested, but full disclosure I primarily code in Python and worked out just enough Groovy to get the job done! I was pretty happy that it had as much functionality that could be reasonably achieved via the Soma API, and I just wanted to tidy up the UI for the smartthings app. I had been using some icons and layout from a DH that A4refillpad had made for the Ikea blinds as a template to get started, and I wanted to confirm he was fine with us using his icons before posting the DH on the forum.
I only have one Soma, and it wasnt until Mark started using this DH that we realised it wouldnt support multiple devices. It took a bit of digging, but I did end up finding a way to get it to support this. Best to look at the code as Im sure you are intimately familiar with the Soma API now!
I recall there were various improvements that Mark and I would have like to implement, but as you would have found out the Soma API is quite limited (unless it has been updated since last year). From memory if you open the blinds but issue a stop command part way through, it will report the blinds as being 100% open rather than the position that you stopped it at. Small things like this made it hard to have a slick UI for it.
You mentioned the challenge parsing responses, and I recall this was an issue for me too. I ended up changing the method I initially used to capture the responses in order to support multiple devices, and if you are interested you can browse back through my commits to see what I originally did.
Hope this helps, and please let me know if you have any questions (although Im a little rusty on what I did).