Advertising Electronics

Maintaining Smart Vending Machines Around The Globe

Our team has developed a solution for the client to be able to manage vending machines around the globe in an easy way.

About the client

Invenda AG is a Swiss-based company determined to revolutionize signage, kiosks and vending machines. The company provides a smart module that can be integrated into existing as well as its own new vending machines. Through the module, in an easy way, persons responsible for maintaining them can check the status of the hardware or inventory. Our role here was to implement applications for maintenance used by technicians for machine setup, initialization, and status check as well as a quick and straightforward software update.

About the project

This project involved us in implementing three interconnected software solutions.

The first and core part was to implement a C++ wrapper library that was able to listen to hardware events (hardware status, possible malfunction) and also to execute commands on the devices (eg. temperature setting, bill/coin inserting detection, pushing out selected merchandise and etc.). This library was the foundation of all further development of Invenda’s vending machine software.

Next, we continued our work implementing Maintenance application. It is used by technicians in the field and through it, they can check and test all hardware parts in the machine, check if there is a need for a machine refill and also initially set up all necessary configuration of the machine. In order to make faster and least painful deployment processes, Kolotree developed an Update service. Once build/release process finishes admin can select the appropriate version of the application and provide it to update service which then gracefully updates running software components.

The final outcome

Vending machines are installed around the world in different places with reduced internet access (metro, shopping malls, etc). They look nice, modern, easy to use, adapted for people with disabilities and more interesting than the old fashioned machines. Merchandisers are able to easily refill all racks with products. On the other side, it is also very important to have a functional machine on the field and to have minimal out of service time.

Our side of the story

The requirements we had to meet in this project were a novelty for our team, so we faced a few challenges.

One of the challenges for us was working with a lot of hardware devices and creating simulators, for other applications to use during development.

The biggest challenge was creating optimal applications with reduced CPU usage and memory footprint, as applications developed are running on embedded hardware.

Another challenge and the interesting thing was touch foil testing. We incorporated the 3rd party library provided by touch foil company and created our own test by dividing the screen into segments and checking for each segment if touch and swipe gestures functioning. We used Domain Driven Design (DDD) for our model on the server-side, and Redux pattern on client-side to receive models asynchronously through Web Sockets.

Working on this project has given us an opportunity to work with hardware devices and to develop client-side applications for large screens.

Key features

  • Creating a C++ wrapper library to enable other application to check state or execute commands on all vending machine hardware devices
  • Maintenance application that provides the ability to monitoring, testing/detecting malfunctioning hardware devices of vending machines installed on a specific location. Application is used by responsible persons in the field.
  • Providing easy software updates on a vending machine through the Update service application.

Industry

Advertising, Electronics

Location

Luzern, Switzerland

Technologies

  • Backend: .NET Core, .NET Framework, C++
  • UI: Angular.io, Redux, Electron, HTML, CSS, jQuery, SignalR
  • Database: MongoDB

Team size

~20 members

Cooperation

Cooperation: 2018 – ongoing