This is the notebook for visualizing the long-term connectivity and link quality dataset collected from ChirpBox.

Open source:

This notebook is used in association with, dataset_03052021_15092021.csv, topology_map.png and, which are available at:


Firmware related source code can be found at ChirpBox repository/Daemon.

Data collection code:

Data collection related source code can be found at ChirpBox repository/ChirpBox_manager/Tools/chirpbox_tool/.

In [1]:
from data_analysis import *
dataset_tool = Analysis() # Specify data analysis class
In [2]:
import pathlib # provide the working directory
# Specify the folder for output processing
directory_path = str(pathlib.Path.cwd()) # Current directory of notebook
dataset_CSV = directory_path + "//dataset_03052021_15092021.csv" # TODO: name the CSV file

Below are the figures presented in our paper:

Dataset: Environmental Impact on the Long-Term Connectivity and Link Quality of an Outdoor LoRa Network

Figure 1:

Show the connectivity in the network when using SF=7 and 480 MHz as RF channel.


Node color: The color shade of a node represents the degree of the node (i.e., the number of the neighbours of the node – the darker, the higher).

Link color: The color shade of a link (i.e., the line between two nodes) shows the reliability (i.e., the corresponding PRR – the darker, the higher).

Red line and arrow: The red lines identify the longest network diameter: in this specific configuration, there are four hops from node C to node 2.

In [3]:
id_list = list(range(21)) # 21 nodes for current dataset
sf_list = [7] # SF = 7 and RF = 480 MHz
freq_list = [480000]
plot_date = ["2021-05-07 00:00:00", "2021-05-07 12:00:00"] # plot start and end time
plot_type = ["topology", "using_pos2"] # plot type and output format
dataset_tool.dataset_analysis(sf_list, freq_list, id_list, directory_path, dataset_CSV, plot_type, plot_date) # dataset visualization with configurations
In [4]:
from IPython.display import Image # show GIF figures
# show the GIF of topology
file_prefix = 'Networktopology' + "_SF" + str('{0:02}'.format(sf_list[0])) + "_CH" + str('{0:06}'.format(freq_list[0]))
Image(open(directory_path + "\\" + PROCESSED_PLOTS_FOLDER + "\\" + file_prefix + '.gif','rb').read())