
Whereami – Using WiFi signals and machine learning to predict where you are - tomkinstinch
https://github.com/kootenpv/whereami/blob/master/README.md
======
qrv3w
This Python package is a nice port of a system I wrote [1] which I call FIND
(the Framework for Internal Navigation and Discovery) [2]. I believe whereami
mostly supports laptops, but with FIND you can do internal positioning on a
lot devices - Android phones, Electric Imps, Raspberry Pis, Particles, and
soon ESP8266s [3] and even iPhones if you are willing to go through some extra
setup. [4]

[1]:
[https://news.ycombinator.com/item?id=11517667](https://news.ycombinator.com/item?id=11517667)

[2]: [https://github.com/schollz/find](https://github.com/schollz/find)

[3]:
[https://www.internalpositioning.com/client/](https://www.internalpositioning.com/client/)

[4]: [https://github.com/schollz/find-lf](https://github.com/schollz/find-lf)

------
guidefreitas
I did something similar for Android a while ago
[https://guidefreitas.github.io/programming/osx/docker/2015/0...](https://guidefreitas.github.io/programming/osx/docker/2015/09/17/wifi-
indoor-location-svm.html)

~~~
kootenpv
You were a year earlier, nice :)

------
amiga-workbench
I have a really dumb version of this without any ML at work, it uses the API
on our Ubiquiti Unifi's controller to get a list of devices connected to each
of our 4 AP's.

Its good enough to see if somebody is in a meeting room and unavailable or if
they are probably free.

If you have more than one device on the network that belongs to one person, it
uses the device that has been connected to an AP for the least time
(theoretically that's the last one that moved)

------
blixt
I wonder if there's enough signal to detect if someone enters the room, which
could be another cool trigger (e.g., turn on lights).

~~~
matthewbauer
I think you'd have trouble getting accuracy <10 feet. GPS is usually about the
same. Still, almost every device has WiFi so this is basically a free feature.

~~~
awqrre
If it kept the lights ON in a 10ft radius, it could still be pretty good.

~~~
matthewbauer
Yes but that could mean turning the lights on when you are in the room next
door.

------
H4CK3RM4N
Is there any reason this couldn't be ported to Android or iOS, after hacking
together an interface using something like Toga?

~~~
tyingq
You would have to add Android and iOS ways to collect the WiFi AP info (SSID,
signal strength, etc). This package uses this
[https://github.com/kootenpv/access_points](https://github.com/kootenpv/access_points)
which can do it for OSX, Linux, and Windows.

Kivy would probably be an easier path than Toga. It incorporates pyjnius which
you would need to solve the wifi scan on android, and already has the UI part
figured out.

------
matthewbauer
I wonder if it would be possible to create a coordinate system from this. This
is, without any associations, map where each router is based on closeness to
other routers and do a sort of "triangulation" to get coordinates.

~~~
memmcgee
I tries doing this kind of thing at a hackathon once and we discovered that
actual coordinate systems are hard to do. The "signal strength" data wireless
cards produce are very dependent on the model of the devices involved. They're
pretty unreliable for generating coordinates.

~~~
matthewbauer
I feel like there has to be some sort of algorithm that lets you generate
something like this though. You would definitely have to calibrate the RSSI
based on your current card and time of day. Maybe not perfect but you could
get a spatial sense of your routers.

~~~
memmcgee
Well we were able to write an algorithm that kind of worked. But it relied
more on just which MAC addresses are visible at a certain point.

------
Exuma
Can I do this with a single wifi router in my house or is it saying I need 7
"routers" or access points for this to work?

~~~
blixt
I just tried it at home and it works great with a distance of just 10 feet or
so between two locations.

My laptop can see 26 unique wifi hotspots (other people in the building, cafe
across the street, etc), which is the number the author was referring to.

------
throwaway2334
It's awesome seeing open source implementations of this. We were doing this in
an R&D lab of a major tech company in 2009.

