server | ||
TTN | ||
LICENSE | ||
README.md |
LocationHub
Selfhosted backend for LoRaWAN based Location Tracker that support multiple location providers like GNSS, Gateway-Triangulation, WiFi-Triangulation and BLE-Triangulation. We suggest to use The Things Network (TTN) as middleware for relaying the LoRaWAN payload.
Setup
Prerequisites
- Node.js >= 22.11.0
- Maria DB >= 11.6.2
- Webserver like nginx
Database
Change name of database and credentials as you like!
- Create new database:
CREATE DATABASE dev_locationhub;
- Create new user for database:
GRANT ALL PRIVILEGES ON dev_locationhub.* TO 'dbuser'@'localhost' IDENTIFIED BY '1234';
- Import tables:
/usr/bin/mariadb -u dbuser -p1234 dev_locationhub < server/sql/tables.sql
Configuration
- Copy the
.env.template
to.env
and configure as you like. - Use a strong token/secret for the webhook.
- Add your Wigle API token to translate MAC addresses to coordinates
- Use systemd to start the server.
TTN Integration
Create new Webhook for your application. Set base url to https://your.domain.tld
and enable "Uplink message" to api /api/ttn/webhook
.
Add a addidtional header:
- Type:
authorization
- Value:
Bearer your-very-secure-token-from-the-env-file
Add a Location Tracker
We use the SenseCAP T1000-B from seeedstudio because of the fair price and multiple location providers. You can use any LoRaWAN enabled tracker that is able to communicate with TTN and supports the needed fields in the payload data.
Onboard SenseCAP T1000-B
- Download and install the App SenseCraft
- Skip the user account at startup with
Skip
in the upper right corner - Select the
Tracker T1000
- Connect to your SenseCAP T1000-B
- In the
Settings
tab selectThe Things Network
as Platform underLoRa
- Copy
Device EUI
,AppEUI
andAppKey
- Save LoRa settings
- Under
Geolocation
select Geolocation Strategy asBluetooth+Wi-Fi+GNSS
- Set
GNSS Max Scan Time (s)
to 120 - Save Geolocation settings
- Exit App with return arrow to trigger re-init of SenseCAP T1000-B
Register SenseCAP T1000-B
- Open your Application in TTN and navigate to
End devices
- Click
Register end device
in the upper right corner - Set input method to
Enter end device specifics manually
- Frequency plan:
Europe 863-870 MHz (SF9 for RX2 - recommended)
- LoRaWAN version:
LoRaWAN Specification 1.0.4
- Regional Parameters version:
RP002 Regional Parameters 1.0.3
- Place as
JoinEUI
theAppEUI
- Place the
DevEUI
- Place the
AppKey
- Set a name for end device
- Click
Register end device
- Check if new end device joins the TTN
- Place the Uplink Payload Formatter as
Custom Javascript formatter
for new end device
Testing
Testing Webhook
- To test the webhook use the python script ttn-webhook-dummy.py to send prerecorded TTN Uplinks.
- To test the script you can use
while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nSuccess"; nc -l -p 8080 -q 1; done
Emulating Wigle API
- To emulate the Wigle API use the python script wigle-dummy.py to translate MAC addresses to coordinates.