When we approached a local waste management company in Siem Reap in early 2016, we proposed the idea of being able not only to locate their vehicles but also to know if their routes have been completed.
Previously, it was not uncommon that garbage collection staff skipped routes to get home earlier. This created a lot of frustration for the company's clients, whose garbage did not get picked up according to the promised schedule. We knew that we could help to improve this situation.
It was clear from the start that a geolocation technology like GPS would play a major role our solution. However, we learned that existing GPS devices were often not ideal for the specific requirements of the project.
We agreed to do a first experiment with low-cost GPS hardware, and selected a Chinese TK103-compatible vehicle tracker with built-in GPRS uplink.
The truth about many "fleet management solutions"
Most of the available $20+ GPS hardware comes with (near) free access to a web app to track your vehicle, define zones for alerts (geofencing) and speeding alerts. These were not the solutions we were looking for however. Instead, we built our platform from scratch.
For the technical readers, we wrote a Node.js-powered web application using the Meteor framework. But how did we connect this application to the somewhat antiquated communication protocols of the low-cost GPS tracker? As we knew our solution would require multiple components to talk to each other and exchange information, we created an adapter to convert the tracker's protocol to MQTT, the famous "Internet of things" messaging protocol. With MQTT publish/subscribe mechanism, we were able to develop and connect separate components for schedules, mapping, alerts, speed checks, etc., and feed the live GPS data from all connected devices to them in near real-time.
When we received the GPS tracker, we had it installed in one of the company's garbage trucks for a live test, as we had already made good progress on the software side. We were eager to see how our prototype would perform in this first real-world experiment.
The first results were sobering: signal drops, device failures and connection issues kept appearing and had to be investigated. After a few checks with the client, we identified a number of issues ranging from power cables that had been cut or damaged because they had been laid through the vehicle doors to broken GPS or GSM antenna that apparently had not been built to withstand bumpy Cambodian roads.
You might wonder why we did not select more modern GPS hardware that can connect to the vehicle's OBD (On-Board Diagnostics) interface to collect information such as the vehicle's fuel level, load, or engine RPM. The picture below has the answer:
Magnetic GPS to the rescue!
To overcome the issues identified during our first field tests, we needed to find a fully integrated device with no moving parts that could break or cables that could be cut. The LK209C matched these requirements - attached to the vehicle using high-strength magnets, the device would run for several days on a single battery charge, sending a position signal every 10 seconds.
For other projects however, we have used GPS devices with more advanced functionality such black box mode, direct support for modern IoT protocols and other features for the transportation industry.
On the software side
Enough about the hardware struggles. The beauty of our solution is the workflow we developed for the client. The client can manage map creation, route points and schedules as well as fuel averages per vehicles. As employees already kept logs about the trucks' refueling stops at the garage, it was easy to also log the times a vehicle was being repaired or assign to a different schedule or shift.
The tricky part, or why this is not as easy as ride-hailing
Tracking the progress of garbage trucks on their route is a much more complex task then tracking the progress of a tuk tuk delivering its customer to her destination.
Garbage trucks can park for a few minutes, be at an intersection of 4 streets, temporarily drive on streets that are assigned to other vehicles, etc. We needed to do a lot more than just to display a cute icon on a map.
We had to create an algorithm that would not only be able to tell if a truck passed street, but also if they actually stopped there to collect the garbage.
If a truck passes a street that is not on its route, the street will not be marked as collected on the map. Each schedule can have a different color, with one or several vehicles assigned to it on recurring or one-time schedules.
When routes are completed, a truck is speeding or is idling for over an hour at the same location, the system will automatically send alerts to Telegram groups or via other channels depending on the alert's severity.
Get ready with the bin, we are arriving!
Another feature we have prepared will allow to notify customers when the garbage truck is approaching. This can be useful for large customers such as hotels and resorts that keep their garbage locked and need to open the gates to let the garbage truck in.
Our tech stack for the geeks
This project is running on recent technologies used in most Internet of Things (IoT) stacks – MQTT, Node.js, Docker, Kubernetes, and last not least, OpenStreetMaps and our own tile server for serving the rendered map layers. Like our stack? We are hiring!
This was a short glimpse of what Geekho can offer. We love to solve problems in emerging countries where the standard tech stack tends not to perform as well as it might be suggested in glossy leaflets or at pitching contests. Our next focus for mobility technologies will be on public transportation and logistics. Let's combine critical thinking and technologies where it matters the most, empowering people through innovation.
Features and demos are available privately. Contact us for additional details.
Geekho (Cambodia) is a development studio based in Siem Reap and Phnom Penh in Cambodia. You can find out more about us at https://geekho.asia/about .