sigfox makers tour - madrid
TRANSCRIPT
UsNicolas Lesconnec
Developer & Maker Evangelist
Anthony Charbonnier Startup Relations Manager
Jon Regueiro Support Engineer
About SIGFOX
• SIGFOX has invented a radiocommunication protocol
• SIGFOX is operating a global network
• SIGFOX does not sell hardware components
• SIGFOX does not build connected solutions
New possibilities
• Direct Internet connection.
• No battery drain. Years of autonomy.
• Detect. Send. Receive.
• No configuration
In a nutshell
• Power on
• Send a message
• It’s picked up by n of our base stations
• Instantly forwarded to your own server
• That’s it
Complexity
• AT$SF=0123456789
• No pairing or configuration of any kind
• HTTP request to your server
Why SIGFOX
• Hub-based technologies are not compatible with independent devices
• Need for a protocol designed for the IoT, and not one tweaked to address it.
Core concepts• Energy efficiency
• Very Long Range
• Out of the box connectivity
• Outdoor + Indoor
• Two-way communication
• Low bandwidth, small messages
• Ultra Narrow Band
Energy efficiency
• Tx : ~25/30 mA for a few seconds
• 99.x% of the time, device is silent
• Idle consumption is key
• Idle : a few µA
Out of the box
• Network is serving the devices, not the other way round
• Device simply sends a frame, message is detected by n base stations
• Message is validated / deduplicated by our backend
Outdoor + indoor
• 868MHz has good propagation properties
• Radio waves are not magic
• Consider ~20dB of attenuation indoor, and ~30dB for light underground or tricky buildings
Two-way communication
• Send updates to your device(s)
• Default behaviour: wake up, send, back to sleep
• No passive Rx mode
• Device can receive a message upon request
• Every communication is instigated by the device
12 bytes !?
• Yes. Seriously. 12 bytes.
• This is the available payload.
• You can put a lot of info in 96 bits
• 2^96 is a 30ish-digit number.
• 8 billions of billions of billions of possible values
Payload examples
• Full GPS Coordinates : 6 bytes
• Temperature : 2 bytes
• State reporting : 1 byte
• Hearbeat, update request : 0 byte
Money• Most pricey subscription: €14/year
• A couple of devices, 140 messages/day
• The higher volume, the lower the price
• The lower number of messages, the lower the price
• Down to €1/year for large volumes & a couple of messages/day
• Startup plan : €8/year, as if already 30k devices.
Security
• Each device is identified by a unique ID on the network
• Each message is signed
• Servers managed by ourselves, in 2 french datacenters.
• Security is never finished, permanent effort.
Signature• Each message is accompanied by an hashed
signature, made from :
• the device id
• the device PK (unknown to the user)
• the payload
• internal increment
Encryption
• By default, the payload is not encrypted
• Encryption cost a lot of energy
• No « one size fits all » solution.
• Up to you to use the encryption most suited to your case
Radio properties
• Great resistance to interferors
• Very difficult to jam
• Interception is hard
• UNB
• Unpredictable frequency
Ultra Narrow Band• The SIGFOX protocol relies on the Ultra Narrow
Band technology
• A message : ~100Hz wide
• Each base station watch a 200KHz part of the spectrum
• Hard part: detect message without knowledge of the precise frequency or schedule
Unlicensed != unregulated
• SIGFOX complies with both ETSI (Europe) & FCC (US) regulations
• ETSI : 1% duty cycle
• FCC : duration of emission
Global network
• Roaming is included in the basic subscription
• Your device can switch from one country to another without additional charges.
USA
• Currently: San Francisco
• Early 2016 : 10 majors cities, including Atlanta, Boston, Chicago, Dallas, Houston, Los Angeles
• And we’re just starting :)
Hello World
• Send a dummy message
• Check it on the SIGFOX website
• Forward it through the callback mechanism
• Store message in a database
• Display list of recorded events
Good use cases
• Not that talkative devices : small messages every now and then
• Independent devices
Ifttt-like
• Press the button, send an empty frame & trigger any pre determined action
• « Mom I’m home ! »
• « Get me a taxi»
• Replay last order, ~Amazon Dash
More
• Assisted .. and Predictive Maintenance
• Logistics : GPS Tracking
• Security
• Healthcare, stay-at-home people
DIY Projects
• Connected wine cellar. Because french.
• Connected cat food dispenser. Because cats.
• Kitchen garden: temperature, moisture, …
• GPS Tracking of anything
You ?• You can build a PoC very quickly
• Lot of funny stuff to make
• And lot of $$$ to make too ;)
• KISS, dumb device means:
• Cheap
• Less prone to failure
Hardware SIGFOX
• SIGFOX is not a hardware vendor
• Many established partners offer SIGFOX-ready chips: Atmel, TI, Silicon Labs, Axsem, Atim, …
• Most Sub-GHz radio transceivers are compatible, it’s just about a software upgrade.
Prototyping
• Arduino : Snootlab, SmartEverything
• Raspberry Pi : Yadom
• Can be bought one unit a time
• Get started within minutes
• Not for industrial use
Modules
• Easy to work with : AT commands
• Price range from ~10 to 20€
• Evaluation boards available from manufacturers : Adeunis, Telecom Design, Telit, ..
SoC, transceivers
• Texas Instruments, Atmel, SiLabs, Axsem, ..
• Cheap, a few $
• More complex to work with if not familiar
• Certification needed if you don’t stick to the provided ref design.
Antenna
• Critical when doing radio
• 868MHz -> best case is 17cm (lambda/2)
• Helicoidal, patch, … antennas possible.
Get your data
• Part of the standard service.
• 3 ways
• View - website
• Pull - HTTP API
• Push - HTTP Callback
Common use case : push callbacks
• Get notified each time of your devices send a message
• Can trigger whatever you want : alarm, notification, data processing, …
• Example here: http://github.com/nicolsc/sigfox-callback-demo
Downlink
• Message sent to a device can be
• Automatic with a pre configuration
• Sent from your own server
Downlink auto
• Simply set what message you want to send back
• Hardcoded
• Time, Station ID, .. for sync purposes
Downlink callback
• Same mechanism than the uplink callback
• Set up an URL
• An when called, send your 8-byte frame within the response body
Connected RFID reader
• Standard 125KHz RFID reader & tags
• Once a tag is detected, send its ID through SIGFOX
• Update a live dashboard
• Do something else :)
Resources
• https://github.com/ameltech/
• + Checkout github.com/nicolsc/sigfox-* for some demos & sample codes
Register• http://backend.sigfox.com/activate
• Click SmartEverything
• Enter the device id of your board + the provided PAC number
• Check http://10.0.0.118:1234/
• Operator : select SIGFOX_Spain
• Enter your personal info
Getting started• Plug the SmartEverything board using a micro USB cable
• Plug the antenna ;)
• Check that it’s recognised by your computer
• $ ls /dev/tty.*
• Windows
• Launch Powershell
• > [System.IO.Ports.SerialPort]::getportnames()
Arduino setup• Install the Arduino Zero core
• Tools > Boards > Board Manager
• Install the ASME core
• Tools > Boards > Manager (Again !), filter on type=Partner
• Choose the SmartEverything Board Type
• Tools > Boards
• Install the libs associated to each sensor (... and to the SIGFOX module)
• Sketch > Include Library > Manage Libraries ; Filter on Type=Partner ; install each library
1st Arduino Sketch• Open the Arduino IDE
• Select Board Type > Arduino Zero
• Select the correct port
• File > Examples > SmartEverything > VL6180X > AmbientLight
• Upload
• The blue LED on the board should blink
Check message
• http://backend.sigfox.com
• Navigate to the « device » menu
• Click on the device ID
• « Devices messages »
Don’t have a server ?
• https://github.com/nicolsc/sigfox-callback-demo
• Git clone & push to your server
• Or simply click « Deploy to Heroku »
How does it work ?
• The Module send the frame, then sleep for 20s
• Then it enters Rx mode
• Waits 20s for a response
• Quits Rx mode & goes to deep sleep
Request a downlink
• Use the AT$SF command, with an additional parameters
• AT$SF = [hex byte]*, 2, 1
Handle the response• When entering Rx mode, the module will display
• +RX BEGIN
• Received frame will be displayed as
• +RX=[hex byte] [hex byte]…
• When leaving Rx mode, it will display
• +RX END
Handle the response
• Detect an input line starting with +RX= & parse it as a series of hex bytes
• If no downlink message has been sent, you’ll have no +RX= line, just the BEGIN & END flags
Share• Please share what you’ll make with SIGFOX
• Hackster.io, instructables, github … your move.
• Q&A
• http://sigfox.cloud.answerhub.com/
• Keep in touch :
• twitter: @nlesconnec