The goal of the project was to provide all students with rooms to study in across campus based on accessibility requirements and preference
The HiveMap Solution
HiveMap is a web dashboard combining dynamic IoT sensor data with static room information. Students can filter rooms based on their accessibility requirements and see them on floor plan, and the rooms update with live sensor data. Administrators can design floor plans using our custom graphical generator tool.
Sensor and Static Data Requirements
The displayed room properties were based on possible student disability requirements. We developed a list of possible student disabilities. Each disability generated a possible room requirement, and these requirements generated both dynamic sensor properties and static room properties.
In the A layer, Sensor data is gathered through a wireless IoT mesh network using Arduinos and nRF24 wireless radio modules. Examples of sensors include light sensors, PIR occupancy sensors, acoustic sensors, and air quality sensors. This data is converted to a JSON file and is passed along to the mesh network to the next layer.
In the pi layer, sensor data is retrieved from the A layer and is stored. Radio USB dongles can be connected to any internet-connected machine running python, including desktops or raspberry pis. Nodes in the pi layer share all information using ZeroMQ so that any node can be queried through the web API for information. The pi layer uses node.js to serve a web interface built using Material-UI, React, and the Flux design pattern. Whereas static content such as css is loaded from the requested server, randomized load balancing is used to retrieve both static and dynamic (sensor) room data from an alternative pi layer node using Cross-Origin Resource Sharing (CORS).
To make HiveMap even better, we can implement a number of extra features.
We can develop a routing optimization algorithm both for the A and pi layers. At the A layer, this would involve automatically picking wireless transmission frequency bands, transmission strength, and using a distributed Bellman–Ford algorithm to efficiently prune the network connections. At the pi layer, this would involve optimizing data transmission and similarly pruning the network.
We can also create a fully fleshed out administrator control panel. At the moment, some setup requires manually editing text files. Although we have a graphical tool for generating floor plans, more work can be done to easily adjust settings.
Finally, we can improve network security. This might involve encrypting the wireless transmissions and tightening CORS requirements.