TTN Mapper Documentation


TTN Mapper and are tools to map the coverage of LoRaWAN networks like The Things Network, The Things Stack, Helium and ChirpStack.

View the Project on GitHub ttnmapper/documentation

Helium integration

A HTTP Integration allows you to upload data to (aka TTN Mapper)

The goal of is to provide a map of the actual coverage of Helium Hotspots. Contributors to measure the performance of Hotspots in their vicinity and upload this information to the website. Here the information is aggregated and shared with the community.

Go to for the global coverage map.


This guid is very similar to the Quick Start guide for Helium Mappers. The only difference is the address of the integration.

  1. GPS tracker device
  2. (optional) label to group mapping devices
  3. Payload decoder
  4. Integration
  5. Configure Multiple Packets
  6. Set up flow

If you are already sending mapping data to, you can skip to step nr 4 where we configure the integration. supports the same decoded payload format as

1. GPS tracker device

In order to contribute to, a LoRaWAN device with a GPS, capable of transmitting its GPS coordinates, is required. The minimal location information that needs to be sent by the device is its latitude and longitude. Preferably it should also send its altitude and HDOP values.

Regsiter your device on the Helium Console under Nodes -> Devices.

2. Label mapping devices

It is useful to label your mapping devices. On the console under the devices page, there is a folder icon with a plus at the top. Click on it to create a label. Then go to All Devices, select your device, then click + Add label and choose the label you just created.

3. Payload decoder

On the console go to Nodes -> Functions. Create a new function (+). Function type Decoder. If your device transmits using the Cayenne LPP format, choose that. Otherwise choose custom script and provide a valid decoder for your device. Make sure your decoder provides at least the Latitude and Longitude fields.

Some standard payload decoders can be found on Helium’s GitHub

The format and units of the expected fields in the decoded payload is the same as for Helium Mappers. Example:

"decoded": { 
  "payload" : {
    "accuracy": 2, // meters
    "altitude": 2, // meters above mean sea level
    "latitude": 38.811706, // degrees, North is positive, South is negative
    "longitude": -121.607035 // degrees, East is positive, West is negative

4. Integration

On the console go to Nodes -> Integrations. Add a new integration. Choose HTTP under custom.

End point details:

5. Configure Multiple Packets

On the console go the Node -> Multiple Packets. Add multiple packet config.

6. Set up flow

On the console go to Flows.

At the top left hand side click on Nodes, Labels, and drag the mapping nodes label you created in step 2 to the open space below.

Then choose functions and drag the decoder you created in step 3 to the open space.

Lastly, click on integrations and drag the integration to the open space.

You should now have three blocks side by side in the window.

Click on the device label. In the settings panel that opens on the right, click on the Packets tab. You should see the All Available Packets config you created in step 5. Enable it. Close the pane.

Connect the label node to the decoder node, and then connect the decoder node to the integrations node. Like in the picture below.

Helium flow

For a flow that contributes to, Helium Mappers and Cargo, it will look like this:

Helium flow mappers

Verify the integration is working correctly

In order to verify whether the integration has been configured correctly, go to your device on the Console. Switch on your device and make sure you see data appearing under real time packets. Now go to the website and in the menu select “Advanced maps”. In the “Device data” section enter your Device Name in the Device ID field. In the Start Date and End Date fields choose today. Click on “View map” and you should see the data points sent by your end device.


When should I use an “experiment” to map my coverage?

An experiment is a way to keep unrealistic coverage measurements away from the main map. Experiments should be used when testing new hardware or coverage is mapped from aeroplanes, balloons or any similar unrealistic altitudes.

In other words logging to the main map should only be done from roughly 0.5m-2m above ground level. “Ground level” should be interpreted as any place easily accessible by a human - or any place where an IoT device would commonly be installed. The top of a skyscraper is only acceptable if the skyscraper has a viewing deck that is publicly accessible. Man made hills and natural mountains are acceptable. The roof of a car or small delivery truck is fine. The roof of a bus or 14 wheeler truck is not as that is not a average acceptable height at which a sensor will be installed. The dashboard of a truck or bus is however roughly 2m above ground and therefore acceptable.

Enable or disable logging to an experiment