All Projects → Jason-Gew → BLE-Beacon-Tracking-System

Jason-Gew / BLE-Beacon-Tracking-System

Licence: Apache-2.0 license
Indoor Beacon Tracking System based on BLE

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to BLE-Beacon-Tracking-System

Reactivebeacons
Android library scanning BLE beacons nearby with RxJava
Stars: ✭ 171 (+850%)
Mutual labels:  bluetooth-low-energy, beacon
Luch
Small and easy to use Android library for BLE beacon monitoring
Stars: ✭ 55 (+205.56%)
Mutual labels:  bluetooth-low-energy, beacon
Beacons Android
Android BLE advertising library
Stars: ✭ 107 (+494.44%)
Mutual labels:  bluetooth-low-energy, beacon
ruuvitag-demo
Demo of reading Bluetooth Low Energy sensor measurements of RuuviTag environmental sensors and feeding them to MQTT, a database and dashboards
Stars: ✭ 14 (-22.22%)
Mutual labels:  mqtt, bluetooth-low-energy
Ct Smart Home
A ready-to-use Node-RED setup for home automation
Stars: ✭ 132 (+633.33%)
Mutual labels:  mqtt, bluetooth-low-energy
ios
CoThings's iOS application. CoThings is a realtime counter for shared things.
Stars: ✭ 13 (-27.78%)
Mutual labels:  bluetooth-low-energy, beacon
PiBeacon
Low-cost iBeacon using Raspberry Pi
Stars: ✭ 41 (+127.78%)
Mutual labels:  bluetooth-low-energy, beacon
H.E.L.P.
Home Environment Locating People 🍍
Stars: ✭ 19 (+5.56%)
Mutual labels:  bluetooth-low-energy, indoor-positioning
mqttools
MQTT version 5.0 client and broker using asyncio
Stars: ✭ 44 (+144.44%)
Mutual labels:  mqtt
CODESYS-MQTT
MQTT client library for CODESYS, supporting all QoS
Stars: ✭ 63 (+250%)
Mutual labels:  mqtt
ESP8266 mqtts
Arduino IDE project: send data from DS18B20 temperature sensor to mqtt.flespi.io via MQTT over SSL.
Stars: ✭ 16 (-11.11%)
Mutual labels:  mqtt
zwave-core
Flexible Z-Wave Service Server - Access your Z-Wave nodes fast and independent - Planned/supported: REST-API, Browser UI, MQTT* - Perfect for maintaining big node-numbers, drop-in ozwcp replacement!
Stars: ✭ 19 (+5.56%)
Mutual labels:  mqtt
rpi-enviro-mqtt
Send air quality data from a Pimoroni RPi Enviro+ over MQTT
Stars: ✭ 30 (+66.67%)
Mutual labels:  mqtt
102shows
Raspberry Pi + APA102 + MQTT + 102shows = LED awesomeness!
Stars: ✭ 15 (-16.67%)
Mutual labels:  mqtt
swifitch-software
Software for SWIFITCH HW
Stars: ✭ 12 (-33.33%)
Mutual labels:  mqtt
specification
GA4GH Beacon specification.
Stars: ✭ 31 (+72.22%)
Mutual labels:  beacon
WifiIndoorPositioning
🚀 Evaluation of Location of the device using RSSI values of Access Points and Reference point which are made from Wi-Fi readings
Stars: ✭ 83 (+361.11%)
Mutual labels:  indoor-positioning
mqtt-datasource
MQTT Datasource for Grafana allows streaming data from any MQTT broker running either locally or remotely.
Stars: ✭ 99 (+450%)
Mutual labels:  mqtt
sonos2mqtt
🔈 Sonos mqtt controller. Control your speakers from your mqtt server. mqtt-smarthome insprired.
Stars: ✭ 50 (+177.78%)
Mutual labels:  mqtt
rpi2mqtt
Connect RaspberryPi GPIOs and 1-Wire temperature sensors to MQTT 🍰🔘📡
Stars: ✭ 20 (+11.11%)
Mutual labels:  mqtt

BLE-Beacon-Tracking-System



Indoor Beacon Tracking system based on Bluetooth Low Energy and iBeacon technology. The tracking client can be installed on any Linux based micro-computer such as Raspberry Pi. It identifies each UUID of the beacons and utilizes Python multi-threading to record the entry time, exit time, duration in the particular area with corresponding event. In the meanwhile, the client sends real-time event data to IoT cloud by TCP. Further big data analytics and beacon visualization will be processed on cloud.

For indoor positioning and triangulation, multiple clients (hardware, at least 3+) should be placed in correct location according to reasonable coordination.

Finally, it's the time to upgrade the system and move forward! (Coming in April 2021) 😎

Upgrade Features

  1. Replace old Python 2.7.x to Python 3.8.x in order to support more fancy Python functions and modules.

  2. Integrate MQTT Pub/Sub capability. The tracking client will publish system and beacon events to IoT cloud via MQTT 3.1.1 or MQTT 5.0. Besides, the client will subscribe to a command topic to receive service commands for real-time configuration updating or further operations such as restart. All messages are in JSON format! The topic structure:

 Event:   service/${region}/event/${client-uuid}
 Command: service/${region}/cmd/${client-uuid}
 Data:    service/${region}/data/${client-uuid}
  1. Integrate sliding window algorithm to reduce the side effect of multi-path, and send better average RSSI values for each supervised beacon.

  2. Based on MQTT subscription, setup dynamic RSSI fence/threshold, for easy installation and debugging.

  3. Add SQLite3 for better beacon UUID management on edge-devices.

  4. Upgrade beacon tracking logic on client side.

Installation

Some Linux libraries and Python packages are required:

sudo apt install libbluetooth-dev
sudo apt install libboost-python-dev
sudo apt install libboost-thread-dev
sudo pip3 install gattlib
sudo pip3 install pybluez
sudo pip3 install paho-mqtt
sudo pip3 install sqlalchemy

Or pip install based on requirements.txt

Configuration

Check config/app-config.ini file, in mqtt section, you may update to your own MQTT broker and corresponding settings.

MQTT Command Req and Resp Example

Query Client Machine Status

{
   "command": "status",
   "trace": "test-trace-uid"
}

Shutdown the Beacon Tracking Client

{
   "command": "shutdown",
   "trace": "test-trace-uid"
}

Publish one-time beacon scan command (duration is optional)

{
   "command": "scan",
   "duration": 5, 
   "trace": "test-trace-uid"
}

Response

{
  "data_type" : "JSONArray",
  "action" : "data",
  "message" : "OK",
  "timestamp" : "2021-04-04 23:50:03 +0800",
  "data" : [ {
    "uuid" : "06f62a6d-f66f-88bd-b66e-2b12fd6e96aa",
    "major" : 0,
    "minor" : 512,
    "power" : 171,
    "rssi" : -43,
    "address" : "34:D6:66:E7:34:88"
  }, {
    "uuid" : "06f6213d-f88e-aabc-a36d-2b49fd6c36ad",
    "major" : 0,
    "minor" : 0,
    "power" : 191,
    "rssi" : -47,
    "address" : "28:E4:C2:E6:A1:D2"
  } ]
}

Change Scan Mode to Auto (duration, period are optional)

{
   "command": "change-scan-mode",
   "scan-mode": "auto",
   "duration": 3, 
   "period": 8,
   "trace": "test-trace-uid"
}

Addition

Server side code based on Spring Boot 2.4.x and ReactJS framework, old project has been moved to branch v2015-1-3

You are welcome to ask any questions here!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].