Process uplink messages from TTN on Google Cloud, storing Realtime data on Firebase, historical data on BigQuery and visualize the data through a web app.
Web App URL : Access Here
️ ⚠️️️️THIS IS A WORK IN PROGRESS ⚠️
LoRa End Node:
Data arriving on The Things Network:
Realtime Data on Firebase:
Query Data on Bigquery:
Monitor data on a WebApp :
I recommend installing the Visual Studio Code (VSCode) IDE and the PlatformIO plugin to get started using it. Just follow the step on the link below:
https://platformio.org/platformio-ide
To deploy to the board, just open the firmware
folder and you can use the “Build” and “Upload” buttons on PlatformIO Toolbar. All libraries and dependencies will be downloaded.
TODO: Add wiring
gcloud auth login
gcloud projects create YOUR_PROJECT_NAME
gcloud config set project YOUR_PROJECT_NAME
ttn_dataset
raw_data
and fields deviceId (string)
, data(string)
and time (Timestamp)
We have two options here, using Cloud Run and Google Cloud Functions.
Just follow the steps and fill the GCP_PROJECT
variable with your Google Cloud Platform project ID.
After deploying the server on Cloud Run, you can get it's url on GCP Console (link) and select the service ttn-gcp-lora
that we just deployed. Them copy the URL will look like https://{project-id}-{some-random-hash-string}.a.run.app
. The endpoint that handles TTN requests it /uplink
, we are going to use this to setup TTN integration.
This step will deploy a HTTP Cloud Function made with Golang. I made a script deploy.sh
that is on the functions
folder, that you can use to do that.
cd functions
./deploy.sh
After deploying the cloud function, you can get it's url that will look like https://{project-region}-{project-id}.cloudfunctions.net/HandleTTNUplink
that handles TTN data and another one that will look like https://{project-region}-{project-id}.cloudfunctions.net/HandleDeviceHistoryQuery
that returns device history to be used by the UI.
cd web && firebase init
and choose your Firebase projectsrc/config.js
with you Firebase Web SDK Config.npm run deploy