From AGILE IoT Wiki
Revision as of 16:14, 18 December 2018 by Jsh (talk | contribs) (Development Step by Step)
Jump to: navigation, search

PilotB, Remote Data Collection Using UAV


The pilot concentrates on collecting data using IoT devices from an unmanned aerial vehicle (UAV). Originally, the pilot covered investigations of both moving sensor tags on animals and stationary environmental sensors. As sensors for animals were not feasible to deploy due to battery life, Pilot B has focused on environmental sensors.

The sensors, created under the AGILE project are capable of measuring temperature, humidity, GPS position and radio signal quality and are portable (and could be placed on moving objects).


The App has the following steps/parts in order to collect, visualize and off-load sensor data:


  • [Sensor HW] Collect sensor data
  • [Sensor HW] Send data over loRaWAN


  • [LoRaWAN GW and App-Server] Handle LoRaWAN traffic locally when not connected, pair the LoRaWAN sensors.
  • [MQTT Broker] Post sensor data to the AGILE GW
  • [AGILE] Subscription to MQTT for sensor data
  • [AGILE] Auto-registration of sensor devices
  • [AGILE] Receive sensor data
  • [AGILE] Persistance and encryption of sensor data
  • [AGILE] Visualization of sensor data
  • [AGILE] Off-load sensor data to the cloud


The hardware requirements are split between that on the drone, and the hardware used for sensors.

Drone GateWay Hardware

For the drone, we choose one of our existing models, integrating the Agile GW for collecting sensor data.

Sensor Hardware

Each sensor node is a small LoRaWAN node that wakes up periodically, makes a few readings, and sends the values to the drone.

  • Seeeduino LoRaWAN - Arduino board with integrated LoRaWAN and Battery management.
  • GPS, temperature and humidity sensors on board

Development Step by Step

Development for the Agile GW is mostly done directly on the Raspberry PI. The Sensor nodes are developed using Arduino IDE.

  • Setup Raspberry
  • The Raspberry PI should be setup using a standard LITE image (without UI) [1]
  • Install docker
 curl -sSL https://get.docker.com | sh
  • Install git
 apt update && apt install -y git
  • Setup/Build LoRaWAN stack

Run the following on the RPI:

 git clone https://github.com/skywatch-jtv/agile-lorawan-support
 cd agile-lorawan-support
 docker-compose run

First-time invocation takes a long time, as docker needs to build several images from scratch.
Note that Raspberry PI thermo throttles if it is getting hot, prolonging build time.

Once the composition has started, the app-server should be available at http://<rpi ip>:8080

  • Test LoRaWAN infrastructure

Configure the nodes with pass phrases inside TTN (the things network) and check debug trace for receiving messages on LoRaWAN.

  • Setup Agile GW stack
  • Integrate LoRaWAN stack into Agile GW

Add the docker installation by editing the docker-compose.yml fil located in the home directory.

  • Configure/Program Agile GW

Use Agile UI to select which records that are to be stored locally and at what retention level.
Agile cloud storage can be used, by selecting sensor and date/time for export.
This pilot has used OwnCloud on another computer to offload data from the Agile gateway.