Anyone seen this (Find internal positioning)?

Just ran across this.
Would be so cool to use in combination with hass.


If you are just interested in the guessed location value, you can easily set up a rest sensor:

- platform: rest
  value_template: '{{ value_json.users.YOURUSERNAME[0].location }}'
  method: GET
  name: FIND location sensor
  scan_interval: 1

edited for the current API


You mean your code example works with “find” ?
Did you setup a private server running find ?
On their website I was struggling how to use this in combination with HA.

You can change the resource to your url if you use their public server. But in that case you should probably raise the scan_interval a little :wink:

This will be a sensor with a state of whatever the current location reported by find is.

I have find running next to hass on my Raspberry Pi2 :slight_smile:

Cool !
Gonna try tonight. Thanks !

Hi Christoph-Wagner!

Awesome you got this started. Sorry but I just changed the resource route - use

resource: http://localhost:8003/location?group=cwagner

or for a particular user:

resource: http://localhost:8003/location?group=cwagner&user=cristoph

For the most up-to-date API (which is not quite frozen yet):

Please let me know if you’d like specific information from the server and I can generate some more routes.

1 Like

Hello Christoph,

I set this up exactly as you did but I cannot get the location value to show up.

Do you see the location value in HASS?

The json response change, new template is:

value_json.users.YOURUSERNAME[0].location with the updated resource Zack posted earlier.

Solid it works! I now have

  • overview of who is where in the house.
  • hallway light turning on when I enter it
  • notification send to me when kids are in my office.


I would like to use as a device_tracker component. Is it possible?

Hi everyone,

Just wanted to let you know I added MQTT support.

Its pretty simple right now, let me know if you’d like certain data exposed.

Do you have instruction how to install this puppy on Raspberry so that it starts by itself at boot?

There are a number of ways to do this. I prefer cron. You can simply use sudo crontab -e and then add a line:

@reboot /bin/sleep 10 && /dir/to/fingerprintclient -g YOURGROUP -c 10000

which is an example for tracking 10,000 times (~1/sec) in the group YOURGROUP. I typically add in the sleep just to give the WiFi time to connect before fingerprinting.

This looks pretty cool - I’d like to try playing with it. Did I understand correctly that there is a public server I can use and I just install the client - sorta like my CloudMQTT setup?

That’s right.

The fingerprint clients you can download automatically point to the public server,

The MQTT server is also there, at You will need to get authentication to use it, there are instructions on the documentation website.

1 Like

Thanks! Not sure how I’ll use this as it’s just me and I’m usually on the same floor but I’d still like to learn about it.

@dennisaion could you possibly do a short write up on the steps you took? I have been looking for this exact thing.

So to understand this correctly - do you need to have an app on the phone so that the phone can be tracked? e.g. the phone knows its location and sends it to the server?
Or is the tracking done completely by the server (once the wifi landscape has been learned)?

Excerpt from the README at

The system is built on two main components - a server and a fingerprinting device. The fingerprinting device (computer program or android app) sends the specified data to the machine learning server which stores the fingerprints and analyzes them. It then returns the result to the device and stores the result on the server for accessing via a web browser or triggering via hooks.

You can either host and install the server yourself, or use the ready hosted server at

Edit: To clarify: Usually, to get a good classifier, the training data and analysis data should be as similar as possible. In the case of FIND, I assume the fingerprints are required both during training and after to get the correct data. So an app on your client is needed.

@matt curry com writeup is here.

It is dead simple.