Right now, in the business world, companies are always trying to cut cost and raise efficiency. One of the ways of doing this is increasing automation. The less manual work company employees have to do, the more efficient the company is running, and the more money the company can save. After hearing CarMax’s pitch, we thought that automation would be the perfect way to fix their problem of having to manually update stickers to match their database.
What it does
Car Space has a network of low cost displays that will be placed on the dashboard of each car, similar to the "SOLD" stickers currently used. These displays will use a low power black and white display (vfd displays, Electronic Ink displays, etc.) so that they will be long lasting and won’t need to be charged often. Each of these displays will be constantly listening to a server to see if their respective car's status has been updated in CarMax’s database. By using these displays, the “stickers” on each car will be in sync with CarMax’s database and CarMax will no longer need to pay employees everyday to manually place and remove stickers.
How we built it
We created a network by using TCP connections between a "server" and the multiple "clients" with the server being a computer connected to a database and clients being the aforementioned displays. Ideally, the database that the server is connected to would be CarMax’s nationwide car database, but for the purposes of testing, we used firebase to create a test database, randomly populated with various cars. Also, due to our lack of physical resources, for the purposes of testing, we used laptop displays to emulate the aforementioned low cost displays that would be put in cars. With regards to the client, initially, in order to set up the connection between a client and server, when the client connects to the server, the server asks for the id of the car that the client will be placed in. After sending the id, the client then goes into a constant listening state. Anytime the server sends a new availability to the client, the client’s display will update. Otherwise, the client will continue to display the previously received availability. With regards to the server, after a client connects to it and sends it a car’s id, it will constantly check the database for any changes in that particular car’s availability. If there are any changes, it will immediately send a message to the client to update the display. For testing purposes, we made the checking of the database continuous, but in real practice, to save resources it would likely only check the database around every 5 minutes or so.
Challenges we ran into
We had some trouble with shutting down clients (in case we wanted to move the displays from one car to another). This was a problem, as we needed to close the socket and input and output streams from both sides, else there would be a socket error. We also had problems configuring firebase to work with a java application as opposed to a website.
Accomplishments that we're proud of.
We are proud of implementing a full server network with a connected database, given the timeframe. Coming in, none of us knew how to implement a server or a Firebase database, so the fact that we were able to both learn about the two, as well as successfully implement them, we feel we accomplished a lot.
What we learned
Given that we didn’t know much about networks or databases before this project, we had to learn about tcp connections with server and client, how to have multiple clients connect to one server through multithreading, how to set up a database, and general application architecture to connect the database with other parts of the network.
What's next for Car Space
Potentially, we could use this technology with regards to parking. People could buy these displays to put on their car dashboard and when they pay for a parking spot, the displays update that they have paid, the time they paid for, etc. (Basically replaces the slip of paper that people usually place on their dashboard when they pay for parking). Potentially, this may also allow people to renew their parking remotely, without having to physically go to their car.