Tracking wifi device locations
A framework for internal navigation and discovery.
There is a new version of FIND now, called “FIND3.” Its public on Github now.
FIND is the Framework for Internal Navigation and Discovery. It is basically an indoor GPS for your house or business, using only a simple smartphone or laptop.
This is an idea I started thinking about 8 years ago and wrote the first code in PHP almost four years ago, dubbed version 0, as a proof-of-concept. Two years later the project was re-written in Python. Then it was re-written in Go and called “FIND”. It’s been ported again to Python and called “whereami”. Now its been re-written one more time and called “FIND3”, with better speed, efficiency and new features.
Before getting to the benefits of the new version, I’d like to highlight what FIND can be used for. My main use case is home automation, and I’ve provided tutorials to get started with Home Assistant and OpenHAB. In my home automation setup I use FIND to turn on/off lights as I walk around the house. In the future I’d like to use FIND for more wayfinding in hospitals and hard to navigate locations.
Its been amazing that in the past few years to hear how other people are using FIND. Folks are using FIND to relay exhibit information in museums, as a safety monitor system for employees working alone, tracking number of attendees in a music festival, monitoring the location of pets, wayfinding in airports. I’m hoping the new version will better support all these use cases and maybe more!
The new version of FIND has been written with longevity and flexibility in mind. There are notable improvements from the previous version:
- Passive scanning built-in (previously required a separate server, find-lf).
- FIND3 app and command-line tool support Bluetooth scanning (previously just WiFi).
- Meta-learning with 10 different machine learning classifiers (previously just three).
- Client uses Websockets which reduces bandwidth .
- Rolling compression of MAC addresses for much smaller on-disk databases.
- Data storage in SQLite-database (previously it was BoltDB).
- The API for sending fingerprints (/track and /learn) and MQTT endpoints are backward compatible.
- Uses the MIT license (instead of incompatible AGPL)
There are couple of ways you can get started with the new version.
The easiest way to get started is by tracking your phone. Next, you could try tracking your computer. If you have a couple of Raspberry Pi’s laying around, you can try the more advanced passive tracking which allows monitoring all nearby bluetooth and WiFi devices.
If you run into a problem with FIND, don’t hesitate to make a bug report. For quick help, join the Slack channel and someone there will help you (maybe me!). You can also contact me directly at zack dot scholl at gmail dot com.