If you have worked with embedded systems you have probably bumped into Busybox. If you are a long time Linux geek, you probably know Busybox. My first encounter with Busybox started last weekend and has been almost non-stop since. Here is the scoop:
You know that I have a Java based Absence Management System called ASAAP . I have recently been contracted to develop an automated time clock system and make it work seamlessly with a payroll package. I naively figured it would be a snap. This being the 21st Century, I figured I’d just find a electronic time clock that had a JDBC compliant interface and within a couple of weeks hook it up to ASAAP which already has payroll posting capabilities. After poking around the Internet, attempting to contact sales people and gather information, I settled on a clock that had a “polling” package to collect the data on a scheduled basis and also push the employee information up to the clock.
After receiving the clock and having a chance to try it out, I was less than enamored with the user interface and my attempts to interface with the DB were frustrated by the fact the DB was an MS Access DB and the JDBC-ODBC bridge is slow and unreliable. What I wanted was something that allowed secure access to the data over a network. So, back to square one.
The company I had purchased the timeclock from had a “barebones” configuration that basically had nothing but a scripting api that accessed clock functions in a embedded Linux distro called Busybox. So, I went with the “start from scratch” approach and have been learning (and re-learning) Linux commands and their particular implementation in Busybox.
This tiny footprint Linux distro is pretty cool and the folks on the Busybox mailing list have been very tolerant of this noob as I have bumbled my way through the learning curve. At this point I have a functioning application that will take input from the keypad or the Proximity badge scan (RFID), look up the employee in the database, display the employee name, prompt them for a punch in or out and store that information in the database.
Next step is to work on data import/export. Unfortunately the Busybox distro I am working with has a relatively old version of Sqlite3 which doesn’t support JDBC, so my plan is to use the HTTP server and CGI to post data to and retrieve data from the DB. THAT should be fun!
So I’ll keep you posted on the progress (or lack thereof). All in all, Busybox provides enough to work with to build this application, I just need the smarts to make it work.