This repository contains the SIGFOX experimentation toolbox developed in the Horizon 2020 eWINE project. The toolbox allows for rapid development of experiments involving Low-power wide-area networks (LP-WAN) and ultra-narrowband (UNB) technology.
Most components can be used with a visual editor and a flow-based programming approach in the Node-RED tool. They have been developed for use with equipment in the LOG-a-TEC testbed and the SIGFOX network, although some may find a wider use.
Note that some components are not present in the public repository due to a non-disclosure agreement.
The recommended way of getting started with the toolbox:
-
Follow the general installation instructions in this
README.md
-
Install all individual components from the subdirectories, following their specific installation instructions.
-
Try running the packet loss Node-RED flow.
These instructions assume a reasonably up-to-date Linux system with a Python 3.x interpreter already installed.
While exact versions of software packages shouldn't matter, this toolbox was last checked to be working with the following:
- Debian GNU/Linux release 8.7 (Jessie),
- Node-RED 0.15.1, running under Node.js 4.7.3,
- Python 3.5.2,
- bokeh 0.12.4,
- numpy 1.12.0,
- vesna-spectrumsensor 1.0.6
To perform example experiments from the toolbox you will also need:
-
Network access to a SNE-ESHTER spectrum sensor (part of the LOG-a-TEC testbed)
-
SIGFOX back-end login credentials that allow callback configuration or access to a host in LOG-a-TEC testbed that is already set up to receive back-end callbacks.
-
Network access to a SIGFOX test device.
Setting up a new SIGFOX test device also requires:
-
SIGFOX back-end login credentials that allow device management.
-
SFXLIB binary library.
-
SIGFOX device id, AES key and PAC code.
-
VESNA SNC board, Olimex ARM-USB-OCD programmer, USRP device.
See installation
section in the Node-RED
documentation. Some components in the repository require that Node-RED is
installed under your home directory, in the ~/node_modules/node-red
directory.
Please note that installing Node-RED on an Internet-connected computer will by default enable anyone to run arbitrary code on your computer. This is a security risk. Reading the security section of the manual is highly recommended before proceeding.
It is recommended that a clean Python virtual environment is made before installing individual Python packages contained in this repository. See Creation of virtual environments for details.
In brief, you can create a new environment by running the following commands in a terminal:
$ cd sigfox-toolbox
$ export PYTHONPATH=
$ python3 -mvenv venv
$ . venv/bin/activate
$ pip install -U pip
Then, in each new terminal you wish to use the Python components, run:
$ cd sigfox-toolbox
$ . venv/bin/activate
See README.md
files in individual sub-directories for details and
installation instructions.
-
node-red-python
- Support for Node-RED Python blocks. -
node-red-spectrum-sensing
- Node-RED blocks for spectrum sensing. -
node-red-sigfox-web-api
- Node-RED blocks for communicating with the SIGFOX backend API. -
node-red-visualization
- Real-time visualization block for Node-RED flows. -
node-red-burst-tagging
- Real-time burst tagging block for Node-Red and a stand-alone tool for batch processing spectrum sensing data. -
vesna-sfxlib-rpc-firmware
- Firmware for running the proprietary SIGFOX MAC protocol library on a VESNA sensor node over a remote-procedure call interface. -
flow-keyapp
- Node-RED flow for controlling the SIGFOX KeyApp device. -
flow-packet-loss
- Node-RED flow for measuring packet loss in a SIGFOX network. -
sigfox-usrp-phy
- Physical layer implementation of the SIGFOX protocol using GNU Radio and a USRP N200 device, with a related Node-RED block. (Not in public repository) -
sigfox-test-device
- Full software implementation of a SIGFOX modem usable from Node-RED. (Not in public repository)
See README.md
files in individual sub-directories for details.
The research leading to these results has received funding from the European Horizon 2020 Programme project eWINE under grant agreement No. 688116.