Tasker – timers, how to do this correctly.

Yes, there is a Wait and Wait Until action available already, and you can get away using this for a while. Unlike before, these actions are no longer as CPU intensive as it’s used to be.  I will show you how to set up Tasker timers correctly. This way, you will be sure, that you take the most battery efficient approach possible. Interested? Read on!

Tasker timers, theory…

I write this as I was asked about how to terminate the incognito chrome browsing on a mobile when the phone is no longer in use. Potentially, the person interested didn’t want to disclose their browsing habits. I get the lock screen arguments, but having such thing on is not always desired for many reasons. Motives apart I will use this, and turn off wifi if not connected to show you how to deal with timers correctly.

The idea is simple. I don’t want to start a timer. This may seem counter-intuitive at first but bear with me. The lowest CPU, and therefore battery condition are time-based. Your mobile is running a UNIX timer anyway, and we can hook up to it. Instead of telling Tasker to start counting till 300 (5min = 5 x 60sec=300)and perform an action, we can schedule an action to happen at the time which is 300sec away. This works as some sort of timer, can be easily cancelled (unlike wait), changed or updated.

Tasker timers, practice…

These 2 profiles will show you how to deal with a tasker timer, how easy is to cancel it or update it. We will use AutoNotification (optional for timer routine alone) to give us short notification of what’s happening and intercept the incognito session in the 2nd profile. In 2 profiles I can contain all it takes to cancel, update or reschedule the timer. It is simple, and CPU efficient.

WI-FI OFF after 5 min if not connected

If you are not interested in any notifications for this profile the project looks very simple:

Turn Off wifiSet The Timer
Profile: Turn Off wifi 
Time: From %WifiTimer Till %WifiTimer
Enter: Turn Off Wifi 
	A1: WiFi [ Set:Off ]
	A2: Variable Clear [ Name:%WifiTimer Pattern Matching:Off ]
Profile: Set The Timer 
State: Not Wifi Connected [ SSID:* MAC:* IP:* ]
Enter: Not Connected To Wifi
	A1: Variable Set [ Name:%WifiTimer To:℅TIMES+300 Do Maths:On Append:Off ]

Exit: Connected To Wifi
	A1: Variable Clear [ Name:%WifiTimer Pattern Matching:Off ]

If you wish to have timer giving you notifications, few additional steps are needed to create and discard the notifications as required.

Set Chrome TimerClose Chrome
Profile: Set Chrome Timer
State: Display State [ Is:Off ]
State: AutoNotification Intercept [ Configuration:Event Behaviour: false
Persistency Type: Persistent Only
Has Reply Action: false
Notification Title: Chrome
Notification Text: Close all incognito tabs
Get All Fields : false
Get Internal Actions: false
Get Internal Actions Big: false ]
Enter: Set Chrome Timer
	A1: Variable Set [ Name:%ChromeTimer To:%TIMES+300 Do Maths:On Append:Off ]

Exit: Cancel Termination
	A1: Variable Clear [ Name:%ChromeTimer Pattern Matching:Off ]
Profile: Close Chrome
Time: From %ChromeTimer Till %ChromeTimer
Enter: Terminate Incognito
	A1: Run Shell [ Command:am force-stop com.android.chrome 
            Timeout (Seconds):0 Use Root:On 
            Store Output In: Store Errors In: Store Result In: ]
	A2: Variable Clear [ Name:%ChromeTimer Pattern Matching:Off ]