Harms Oil Company
Real-Time Tank Monitoring & Dispatch Platform
An end to end industrial IoT platform that turns live tank readings from 30+ gauge brands into automated dispatch. SimpleLogix built and operates the edge firmware, the cloud API, and the dashboard.

Harms Oil moves bulk fuel to a network of retail and commercial sites. Knowing exactly how much product is in every tank, at every site, in real time is the single biggest lever in their business. It drives dispatch, prevents run-outs, and keeps trucks from rolling on half-full loads. Before SimpleLogix, that visibility depended on phone calls, manual gauge reads, and reactive replenishment.
The Challenge
Harms Oil needed to see every tank on every site in real time, across more than 30 different gauge models from Veeder-Root, OPW, Franklin Fueling, Incon, Gilbarco, EBW, Omntec, and ProGauge. Each gauge spoke its own protocol with its own serial and TCP quirks. There was no unified data layer, dispatch was reactive, and their logistics partner Gravitate required tank data in a specific CSV format on a fixed cadence. This was not a dashboard project. It was an end to end industrial IoT platform.
The Solution: A Three-Tier IoT Platform
SimpleLogix designed, built, and now operates a three-tier platform. A Moxa industrial Linux edge device sits on site and polls the physical gauge over RS-232, RS-485, or raw TCP, parses the proprietary response, and ships normalized JSON to the cloud. An ASP.NET Core 7 cloud API (60+ controllers, MediatR, EF Core, SQL Server) ingests readings, runs scheduled workers, and serves the dashboard. An Angular 17 web dashboard gives dispatchers a live map, a color-coded dispatch board, and fleet health, secured with Azure AD single sign-on.
Engineering Highlights
An edge device that speaks 30+ gauge dialects, each driver handling unique framing and normalizing tank number, gallons, inches, water, temperature, and ullage into one JSON schema. A decoupled reading cadence so a stuck gauge never stops a heartbeat. Over-the-air code updates so a parser fix never needs a truck roll. A Dapper-powered query every 15 minutes renders tank data into Gravitate's CSV shape and pushes it over SFTP, so dispatch orders are generated from live ullage with zero manual work.
Outcomes
Live tank visibility fleet-wide, every tank, every site, every 15 minutes on one screen. Fully automated dispatch handoff to Gravitate with no spreadsheets or phone calls. Self-healing fleet operations through heartbeats, auto-offline detection, OTA updates, and read-error tracking, so ops staff manage by exception. New sites onboard regardless of the gauge brand on the wall.
Tech Stack
Have a Project Like This?
Tell us what you are trying to build or fix. We design the integration, write the cloud, and stay on as your engineering team.