[RELEASE] Wemo Maker

smartapp_misc
wemo
dth_misc

(Chris) #1

Wemo Maker

I'm using two of these to control my garage doors and noticed there wasn't a direct integration with SmartThings so I wrote one based on the other Wemo Device handlers (although heavily modified and somewhat cleaned up).

It will query the device for what Switch mode it's in (toggle/momentary) and if the sensor has been enabled.

You can also invert the sensor so it'll report the opposite in the device handler to what the Maker is reporting.

Due to ability for the Wemo Maker to change how it operates, the device type has both Switch and Momentary capabilities depending on how you want to use it. Regardless, in momentary mode, both "on" and "push" commands will trigger the momentary relay.

Notes

  • This has been made to work how I need it to, with some extras. I can't promise it'll work how everyone wants but I'm sure things can be resolved.
  • Due to the way UPNP works, it can be a bit laggy
  • When adding your devices with the Connect SmartApp (included) the devices might appear offline for some reason, if so, try hitting the refresh button.
  • I have tested it, it works for me, opens my garage doors and reports when they've finished opening, if you have more complicated needs for it, I can't promise it'll do exactly as you need but this can probably be worked out

Screenshots

Installation
Copy the Wemo Maker (Connect) SmartApp into the IDE:

Copy the Wemo Maker device type into the IDE:

Load up the SmartApp and let it discover your Wemo Maker(s)

Have fun :smiley:


Wemo Maker Integration--help needed
Wemo Maker - Possibility?
Garage Door openers? Zwave vs Wifi vs Zigbee
Suggest a Device
Is SmartThings Shield for Arduino Available Anywhere?
(Mike Barrett) #2

Hi Chris,

When I try to add the Maker Device type into the IDE I get an error:

No signature of method: script14626379743841996835063.metadata() is applicable for argument types: (script14626379743841996835063$runclosure1) values: [script14626379743841996835063$runclosure1@122aaf6] Possible solutions: getMetadata(), getState(), setState(java.lang.Object), metaClass(groovy.lang.Closure)

I had a quick scan of the code and could not find any reference to $runclosure1 anywhere. Do you have any idea what I have done wrong?

Regards,

Mike


(Chris) #3

Uh, that's very weird... I've never seen $runclosure1 before, I suspect it's what they wrap the script or something in when running it.

Is this still happening?

The code is still exactly the same as what I have running :frowning:

(Sorry for not replying sooner)


(Kevin P) #4

Hi Chris
Thanks for this. I thought my Wemo maker to be redundant but I dug it out got it set up first in the Wemo app then installed your Smart App and DTH and ran the Smart app. It discovered my maker and bingo it switches On and Off.
I look forward to coming up with some uses for it now.
Great job thanks.


(Brian) #5

When I go through the discovery it finds the wemo maker. But when I try to save and advance to the next screen I am getting failed to save page:firstpage. Any ideas what I am doing wrong?


(Chris) #6

Hmmm, haven't had any trouble my end. I can only suggest having the live log open in the IDE when trying to save. See if it spits anything out.


(Brian Galovits) #8

This is what I get as an error in the live logs
Any insight would be appreciated

4145277c-4953-4a1b-aab5-92219f214dac 11:38:01 AM: error grails.validation.ValidationException: Validation Error(s) occurred during save():
- Field error in object 'physicalgraph.device.Device' on field 'deviceNetworkId': rejected value [C25627860FA4]; codes [physicalgraph.device.Device.deviceNetworkId.unique.error.physicalgraph.device.Device.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.error.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.error.java.lang.String,physicalgraph.device.Device.deviceNetworkId.unique.error,device.deviceNetworkId.unique.error.physicalgraph.device.Device.deviceNetworkId,device.deviceNetworkId.unique.error.deviceNetworkId,device.deviceNetworkId.unique.error.java.lang.String,device.deviceNetworkId.unique.error,physicalgraph.device.Device.deviceNetworkId.unique.physicalgraph.device.Device.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.java.lang.String,physicalgraph.device.Device.deviceNetworkId.unique,device.deviceNetworkId.unique.physicalgraph.device.Device.deviceNetworkId,device.deviceNetworkId.unique.deviceNetworkId,device.deviceNetworkId.unique.java.lang.String,device.deviceNetworkId.unique,unique.physicalgraph.device.Device.deviceNetworkId,unique.deviceNetworkId,unique.java.lang.String,unique]; arguments [deviceNetworkId,class physicalgraph.device.Device,C25627860FA4]; default message [{0} must be unique]


(Bobby Thompson) #9

It worked for me foe a couple weeks then one device constantly came up as offline...

I ended up removing my makers and setting them back up, but within a day it was offline again...

I had,to go back to using IFTTT...


(Chris) #10

Sadly I've recently experience this too but put it down to something else. There is some mention somewhere discussing the normal Wemo (Connect) app that suggests as to reasons why this can happen. If I get time I'll try to work it out.


(Aaron M Fisher) #11

Has anyone tried using the WeMo Maker and a servo with this?


(Jon Wolff) #12

I am getting this same error:

  • Field error in object 'physicalgraph.device.Device' on field 'deviceNetworkId': rejected value [000E3B4B1979]; codes [physicalgraph.device.Device.deviceNetworkId.unique.error.physicalgraph.device.Device.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.error.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.error.java.lang.String,physicalgraph.device.Device.deviceNetworkId.unique.error,device.deviceNetworkId.unique.error.physicalgraph.device.Device.deviceNetworkId,device.deviceNetworkId.unique.error.deviceNetworkId,device.deviceNetworkId.unique.error.java.lang.String,device.deviceNetworkId.unique.error,physicalgraph.device.Device.deviceNetworkId.unique.physicalgraph.device.Device.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.deviceNetworkId,physicalgraph.device.Device.deviceNetworkId.unique.java.lang.String,physicalgraph.device.Device.deviceNetworkId.unique,device.deviceNetworkId.unique.physicalgraph.device.Device.deviceNetworkId,device.deviceNetworkId.unique.deviceNetworkId,device.deviceNetworkId.unique.java.lang.String,device.deviceNetworkId.unique,unique.physicalgraph.device.Device.deviceNetworkId,unique.deviceNetworkId,unique.java.lang.String,unique]; arguments [deviceNetworkId,class physicalgraph.device.Device,000E3B4B1979]; default message [{0} must be unique]
    @ line 183

One thing that is interesting, my MAC for my maker is: 94103ED3CF88


(Bojan) #13

Hi I just bought wemo maker i tried to install device handler and samrt app as well and all seams to be working ok it finds wemo maker but when i press on or activate it doesnt do anything on wemo maker .. anybody can help ? Thank you :smiley:


(Collin Dinsmoor) #14

Just converted to Smartthings from WEMO. I have a garage door opener set up tapping into the garage opener button and the open limit switch. Maker would detect open condition from limit switch state. Otherwise a signal would pulse the motor on when relay receive signal from control.

I would like to add this to Smartthings but I don't know to make use of your code. Do I just insert the file into a folder or do I need to do more? Can you describe or is it too complicated?

Thanks for sharing regardless. Much happier with the Smartthings so far. WeMo was OK but not very stable on devices like bulbs dependent on its controller.


(Collin Dinsmoor) #15

Kris

Disregard my request. I figured out how to get this working. By the way it works perfectly with my Wemo Maker garage door opener. Connected and worked just like any of the other Wemo switches and outlets. Thanks so much for developing this code.


(Dan Hawn) #16

Thanks for the app. When I try to add a 2nd Wemo Maker, it does not show up. Am I missing something with the set up. I removed the initial device, and the new device showed up, but not the initial device. Is there a way to connect both devices to SmartThings?


(Chris) #17

I'm using 2 Wemo Makers, the only issue I've had with adding them at times is that it can take longer than expected to find the devices.

How long are you waiting for them to show up?


(Dan Hawn) #18

It has been looking for 30-45 minutes for the 2nd one.


(Chris) #19

Hmm, hard to say what's happening... I'm assuming the WeMo App has not trouble finding both?


(Michael Bonville) #20

Hi Chris!

I have two Wemo Makers; one that works well with my garage door through IFTTT. The other I plan to set up to drive an alarm horn. With the IFTTT interface, there comes an inherent security risk; that is if internet is cut, subsequent communication to the Wemo Maker would also be interrupted - rendering my security system ineffective. Thus the reason I'd like the Maker recognized by my SmartThings Hub.

This being my first attempt, I have to say I'm somewhat confused with the instructional.
So, on to the progress and subsequent problems...

The first thing I did was install the Wemo (Connect) SmartApp on my iOS device from within the SmartThings App, followed by copying your first code set to My SmartApps IDE. Then, I copied the second code set to My Device Handlers in IDE - and saved both, but did not publish anything (I read somewhere that if I'm not a developer, I don't need to or shouldn't publish the app). I then went to Create Device and noticed at the bottom of the list a Wemo Maker. I selected this and attempted to create it, but got a 500 Internal Server Error. Also, I tried to create a simulator in My Device Handlers, but it comes up blank. Then, I attempted the same thing in My SmartApps (IDE) and it began searching for a Wemo Maker, found my Garage Door opener, but returned the error "java.lang.NullPointerException: Cannot get property 'value' on null object @ line 181".

What's not clear (amongst many things, but it's not you, trust me), is what you meant by "Copy the Wemo Maker device type into the IDE:". I assumed that you meant that I was to put this in the Device Handler's section. If not, where does it go?

Clearly I'm not doing something right, or I'm doing everything wrong. Honestly, I didn't expect it to work because I wasn't sure I was doing anything correctly in the first place. I have looked at (but not perused) the SmartThings Developer Documentation and have watched a YouTube video SmartApps Workshops 101 by Matt Nohr only to realize that I may be in over my head. All this notwithstanding, I believe I can do this, but it may be some time (aka much trial and error) before I'll get it to work.

Update: While writing this, I kept futzing with things and successfully added a new Device (Wemo Maker) and it showed up (with an ACTIVATE button) in My Things list on my iOS App! However, it didn't last long - it's still there, but is now showing as OFFLINE.

Any help provided is most appreciated. Thank you for your time.


(Michael Bonville) #21

With enough time most anything is possible. I got it to work by simply following your instructions (and learning a little about how to create an app in the IDE).

That said, is there a way to automate my garage door to open when I arrive and close once outside of my geofence? If so, are there any routines/automations anyone would like to share?

Thanks!