Android and Linux

Wednesday, August 25, 2010

Yet more Tasker

Gosh, I still haven't had time to devle deeply into it, but this app can apparently do anything.

Using this guide, I set up Tasker to locate my phone. When it gets an SMS with a certain codeword, it turns on GPS, waits for a good fix, then sends a reply with the coordinates and a link to a google map. This is good for traveling, in case you lose your phone, or for people to locate you in an emergency.

With this guide, I set up two widgets for marking a point and locating it. It creats two icons, the first marks your location and stores it in a variable and the second maps that variable. It's great for temporarily marking a spot and finding your way back to it.

I'm also using it to sync the photos from my phone to my computer when the phone connects to my home wifi using my earlier rsync command. This is easily set up in Tasker by selecting New > State > Wifi Connected and typing in my wifi SSID, then using the Locale Execute plugin to run the script.

That's all for now, but I'm sure I'll find a lot more uses for this app.

Monday, August 16, 2010

A couple more Tasker uses

I haven't had much time to play with Tasker and only skimmed the documentation and what I read seemed hard to understand. Well, maybe "hard to skim" is a better description. Anyway, I thought it may be useful to someone to post a couple more examples I've found useful.

First:

Like most people, I leave GPS off unless I need it for a certain app. I usually forget to turn it on until after opening the app, then have to exit, turn it on and re-open the app, but now I have Tasker set to automatically turn on GPS when certain apps are opened. For this example, I will use the Maps app and here's how it's done.

Open Tasker and click "New" then "Application" and select "Maps" (or whichever app you want to use). On the next screen, click "+", "Misc", "GPS" select "On" and click "Done".

If you want it to pop up a message telling you GPS has been turned on, click "+", "Alert", "Popup" (or Notify if you prefer it in the notification bar), enter your text, e.g. "GPS Turned On" and "Done." You can also select how long to display the notification. The default is 5 seconds but I found 1 second to be better.

Now it will turn on GPS when the app is opened, but we also want to turn it off when it closes, so click Done again and get back to the main screen. Now click on the "GPS On" box and click "Add Exit Task". Click "+", "Misc", "GPS" select "Off" and click "Done". Again, if you want it to display a message when GPS is turned off, follow the same steps from above.

Now it will turn GPS on when you open the app and turn it off when the app closes. Pretty simple.

There is another way to set up this GPS On/Off task for easy repetition for multiple apps. From the main screen, click "Tasks", "New", enter "GPS On" or "GPS Off" then follow the On/Off setup above. Now it will be recorded as a task and if you want to use the same setup for another app, click "New", "Application", "+", "Tasker", "Perform Task" then select your task from the list.

Second Tasker use:

I have a short script here which employs an idea by Nathan Harrington from IBM. His perl script can be used to download a weather radar map from weather.gov, draw a custom-sized square around your location and check for precipitation inside that square.

Mine is what you might call a notification wrapper to his perl script and the end result is that it checks every 15 minutes and, if there is any rain within a 20 mile square centered around my house, it sends me an SMS saying "Local precipitaion detected." This has been extremely reliable for me and I usually get an alert 10-15 minutes before the first drop starts falling.

Whenever I get that message, I usually open WeatherBug and check the radar, so I set Tasker to open it for me. This is easily set up by opening Tasker, selecting "New", "Event", "Phone", "Received SMS" and entering "*Local precipitaion detected*" in the Message field. Once that is done, click the "+" on the next screen, select "App" then "WeatherBug."

I've also found a similar use. I went to two local news station websites and found good static weather radar images, copied the links and use the "http poster" locale plugin to download both images and the "Popup Image" Tasker option to display them when I get that SMS. These are quicker than loading the maps in WeatherBug and can quickly show if there is only one small spot of rain on the way or a big storm.

I'll leave most of this setup as an exercise to the reader, but I'll give these tips for using the HTTP plugin. Let's use "www.somesite.com/weather/radar/current.jpg" as the address to the file we want to display. Select the "HTTP Get" and type "www.somesite.com" in the "Server:Port" box. Under "Path", put "weather/radar/current.jpg". I'm not sure it's necessary, but under "MIME Tpye", I selected "image/*". Now put an output file and use that file name when you set up the next task, which will be "+", "Alert" and "Popup Image."

I'm not sure which of these I will use, but I've been having fun thinking of ways to use Tasker and simple tasks like these are pretty easy to figure out once you start playing with it.

Wednesday, August 11, 2010

Tasker

I've seen the app called Locale in the Market for a while and it seemed interesting. It allows you to do a lot of things automatically with the phone under certain conditions such as turning wifi on when you get home or putting your phone on silent at certain times. It looked nice but I didn't think I had much use for it until I noticed a Locale plugin called "Locale Execute" which allows you to execute scripts under whatever conditions you set. My first thought was "Cron!"

I started to download Locale but a lot of comments said it wasn't as good as Tasker. Since Locale is $10 and has no trial version, I installed the trial from the Tasker site. I played around with it for a day and decided to buy the full version.

Tasker looks pretty powerful. It can perform 160 built-in actions on virtually any conditions. Some of the conditions include time, location, day, application, various phone states (battery levels, plugging in headphones or USB, network connections, orientation, etc), various events (file opened or modified, display on or off, boot, shutdown, sdcard (un)mounted/removed, phone calls and SMS, gestures etc).

Talk about an app to show off to iPhone users.

So far, I've added a profile from their wiki which pops up a menu of shortcuts to all my audio apps whenever I plug in my headphones. I can then select which media app I want to use, Youtube, BeyondPod, Music, RockPlayer, etc.

Then I set up a location profile to turn on wifi when I'm within 200 meters of my house. This uses the cell tower for a location fix so GPS is not needed. I was previously using Timeriffic to turn it on at times which I'm normally home, but now it does it when I'm actually there.

Then I found a cooler use. You may remember my ip checking script that runs from cron on my home PC. It checks every 15 minutes and sends me a text message if the home IP address changes. I then copy the IP and put it in /sdcard/.hip to call from any scripts that connect to my PC. The command that calls it is a script named "hip", which stands for "Home IP" and simply does "cat /sdcard/.hip".

I've been using the same trick for well over a year and a half, since I had the iPhone, and always wanted a way to automatically put the IP in the /sdcard/.hip file. Such a simple task, but there's really no way to get the text from the SMS into a script, but it's quite simple with Tasker.

All I had to do was set it up to take action when a new SMS was received, which can be done according to the sender or the body of the SMS. The action I told it to take was to write to the file /sdcard/.hip.

One problem was that I send the SMS from sendmail using my Gmail address and I use a similar SMS trick for three different purposes, so I couldn't use the sender and had to use the body. I didn't see a way to have it look for an IP address, so I put a string in the SMS and had it look for that. I had to figure out how to do a wildcard, as that isn't documented on the Tasker site, but my script at home now sends this:

HomeIP:
xx.xxx.xxx.xx

I set tasker to look for "*HomeIP*". Apparently both asterisks are required for a wildcard as it didn't work with only one. Tasker writes the entire SMS to the file, including the sender, so /sdcard/.hip ends up looking like this:

FRM: me@gmail.com
MSG: HomeIP
xx.xxx.xxx.xx

I simply changed my "hip" script to: "tail -n1 /sdcard/.hip"

That's a pretty simple setup to solve a simple problem, but being able to automatically write files, or do any of the other things Tasker is capable of, on virtually any conditions, looks to be quite promising and powerful.

Monday, August 2, 2010

Weather

I've always found it simpler and faster to pull weather information from weather.gov than to use a weather program. I normally use lynx to dump the page on a computer, but it's not available for Android, so I made these using wget. These small scripts can get weather information in about half a second, which is faster than opening a weather app and navigating to the information you want.

To use them, first go to http://mobile.weather.gov, type in your zip code, then it will take you to a page with the following links:

Detailed 7-day Forecast
Your Local Radar
Current Conditions
Satellite Image
Hazardous Weather
Area Forecast Discussion

Copy the links for "Detailed 7-day Forecast" and "Current Conditions" to use in these commands.

wx-forecast:
wget -q "LINK" -O - | sed -e 's/<br><br>/\n\n/g' -e 's#<[^>]*>##g
Copy "wx-forecast" to your clipboard with this QR code, and don't forget to edit the LINK for your location:


wx-current:
wget -q "LINK" -O - | tr -d '\n' | sed -e 's/<br>/\n/g' -e 's/&deg;//g' -e 's#<[^>]*>##g' | grep -v -E '(Current|Service|Lat:)'
Copy "wx-current" to your clipboard with this QR code, and don't forget to edit the LINK for your location:


If you want to run these from GScript shortcuts, GScript has a bug that makes text unscrollable over a certain number of lines and the forecast puts out too much information, so you only see the last few lines which are the last few days of the 7-day forecast. I found that running wx-forecast | grep -A 9 "Last Update" should gives you 4 lines of forecast info. Since days are split up between day and night, this will give you the forecast for approximately the next 36 hours, which is pretty much as far out as a forecast is reliable anyway.

Followers