I want to.... Smartthings -> Tasker -> UDI ISY9941

Ok.

Here’s what I want to do.

I have a smartthings hub. I’m very new to it. So there MIGHT BE a better way to do this. :slight_smile:

I have an ISY994i where most of my insteon and smart home stuff is.

In Tasker, I have an HTTP GET command that toggles a light switch (insteon) using the appropriate REST command thru the ISY994i This part works fine.

I recently got the smartthings motion sensor and added it to the smart things hub.

In short, what I want to do is: If there is motion, turn on the light for 15 minutes, then turn it off (unless motion was detected within that 15 minutes).

since I’m new to smartthings and have no clue how to do an HTTP GET from within smartthings, I figured I could do it with this app and tasker.

IF THERE IS A BETTER WAY, I would be just as happy and will still probably buy this app because I see other uses… :slight_smile:

So…

In this app, I setup the subscription to the motion sensor/motion.

In tasker,
I created a profile.

Thing state
with all defaults.

Pointed it to a task called “on”

in Task ON

I did a notify to display %st_attr_name: %st_attr_value (so I could see values when they occur)
It shows motion: active (which is what I would expect)

from there I did an if/else/endif statement

IF
%st_attr_value eq active
My http request to turn on light

ELSE

ENDIF

WAIT 15 min
HTTP REQ to turn out the light.

For collision handling, I selected “abort new”

This isn’t exactly working how I had hoped.

How would YOU make this better?

From a quick search, it sounds like someone created a SmartThings ↔ ISY994i integration, but it hasn’t been updated in several years and is effectively abandoned.

Normally I would say a more full-featured integration from SmartThings to your desired device / platform is usually the ideal candidate if it’s available. In this case, I’m not sure the abandoned integration would be worth the effort though.


You can do this with the community developed Virtual HTTP Button. I haven’t used it in a while, but at one point I had a similar need where I needed to be able to make an HTTP request and it was a good starting point.


Which part isn’t working as expected? I haven’t played with the collision handling much, but in reading the docs, it sounds like you would want to abort the existing task rather than the new one.

The other approach I’ve seen taken in the past is to set a Tasker Variable with the target ‘state stays’ time (eg. Now + 15 minutes)… then create a second profile which is triggered at the time in the variable. That way you can better control the flow and timing of things without having to worry about multiple profiles running simultaneously with waits: