sigfox + arduino mkrfox workshop

58
Sigfox & Arduino Workshop Cape Town, November 8th, 2017

Upload: nicolas-lesconnec

Post on 21-Jan-2018

322 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: Sigfox + Arduino MKRFOX Workshop

Sigfox & ArduinoWorkshop

Cape Town, November 8th, 2017

Page 2: Sigfox + Arduino MKRFOX Workshop

Contact

Head of Technology Adoption @Sigfox

[email protected]

Twitter : @nlesconnec

Page 3: Sigfox + Arduino MKRFOX Workshop

About the MKRFOXArduino+Sigfox starter kit

Page 4: Sigfox + Arduino MKRFOX Workshop

Overview

Product released spring 2017Full sigfox service includedCortex M0 MCUSigfox chipset : Atmel/Microchip ATA8520

Page 5: Sigfox + Arduino MKRFOX Workshop

Atmel/Microchip ATA8520

Compatible with Sigfox RC1 (Europe + S.Africa)Adressed using SPIDatasheet : http://atmel.com

Page 6: Sigfox + Arduino MKRFOX Workshop

Setup the Arduino IDE

Select your board using the Tools > Port menuSet the board as Arduino MKRFOX1200

Page 7: Sigfox + Arduino MKRFOX Workshop

Retrieve your board information

Copy the code from http://github.com/sigfox/mkrfox-init

Page 8: Sigfox + Arduino MKRFOX Workshop

Upload to your board & open the monitor

Page 9: Sigfox + Arduino MKRFOX Workshop

Online onboarding

http://backend.sigfox.com/activate/arduino/

Provider: Arduino

Country : !South Africa

ID/PAC : Retrieved before

Page 10: Sigfox + Arduino MKRFOX Workshop

Getting started with Sigfox

Page 11: Sigfox + Arduino MKRFOX Workshop

Finding your way

The Sigfox Cloud is organized around 3 concepts :• Group : Contract & User rights• Device Type : Family of devices sharing the same

properties• Device : A unique device

Page 12: Sigfox + Arduino MKRFOX Workshop

List of your device types

Page 13: Sigfox + Arduino MKRFOX Workshop
Page 14: Sigfox + Arduino MKRFOX Workshop

Devices associated to a device type

Page 15: Sigfox + Arduino MKRFOX Workshop

Device information

Page 16: Sigfox + Arduino MKRFOX Workshop

Hello Worldhttps://github.com/nicolsc/mkrfox-hello-world-bool

#include <SigFox.h>

void setup() {

Serial.begin(9600);while (!Serial){}

SigFox.debug();

Serial.println("Device ID\t" + SigFox.ID());

delay(100);

SigFox.sendBit(1);

}

void loop(){}

Page 17: Sigfox + Arduino MKRFOX Workshop

Check device messages

Page 18: Sigfox + Arduino MKRFOX Workshop

Hello World (again)https://github.com/nicolsc/mkrfox-hello-world

#include <SigFox.h>

void setup() {

SigFox.begin();

short valA = 7700;

float valB = 654.32;

SigFox.beginPacket();

SigFox.write(valA);

//SigFox.write(valB);

SigFox.endPacket();

}

void loop(){}

Page 19: Sigfox + Arduino MKRFOX Workshop

Set Callback (device type)

Page 20: Sigfox + Arduino MKRFOX Workshop
Page 21: Sigfox + Arduino MKRFOX Workshop
Page 22: Sigfox + Arduino MKRFOX Workshop

Advanced features

Page 23: Sigfox + Arduino MKRFOX Workshop

Topics

Downlink callback

API Access

Event monitoring

Geolocation callback

Advanced callbacks with custom payloads

Page 24: Sigfox + Arduino MKRFOX Workshop

Frame parsing

Page 25: Sigfox + Arduino MKRFOX Workshop

Sigfox payload display feature

Using a « simple » grammar, you can ask Sigfox to parse your incoming dataThis is done at the device type level

Page 26: Sigfox + Arduino MKRFOX Workshop
Page 27: Sigfox + Arduino MKRFOX Workshop
Page 28: Sigfox + Arduino MKRFOX Workshop

Parsing the Hello World sampleModify the sketch to send 3 values in a same message short valA = 7700; short valB = 128;

float valC = 654.32;

SigFox.beginPacket();

SigFox.write(valA);

SigFox.write(valB);

SigFox.write(valC);

SigFox.endPacket();

Page 29: Sigfox + Arduino MKRFOX Workshop

Set a custom grammer

valA & valB are shorts : 16 bytesvalC is a 32 bytes floatvalA::uint:16:little-endian

valB::uint:16:little-endian

valC::float:32:little-endian

Page 30: Sigfox + Arduino MKRFOX Workshop

Downlink

Page 31: Sigfox + Arduino MKRFOX Workshop

How does it work?

Downlink flag included in Sigfox message

20 sec after first frame transmission, the chipset wakes up and waits for downlink response (25 sec window)

Page 32: Sigfox + Arduino MKRFOX Workshop

Downlink setup

Automatic callback: Device Type > Informations > Edit

Set Downlink mode to DIRECT

Enter an 8 bytes value

Page 33: Sigfox + Arduino MKRFOX Workshop

Sample code

Simple change

SigFox.endPacket(); to SigFox.endPacket(true);

This will request a response from the network

Page 34: Sigfox + Arduino MKRFOX Workshop

Handle the response

https://github.com/nicolsc/mkrfox-downlink

void loop(){

while (SigFox.available()) {

Serial.print("0x");

Serial.println(SigFox.read(), HEX);

}

}

Page 35: Sigfox + Arduino MKRFOX Workshop

Downlink callback

To send the response from your own server, change the Downlink mode to CALLBACK

Then create a DATA > BIDIR callback

Make sure you comply with the expected JSON format

Page 36: Sigfox + Arduino MKRFOX Workshop

API Access

Page 37: Sigfox + Arduino MKRFOX Workshop

Create credentials

Credentials are handled at the Group levelIn your group, select API Access in the left panelClick the New button in the top right cornerSelect the rights (read, write) to grant

Page 38: Sigfox + Arduino MKRFOX Workshop

API Documentation

You now have an « API Documentation » link next to your API CredentialsDocumentation is tailored to the user rights associated to each credential pair

Page 39: Sigfox + Arduino MKRFOX Workshop

API credentials

Page 40: Sigfox + Arduino MKRFOX Workshop

Get Device messages

GET Request to

https://backend.sigfox.com/api/devices/{device}/messages

Page 41: Sigfox + Arduino MKRFOX Workshop

Curl example

curl -X GET \

https://backend.sigfox.com/api/devices/2C01C2/messages \

--user {apiLogin}:{apiPassword}

Page 42: Sigfox + Arduino MKRFOX Workshop

Curl example

{"data":[{"device":"2C01C2","time":1491779962,"data":"0123cafe","snr":"46.59","linkQuality":"EXCELLENT","seqNumber":5,"rinfos":[{"tap":"10FC","delay":1.6480000019073486,"lat":"-23.0","lng":"-43.0"},{"tap":"10E9","delay":0.7059999704360962,"lat":"-23.0","lng":"-43.0"}]}]}

Page 43: Sigfox + Arduino MKRFOX Workshop

Event monitoring

Page 44: Sigfox + Arduino MKRFOX Workshop

Monitor break in sequence number

New Event: Device > Event Configuration > New

Select Event Type « Out of message sequence »

Select « EMAIL » as channel and enter your email address and email content

Page 45: Sigfox + Arduino MKRFOX Workshop

Monitor break in sequence number

Remove the antenna to simulate a coverage issue

Send a message

Re-attach the antenna and send a new message

Check reception of email notification

Page 46: Sigfox + Arduino MKRFOX Workshop

Geolocation Callback

Page 47: Sigfox + Arduino MKRFOX Workshop

Geolocation Callback⚠Under deployment in South Africa. Availability Q1

2018

Create a new Service > Geoloc callback

Use following URL to center the map: https://maps.googleapis.com/maps/api/staticmap?center={lat},{lng}&zoom=13&scale=1&size=600x300

Page 48: Sigfox + Arduino MKRFOX Workshop
Page 49: Sigfox + Arduino MKRFOX Workshop

Advanced Callbacks with IFTTT

Page 50: Sigfox + Arduino MKRFOX Workshop

Advanced Callbacks

Goal: Save chipset temperature in a Google Drive spreadsheet

How: Transfer message to IFTTT webhook and save content to a linked GDrive spreadsheet

Page 51: Sigfox + Arduino MKRFOX Workshop

IFTTT?

IF this THEN that

Free service to create conditional statements (no coding)

Page 52: Sigfox + Arduino MKRFOX Workshop

IFTTT Applet

Create new applet « IF Webhooks THEN Google Spreadsheet »

Webhook: custom URL to listen to HTTP requests

Page 53: Sigfox + Arduino MKRFOX Workshop

IFTTT Applet

Page 54: Sigfox + Arduino MKRFOX Workshop

IFTTT Applet

Page 55: Sigfox + Arduino MKRFOX Workshop

IFTTT Applet

Value[1-3] are variables forwarded by webhook

Value1 will contain Temp

Value2 will contain Light

Page 56: Sigfox + Arduino MKRFOX Workshop

Callback Configuration

Retrieve your IFTTT webhook URL here:

https://ifttt.com/maker_webhooks > Documentation

Page 57: Sigfox + Arduino MKRFOX Workshop

Callback Configuration

Create a new Custom Callback (> Device Type)

Configure custom payload , URL pattern and JSON content

Page 58: Sigfox + Arduino MKRFOX Workshop

Running Demo App

Send a message

Check your Google Doc has been created/updated