Getting Started

This getting started guide will walk you through sending your first Sigfox message, setting up basic callbacks and configuring the downlink protocol. If you're new to Sigfox and want to jump start your Sigfox development, you'll find everything you need here! This guide will start by assuming you are using an external processor/MCU to communicate with the Sigfox module.

You'll find information here about the following:

If you have any questions or concerns that are outside of the range of this guide, do not hesitate to contact us through any means via the details at the bottom of the page. We're active on Twitter and will try to respond to any questions or problems you have!

Registering with Sigfox

Sigfox Network

To be able to receive the data sent by your device(s) over the Sigfox network and to manage them, you need to associate them with a valid subscription to the Sigfox service.

Activate a Development Kit

The following procedure is relevant for dev kits only, as they come with an included subscription to the full Sigfox service. If you bought a developement kit (Arduino, Raspberry Pi, ...) or an evaluation board from one of our partners, you'll be able to activate your accounts within 3 minutes.

Navigate to the activate webpage and choose your Dev Kit provider. Next select your country and respective service provider. Find your device's Device ID and PAC number as you'll need these for activation (can be found on the box of your device). You'll then be asked to enter a few details and to create an account.

Once you've done this, you should be registered on the SIGFOX Backend. Check the email account that you registered with and you should have a link inviting you to activate your account. The device you registered should now appear in your account.

You can associate n development kits to a single Sigfox account. Each of them will be associated to a dedicated group + device type and you won't be able to group them in a single device type. For bulk registrations, please follow the procedure below.

Activating Other Devices

This procedure applies to:

  • End Devices
  • Standalone Modules
  • Prototypes
  • Bulk Registrations

If you already have an account and an ongoing contract with available tokens, simply create a new device, to associate it to your account using its ID & PAC. You can do it either through the online interface or via the API.

Otherwise, you need to get in touch with your local Sigfox Operator to subscribe the appropriate number of tokens. One token is equal to one year subscription for one device.

Send a Sigfox Message

Message Payload

Sigfox messages are designed to be smaller, optimised for sensors and require only a small amount of power to transmit. The Sigfox payload is limited to 12 bytes (excluding the payload headers). An 'uplink' or device to base station message is broadcast by the device for approximately 6 seconds at a rate of 100 bit/s (within the RCZ1). Although this might seem like a very restricted message payload, there's actually a lot that can be done with 12 bytes!

The example below shows how you might structure 12 bytes to send a set of GPS coordinates along with speed, acquistion time and the voltage of a battery.

0 1 2 3 4 5 6 7 8 9 10 11
Lat. Lat. Lat. Lat. Lon. Lon. Lon. Lon. Vol. Sats. Acq. Spd.

There are a few of different ways to send a Sigfox message, this guide will walk you through the two simplest; using AT commands and utilising a device library.

AT Commands

AT Commands at the lowest level of interaction that you'll interact with a Sigfox Module (Unless you're using an SDK). Most commonly you'll interact with a Sigfox Module by using a serial interface, specifically UART. You'll address the module with a command to initalise it, prepare it for transmission and then pass your payload or message to it for transmission.

AT$SF=0123CAFE\r

Note - AT commands are sent in Hexidecimal so ensure that you encode your data in this format.

Connecting with Serial UART

In order to send across the AT command shown earlier, we need to communicate between a device and it's Sigfox module. Below is an example of opening a serial connection between and Arduino Uno and a Sigfox module.

#include <SerialSoftware.h>
#define TX 4
#define RX 5

SoftwareSerial sigfox(RX,TX);

void setup()
{
sigfox.begin(9600); // Initalise Serial connection
sigfox.write("AT$SF=0123CAFE\r"); // Serial write to Sigfox Module
}

void loop(){}

There are various Sigfox module solutions and packages. If you wish to find out more about specific solutions, check out our partners website.

Using Libraries

Libraries are abstractions of the AT Command interface and allow you to quickly and easily send messages without worrying about changing your payload into its hexidemical representation and ensuring that you're complying with the ETSI Duty Cycle Restrictions. There are a number of custom libraries that have been for various platforms. Examples of these are coming soon...

Setting up a Callback

What is a Callback?

Sending your message is easy... what about retrieving it? Sigfox makes it easy to retrieve your data from our cloud service by the use of Callbacks. Callbacks are a service that allows Sigfox to push an event to your server upon an event. For example, your device might send a Sigfox message upon an external trigger; you might want to be notified once this event had occured. This would be the idea case to use a Callback; the Sigfox server would relay your message via a POST/GET request to your own server. In addition to defining your own server and data, Sigfox also allows you to transfer your data with simplified bridges such as AWS IoT and Microsoft Azure.

We'll start by looking at how to utilise Custom Callbacks and then move onto utilising specific services.

Custom Callback

To setup a custom Callback, you need to initalise a few different features on the Sigfox Backend. We'll assume at this point your device and account have already been registered and that you know how to transmit a message.

We'll start by looking at how to utilise Custom Callbacks and then move onto utilising specific services. We'll assume you've set up a Device with a Device Type and group.

Navigate to the 'Device Type' tab in the navbar. Then search for your Device's Device Type and click the filter button. Select the 'Name' of the device within the search entry. You'll be brought to an 'Information' page. From here you can see all the data about the device you set up. Now navigate to the 'Callbacks' on the left side of the page. If this is the first time you've set up a callback the page should be empty. Click the 'New' button in the top right and you'll be presented with a list of different types of callbacks

Click on the 'Custom Callbacks' element. You'll now have a page that looks similar to the one below, with a number of different configuration options.

Custom Payload Config

This field allows you to specify how you would like Sigfox to decode your device's payload. You might for example wish to decode an incoming byte as an unsigned integer. An example of this is the first line of the sample below:

int1::uint:8 // Unsigned integer of 8 bits with name int1
str::char:6 // Character String of 6 letters with name str
b1::bool:7 // Boolean based on value of bit in position 7 with name b1

Where "int1" is the name of the value, "uint:8" specifies the datatype and the number of bits, respectively.

Body
This is the main content of your message. You'll be able to specify any custom data you want to configure within the payload. You can see all of the available variables in the URL Syntax section. An example callback payload (in json format) is shown below.
{
    "data": {
        "temperature": "{customData#temperature}",
        "humidity": "{customData#humidity}",
        "battery": "{customData#battery}",
        "mode": "{customData#mode}"
    },
    "deviceId":"{device}",
    "time":"{time}"
}

Simplified Bridges

Currently the Sigfox Backend offers simplified bridges with AWS IoT, AWS Kinesis, Microsoft Azure Event Hub and IoT Hub. Check back soon for more information about using these services.

What's Next?

Tutorials

If you're more interested in learning more about implementation in specific language, using different Callbacks or even hardware design, you may be interested in some of our technical guides.

These guides are still in development but check back here soon for updates. In the meantime, have a look at some of our GitHub repos!

Sigfox Python Flask by Alex Bucknall

Sigfox Node JS Callbacks Demo by Nicolas Lesconnec

Projects

So you're all set up, you're sending messages and retrieving your data... but what's next?

Well that's up to you! You're only limited by your imagination! To help get you started we've put together some fun Sigfox based projects that might inspire you.

Connected Nerf Target by Louis Moreau

Sigfox Plant by Louis Moreau

Hardware

We also have some hardware projects as well as a collection of information about developing Sigfox devices.

Sigfox HidnSeek Dev Board by Alex Bucknall

GitHub

If you can't find what you're looking for, check out our GitHub for additional projects and support.