An Application for Controlling a Wireless Sensor Network Using a Smartphone
This thesis describes the design and implementation of a Mobile App, a Web Service and a TinyOS application, that bind together allowing the user to execute a variety of queries on a sensor network from any place in the world.
Until now, the user of a sensor network was usually constrained to be in the same room or area in which the network was installed, in order to execute a query and receive the measurements retrieved by the sensors or to detect outlier measurements from motes. Although nowadays there are various programs that enable users to operate a sensor network, they do not effectively resolve some issues that arise. Many of these programs do in fact have a graphical user interface (GUI) that allows the users to operate the sensor network easier than they would on a terminal, but it is usually somewhat outdated and abstract. As a result the user can easily get confused while using it. Additionally, since these programs have not received any major updates recently, they usually cannot run on modern operating systems and more importantly, they can only run on conventional computers and not on mobile devices.
The user of the mobile application developed as a part of this Thesis on the other hand, can operate a Wireless Sensor Network (WSN) without the aforementioned limitations. The user-interface of this app is simple and easy to use, following the trends set by Google and other major companies. Additionally, since this is a mobile application, the user can use it while on the go, without geographical restrictions. He could be in the same room where the sensors are installed, or in an entirely different continent and still be able to use the sensor network, as long as there is internet access.
Apart from the mobile application, a TinyOS application was also developed as a part of this Thesis. This application, enables the execution of aggregate queries on a sensor network. A series of algorithms were implemented to limit the power consumption of the sensor motes, as these motes are intended to run independently for a long time on remote locations. Additionally, an outlier detection algorithm was also integrated to enable the user find out if any weird measurements have been retrieved from the sensor network.
Finally, a Web Service was implemented to bind the afore-mentioned elements together. The client, which in this case is the mobile application, interacts with the mote network using Internet access. In order for this to happen the client first interacts with the web service that ”listens to” a specific public Internet address. The Web Service at this point interacts with the mote network. Basically, the role of the web service is to disseminate messages between the mobile app and the sensor network and of course to keep track of the activities that take place, in order to be able to be previewed at a later time.
The following videos show a preview of the actual functionality.
Please select the higher resolution while viewing them on Full-Screen Mode.
Androiny - Measurement Retrieval
Androiny - Sign Up & Outlier Detection
Skillset: Experience in Java, Python, XML, XSL, nesC. Experience in Android, TinyOS & JAX-WS Framework & Visualization frameworks. Implementation of Mobile App, Web Service, Python script, TinyOS application.
+ Wireless Sensor Network
Sensor Network Application
In this project, a complete application that runs on a sensor network was implemented. Specifically, by turning on the base-station a routing message is broadcasted to all the nearby sensors, the ones that receive it respond with a notification message that inform the appropriate sensor that from now on it is considered as their father-node. At this point the father-node saves the IDs of his children into a vector. Each of the children follow the same procedure until a tree of nodes is formed.
Later, every node of this tree periodically sends measurements to their parents. These measurements could describe temperature, humidity, light intensity or other physical quantities depending on the component that is inserted on the mote. These measurements are retrieved periodically and this period is selected by the user on boot. Furthermore, the user is able to choose the aggregate query that will be implemented. More specifically he can choose between maximum, minimum, average, count and sum. In addition, since power efficiency is an important factor that should be taken into consideration a couple of techniques were implemented to minimize power consumption.
Firstly, the TiNa scheme was implemented. This method is used to reduce the amount of data that gets transmitted from one node to the other. When a node is about to send a measurement to its parent it calculates the percentage of difference of the current measurement that is supposed to be transmitted from the previously sent. If the percentage of this difference is lower than the number selected by the user, the new measurement is considered similar to the latest and is being withheld from being transmitted. The parent node uses the previously received measurement from this subtree to calculate the response to the aggregate query.
In addition, another way to reduce the power consumption would be to turn off the radio when the nodes are inactive. In order to achieve this a component that is responsible for the synchronization of the nodes is used. When these nodes are synchronized we can make sure that all the nodes that belong to the same depth will send the measurements at a specific time slot. In addition, since a node knows its depth it can calculate the specific time that their children will try to send the measurements. As a result a specific node can turn on the radio at the exact moment when its children will try to send a message and turn the radio off after sending a message to its parent thus minimizing power consumption.
This is a video preview of the application put into action. Enjoy :)
+ Computational Geometry
GIS Software Development for a Sea Navigation System
The main goal of this project was the development of an application that would be able to calculate a route for a ship and visualize it using a GIS software, such as uDig or Google Earth. Specifically, this application uses data that represent geographical information as input. This geographical information could be islands or entire continents and when put together, they represent the entire globe. The application loads the data into the main memory and then partitions the "globe" into smaller cells. A QuadTree is used to store these cells in order to be easier to categorize them. These cells could represent either:
- Or a mixture of these two
In addition, when the before-mentioned procedure is completed the application requests from the user the coordinates of the point of departure and the point of destination of the ship. When the user enters the coordinates the route is calculated using an implementation of BFS algorithm. It should be mentioned that this algorithm uses the notion of nodes and especially adjacent nodes, which actually are nodes that are connected with an edge. In our case, these nodes are the geometries that have one or more common points and the edges are the imaginary lines that connect these geometries.
A series of problems had to be addressed such as dealing with very steep areas (such as Giblartar) and improving the initial route if possible. In addition, the memory and speed performance of the algorithm were tested for different polygon "resolutions" (the higher the resolution the more points were describing each polygon) and presented in front of an audience
The following images show how these polygons are displayed on a GIS program.
+ Web Services
Open Archival System
The main goal of this project was the development of a Web Service that manipulates digital representations of elements. Specifically, This is a digital library system that stores Movies and Video Games into a repository. It also supports the OAI-PMH Protocol (Open Archival Initiative – Protocol for Metadata Harvesting) which sets the rules of communication between a content provider and a client that requests the provided data. The protocol used for the interconnection between the server side and the client side is SOAP (Simple Object Access Protocol) This project included:
- The design of the data model using a UML Class Diagram
- The implementation of an XML Schema for the represented data
- The implementation of an API that is responsible for the transactions between the eXist DB (a native XML database) and the Web Service
- The development of an XSLT that would be responsible for the transformation of the data from my XML Schema to the DC (Dublin Core) prototype
- The development of a WSDL file that describes the connections that the Web Service supports
- The development of the business logic on the Skeletons generated from the WSDL file
- And the implementation of a client that interacts with the Web Service and displays the retrieved data
+ Hadoop Map-Reduce System Application
Advanced Topics in Database Systems
Various data mining methods transform vast amount of important information into a form that is easily processed by database systems. A famous problem with this procedure is the fact that more than one seemingly different data representations are used to represent the exact same entity. The created dataset is assembled by a number of criteria.
+ Human - computer interaction
Heuristic Evaluation of a News Portal website (greek only)
In the first project, we evaluated a News Portal website that was developed by the MUSIC lab (Laboratory of Distributed Multimedia Information Systems and Applications). In this website a complete series of use case scenarios was implemented, that an average public News Portal website would include. An extensive Heuristic Evaluation Usability Aspect report was provided by us. The evaluation was based on Jacob Nielsen and Deborah Mayhew guidelines. The preview of this report can be viewed here (only in greek).
In this project, we evaluated an Educational Platform using a completely different approach. More specifically, this method included the video recording of a group of users (HCI experts, and simple users) while executing specific tasks in this website. These tasks could be simple, such as sending a personal message to a fellow student, or more complicated such as a cooperation on a specific project with the team partner using video conference on the website. Using these recordings we were able to decide which operations were problematic and needed change, to whom of course we provided some alternative ways to solve the problems. This report can be viewed here (only in greek).
UI Prototyping (greek only)
The main objective of this project was to create the User Interface of an application that is related to the educational process. We had to make sure that no applications with similar functionality existed at the time. We decided to create a complementary functionality for the Educational Portal that ECE students use that would enable them to watch real-time lectures from the comfort of their homes.
This procedure included the creation of Personas and Storyboards. These Storyboards were validated using the methodology of Pluralistic Walkthrought with real users. After getting feedback from this process we improved the UI of the application and preceded to the creation of paper prototypes. Again, we evaluated the paper prototypes using real users and after applying minor changes we eventually had the final interface of our application. In order to be able to preview it we created a PowerPoint Presentation with the entire interface of the environment. The entire material can be found here (only in greek).Skillset gained in this course: Usability Testing, Think Aloud, Usability Inspection, Heuristic Evaluation, Cognitive Walkthroughs, Brainstorming, Personas, Wireframing, Storyboarding, Paper Prototyping, Software Prototyping & Valid Visualization of Information
+ Operating Systems
Implementation of a Web Server
The goal of this project was to implement a Web Server capable of providing browsing functionality to its users. More specifically, a user can open up a browser, connect to the specific address where the server "listens to" and browse the entire directory of the system that the server operates on. Apart from that, a number of techniques were also implemented in order to withstand heavy traffic. These techniques included the implementation of a Thread Pool, in order to avoid the overhead of the initialization of new Threads every time a new connection is requested and a Cache in order to avoid the recreation of a page each time a new request arrives. If the directory that the page displays has changed, it is being removed from the cache and the newer version gets loaded.Skillset: Experience with Sockets and Multithreaded Architectures, Expertise with C and the low level structure of Servers.