We were originally going to build a robot "dog", but after several hours, we were unable to get our servo motor to behave properly, and elected to change gears. We then discussed our strengths and looked at our available resources, and came up with the idea to create a remote network mapping tool which, throughout the course of development, evolved into the Cloud computing system it currently is, as we realized that there were many more applications for it than we currently realized.
What it does
The system is essentially a small scale cloud managed by a Command and Control (C&C) server which divides tasks among its node computers (in this case, two Raspberry Pi 2s), which then perform the requested tasks and return the results to the C&C server. We used it to map their local networks and return the findings to the C&C server. Additionally, the nodes can be dropped anywhere, on any internet-connected network, and connect to the C&C server.
How I built it
The Inshelligence system is consists of CentOS C&C server running locally on a laptop, and x number of cloud nodes, in this case two of them. The cloud nodes are Raspberry Pi 2 Model Bs, running Raspbian, although any Linux computers could be used. The C&C server has a queue of Shell scripts which get loaded to the next available Pi node (over HTTP and SSH), where the commands are run and results are returned to the C&C server as .txt files. Once our setup.sh script has been run on a Linux computer, it becomes a node, and no further software need be installed. (With our network mapping use, the Pis also need the nmap program, but this -or other programs- can be quickly installed on the requisite Pis with scripts pushed to all the Pis simultaneously by the C&C server.)
Challenges I ran into
We ended up running the C&C server locally instead of in the cloud on AWS, as we encountered lots of difficulty with the AWS platform and couldn't get it working in a reasonable about of time. We registered the domain inshelligence.net with the intent of creating a web GUI for the system.
Accomplishments that I'm proud of
Our C&C server architecture was built completely without 3rd party APIs, entirely from scratch out of shell scripts.
What I learned
We learned Linux shell scripting (including writing shell scripts that write shell scripts), how to set up and configure Raspberry Pis and how to set up Apache web servers.
What's next for Network Inshelligence
We'd like to host the C&C server in the Cloud, and create a easy-to-use web GUI to operate the system from. We also want to improve the security of the system by adding encryption between the C&C server and nodes. And in it's current state, the system gets confused if the nodes are on a different networks so we'd like to modify the server can know the different locations of the nodes and make sure any network-specific task are completed properly.