A cool project i am working on at the moment involves figuring out where you are based on 802.11 wireless signals. We have developed a Pocket PC application that has a background thread that sample WiFi signal strengths from visible Access Points (APs) then sends them to a XML Web Service to do the number crunching and it sends back location information.
This number crunching could be done on the PPC device but since we know we will have the WiFi network … and we want to be playing nice smooth Video on the device at the same time we opted for a server based approach. It also simplifies the updating of the data required to do the crunching as we don’t need to re-deploy to each PPC.
I cant get into all the details of exactly how it does the calculation but it involves signal strengths from the APs, MAC addresses and having gathered a bunch of signal strength information in a data logging exercise.
This really brings about an interesting application for these types of networks. They can be used for delivering information to the device in the normal manner of usage. whilst at the same time being used as a positioning system. Here in Wellington we have a WiFi network called CafeNet that you can sign up for and covers much of the CBD. One interesting application i thought of would be to have a web site that showed you where you were in the CBD, information on shops and services & places you can go and sit if you want to work and get the best WiFi reception. Another idea might be to offer CafeNet users one off ‘gifts’ like a free coffee or something when they enter a location. Someone goes to the site to find a place to work or have a meeting, they see a Starbucks is close by and get more precise location information about it … then Starbucks might entice them in by offering them a free coffee if they choose to dine there.
The opportunities are endless really… and it is something i think we will see a lot more of in the coming years… location aware applications built on existing and no added cost infrastructure. Very cool.