Hunter Douglas Platinum Bridge integration?

@schwark - ahhhh - yeah, that post really gives you all the details. And for some reason, I didn’t see it in master until much later. Thanks again!

Hey guys, so I updated my modem, what a headache with 100 plus devices, I can’t get the devices to show up for the skylights again, I was able to get the output.txt, added it to pastebin, inputed the info into the app and nothing shows up, any ideas?

Hey guys any one have any ideas, still can’t get the devices to show up again

Hey @schwark and others, I finally picked up a platinum bridge on eBay for a reasonable price, and it’s working from my phone!!! But, when I try to create the Smartthings device handler through GitHub integration on the smart things website I got:

Updated 0 devices and created 0 new devices, 0 published (1 skipped due to errors)

EDIT: I managed to remember that I can paste the code in directly to the IDE, from the GitHub RAW. So, I have managed to create the device handlers and the smart app. When I then added the smart app on the phone it did prompt for the IP address and also the url of the output.txt file. So, I’m making progress. Not working yet, I don’t know how to add the shades etc, I’m out of practice on smartthings! But, I thought I’d edit my post to say that I overcame the GitHub integration problem and am moving on.

Mine isn’t working anymore either, I had it working, then got a new modem and get set it up again, won’t create devices in SmartThings

I will need to look into this again. I have not setup new devices in a long time but I use this module everyday post setup.

1 Like

Thank you schwark!! Appreciate it, was great when it worked

Hey, it’s working! It seems like the smart app adds the actual devices automatically.

The silhouette shades have a vane configuration stop that doesn’t seem to be supported by the app or device. That would be a nice addition.

I think the installation sequence is:

  1. setup your device in the native iPhone app. Make sure it works. Set up your rooms, shades, and scenes. Set your router to maintain a fixed ip. Get the output.txt configuration file using the telnet or python instructions. Host output.txt on a website eg pastebin (Dropbox doesn’t seem to work anymore).

  2. install device types in ide (but copy paste because github integration broken)

  3. install smart app type in ide using copy paste

  4. install an instance of the smart app on your phone, at which time it prompts you enter the ip address and the configuration file URL.

4 wait. the blinds and scenes should appear in the ide fairly quickly but may not show up right away on the SmartThings app.

I’m starting all over, when I try to download the getstatus.py file all it gives me is an option to save in htm what am I doing wrong

Does the python script use python 2 or 3? I’m getting an error when running getstatus.py:
(base) C:\mack>python getstatus.py 192.168.1.113 > output.txt
Traceback (most recent call last):
File “getstatus.py”, line 53, in
main()
File “getstatus.py”, line 49, in main
print (get_status(sys.argv[1]))
File “getstatus.py”, line 43, in get_status
return socket_com(server, “$dat”, “upd01-”)
File “getstatus.py”, line 20, in socket_com
sock = create_socket(server)
File “getstatus.py”, line 10, in create_socket
helo = recv_until(sock, ‘Shade Controller’)
File “getstatus.py”, line 37, in recv_until
info += chunk
TypeError: must be str, not bytes

Note: I know next to nothing about Python. I ran the script on Python 3 via Anaconda

I spent some time on this the last few days. I forked the repo and made a number of changes. I customized it a little for me, but it should still be useful to others. If there’s interest I can try to make it even more generic, or do a “pull request” back to @schwark 's repo. My repo is here https://github.com/jeabraham/smartthings-hunterdouglasplatinum

I created a device type called platinum-gateway-shade-silhouette, that shows up as a “window shade” rather than a “switch”, so you can “open” it and “close” it, rather than toggling it between “on” and “off”. It also has a shade icon :slight_smile: I also added another slider to this, which can be used to set the vanes on Silhouette or Nantucket shades. I’m not sure whether this would cause any problems with other shades, or just be non-functional if you have a different model of shade. I’m not happy yet with the UI tile layout, so will probably keep tweaking it. I reversed the main slider so that the top (100%) is fully open, since I like to slide up on the slider on my phone to move the blinds physically up.

My code now uses this new shade type when creating new devices in SmartThings. You will have to comment out one line of code (and uncomment out the adjacent line of code) to use the original platinum-gateway-shade-switch type. (If this is problematic, the code could inspect a variable reported by the bridge for the “room” to identify whether the shades are actually silhouette or Nantucket, device type 10, or ask the user to specify if their shade has vanes on setup. But, I don’t think the extra slider will cause a problem for non-vaned shades.)

I added all the documentation I could find into a folder called “docs”, including the instructions that came with the gateway, some experiments I did with telnet, and, most importantly, the mi casa verde source code. The mi casa verde code has a bunch of features, like auto-discover IP address, support for other types of shades, waiting for acknowledgement from the gateway before queueing more commands, setting the date/time on the gateway, etc. etc. It looks fantastic, but I certainly don’t need all that functionality for myself. How many people are even using this integration?

I reorganized the folders, so that each device handler has a file name that matches the device/smartapp name, and is in a folder that matches the name. With this organization, the IDE’s GitHub integration actually works. You shouldn’t have to copy-and-paste source code if you use my GitHub repo.

The “main” and “details” tile organization was not wrapped in the metadata, but was dangling, although it didn’t seem to cause a problem. I fixed it.

A remaining limitation is the need to generate an output.txt file, and host it somewhere, so that the app can find it. This is a very clever workaround, but, it seems like there must be a way to retrieve the configuration directly from the gateway. It’s just a telnet to the gateway, type $dat, and grab the results. It seems obvious that @schwark spent hours and hours and hours trying to get this working before bailing into the workaround. I feel his pain, and don’t want to endure the same pain. So, unless someone is confident they can telnet in, execute $dat, and process the response, we should just live with this.

But, a bug that should probably be fixed is if a scene or a blind changes in your definition, it can’t seem to delete the old one and add the new one. It generates an error about the Device Network Id being duplicate. I think in these cases it should be updating the device, not creating a new one. If it’s creating a new one, it should delete the old one, and or use a randomly generated ID instead of “PLATINUMGATEWAYSHADE03”. If your scenes or shades don’t show up, check your live logging for an error. If you see a duplicate ID error, perhaps delete your scenes and shades. They will get recreated within 5 minutes from your output.txt file if they are gone.

I’m pretty happy with where it is now. My wife says I shouldn’t stay up to 2AM working on it again tonight. Much thanks to @schwark and everyone who has contributed to this. Let me know if you find it useful. Again, the big advantages are:

  • the vane control for Nantucket or Silhouette shades;
  • the proper github<->ide integration; and
  • that it’s a “window shade” now, not a “switch”, so instead of “on” meaning “closed” and “off” meaning “open”, it uses open and close/closed.
  • all the documentation and prior art in the repo in the docs folder.
1 Like

See my updated version, it classifies them as “window shade” instead of “switch”. https://github.com/jeabraham/smartthings-hunterdouglasplatinum

Tried to install the new version of the smart app, but it fails saying it skipped due to errors.

Has anyone migrated this app to Hubitat?

I am migrating the app to Hubitat and got the following error.
Can anyone help mr with this error?

2020-10-16 02:53:48.540 pm errorgroovy.lang.MissingMethodException: No signature of method: java.util.HashMap.sendEvent() is applicable for argument types: (java.util.LinkedHashMap) values: [[name:label, value:Afternoon, isStateChange:true]] on line 260 (doDeviceSync)

This is line 260:

sceneDevice.sendEvent(name:‘label’, value: DB[‘scenes’][id][‘name’], isStateChange: true)

These are lines 250 to 268:

def updateScenes(DB) {
log.debug(“Updating Scenes…”)
if(!state.scenes) {
state.scenes = [:]
}
state.scenes.each() { id, sceneDevice ->
if(DB[‘scenes’][id]) {
// update device
if(DB[‘scenes’][id][‘name’] != sceneDevice.label) {
log.debug(“processing scene {id} from name {sceneDevice.label} to {DB['scenes'][id]['name']}") sceneDevice.sendEvent(name:'label', value: DB['scenes'][id]['name'], isStateChange: true) } DB['scenes'].remove(id) } else { // remove device log.debug("removing scene {id} from name ${sceneDevice.displayName}”)
deleteChildDevice(sceneDevice.deviceNetworkId)
}
}

Sorry I was Awol. Did you try installing my version from my repo? https://github.com/jeabraham/smartthings-hunterdouglasplatinum

Now that the old Smartthings app is gone, I’m tempted to try Hubitat, one of the reasons would be to be more in charge of maintaining legacy devices or custom devices like that.

I do some Java programming, but not a lot of Groovy Programming. It seems like an odd error message, though. I googled the error message, and all I found was your question on the Habitat support community! Please update us here too as you make progress.

I am making notes and will share all that I learn/change here.

@kalex1114
Have a look at the following and see if it helps.

How is it going @Frederic_Breaux ?

With minor changes, I saved (compiled) the drivers (device handlers) and App.

I’m getting the following error message

app:42021-02-02 02:29:12.544 pm errorgroovy.lang.MissingMethodException: No signature of method: java.util.HashMap.sendEvent() is applicable for argument types: (java.util.LinkedHashMap) values: [[name:label, value:Afternoon, isStateChange:true]] on line 263 (doDeviceSync)

when Hubitat executes the following code:

261 if(DB[‘scenes’][id][‘name’] != sceneDevice.label) {
262 log.debug(“processing scene {id} from {sceneDevice.label} to ${DB[‘scenes’][id][‘name’]}”)
263 sceneDevice.sendEvent(name:“label”, value: DB[‘scenes’][id][‘name’], isStateChange: true)

bertabcd1234
Ambassador

Input was:

Off the top of my head, it looks like you’re trying to retrieve a device (really com.hubitat.app.DeviceWrapper or possibly ChildDeviceWrapper) object from state. On Hubitat, you can’t store a reference to an object in state, but I’m pretty sure it works the same way in SmartThings, so I’m not sure why that would work there, either. Or I could be misinterpreting something in your snippet. If not, you’ll have to find another way to get a reference to the device object, say by doing a find() with some known piece (like Hubitat device ID) on a setting (from a user input) or getChildDevices() or however you either selected or created these devices in the first place.

Yeah, it looks like they are indeed trying to store a device in state. I don’t think this worked on SmartThings, but it definitely doesn’t work on Hubitat. You’d need to look at why they’re doing that and how it could be worked around.

I’m trying to devise a work around.

1 Like