Things Quiet Down not receiving event


(Anotherron) #1

I have an Aeon Multisensor. When I look at my event list logs, the unit reports both active and inactive motion events. The active event triggers “Things Start Happening,” which then runs my app. The inactive event does not trigger “Things Quiet Down,” and as a result, my app that is tied to it does not run. I can, however, trigger it manually. Actually, I am unsure if “Thing Quiet Down” is triggered or not; all I know is that my app does not get called after a ten minute delay.

Are there techniques that can help me (1) to determine if the problem is between the inactive event and “Thing Quiet Down” or between “Things Quiet Down” and my app, and (2) to correct the problem?

Thanks for any assistance.


#2

I’m sure that’s frustrating! There are 3 aeon multi sensors, which model do you have and which device handler are you using with it?


(Anotherron) #3

Thanks for your interest in my problem.

I have the original Multisensor (round body) and am using Things Quiet Down, which, according to my control panel, is using the SmartApp motionInactiveHandler.

I see that the app shows a dailyCheck scheduled jobs handler. This may be the source of my problems. How do I remove the daily check? As an aside, I want Things Quiet Down to operate 24 hours per day, but the Android
controller app requires that I specify a timeOfDay and endTime, which I have set to 12:00 AM and 11:59 PM respectively.

Thanks again for your help.


(Linda Thomas-Fowler) #4

@anotherron, I’m having a similar problem with a Routine that triggers on Things Quiet Down. Like you, it’s set to be active from 12:00AM to 11:59PM and it fires only once a day at 12:00AM. I just opened a support ticket but wanted to reach out to see if you had made any progress. I’ll report back what support tells me.


(Anotherron) #5

I, too, opened a support ticket to which ST responded by saying that TQD is an old app and doesn’t work well. I find it amazing that they will say that while still having it a integral part of its Routines capability. Why don’t they repace it with one that works?

I started writing my own routine to do what you and I need but got sidetracked with another project that I must finish first. When I complete my routine, I’ll let you and others know.


(Linda Thomas-Fowler) #6

I was told the same thing about sunrise/sunset based triggers a year ago. They seem to like that explanation.

In my ticket I got told that support is quite backed up (funny how that happened) and timely responses couldn’t be promised but please send timestamps of places where it should have fired. I’ve done that but I’m not hopeful for a resolution any time soon.


(Linda Thomas-Fowler) #7

I happened to notice this go by in the log tonight while debugging something else (guess there is a silver lining to the log filtering bug):

055555c8-22e2-4b65-864a-51b767d7a213 9:53:16 PM: debug The current time of day (Thu Sep 24 18:53:16 PDT 2015), is not in the correct time window (Sat Sep 19 20:50:00 PDT 2015): doing nothing

This is a debug line from Things Quiet Down and it’s not clear to me what that second time is about. The first time was the current time when the line was printed but I’ve no idea what the second time refers to.


(David Moses) #8

Greetings Linda,

Perhaps the “time window” referred to it the above debug line is the start time for your “Things Quiet Down” routine. Perhaps that’s why it’ll fire right at midnight since that is the first time during which the condition will hold true.

When I first started using Smartthings it seemed that “Things Quiet Down” would happen multiple times during the day, but they must have added condition such that it will only fire once during the time period you specify. I wonder then in order to use this we should create multiple routines that use “Things Quiet Down”, one for every possible time we would like it to execute.

Seems tedious.


(Chris LeBlanc) #9

What’s the conclusion of this trigger? It seems for me “things start happening” works but “things quiet down” doesn’t.

EDIT:
After formulating a “hack” in my brain (a custom device type which would also have contact sensor capabilities in addition to motion and then setting the routine to trigger on open or “faked motion”). I found that setting the “For this amount of time” delay to 0 fixes the trigger. Not entirely sure why ST can’t seem to engineer time based triggers but I guess I’m glad I figured it out. The obvious downside is this prevents the ability of a delay other that what your motion sensor might offer (4 minutes for my ecolink sensor).


(Alan) #10

I’m having a similar issue. “Things starts happening” works great. “Things quiet down” works all day long with either a 1 minute or 5 minute delay. I have it set for 12:00am to 11:59pm (also tried many other options). The problem is that is stops working some time around midnight. If I re-start it the next day, it works again- until later in the evening. Almost seems that ST developers are working on it as it seems to get better over time (based on your experiences), but they didn’t test it over night…

Alan


(Alan) #11

Based on the fact that there’s still a bug in the “Things Quiet Down” code, I decided to write my own. It really only took 20 lines of code. Instead of trying to find x minutes of time with no activity at all during that time, I chose a simpler route. When no activity is first detected, it starts a delay timer (let’s use 15 minutes for this example). In 15 minutes, it then checks to see if there’s been recent activity or inactivity. If inactivity, it turns the lights off. If there was recent activity, it does nothing and the whole process starts over. If you happen to be in the room sitting still at the 15 minute mark, then all you have to do is move your hand and it comes back on immediately.

If I decide to get fancy, I may try to disable the “runOnce” each time activity is detected, thus making it a true inactivity period. I’ve seen comments that the “unscheduled()” function can take a long time to work, so I’m hesitant to spend time on that since it’s working pretty well.

Hopefully this code will help someone else… (I can’t seem to get the code to stay in one block below, but just put all the pieces together into one block of code.)

/**
*  Motion-controlled Lights
*
*  Turn on lights when motion detected and turns off lights after x minutes without movement.  
*  Similar to "When quiet" but without the bugs
*
*  Copyright 2015 Alan Buckner
*
*  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
*  in compliance with the License. You may obtain a copy of the License at:
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
*  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
*  for the specific language governing permissions and limitations under the License.
*
*/
definition(

name: “Motion-controlled Lights”,
namespace: “TexasFlyer”,
author: “Alan Buckner”,
description: “Turn on lights when motion detected and turns off lights after x minutes without movement. Similar to ‘When quiet’ but without the bugs”,
category: “My Apps”,
iconUrl: “https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png”,
iconX2Url: “https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png”,
iconX3Url: “https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png”)

preferences {
 
	section {
		input(name: "motion", type: "capability.motionSensor", title: "Pick your motion sensor", description: null, multiple: false, required: true, submitOnChange: true)
		input(name: "dimmer", type: "capability.switchLevel", title: "Pick your dimming lamp(s)", description: null, multiple: false, required: true, ubmitOnChange: true)
		input(name: "dimmerValue", type: "number", title: "Enter dimmer level percentage (no % sign)", required: true, submitOnChange: true)
		input(name: "delayValue", type: "number", title: "Delay (in minutes) before turning off lights", required: true, submitOnChange: true)
	}
}

def installed() {
		log.debug "Installed with settings: ${settings}"
initialize()
}

 
def updated() {
	log.debug "Updated with settings: ${settings}"

//unsubscribe()
//unschedule() //Added based on another program. Not sure if needed.
initialize()
}

def initialize() {

subscribe(motion, “motion”, myMotionHandler)
dimmer.setLevel(0) // Easier to debug when you know that motion turns on the lights
sendNotificationEvent(“Motion-controlled lights is initializing…”)
state.TurnoffHandlerCalled = false
}

def myMotionHandler(evt) {
  	if("active" == evt.value) {
sendNotificationEvent("Motion detected - turning lights turned on")
dimmer.setLevel(settings.dimmerValue)
state.isActive = true

  	} else if("inactive" == evt.value) {
log.debug("Inactivity detected.  TurnoffHandlerCalled = ${state.TurnoffHandlerCalled}")
		state.isActive = false
		if (state.TurnoffHandlerCalled == false) {

sendNotificationEvent(“Calling handlerTurnoff in ${settings.delayValue} minutes.”)
def delaySeconds = settings.delayValue * 60
runIn(delaySeconds, handlerTurnoff) //in seconds
state.TurnoffHandlerCalled = true //Avoids calling the handler over and over again
}
}
}

def handlerTurnoff() {

// Check to see if Motion was recently active or not. Avoids turning off the lamp right after an Active event
// which then requires a period of inactivity and then activity to make the light come back on
if (state.isActive == false) {
dimmer.setLevel(0)
sendNotificationEvent(“handlerTurnoff just turn off the motion lamps due to no recent activity”)
} else {
dimmer.setLevel(settings.dimmerValue)
sendNotificationEvent(“handlerTurnoff just left the lamp on due to recent activity”)
}
state.TurnoffHandlerCalled = false
}


(Jim Sullivan) #12

Hi - I am new to ST and I’m trying to automate my 1st floor thermostat by dropping the temp when my nearby motion quiets down after 15 minutes. I too, am having the same troubles that most of you noted. It only works for me once/day at 00:01. I set it to be active between 00:01 and 23:59. Is there a resolution to this? I see that some of you have wrote some code but I have no clue how to use or implement that. Any guidance would be appreciated!

Thanks!

-Jim