On the server side we have created a website which can be used by the bus operator to view the live location of any bus he wants. We have also added the functionality of assigning bus routes to the buses so that the system can be more dynamic and the bus operator will also have the option to change bus routes of any bus he/she wants. We have tried to make the system robust so that any number of busses could be added and the functionality still work.

Working:
We have created a simple website that is hosted on github. It is an easy to use where the operator just needs to login and then all the functionality are available to him/her. The live location functionality works as follows:
- The raspberry pi continuously send the latitude and longitude data which it gets from the GPS module to the server using a simple messaging script created on Python.
- When the server receives the data it uses the coordinate values to display on the map using Google Map API.
- Whenever the server gets the data it updates the marker to view real time location of the bus.
Other functionality that we have provided is bus route assigning it works as follows:
- The operator has to select the bus and the route that he needs to assign to that bus.
- The the server sends the details of the route such as stop names , location of stops etc. to the bus module.
- Then the bus module on receiving the details updates the route on it’s script and start following the new route.
Challenges:
There were some challenges that we faced like sending data from bus module to the server , updating the marker on the Map in real time but the main challenge that we faced on the server side was making the functionality robust for multiple busses. Displaying the live location of a single bus easy but for multiple busses it was a problem as if all the busses use the same channel to communicate then the server won’t be able to decide which bus coordinate are these and also the channel will get overcrowded with request and our system will become slow. To solve this problem we made different channel for different busses so the there is no overcrowding of request and our system works seamlessly.
