High-precision indoor positioning framework, version 3.

Overview

Version 3.0 Version 3.0 Version 3.0 Donate Say Thanks

The Framework for Internal Navigation and Discovery (FIND) is like indoor GPS for your house or business, using only a simple smartphone or laptop.

This version, 3.X, is a complete re-write of the previous versions 2.x.

About the project

This repository is a complete re-write of the previous version of FIND (github.com/schollz/find). There are notable improvements from the previous version:

  • Support for any data source - Bluetooth / WiFi / magnetic fields / etc. (previously just WiFi)
  • Passive scanning built-in (previously required a separate server)
  • Support for Bluetooth scanning in scanning utility (previously just WiFi)
  • Meta-learning with 10 different machine learning classifiers (previously just three)
  • Client uses Websockets+React which reduces bandwidth (and coding complexity)
  • Rolling compression of MAC addresses for much smaller on-disk databases (see stringsizer)
  • Data storage in SQLite-database (previously it was BoltDB)
  • Released under MIT license (more commercially compatible than AGPL)

The API for sending fingerprints (/track and /learn) and MQTT endpoints are backward compatible.

Status

FIND3 is stable and ready for use.

Contributing

FIND3 is a framework with multiple components. There are multiple repositories that have the components, including:

Reporting issues

Please report issues through this repo's issue tracker.

Community

Subscribe to the Slack channel to get latest information about the project and get help.

Use the FIND mailing list for discussion about use and development.

License

MIT

Issues
  • No Values received on MQTT

    No Values received on MQTT

    Using Docker when subscribing to the mqtt topics on the Find3 mosquitto server using mosquitto_sub on the same server no messages are received.

    I can can confirm that the mosquitto server is running I got a "Connected not authorized" when connecting without user and password.

    bug cantfixyet 
    opened by eifinger 38
  • Having Trouble in login

    Having Trouble in login

    When i log in with the family name, it starts a download of a file with extension .gz which i am not able to open and not the page with the dashboard.

    opened by djbs291 22
  • MQTT endpoint for POST /passive

    MQTT endpoint for POST /passive

    Hi,

    First of all, thanks for a great piece of software!

    I'm hoping to combine FIND with some very low power BLE scanners, currently submitting their output to mqtt. Would be great if this continuous stream of mqtt data could land in FIND's passive scanner, s.t. I can follow BT only devices (e.g. xiaomi miband3 can be tracked almost live this way). I think that requires 2 changes:

    • MQTT listener for passive/reverse scanning (current form is active only right?)
    • Accept sensordata without wifi fingerprints (if BT or other data is available)

    Unless I misunderstood, the current MQTT listener posts data as if they were active scan results correct? I could make sure MQTT data is submitted conform your sensordata model, or in the current hexrssi format.

    What do you think? Cheers

    enhancement 
    opened by MatsNl 21
  • Add embedded ESP8266 / ESP32 client

    Add embedded ESP8266 / ESP32 client

    I have created a very experimental, early stage client for the ESP32 / ESP8266 microcontroller, which is available from $1. This should allow people to create very cheap beacons.

    Update: see https://github.com/DatanoiseTV/esp-find3-client

    Please note this is a very early stage and experimental thing. Any input welcome!

    documentation 
    opened by DatanoiseTV 15
  • Can I run this on a raspberry pi?

    Can I run this on a raspberry pi?

    Can I run this on a raspberry pi?

    I did try but I got this error:

    [email protected]:~/find3/find3 $ sudo docker build -t find3 .
    Sending build context to Docker daemon   14.9MB
    Step 1/32 : FROM ubuntu:18.04
     ---> 7295fb90f21f
    Step 2/32 : RUN apt-get update
     ---> Running in 351b1a998416
    The command '/bin/sh -c apt-get update' returned a non-zero code: 139
    

    I'm wondering if this is related to the pi's armv6l architecture or possibly a memory limitation?

    Any ideas? Thanks!

    question documentation 
    opened by gulo-gulo 14
  • Add flag to disable subsampling when data exceeds 1000 points

    Add flag to disable subsampling when data exceeds 1000 points

    The dashboard needs a little work. I have no idea how it is possible to have 0% accuracy on 56 readings. image

    Also, the number of data readings stored is always directly below the first character. This look great until you name a room something large. I.e. Beer pong room. Then the number of data readings directly overlap the accuracy readings. image image

    opened by Thomas499 13
  • Original Find App appears to be more vastly more accerate

    Original Find App appears to be more vastly more accerate

    The original Find app appears to be significantly more accurate currently during real world test. I am wondering if it takes the a.i. a few days to figure out what to prioritize?

    Is there any chance we can expect any neural networking code anytime soon? I am debating on if this is considered a.i. or just computer learning.

    opened by Thomas499 13
  • Allow user to select which machine learning to use

    Allow user to select which machine learning to use

    Would it be possible to program into equation if a few modems disappear it doesn't effect the outcome too much. I noticed if I train with 12 WiFi signals detected, and then take away the 6 farthest modems, the code can't figure out the location.

    Realistically, over two years many of the BLE and WiFi signals will change. Neighbors get new WiFi modems or add extenders, BLE devices are replaced or eliminated. WiFi hotspots never stay in the same place for long. etc.

    As long as 6 of 12 signals are detected with the same readings that they should have for that room, I don't see why it wouldn't be possible to code in some kind of solution that ensures this scenario doesn't result in unknown location.

    opened by Thomas499 12
  • All passive tracking learning devices randomly disappear

    All passive tracking learning devices randomly disappear

    Unfortunately I haven't found a way to reproduce it and this is the only time I was able to capture the log messages.

    ...
    2018-04-17 17:03:04 [INFO] [PID-5268] server.go func1:978 192.168.1.140:50470 POST /passive 19.691983ms
    2018-04-17 17:03:10 [WARN] [PID-5268] analysis.go AnalyzeSensorData:117 [qg] nb1 classify: problem preparing SQL: database is locked
    2018-04-17 17:03:12 [WARN] [PID-5268] analysis.go AnalyzeSensorData:117 [qg] nb1 classify: problem getting key: database is locked
    2018-04-17 17:03:12 [INFO] [PID-5268] fingerprints.go updateCounter:87 have 9 new fingerprints for 'qg', re-calibrating since last calibration was 2562047h47m16.854775807s
    2018-04-17 17:03:12 [INFO] [PID-5268] server.go func1:978 192.168.0.1:59900 POST /passive 7.742035674s
    2018-04-17 17:03:13 [INFO] [PID-5268] calibration.go dumpSensorsToCSV:399 [qg] dumping 317 fingerprints to /home/find/go/src/github.com/schollz/find3/server/main/data/m0gbo9ga.csv
    2018-04-17 17:03:14 [INFO] [PID-5268] server.go func1:978 192.168.0.107:53874 POST /passive 22.710843ms
    2018-04-17 17:03:20 [INFO] [PID-5268] server.go func1:978 192.168.1.140:59420 GET /ws?device=all&family=qg 95.342µs
    ...
    

    Server version: c787ee806f46016ee17b007d5cc690914496df6f Go version: go1.10.1 linux/amd64

    opened by hit0ri 12
  • Using passive scanning to detect a bluetooth beacon

    Using passive scanning to detect a bluetooth beacon

    I'm researching tools and technologies for a little home-automation project I'm working on. I have a bunch of Eddystone beacons that I'm looking to track around my site. The documentation talks mostly about passive scanning for wifi. Will find3-cli-scanner running on Rasberry Pi with the -passive flag also pick up bluetooth or is it wifi-only?

    Thanks much! Looking forward to working with and contributing to the project.

    opened by albertreed 11
  • 10 Second A.I. timeout Question

    10 Second A.I. timeout Question

    Does the 10 second timeout happen only during the pull room request or does it also apply during the training phase? I'm ok with training taking longer if it results in more accurate results. I do not want the pull room request to take long though.

    question 
    opened by Thomas499 11
  • Need information

    Need information

    I want to know that in FIND3 application, if I entered family name, device and enabled the gps option and start the scanning process without the learning process then it should show me the device on maps and provide gps co-ordinates right? Does it works this way?

    opened by smrutisole 0
  • Location Error

    Location Error

    Following Tracking your Phone document

    In FIND3 application I entered the details family name, Device, location. I enabled the tracking mode which went in to learning mode and then start scan as per mentioned in the document. I also enabled the GPS option for precise location. After 15 min of scanning I found the device and the location it shown somewhere near Africa and actually it should show somewhere near my Pune's home address. I used the https://cloud.internalpositioning.com server.

    opened by smrutisole 0
  • FIND3 scanner app getting crashed

    FIND3 scanner app getting crashed

    I am following the document of Tracking your Phone.

    When I open the app I enter the details family name , device then I select the GPS option and press start scan but after 18 seconds it gets crashed. Having crashing issues with the app. If I am not providing any location and I want to track the device with GPS option enabled it should give me the co-ordinates of my device where it is lying right?

    opened by smrutisole 0
  • Google Play, cannot find FIND3

    Google Play, cannot find FIND3

    I was trying to download the FIND3 App to my phone, but I cannot find it in the Google Play store. The link from the doc does not work either, telling me it is an unavailable URL. Is this app not released in Germany?

    opened by javamaster10000 2
  • Unable to see any raw data

    Unable to see any raw data

    I have a local server running. And I have the app on my Android phone. The android app says it is running a scan and it appears to be fine with using my local server ip:port. However when i navigate to my server login, no raw data is showing up for that family. I tried with your own server on internalpositioning.com, but it appears to be down?

    Really excited about this project, it's very cool!!

    opened by outdooricon 0
Releases(v3.3.0)
  • v3.3.0(Aug 9, 2018)

    New features:

    Bug fixes:

    • Allow location names as numbers (https://github.com/schollz/find3/commit/ffdb18d0287fde892c4137bfd0bf2af28786c218)
    • Better scaling for getting sensors (https://github.com/schollz/find3/commit/681768e79629a808f96ac4035f3814511210ffbe)
    Source code(tar.gz)
    Source code(zip)
  • v3.2.0(Jun 15, 2018)

    New features:

    • Faster db access with in-memory lock (https://github.com/schollz/find3/commit/367b5f27a137095d9a81e770551aa61eb2ee1ea9)
    • Can classify a fingerprint directly with /classify (https://github.com/schollz/find3/commit/30cd1436cc4b8d08d3696cf313d6415eb31c5c22)
    • Faster dashboard loading

    Bug fixes:

    • Updated API for base58 (https://github.com/schollz/find3/commit/84dc111c8281cc0ca8bbcca610d4a4830c9cf230)
    • Disable Gaussian Process because its too slow (https://github.com/schollz/find3/commit/a79bdf4e610752f262f8d5f47f1685726b72aa9e)
    • Fixed CORS on API routes (https://github.com/schollz/find3/commit/a311d158462d34c8a0c4e869a39f500f80d7c833)
    Source code(tar.gz)
    Source code(zip)
  • v3.1.0(Apr 21, 2018)

    New features:

    • API allows deleting data
    • API endpoing for current time
    • API for basic location
    • Add database dump
    • Add parameter for adding data without updating ml

    Bug fixes:

    • Handle multiple websocket connections better
    • Dashboard is more efficient
    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Mar 17, 2018)

the pluto is a gateway new time, high performance, high stable, high availability, easy to use

pluto the pluto is a gateway new time, high performance, high stable, high availability, easy to use Acknowledgments thanks nbio for providing low lev

mobus 2 Sep 19, 2021
🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet 是一个高性能、轻量级、非阻塞的事件驱动 Go 网络框架。

English | ???? 中文 ?? Introduction gnet is an event-driven networking framework that is fast and lightweight. It makes direct epoll and kqueue syscalls

Andy Pan 6.6k Jun 30, 2022
YoMo 43 Jun 20, 2022
Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance.

Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance. RPC is usually heavy on processing logic and therefore cannot handle I/O serially. But Go's standard library net designed blocking I/O API, so that the RPC framework can only follow the One Conn One Goroutine design.

CloudWeGo 2.8k Jun 25, 2022
High-performance, non-blocking, event-driven, easy-to-use networking framework written in Go, support tls/http1.x/websocket.

High-performance, non-blocking, event-driven, easy-to-use networking framework written in Go, support tls/http1.x/websocket.

lesismal 697 Jun 21, 2022
SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support

socks5 中文 SOCKS Protocol Version 5 Library. Full TCP/UDP and IPv4/IPv6 support. Goals: KISS, less is more, small API, code is like the original protoc

TxThinking 466 Jun 22, 2022
lite version of gobuster. Only subdomain brute. 内网轻量化子域名爆破工具

gobusterdns lite version of gobuster. Only subdomain brute. 内网轻量化子域名爆破工具 适合指定dns跑内网子域名 与原版的修改 精简功能,仅支持子域名扫描 可导入domain list文件扫描

TimWhite 39 Apr 16, 2022
🎉 An awesome version control tool for protoc and its related plugins.

❤️ PowerProto is actively maintained! Any questions in use can be directly raised issue, I will respond to you as fast as possible. If you think the p

storyicon 153 Jun 21, 2022
Easily increment 📶 a multi-language 🔱 project version

version-bump Have you ever made a mistake incrementing a project version? Do you have multiple files to update the version at? I was always forgetting

Anton Yurchenko 7 Jun 24, 2022
Layer2 version of wireguard with Floyd Warshall implement in go.

Etherguard 中文版README A Full Mesh Layer2 VPN based on wireguard-go OSPF can find best route based on it's cost. But sometimes the lentancy are differen

日下部 詩 38 May 30, 2022
A gRPC version of tag in blog-service

A gRPC version of tag in blog-service

null 0 Oct 30, 2021
This is a fork version from ngrok

Because the original version is no longer maintained, So I forked that project and made the following changes: split

null 61 May 25, 2022
parse-curl.js golang version. Parse curl commands, returning an object representing the request.

parse-curl.js golang version. Parse curl commands, returning an object representing the request.

StarBus 2 Apr 29, 2022
Hello gRPC (Go version)

Hello gRPC (Go version) Home Docs Repository TL:DR; scarica i componenti necessari go install google.golang.org/protobuf/cmd/protoc-gen-go go install

Marco Paoletti 0 Jan 14, 2022
Forked Version of Miekg's DNS library that recycles UDP sockets

Alternative (more granular) approach to a DNS library Less is more. Complete and usable DNS library. All Resource Records are supported, including the

null 0 Jan 20, 2022
A modified version of RoProxy made for self-hosting.

roproxy-lite A modified version of RoProxy made for self-hosting. Setup is easy, simply change the options at the top of main.go and run. Alternativel

ek 4 Jun 30, 2022
Fetch-npm-package - A small utility that can be used to fetch a given version of a NPM package

Use fetch-npm-package <package> <version> <output-dir> E.g. fetch-npm-package is

Bjørn Erik Pedersen 1 May 21, 2022
a go mini version TCP top on UDP for game connections or others.

sanhua sanhua(三花猫) is kind of cat with black, red and white color. This is a mini version TCP top on UDP, but with out resend lost packet. As we know.

Arion 1 May 31, 2022
A (attempt to create a) multiversion gophertunnel proxy to join the latest MC version without renderdragon

draco a multiversion gophertunnel proxy to join the latest MC version without renderdragon Purpose mojang can't seem to actually make a good update to

null 9 Jun 12, 2022