The wireless in our residence hall is often plagued by rouge devices like wireless printers, Chromecasts, personal hotspots and other interfering devices. Even worse, areas of our building have a poor wireless signal overall regardless of the areas devices. We've spent a great number of hours roaming our hall with laptops and phones, staring at ugly text based tables searching for devices and checking signal strength. We wanted to deploy devices that could do the job we coulden't; to monitor the hall and its networks (or any area for that matter) 24/7 and look through the data at our leisure.
How it works
WiZer (Pronounced Wiser) works by connecting to microcontroller based devices such as the Intel Edison and Rasberry Pi that run a custom python application. The application reports the wireless networks and a multitude of information about them to a central machine running a WiZer instance. In our case, we deployed our instance to IBM Bluemix. WiZer then cleans up the information and stores it in MongoDB, keeping it at the ready for searching and future analyzation. WiZer features a beautiful web based client that allows for easy network searching, rouge device detection, network monitoring, wireless channel analysis and wireless history storage; all with the luxury of never leaving your desk.
Challenges I ran into
The library we intended to use to capture wireless network information was broken on all systems we tested. We had to reimplement the package from the ground up.
Accomplishments that I'm proud of
Even with the major delay presented by the broken Python package, we were still able to have our Node instance receive wireless data in a JSON format before midnight.
What I learned
We both learned how to configure and flash an Edison as well as the fine art of messy string splicing to form beautiful JSON. We also learned how to use AngularJS filters to sort data in a more efficient manner. Furthermore, James learned how to work with Mongo.
What's next for WiZer
We'd like to start by reworking the backend and cleaning up some of the egregiously messy string splits to produce more reliable data. We'd also like to create a more dynamic link between the microcontrollers and the WiZer instance with support for controller (We call them node's) statuses and logs. We'd also love to finish implementing some of our larger ideas for analysis like wireless device triangulation and available bandwidth calculation.