Internet Over Text

This is a little project I’ve been working on for a few days now. I’ve had this idea for a while now, but hadn’t gotten around to messing around with it until now. Basically, the idea is an app that allows you to receive limited information from the internet without being connected to the internet. This is useful for those who have a limited data plan, or don’t have any data connection at all. The process is somewhat complicated, but I’ll try to give a quick outline about how it works below. It’s a little complicated, and the process might be a little boring to read, but I know some people enjoy the details.

Here’s a real quick look at how the system works:

App -> SMS -> Tropo -> PHP Web Server -> Tropo -> SMS -> App

I’ll outline each section in the best way I can, being as clear and detailed as I can.

We’ll start with the first app section. There are various sections for each type of information that the user may want to receive. After entering the required information for the chosen section, the application sends a text message to my Tropo project (I’ll explain Tropo later). Each text message follows the same format. {category id}/{sub-category id}/{arguments}. An example might be a/a/12345. In this example, the first A stands for the weather category (category id), the second A stands for current weather (sub-category id), and 12345 stands for the requested zip code (arguments). This format allows for more than 1296 different types of data to be received (26 letters plus 10 numbers for category and sub-category). This format also allows quite a bit of data to be sent in a relatively short text message. This is important since text messages must be under 160 characters in length.

After the text message is sent, it is received by a service called Tropo. Tropo allows users to send, and receive text messages and calls using PHP scripts. Tropo uses a PHP script hosted on my own web-server to determine how to respond. Each category works pretty differently, so I’m not going to be going over them here. Essentially, most categories come up with it’s own response to send as a text message back to the user. They do this by using various APIs depending on the requested category.

The returned text message has a similar format to the format explained earlier. It is http://a.aa/{category id}/{sub-category id}/{arguments}. Returned text messages are sent as links that can be opened using the application. An example might be http://a.aa/a/a/269.161/800/1.65/21/77/990.89. “http://a.aa/” is ignored by the app, which gives us “a/a/269.161/800/1.65/21/77/990.89”. In this example, the first “A” stands for the weather category (category id), and the second “A” stands for the current weather category (sub-category id). 269.161 stands for the current temperature in kelvin, 800 stands for the current weather condition, 1.65 stands for the current wind speed, 21 stands for the current wind direction, 77 stands for the current humidity, and 990.89 stands for the current air pressure. The app then decodes a few of these values. In the case of current weather condition, it decodes a 3 digit number into a readable condition (such as “partly cloudy”). This greatly reduces the length of the text message, and allows more data to be sent. The app then displays this information on the screen for the user to see.

Leave a Reply

Your email address will not be published. Required fields are marked *