際際滷

際際滷Share a Scribd company logo
Gluing the IoT world
with Java and LoRaWAN
Pance Cavkovski, Netcetera, jug.ch 12.09.2017
June 2014
whoamisenior software engineer @ Netcetera
jug.mk Leader
codefu.mk admin
hardware & IoT enthusiast
TTN SK initiator
http://pance.mk/ and @hsilomedus
Gluing the IoT world with Java and LoRaWAN
Gluing the IoT world with Java and LoRaWAN
In the agenda for today
LoRaWAN crash-course
Hardware prototyping
Rules & Architecture for IoT systems
Software Development
Extras
Warning
The video youre about to see is made completely by a software
developer, and it is for demonstration purposes only.
If something similar is to meet the general public, it *will* be re-
implemented by a trained professional
Gluing the IoT world with Java and LoRaWAN
SkopjePulse
Problems
- extreme air pollution
- excessive urban noise
- flash floods
No clear means for improvement
Solution
- leverage technology
- crowdsourced sensor network
- data analysis and availability
- warnings
- clearer insights and basis for
action
https://skopjepulse.mk/faq
LoRaWAN
Crash-course
LoRa
LongRange
Chirp Spread-spectrum radio modulation (~ OSI physical layer)
Low-power, long-range, low-cost communication enabler
Proprietary by Semtech
Can work on license-free ISM bands (433, 868, 915 MHz)
Multiple channels, multiple spreading factors
LoRaWAN
Long Range Wide Area Network
MAC layer on top of LoRa
De-facto the new IoT communication standard
Specification and development guided by LoRa Alliance
LoRaWAN features
http://www.semtech.com/wireless-rf/internet-of-things/what-is-lora/
Architecture
Limitations
Low-Speed: 250  5470 bps (configurable with SF and BW, distance
dependable)
Very small packages: (by provider) ~ 20 bytes
Less frequent: (by provider): 2-200 up/ 1-10 down
Class A LoRaWAN devices
One Uplink followed by two downlink windows (at 1s period)
OTAA or ABP authorization
Can be done with:
- RN2483 chip and sending MAC commands.
- RFM95w or similar with the LMIC library
LoRaWAN MAC example
mac reset 868
mac set rx2 3 869525000
mac set devaddr <devaddr>
mac set appskey <appSkey>
mac set nwkskey <nwkSkey>
mac set adr off
mac set ar off


mac set pwridx 1
mac set dr <datarate> (0 to 5)
mac save
mac join abp
mac tx uncnf 1 <dataToSend>
TheThingsNetwork
Global, crowdsourced Internet
Of Things data network:
- community driven
- provided network/back-end
- free (fair use)
- LoRaWAN as base tech.
TheThingsNetwork - Zurich
https://www.thethingsnetwork.org/community/zurich/
MakeZurich
https://makezurich.ch/
TheThingsNetwork - Switzerland
https://www.thethingsnetwork.org/country/switzerland/
TheThingsNetwork ZH - Contact
Gonzalo Casas
TTN ZH Initiator
https://www.thethingsnetwork.org/u/gonzalo
https://twitter.com/gnz
How to use TTN
Register at https://console.thethingsnetwork.org/
- Applications / devices
- Keys, UIDs, credentials
- Plugins / Integrations
Also in Switzerland
Swisscom LPN: http://lpn.swisscom.ch/e/
- Nationwide LoRa coverage
- Different offers based on intended traffic
Loriot
- provide distributed backend
- you provide the network devices and coverage
Hardware
Prototyping and coding
The basic package
Gluing the IoT world with Java and LoRaWAN
Gluing the IoT world with Java and LoRaWAN
Gluing the IoT world with Java and LoRaWAN
Gluing the IoT world with Java and LoRaWAN
Gluing the IoT world with Java and LoRaWAN
Gluing the IoT world with Java and LoRaWAN
And finally
Embedded Development
Arduino C
Restricted environment (16MHz, 32KB flash, 2KB memory)
Perpetual non-observed execution
Rules & architecture
How to build an IoT system
Decouple
Clear separation of concern
- data acquisition and transmission
- data offering
- web
- analytics / processing
Robustness, resilience, scaling, fallbacks
tl;dr: containers and orchestrators
Optimize
(almost) No overhead
- binary protocols
- always on
- react and store fast
- short physical distance
* Optimized MQTT is a good way to go.
Store
IoT data is almost always time-series based
Redundant and impartial data
Append only
Dont aggregate, but process
Live with eventual consistency
* Apache Cassandra is a good way to go
Skopje Pulse serverSkopje Pulse server Cassanda DBCassanda DB
LoRa GatewayLoRa Gateway
The Things NetworkThe Things Network Public data sourcePublic data source
MQTTMQTT
Sensor
RN2483
Sensor
RN2483
Sensor
RN2483
Data Collection
MicroService
Data Collection
MicroService
Software development
Putting everything together
Gluing the IoT world with Java and LoRaWAN
Getting to TTN
Spring Boot + Eclipse Paho client + Gson
- @Component client implementing MqttCallback
- connect in @PostConstruct
- @Scheduled(fixedrate = ) watchdog @Component
Details on MQTT URL, credentials and message formats:
https://www.thethingsnetwork.org/docs/network/migrate.html#mqtt
Storing data
Spring Boot + Cassandra Driver Core + Extras
- Cassandra Cluster wrapped in @Service
- InstantCodec for java.time interoperability
- QueryBuilder
- No data filtering.
spring-data-cassandra seems like a poor choice.
Web (public)
Interactive cockpit on landing page
- d3js client-side visualizations
- leaflet + OpenStreetMap + Stamen
Web (admin)
Full-blown SPA
- Angular2
- ng2-admin
- SpringMVC
Extras
Additions, currently in the oven, inspirations and insights
WiFi devices
Where you *really* cant do LoRaWAN
- ESP8266 powered device
- use TLS!!!
- provision device address securely
- implement own address -> key mapping
More: http://pance.mk/index.php/securing-esp8266-communication/
In the oven 1
Nostradamus  Time-series forecast service
- trainer + executor based on Python + StatsModels + Pandas & ARIMA.
Averaging service
- periodically scheduled scenarios, processing and decisions
Watchdog  sanity checker
- notifies sensor downtime and data irregularities
Water level sensors
- still in early phase. Based on water or sonic sensors.
In the oven 2
Notifications and warning service
- periodically analyses recent data
- sends digests to users
- filters out excessive situations and sends out warnings
- tweets for every digest and warning
Story 1: Hardware (dis)trust
Carefully select and inspect sensors
Test for correctness (if possible)
Beware of factory defects (cold sensitive RN2483)
Story 2: When its more than a number
Thunderstorm
PM10:
Forest fire (5km outside of the city)
Story 3: Share & inspire
Student projects ongoing
- Best caf辿 to sit at right now?
- Smart trash collection
- SkopjeDashboard
http://tiny.cc/awsttn
Q & A
@hsilomedus ; pance.cavkovski@netcetera.com
http://pance.mk/
https://skopjepulse.mk/
https://www.netcetera.com/home/stories/expertise/20170203-SkopjePulse-IoT.html
https://thethingsnetwork.org/c/sofia/
https://console.thethingsnetwork.org/
http://kicad-pcb.org/
https://www.thethingsnetwork.org/docs/network/migrate.html#mqtt
http://tiny.cc/awsttn

More Related Content

Gluing the IoT world with Java and LoRaWAN

  • 1. Gluing the IoT world with Java and LoRaWAN Pance Cavkovski, Netcetera, jug.ch 12.09.2017
  • 3. whoamisenior software engineer @ Netcetera jug.mk Leader codefu.mk admin hardware & IoT enthusiast TTN SK initiator http://pance.mk/ and @hsilomedus
  • 6. In the agenda for today LoRaWAN crash-course Hardware prototyping Rules & Architecture for IoT systems Software Development Extras
  • 7. Warning The video youre about to see is made completely by a software developer, and it is for demonstration purposes only. If something similar is to meet the general public, it *will* be re- implemented by a trained professional
  • 9. SkopjePulse Problems - extreme air pollution - excessive urban noise - flash floods No clear means for improvement Solution - leverage technology - crowdsourced sensor network - data analysis and availability - warnings - clearer insights and basis for action https://skopjepulse.mk/faq
  • 11. LoRa LongRange Chirp Spread-spectrum radio modulation (~ OSI physical layer) Low-power, long-range, low-cost communication enabler Proprietary by Semtech Can work on license-free ISM bands (433, 868, 915 MHz) Multiple channels, multiple spreading factors
  • 12. LoRaWAN Long Range Wide Area Network MAC layer on top of LoRa De-facto the new IoT communication standard Specification and development guided by LoRa Alliance
  • 15. Limitations Low-Speed: 250 5470 bps (configurable with SF and BW, distance dependable) Very small packages: (by provider) ~ 20 bytes Less frequent: (by provider): 2-200 up/ 1-10 down
  • 16. Class A LoRaWAN devices One Uplink followed by two downlink windows (at 1s period) OTAA or ABP authorization Can be done with: - RN2483 chip and sending MAC commands. - RFM95w or similar with the LMIC library
  • 17. LoRaWAN MAC example mac reset 868 mac set rx2 3 869525000 mac set devaddr <devaddr> mac set appskey <appSkey> mac set nwkskey <nwkSkey> mac set adr off mac set ar off mac set pwridx 1 mac set dr <datarate> (0 to 5) mac save mac join abp mac tx uncnf 1 <dataToSend>
  • 18. TheThingsNetwork Global, crowdsourced Internet Of Things data network: - community driven - provided network/back-end - free (fair use) - LoRaWAN as base tech.
  • 22. TheThingsNetwork ZH - Contact Gonzalo Casas TTN ZH Initiator https://www.thethingsnetwork.org/u/gonzalo https://twitter.com/gnz
  • 23. How to use TTN Register at https://console.thethingsnetwork.org/ - Applications / devices - Keys, UIDs, credentials - Plugins / Integrations
  • 24. Also in Switzerland Swisscom LPN: http://lpn.swisscom.ch/e/ - Nationwide LoRa coverage - Different offers based on intended traffic Loriot - provide distributed backend - you provide the network devices and coverage
  • 34. Embedded Development Arduino C Restricted environment (16MHz, 32KB flash, 2KB memory) Perpetual non-observed execution
  • 35. Rules & architecture How to build an IoT system
  • 36. Decouple Clear separation of concern - data acquisition and transmission - data offering - web - analytics / processing Robustness, resilience, scaling, fallbacks tl;dr: containers and orchestrators
  • 37. Optimize (almost) No overhead - binary protocols - always on - react and store fast - short physical distance * Optimized MQTT is a good way to go.
  • 38. Store IoT data is almost always time-series based Redundant and impartial data Append only Dont aggregate, but process Live with eventual consistency * Apache Cassandra is a good way to go
  • 39. Skopje Pulse serverSkopje Pulse server Cassanda DBCassanda DB LoRa GatewayLoRa Gateway The Things NetworkThe Things Network Public data sourcePublic data source MQTTMQTT Sensor RN2483 Sensor RN2483 Sensor RN2483 Data Collection MicroService Data Collection MicroService
  • 42. Getting to TTN Spring Boot + Eclipse Paho client + Gson - @Component client implementing MqttCallback - connect in @PostConstruct - @Scheduled(fixedrate = ) watchdog @Component Details on MQTT URL, credentials and message formats: https://www.thethingsnetwork.org/docs/network/migrate.html#mqtt
  • 43. Storing data Spring Boot + Cassandra Driver Core + Extras - Cassandra Cluster wrapped in @Service - InstantCodec for java.time interoperability - QueryBuilder - No data filtering. spring-data-cassandra seems like a poor choice.
  • 44. Web (public) Interactive cockpit on landing page - d3js client-side visualizations - leaflet + OpenStreetMap + Stamen
  • 45. Web (admin) Full-blown SPA - Angular2 - ng2-admin - SpringMVC
  • 46. Extras Additions, currently in the oven, inspirations and insights
  • 47. WiFi devices Where you *really* cant do LoRaWAN - ESP8266 powered device - use TLS!!! - provision device address securely - implement own address -> key mapping More: http://pance.mk/index.php/securing-esp8266-communication/
  • 48. In the oven 1 Nostradamus Time-series forecast service - trainer + executor based on Python + StatsModels + Pandas & ARIMA. Averaging service - periodically scheduled scenarios, processing and decisions Watchdog sanity checker - notifies sensor downtime and data irregularities Water level sensors - still in early phase. Based on water or sonic sensors.
  • 49. In the oven 2 Notifications and warning service - periodically analyses recent data - sends digests to users - filters out excessive situations and sends out warnings - tweets for every digest and warning
  • 50. Story 1: Hardware (dis)trust Carefully select and inspect sensors Test for correctness (if possible) Beware of factory defects (cold sensitive RN2483)
  • 51. Story 2: When its more than a number Thunderstorm PM10: Forest fire (5km outside of the city)
  • 52. Story 3: Share & inspire Student projects ongoing - Best caf辿 to sit at right now? - Smart trash collection - SkopjeDashboard
  • 54. Q & A @hsilomedus ; pance.cavkovski@netcetera.com http://pance.mk/ https://skopjepulse.mk/ https://www.netcetera.com/home/stories/expertise/20170203-SkopjePulse-IoT.html https://thethingsnetwork.org/c/sofia/ https://console.thethingsnetwork.org/ http://kicad-pcb.org/ https://www.thethingsnetwork.org/docs/network/migrate.html#mqtt http://tiny.cc/awsttn