Documente Academic
Documente Profesional
Documente Cultură
Ryan Seppel
Seppel 2
Table of Contents
4. Bibliography .............................................................................................................................. 12
Seppel 3
Introduction
involve researching the latest technology in order to offer cutting edge innovation to
our clients. The usual formula that we follow is to create a proof of concept using
any existing technology that we can find to get something in front of someone acting
as an end user. This will then become qualified as a minimum viable product once it
meets the original requirements and an end user has successfully interacted with it.
The next step is to refine this minimum viable product and decide whether to keep
delegating any third-party services that we used in the proof of concept or to build
large and possibly crowded building in order to trigger events when said asset
enters and exits various virtual boundaries. After researching possible technologies
that could accomplish this requirement, we decided to use Bluetooth low energy
beacons in our proof of concept. We later upgraded to ultra-wide band beacons upon
upgrade to ultra-wide band offered many improvements over the Bluetooth low
energy beacons and opened the door for countless other automation possibilities.
Seppel 4
The requirement for our indoor asset tracking project was to be able to
track the position of an asset in order to trigger events when an asset enters special
areas. In our specific case, our client wants to start a timer any time an asset enters
an area, and then stop the timer when the asset leaves the area. This timespan will
then be inserted into a database that they use to bill customers. This billing is
based on how long an asset was working with the customers product.
The current solution that our client has requires the driver of an asset
to stop and sign in when entering these areas and then to stop and sign out when
they leave. The time spent signing in and out was estimated to be around 15
minutes per order. Using an ideal solution, the driver never has to stop and would
therefore be saving 15 minutes per order. To put those savings into perspective, let’s
assume a client has 100 drivers. Each driver takes 20 orders a day at a time of 30
minutes per order, with 15 minutes being spent signing in and out, to arrive at
about a 10-hour workday. That means that for the client’s entire company, there are
2000 orders being completed each day. If 15 minutes are spent per order on signing
in, then that is 500 hours per day. If you are paying your asset driver the standard
Seppel 5
of $15 an hour then you are paying $7500 a day, or a staggering $2,737,500 a year.
Now if our client has a better solution that can remove those 15 minutes spent on
signing in and out then at face value, they are saving $2,737,500 a year. Now I say
at face value because when we originally defined the problem, we said that the
that 15 minutes of wasted activity, the driver can now do 15 more minutes of
billable work, which is a 100% increase in the amount of billable work that they
were originally doing. Therefore, the actual benefit of a solution that could remove
the time spent on this wasted activity is about $2,737,500 a year plus up to a 100%
increase in the original annual profit. The actual numbers for my client are
confidential but this scenario emphasizes the demand for a better solution.
2. Rapid Prototyping
Rapid prototyping is a specialty of mine and I am usually able to put something in the
hands of a mock end-user with a week or two. To quickly develop a proof of concept for this
project, we started by targeting the capabilities of Bluetooth low energy beacons. The design
involves anchoring these Bluetooth low energy beacons to these areas that we want to track. I
then created a .net core console application and used a Bluetooth library to pick up nearby
Bluetooth signals. By running this application on an asset’s computer, I can measure how close
the asset is to the special areas based on the signal strength of the Bluetooth low energy
Seppel 6
beacons that are anchored in the area. This gives an approximation of the asset’s location
within a radius of the beacon. To make this approximation more robust, I experimented with
triangulation by taking multiple measurements from multiple beacon anchors. This helped to
Now that the application can determine a distance, I then started tracking the distance
measurements when an asset is within a certain range of an anchor. Now when each
measurement comes in, it is compared to the previous measurement and when the previous
measurement is further than the current measurement, we can determine that you are moving
towards the beacon. The opposite scenario is true for determining when an asset is moving
away from a beacon. So now logic can be created that mimics the following pseudo-code:
1. If (asset is moving towards beacon & it is within a very close distance) { insideArea=true;
startTime = datetime.now;}
2. If(insideArea=true){
If(asset is moving away from beacon & it is outside of the areas radius){ insideArea =
In this way, we have developed a cheap, lightweight solution to track assets entering and
exiting areas.
Seppel 7
Although the proof of concept satisfies our project requirements, it must be qualified by
an end user to be considered a true minimum viable product. Once the proof of concept was
completed, a demonstration was scheduled with our clients. We setup a few Bluetooth low
energy beacons about 20 feet apart to simulate a few of the areas that we wanted to track. We
then installed the .net core application onto a few of their laptops and had them simulate an
‘asset in a production environment’ by walking in and out of the areas. During this, the end
users were watching the console output with each event in the logic chain:
1. When entering an area, the console read: -> “Entered {area-id} at {startTime}”
2. When leaving the area, the console read: -> “Exited {area-id} at {endTime}”
Following this, we show cased a web app that displayed some analytics as well as the entries in
our development database. Since our proof of concept was successfully used by an end user, it
3. Product Development
Bluetooth low energy beacons worked well for a proof of concept since they were cheap
and easy to interact with. However, there are some major flaws with the technology that just
didn’t make them reliable enough for us to stand behind. The biggest flaw that I will mention is
Seppel 8
that Bluetooth low energy beacons can only give you a distance approximation within 1-3
meters, or roughly 3-10 feet. After doing some testing and research, we decided against using
this technology as the inaccuracy would limit the applications for it in the future. We strongly
believe in future proofing our products so that they maintain relevancy and the ability to be
During our research for newer technology, we decided on using ultra-wide band
beacons. They can provide real-time indoor positioning down to 10 centimeters. This increased
accuracy will allow many obvious integrations in the future and the possibilities for automation
are endless.
The structure for using UWB beacons involves placing an anchor beacon about 50ft
apart in a boundary around the area that you wish to track. A tag beacon is then connected to
the device you wish to track. The anchors communicate distances with the tag in order to
triangulate the tags position. This design allows us to get an assets location in x y z coordinates
versus simply getting distances like with the Bluetooth low energy solution. While this may
seem trivial at first, it allows for a much more robust way of determining if an asset is inside of
With the technology decided on, I created a .net core web application that consisted of
a user management portal, an asynchronous processing application, and third-party service for
our web API. A user can use the management portal to upload a floor plan and drag and drop
Seppel 9
anchors onto it. They can then add geofences to the floor plan. Once they are finished
configuring a location, they can save the anchors and geofences coordinates to the database.
They can then view a real time floor plan that shows the assets moving around inside of the
location.
The processing application runs whenever telemetry is sent from an asset to the
database and its job is to run that telemetry data through a set of logic to determine if it is
inside of a geofence or not. The logic that I have chosen for determining if the asset is inside of
an area simply involves creating a line off of that assets coordinates and determining how many
walls of the geofence it hits, if it hits an even number then we know that the object is outside of
the area, if it is an odd number then we know that the object is inside of the area. This logic is
simple but effective and allows me to keep the processing demand to a minimum since I am
just plugging the coordinates into some basic formulas versus creating a simulation.
geofence, it updates that row in the Telemetry table and appends the Location column with the
geofence id. If an asset is not inside of any geofence, it gets the Location value of the branch of
the building that it is in. This means that when an assets telemetry Location value goes from
{geofenceId} to {branchId}, then the asset has left the geofence, and so this moment becomes
the end time. The timestamp from the first row where Location value = {geofenceId} is the start
time. Once these are obtained, the data gets inserted into the software that our client uses for
billing.
I originally built a basic web API using .net core and entity framework and it was fine for
early development. However, in production, our product will need to support high frequency
Seppel 10
data transmission and must be robust enough to handle errors that otherwise could affect our
client’s own production environments. The web API for this product was delegated to a third-
party service. The service we decided on allowed us to easily integrate the security and
The asset application simply allows us to get the telemetry data from the tag as well as
the asset’s ID, model, IP, and other identifiers that we needed to integrate with our clients
supply chain management software and ERP. It is a .net core console application that runs on
startup of the machine as a background process. Upon startup, it searches the com ports for a
USB connection with our tags brand name and then establishes a serial port connection. It then
enters the command to stream its position data and inserts that data into our database via an
API call. Everything is contained with try-catches, while loops, and error handling logic so that it
runs without crashing and will send alerts if something happens. For instance, if the USB
becomes unplugged then it will send an alert to plug it back in, pause the order with our clients
supply chain management software, and automatically reconnect/un-pause the order when the
4. Conclusion
In conclusion, there was a need for an indoor tracking solution that can allow a user to
track when an asset enters and exits predefined areas. We researched possible technology to
create a proof of concept of a solution and used Bluetooth low energy beacons. The proof of
concept was qualified by the end user and became a minimum viable product. Upon obtaining a
minimum viable product, more research was done on how to expand on it and make it better.
Ultra-wide band beacons were experimented with and we agreed that they would provide us
the most future-proof foundation moving forward. I then created software to stream the
position data from an asset as well as software that lets the user create and view floorplans and
configure their geofences. The final solution accomplishes the original product requirements