Door Left Open Reminder - Configurable by Individual Contact


#41

That looks better. Hopefully it’s all working for you now.


#42

I’ve installed both pistons, and set up for my config. in testing them, piston a runs fine, then B gives the following error in the log:

+374ms ║An error has occurred while subscribing: java.lang.NullPointerException: Cannot get property ‘v’ on null object

I can’t find the error, Anyone have any thoughts?


#43

can you post an image of the piston so we can see it :slight_smile:


#44

Certainly :slight_smile:


#45

several errors in there. two are the pause/resume pistons commands are not set properly. They should be pausing/resuming the other piston A.

Also, in the device list doorstocheck, you may want to clear out those extra (empty) devices shown as xxxxxxxxxxxxxxxxxxxxxxx2 3 and 4.

And an empty presence sensor field :slight_smile:


#46

I’ll see if I can figure them out… This is my first time using WebCoRE :slight_smile:


#47

I’ve made those changes, and still get the same above error - except now it does say that the piston has successfully started… Progress :slight_smile:

I’ve done your latest suggestion, and it seems to be working now!

For a first time here, I’m a greatly impressed with the community - that is very fast help :)… now if only I can learn more and repay!

Thank you


#48

Hello,
I’m using the original code in the first post.
I’m noticing the following behavior…

@bthrock
Front door opens for over 5min, notification generated…good, Piston-A pauses.
Front door closes, next check happens but Front door still shows time open in the variable
image

So it will not unpause Piston-A.

If I manually unpause Piston-A, then go into Piston-B and “TEST”…it will automatically re-pause Piston-A.
Any suggestions/recommendations?

shouldn’t there be something to release the variables once a door is known to be “closed”?

UPDATE: The Piston-A appears to be un-pausing now. However, still curious why the values do not reset when a door closes.?


#49

Piston B will resume Piston A only after all doors are closed and all pending timers or waits have completed. That’s is as designed to allow other doors to open and close without affecting the monitoring of others. The variables like the one you mentioned are dynamic are their values are reset when needed, sometimes not until Piston B runs again.

Kind of s shorthand answer, but I’m traveling overseas right now and I’ll a bit clumsy working exclusively from my phone. :grinning:


#50

Hi all,

Thanks for this piston example. I was able to make same changes to solve a problem with my August Lock Gen. 2. Their were moment that I discovered that some family member forgot to lock the door with the August Lock. I also have an August connect so I can remotly lock the door. But in this case I have to be informed that the lock is open. This seems to be a service that you get with the August Lock Gen. 3 but not with the Gen. 2 or 1.

But with this piston, IFTTT and some virtual switch and virtual lock makes it posibel to receive a push notification if the lock is open for some time ( a few minites) then zi can remotly lock the door.

Thanks for this piston.

Best regards


#51

Sorry to drag up such an old post, but did you ever figure out how to reset the value in when the door closes?


#52

There is no need to ‘reset’ the value when the door closes. The respective values for each door are updated whenever necessary on Line 58 (using the example in the first post). Once the door is closed, the ‘If’ statement on line 56 will be false and the value of the {timeListOpen} variable will have no impact on the proper execution of the piston.

I could add code to reset the variable list, but it would be superfluous.


#53

@bthrock thanks for the fast reply!!! I must of screwed something up then, because no matter what, my number always stays at Kitchen open for 16 minutes.

Most of this is admittedly over my head. What I was trying to do was just take away the rounding, so that when I am notifed it will say the actual number, as opposed to rounding it up and down. Did I do something wrong here?


#54

Your 'Send SMS" statement (Line 68) needs to be moved up above the ‘ENDIF’ line directly above it (Line 67). Its placement outside the preceding IF/THEN results in your getting notifications when the criteria for receiving them hasn’t been met and the alertMessage hasn’t been updated to reflect any changes in the variable values.


#55

Ok @bthrock. Thank you again. I appreciate it.

What you suggeted helped a little bit, but it still does not reset my timer. In other words, when I open the Kitchen Window, the initial SMS response is. The Kitchen Window has been opened for 10 minutes. Even though it was only opened for 5 minutes?

The timeopen variable is reading at 5 minutes, during the first pass; but the alertmsg, doesnt seem to be updating?

Update::I think the first thing you are going to tell me is to take the SMS out of the else…I am going to try that now.

Still no dice, the reported time in alertmsg, is always wrong. And it never resets back to low. Also, it seems now that Piston A is not restarting itself, after the device closes.

Things seem to be getting worse to me.


#56

I’ll try importing your piston when I have a chance.


#57

Thank you kind sir.


#58

I imported your piston (xs6qh), moved the ‘send SMS’ statement to the proper location, and tested it. It appears to be working as intended.

Note that I modified the piston as follows to shorten the testing cycle.

  • changed the last entry in doorAlertTimes to 2 minutes,
  • changed the last entry in doorRepeatTimes to 1 minute
  • changed the minimumAlertTime to 1 minute

In addition, I temporarily disabled the first and last statements, which Pause and Resume Piston A, so that I could just open the ‘kitchen’ and click TEST (thereby bypassing the wait in Piston A).

When I run the piston this way, with the ‘Kitchen’ open, I get an initial notification after two minutes, and one every minute thereafter with the time in the notification incrementing accordingly.

Screenshot_2018-12-28%20Voice%20-%20SmartThings

And once again, just to emphasize the point, timeOpenList[] does NOT ever ‘reset,’ nor does it need to do so. That variable is updated with current data ONLY as needed, and only when that particular door or window is open.

Here’s my test version of your piston for you to work from:

Hang in there, we WILL get this working for you!:grinning:


#59

Thank you for your patience. I feel as if it is close, but dont know what it could be.

Ok so here is a real snapshot of my variables…Is this how it should look when nothing is opened?

Noticed AlertMsg currently has 20 minutes in it.

So kitchen window is what I am testing right now. So when I go and open my kitchen window…What should my first notifaction be? I am almost 100 percent positive it will be kitchen window is opened for 20 minutes…even though it is only 5?


#60

I’m begging you, please, ignore what’s in alertMessage, timeOpenList or ANY of the other variables listed under ‘Do Not Modify’. The variables in that section are not continuously updated; they are NOT a scoreboard of current activity. The values for each of those variables are updated only when the piston tells them to update, and the piston will only tell them to update when it’s necessary for program execution.

With that said, you do have some extraneous data suggesting you may have added and/or subtracted devices at some point. Out of an abundance of caution, my suggestion is that you Import my last version of the piston and work forward from there, testing it exactly as I did.

Based on the settings you have listed, your first alert should be at ten minutes, with follow-ups every ten minutes thereafter. The times in the SMS messages should be close to those intervals.