Semantic heuristic localization
Requires:
- fitbit wireless sync dongle
- people wearing fitbits
All fitbits need to be identified so people and fitbit IDs can be correlated data is stored to and pulled from GATD
-
Install galileo, a python utility for interacting with fitbits, and other python libraries
sudo pip install galileo IPy socketIO-client
-
Modify usb permissions
sudo cp 99-fitbit.rules /etc/udev/rules.d/99-fitbit.rules
-
Remove and re-insert Fitbit dongle
-
Run fitbitfinder
./fitbitfinder.py
-
Install scapy python library
cd /tmp
wget http://www.secdev.org/projects/scapy/files/scapy-latest.tar.gz
tar zxvf scapy-latest.tar.gz
cd scapy-2.*
sudo python setup.py install
-
Run macScanner
sudo ./macScanner.py
-
Create a virtual environment
sudo pip install virtualenv
virtualenv venv
-
Start the virtual environment
source venv/bin/activate
-
Install IPy and socketIO-client to virtual environment
pip install IPy socketIO-client
-
Replace init file from socketIO-client
cp socketIO_client__init__.py venv/lib/python2.7/site-packages/socketIO_client/__init__.py
-
Run wearabouts
./whereabouts.py
Running Wearabouts in a local context requires:
-
A central RabbitMQ server that handles queuing and distributing data between applications.
To set this up using Docker:
docker run -d -p 5672:5672 -p 15672:15672 tutum/rabbitmq
Then run:
docker ps
to get the container ID. Now to figure out the password that the RabbitMQ admin user was assigned:
docker logs <container id>
If you know the password:
docker run -d -p 5672:5672 -p 15672:15672 -e RABBITMQ_PASS="password" tutum/rabbitmq
Now configure the RabbitMQ instance using the web interface:
http://host:15672
Add a new vhost, a user for that vhost, and add the admin user to the vhost. Finally, we need to add a topic exchange to the vhost.
-
A central Wearabouts instance that is making determinations about where people are.
-
Many BLE (and other) scanner applications that are looking for packets from devices.
For the node.js based scanner:
# Need BLE packages sudo apt-get install bluetooth bluez-utils libbluetooth-dev cd bleScannerHCI # Setup the config paramters # Need tiller sudo gem install tiller sudo tiller_json="$(cat ../config.json)" tiller -n -b $PWD/tiller npm install sudo NOBLE_REPORT_ALL_HCI_EVENTS=1 node bleScanner.js
For the Python scanner (uses Nordic dongle):
cd bleScanner tiller_json="$(cat ../config.json)" tiller -n -b $PWD/tiller sudo pip install pika socketIO-client ./bleScanner.py OR sudo docker run --privileged -v /dev/ttyACM0:/dev/ttyACM0 -e tiller_json="$(cat config.json)" -t lab11/wearabouts-ble-scanner-py
Tiller is a tool that helps with creating config files inside of Docker containers. It's a little tricky to pass config parameters and passwords to Docker containers because listing a ton of command line arguments is clunky and you can't add the specific config files to the container. Tiller, while a little clunky, allows you to pass a single JSON string as a command line argument to the docker run command which is handled by tiller inside of the docker container to create a config file. When the file has been generated Tiller then runs your original command.
There are Docker containers for some of the parts of this project. To build them:
sudo pip install sh
sudo ./build_docker.py