Challenge
The current IoT connecting system was no longer supported, requiring a critical upgrade.
Outcome
Build Labs replaced the IoT system with the addition of a payment solution built in.
Client
WashCard
Industry
Loyalty
# of Employees
10-20
What we built
WashCard approached Build Labs to update their IoT devices because their hardware that controlled car washes was being deprecated. The original project scope was a 1-for-1 update for the control unit. However, the post-discovery phase revealed an opportunity to update the device and make it far more reliable and functional. Moving to a Raspberry Pi, Build Labs not only created a more future-proof solution but was able to increase the overall value by adding payment acceptance capabilities – ensuring an even higher ROI for WashCard
AWS
Ingenico
GitHub API
MagTek
Networking
Postman
Python
Rasberry Pi
Rasbarian OS
SSH
TCP
VM
Our Technical Solution
The platform was changed to the versatile and very popular Raspberry Pi, practically guaranteeing a lifetime of support. With a different processor architecture (ARM vs. x86), this 1:1 replacement had to have its codebase rewritten, so we chose Python as it is natively supported on Raspbian (a lightweight version of Debian). Furthermore, as this IoT device wouldn’t require a display, a headless version of the OS was chosen, freeing up all available processing power for the device.
With the original UWAM logic board adapted to be connected as a HAT (Hardware Attached on-Top), we replicated the original device’s functionality – then refined it.
By rewriting the original software to be closer to firmware, there was more significant control of the hardware, from triggering a simple power cycle to bridging the onboard ethernet to a USB WiFi adapter. Last, all libraries were remade from scratch, as the original libraries and drivers were written for an x86 platform.
By the completion of the project, the UWAM could pull a config file off of a USB drive and configure its WiFi connection, start when the device does, maintain a heartbeat monitoring connection and effectively control and respond to the HAT.
Solving The ARM Architecture Puzzle
By rewriting the original software to be closer to firmware, there was more significant control of the hardware, from triggering a simple power cycle to bridging the onboard ethernet to a USB WiFi adapter. Last, all libraries were remade from scratch, as the original libraries and drivers were written for an x86 platform.
By the completion of the project, the UWAM could pull a config file off of a USB drive and configure its WiFi connection, start when the device does, maintain a heartbeat monitoring connection and effectively control and respond to the HAT.
Further, WashCard is known for pushing the car wash industry forward and, therefore, was looking to integrate tap-to-pay technology within its control/payment panels. The adoption of the Raspberry Pi system allowed for integration with Ingenico and MagTek solutions.’
By the completion of the project, the UWAM could pull a config file off of a USB drive and configure its WiFi connection, start when the device does, maintain a heartbeat monitoring connection and effectively control and respond to the HAT. Attempts to convert the original codebase was made, including using Cython, a translation library for converting C-based languages to Python.
Even repackaging DLLs to JAR files to take advantage of the JRE’s cross-platform compatibility seemed promising. However, the time to implement ultimately wasn’t efficient enough to work as a solution and fit within their time frame.
The code was rewritten from the ground up, allowing for deeper integration and configuration in the drivers and libraries with the UWAM HAT, MagTek Card Reader, and the Ingenico terminal. Writing drivers in hex code allowed for communication at the hardware level and focused on connection management, low-level data translation, error correction, and request/response handling to provide a seamless experience for the end user.
This firmware–level rewrite allowed further control of the devices while allowing WashCard to expand their unattended transaction offerings, such as tap-to-pay, to their current car wash clients.
The new IoT devices have been packaged and shipped to WashCard’s clients to replace their older systems or to provide a system for newly built car washes. The devices were designed to be rapidly deployable and remotely configurable and have significantly reduced the number of technicians needing to visit on site and the time spent per installation
– lowering costs for WashCard to deploy and update the systems. In addition, build Labs has continued to provide security and support to the deployed devices through remote web-based management of patches.