SlideShare a Scribd company logo

IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux

Phillipe Coval explains why IoTivity is great for prototyping IoT devices.

1 of 47
Download to read offline
Samsung Open Source Group 1
Tutorial
Philippe Coval
Samsung Open Source Group / SRUK
philippe.coval@osg.samsung.com
Prototyping IoT devices on GNU/Linux
Embedded Linux Conference
#LFELC, Berlin, Germany <2016-10-13>
Samsung Open Source Group 2
Hallo Welt!
● Philippe Coval
– Software engineer for Samsung OSG
● Belongs to SRUK team, based in Rennes, France
● Ask me for IoTivity support on Tizen platform and others
– Interests
● Libre Soft/Hard/ware, Communities, Interoperability
– DIY, Embedded, Mobile, Wearables, Automotive...
– Find me online
● https://wiki.tizen.org/wiki/User:Pcoval
Samsung Open Source Group 3
Newbies, makers, hackers welcome !
● This “IoT” talk is not about:
– Market share, prospects, growth, figures
● Monetize data with cloud, analytics, big data, machine learning
– Security, privacy, trust, Skynet, singularity or any concerns
– Architectures, services or designs
● Comparison of protocols or implementations
● Tizen the “OS of Everything” (unless if asked)
● It's about quick prototyping for proof of concepts:
– Learn by doing from scratch, DIY: software, hardware, electronics
– Feedback on previous experimentations from embedded developer
– Front door to a project of 435K+ lines of code and ~500 pages of specifications
Samsung Open Source Group 4
Agenda
● Prototyping
● Simplest example
● Implementation
● Hardware integration
● Demonstration
● Q&A
Samsung Open Source Group 5
Motivations for prototyping
● *NOT* making a mass produced IoT device at 1st shot
– Low cost (<10 $), low consumption (mW), high level of security
● Validate concepts with relaxed constraints
– In friendly environment (ie: tools, security or connectivity shortcuts)
– Validate, show, gather feedback, stress, benchmark, adapt, iterate
● Think of use cases first?
– Or experiment with what can technology can provide? Be inspired!
● Topics and Ideas?
– Controlling, monitoring, convergence, network of sensors, behaviors, AI...
Samsung Open Source Group 6
“Simplicity
is the ultimate sophistication.”
~Leonardo da Vinci

More Related Content

What's hot

IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialSamsung Open Source Group
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxSamsung Open Source Group
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Samsung Open Source Group
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivitySamsung Open Source Group
 
Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016Benjamin Cabé
 
MediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Labs
 
BKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End StoryBKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End StoryLinaro
 
Media Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller APIMedia Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller APISamsung Open Source Group
 
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTDevoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTBenjamin Cabé
 

What's hot (19)

IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
OIC AGL Collaboration
OIC AGL CollaborationOIC AGL Collaboration
OIC AGL Collaboration
 
IoTivity on Tizen: How to
IoTivity on Tizen: How toIoTivity on Tizen: How to
IoTivity on Tizen: How to
 
IoT Meets Security
IoT Meets SecurityIoT Meets Security
IoT Meets Security
 
Tizen Connected with IoTivity
Tizen Connected with IoTivityTizen Connected with IoTivity
Tizen Connected with IoTivity
 
Iotivity atmel-20150328rzr
Iotivity atmel-20150328rzrIotivity atmel-20150328rzr
Iotivity atmel-20150328rzr
 
tdc2015-strategy-devel-20150916
tdc2015-strategy-devel-20150916tdc2015-strategy-devel-20150916
tdc2015-strategy-devel-20150916
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
 
Internet of Smaller Things
Internet of Smaller ThingsInternet of Smaller Things
Internet of Smaller Things
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
 
Présentation du système d'exploitation RIOT-OS
Présentation du système d'exploitation RIOT-OSPrésentation du système d'exploitation RIOT-OS
Présentation du système d'exploitation RIOT-OS
 
Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016Open Source Internet of Things 101 – EclipseCon 2016
Open Source Internet of Things 101 – EclipseCon 2016
 
Iotivity tizen-fosdem-2015
Iotivity tizen-fosdem-2015Iotivity tizen-fosdem-2015
Iotivity tizen-fosdem-2015
 
MediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 Webinar
 
BKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End StoryBKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End Story
 
Media Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller APIMedia Resource Sharing Through the Media Controller API
Media Resource Sharing Through the Media Controller API
 
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoTDevoxx 2015 - Building the Internet of Things with Eclipse IoT
Devoxx 2015 - Building the Internet of Things with Eclipse IoT
 

Viewers also liked

OCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/WearableOCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/WearableJonathan Jeon
 
Introduction to AllJoyn
Introduction to AllJoynIntroduction to AllJoyn
Introduction to AllJoynAlex Gonzalez
 
IoTivity 오픈소스 기술
IoTivity 오픈소스 기술IoTivity 오픈소스 기술
IoTivity 오픈소스 기술Wonsuk Lee
 
Security & Identity in AllJoyn 14.06
Security & Identity in AllJoyn 14.06Security & Identity in AllJoyn 14.06
Security & Identity in AllJoyn 14.06kellogh
 
Ocf Li Quick Presentation Company
Ocf Li Quick Presentation CompanyOcf Li Quick Presentation Company
Ocf Li Quick Presentation CompanyJeremyLutterloch
 
Comarch Loyalty Breakfast - behavioural analysis in gamification
Comarch Loyalty Breakfast - behavioural analysis in gamification Comarch Loyalty Breakfast - behavioural analysis in gamification
Comarch Loyalty Breakfast - behavioural analysis in gamification Malgorzata Kendziorek
 
IoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLab
IoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLabIoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLab
IoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLabReidCarlberg
 
Snappy ubuntu+m2m labscharm
Snappy ubuntu+m2m labscharmSnappy ubuntu+m2m labscharm
Snappy ubuntu+m2m labscharmsupportm2mlabs
 
Meetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFox
Meetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFoxMeetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFox
Meetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFoxDigipolis Antwerpen
 
IoT prototyping made simple
IoT prototyping made simpleIoT prototyping made simple
IoT prototyping made simpleBhavana Srinivas
 
IoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devices
IoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devicesIoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devices
IoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devicesSamsung Open Source Group
 
IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...
IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...
IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...MicheleNati
 
Introduction to the AllJoyn Gateway Agent
Introduction to the AllJoyn Gateway Agent Introduction to the AllJoyn Gateway Agent
Introduction to the AllJoyn Gateway Agent AllSeen Alliance
 
No Excuses, Just Do It!
No Excuses, Just Do It!No Excuses, Just Do It!
No Excuses, Just Do It!Michael Smith
 
Device Management with OMA Lightweight M2M
Device Management with OMA Lightweight M2MDevice Management with OMA Lightweight M2M
Device Management with OMA Lightweight M2MHannes Tschofenig
 

Viewers also liked (20)

Development Boards for Tizen IoT
Development Boards for Tizen IoTDevelopment Boards for Tizen IoT
Development Boards for Tizen IoT
 
OCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/WearableOCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/Wearable
 
Introduction to AllJoyn
Introduction to AllJoynIntroduction to AllJoyn
Introduction to AllJoyn
 
IoTivity 오픈소스 기술
IoTivity 오픈소스 기술IoTivity 오픈소스 기술
IoTivity 오픈소스 기술
 
IoT workshop live demo
IoT workshop live demoIoT workshop live demo
IoT workshop live demo
 
Security & Identity in AllJoyn 14.06
Security & Identity in AllJoyn 14.06Security & Identity in AllJoyn 14.06
Security & Identity in AllJoyn 14.06
 
Ocf Li Quick Presentation Company
Ocf Li Quick Presentation CompanyOcf Li Quick Presentation Company
Ocf Li Quick Presentation Company
 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
 
Ashley Mitchell Resume
Ashley Mitchell ResumeAshley Mitchell Resume
Ashley Mitchell Resume
 
Comarch Loyalty Breakfast - behavioural analysis in gamification
Comarch Loyalty Breakfast - behavioural analysis in gamification Comarch Loyalty Breakfast - behavioural analysis in gamification
Comarch Loyalty Breakfast - behavioural analysis in gamification
 
IoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLab
IoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLabIoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLab
IoT Lab @ Dreamforce 2013 -- Things To Do in the #DevZoneLab
 
Snappy ubuntu+m2m labscharm
Snappy ubuntu+m2m labscharmSnappy ubuntu+m2m labscharm
Snappy ubuntu+m2m labscharm
 
Meetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFox
Meetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFoxMeetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFox
Meetup 27/10/2016: Antwerpen als IoT-lab: experimenteer mee met SigFox
 
IoT prototyping made simple
IoT prototyping made simpleIoT prototyping made simple
IoT prototyping made simple
 
IoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devices
IoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devicesIoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devices
IoTivity Connects RVI from GENIVI's Develoment Platform to Tizen devices
 
IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...
IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...
IoTMeetupGuildford#9: IoT Lab – Crowdsourcing mobile app for IoT experimentat...
 
IoT LAB
IoT LABIoT LAB
IoT LAB
 
Introduction to the AllJoyn Gateway Agent
Introduction to the AllJoyn Gateway Agent Introduction to the AllJoyn Gateway Agent
Introduction to the AllJoyn Gateway Agent
 
No Excuses, Just Do It!
No Excuses, Just Do It!No Excuses, Just Do It!
No Excuses, Just Do It!
 
Device Management with OMA Lightweight M2M
Device Management with OMA Lightweight M2MDevice Management with OMA Lightweight M2M
Device Management with OMA Lightweight M2M
 

Similar to IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux

IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...WithTheBest
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisOW2
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)Samsung Open Source Group
 
Internet Of Things: Hands on: YOW! night
Internet Of Things: Hands on: YOW! nightInternet Of Things: Hands on: YOW! night
Internet Of Things: Hands on: YOW! nightAndy Gelme
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)Ron Munitz
 
Introduction to FreeRTOS
Introduction to FreeRTOSIntroduction to FreeRTOS
Introduction to FreeRTOSICS
 
webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrPhil www.rzr.online.fr
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesSamsung Open Source Group
 
Securing IoT Applications
Securing IoT Applications Securing IoT Applications
Securing IoT Applications WSO2
 
Headless Android (Wearable DevCon 2014)
Headless Android (Wearable DevCon 2014)Headless Android (Wearable DevCon 2014)
Headless Android (Wearable DevCon 2014)Ron Munitz
 
The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017Jian-Hong Pan
 
OpenStack Meetup - SDN
OpenStack Meetup - SDNOpenStack Meetup - SDN
OpenStack Meetup - SDNSzilvia Racz
 
Tornado Web Server Internals
Tornado Web Server InternalsTornado Web Server Internals
Tornado Web Server InternalsPraveen Gollakota
 
OpenStack Integration with OpenContrail and OpenDaylight
OpenStack Integration with OpenContrail and OpenDaylightOpenStack Integration with OpenContrail and OpenDaylight
OpenStack Integration with OpenContrail and OpenDaylightSyed Moneeb
 
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...OpenStack Korea Community
 
Ake hedman why we need to unite and why vscp is a solution to a problem
Ake hedman  why we need to unite and why vscp is a solution to a problemAke hedman  why we need to unite and why vscp is a solution to a problem
Ake hedman why we need to unite and why vscp is a solution to a problemWithTheBest
 

Similar to IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux (20)

IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Connected TIZEN
Connected TIZENConnected TIZEN
Connected TIZEN
 
Embedded. What Why How
Embedded. What Why HowEmbedded. What Why How
Embedded. What Why How
 
Internet Of Things: Hands on: YOW! night
Internet Of Things: Hands on: YOW! nightInternet Of Things: Hands on: YOW! night
Internet Of Things: Hands on: YOW! night
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
 
Introduction to FreeRTOS
Introduction to FreeRTOSIntroduction to FreeRTOS
Introduction to FreeRTOS
 
tizen-rt-javascript-20181011
tizen-rt-javascript-20181011tizen-rt-javascript-20181011
tizen-rt-javascript-20181011
 
webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzr
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
 
Securing IoT Applications
Securing IoT Applications Securing IoT Applications
Securing IoT Applications
 
Headless Android (Wearable DevCon 2014)
Headless Android (Wearable DevCon 2014)Headless Android (Wearable DevCon 2014)
Headless Android (Wearable DevCon 2014)
 
The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017
 
OpenStack Meetup - SDN
OpenStack Meetup - SDNOpenStack Meetup - SDN
OpenStack Meetup - SDN
 
Tornado Web Server Internals
Tornado Web Server InternalsTornado Web Server Internals
Tornado Web Server Internals
 
OpenStack Integration with OpenContrail and OpenDaylight
OpenStack Integration with OpenContrail and OpenDaylightOpenStack Integration with OpenContrail and OpenDaylight
OpenStack Integration with OpenContrail and OpenDaylight
 
IOT Exploitation
IOT Exploitation	IOT Exploitation
IOT Exploitation
 
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
 
Ake hedman why we need to unite and why vscp is a solution to a problem
Ake hedman  why we need to unite and why vscp is a solution to a problemAke hedman  why we need to unite and why vscp is a solution to a problem
Ake hedman why we need to unite and why vscp is a solution to a problem
 

More from Samsung Open Source Group

Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBSamsung Open Source Group
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategySamsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...Samsung Open Source Group
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceSamsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsSamsung Open Source Group
 
Introduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationIntroduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationSamsung Open Source Group
 

More from Samsung Open Source Group (12)

Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
 
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ CompilerClang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
 
Introduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationIntroduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential Collaboration
 
JerryScript on RIOT
JerryScript on RIOTJerryScript on RIOT
JerryScript on RIOT
 
Introduction to IoT.JS
Introduction to IoT.JSIntroduction to IoT.JS
Introduction to IoT.JS
 
6LoWPAN: An Open IoT Networking Protocol
6LoWPAN: An Open IoT Networking Protocol6LoWPAN: An Open IoT Networking Protocol
6LoWPAN: An Open IoT Networking Protocol
 

Recently uploaded

CSS Notes in PDF, Easy to understand. For beginner to advanced. ...
CSS Notes in PDF, Easy to understand. For beginner to advanced.              ...CSS Notes in PDF, Easy to understand. For beginner to advanced.              ...
CSS Notes in PDF, Easy to understand. For beginner to advanced. ...syedfaisal759877
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!Anthony Dahanne
 
Cybersecurity Measures For Remote Workers.pdf
Cybersecurity Measures For Remote Workers.pdfCybersecurity Measures For Remote Workers.pdf
Cybersecurity Measures For Remote Workers.pdfCIOWomenMagazine
 
Machine Learning Basics for Dummies (no math!)
Machine Learning Basics for Dummies (no math!)Machine Learning Basics for Dummies (no math!)
Machine Learning Basics for Dummies (no math!)Dmitry Zinoviev
 
What are the Reasons for Tracking the Attendance of the Employees?
What are the Reasons for Tracking the Attendance of the Employees?What are the Reasons for Tracking the Attendance of the Employees?
What are the Reasons for Tracking the Attendance of the Employees?NYGGS Automation Suite
 
Passbolt Introduction and Usage for secret managment
Passbolt Introduction and Usage for secret managmentPassbolt Introduction and Usage for secret managment
Passbolt Introduction and Usage for secret managmentThierry Gayet
 
Role of DevOps in SaaS product Development.pdf.pptx
Role of DevOps in SaaS product Development.pdf.pptxRole of DevOps in SaaS product Development.pdf.pptx
Role of DevOps in SaaS product Development.pdf.pptxMindInventory
 
Orion Context Broker introduction 20240227
Orion Context Broker introduction 20240227Orion Context Broker introduction 20240227
Orion Context Broker introduction 20240227Fermin Galan
 
Open Source vs Closed Source LLMs. Pros and Cons
Open Source vs Closed Source LLMs. Pros and ConsOpen Source vs Closed Source LLMs. Pros and Cons
Open Source vs Closed Source LLMs. Pros and ConsSprings
 
killing camp 주차장 나누기-2 topology sort.pdf
killing camp 주차장 나누기-2 topology sort.pdfkilling camp 주차장 나누기-2 topology sort.pdf
killing camp 주차장 나누기-2 topology sort.pdfssuser82c38d
 
Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Jeffrey Haguewood
 
Implementing Docker Containers with Windows Server 2019
Implementing Docker Containers with Windows Server 2019Implementing Docker Containers with Windows Server 2019
Implementing Docker Containers with Windows Server 2019VICTOR MAESTRE RAMIREZ
 
LLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowLLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowNaoki (Neo) SATO
 
Globus for System Administrators
Globus for System AdministratorsGlobus for System Administrators
Globus for System AdministratorsGlobus
 
Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...
Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...
Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...Alluxio, Inc.
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureHironori Washizaki
 
The Top Outages of 2023: Analyses and Takeaways
The Top Outages of 2023: Analyses and TakeawaysThe Top Outages of 2023: Analyses and Takeaways
The Top Outages of 2023: Analyses and TakeawaysThousandEyes
 
Design pattern talk by Kaya Weers - 2024
Design pattern talk by Kaya Weers - 2024Design pattern talk by Kaya Weers - 2024
Design pattern talk by Kaya Weers - 2024Kaya Weers
 

Recently uploaded (20)

CSS Notes in PDF, Easy to understand. For beginner to advanced. ...
CSS Notes in PDF, Easy to understand. For beginner to advanced.              ...CSS Notes in PDF, Easy to understand. For beginner to advanced.              ...
CSS Notes in PDF, Easy to understand. For beginner to advanced. ...
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!
 
Cybersecurity Measures For Remote Workers.pdf
Cybersecurity Measures For Remote Workers.pdfCybersecurity Measures For Remote Workers.pdf
Cybersecurity Measures For Remote Workers.pdf
 
Machine Learning Basics for Dummies (no math!)
Machine Learning Basics for Dummies (no math!)Machine Learning Basics for Dummies (no math!)
Machine Learning Basics for Dummies (no math!)
 
What are the Reasons for Tracking the Attendance of the Employees?
What are the Reasons for Tracking the Attendance of the Employees?What are the Reasons for Tracking the Attendance of the Employees?
What are the Reasons for Tracking the Attendance of the Employees?
 
eLearning Content Development Company Code and Pixels.pdf
eLearning Content Development Company Code and Pixels.pdfeLearning Content Development Company Code and Pixels.pdf
eLearning Content Development Company Code and Pixels.pdf
 
Passbolt Introduction and Usage for secret managment
Passbolt Introduction and Usage for secret managmentPassbolt Introduction and Usage for secret managment
Passbolt Introduction and Usage for secret managment
 
2024 Trends Transforming Enterprise Resource Planning
2024 Trends Transforming Enterprise Resource Planning2024 Trends Transforming Enterprise Resource Planning
2024 Trends Transforming Enterprise Resource Planning
 
Role of DevOps in SaaS product Development.pdf.pptx
Role of DevOps in SaaS product Development.pdf.pptxRole of DevOps in SaaS product Development.pdf.pptx
Role of DevOps in SaaS product Development.pdf.pptx
 
Orion Context Broker introduction 20240227
Orion Context Broker introduction 20240227Orion Context Broker introduction 20240227
Orion Context Broker introduction 20240227
 
Open Source vs Closed Source LLMs. Pros and Cons
Open Source vs Closed Source LLMs. Pros and ConsOpen Source vs Closed Source LLMs. Pros and Cons
Open Source vs Closed Source LLMs. Pros and Cons
 
killing camp 주차장 나누기-2 topology sort.pdf
killing camp 주차장 나누기-2 topology sort.pdfkilling camp 주차장 나누기-2 topology sort.pdf
killing camp 주차장 나누기-2 topology sort.pdf
 
Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)Automation for Bonterra Impact Management (fka Apricot)
Automation for Bonterra Impact Management (fka Apricot)
 
Implementing Docker Containers with Windows Server 2019
Implementing Docker Containers with Windows Server 2019Implementing Docker Containers with Windows Server 2019
Implementing Docker Containers with Windows Server 2019
 
LLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flowLLMOps with Azure Machine Learning prompt flow
LLMOps with Azure Machine Learning prompt flow
 
Globus for System Administrators
Globus for System AdministratorsGlobus for System Administrators
Globus for System Administrators
 
Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...
Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...
Alluxio Monthly Webinar | Why a Multi-Cloud Strategy Matters for Your AI Plat...
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about Architecture
 
The Top Outages of 2023: Analyses and Takeaways
The Top Outages of 2023: Analyses and TakeawaysThe Top Outages of 2023: Analyses and Takeaways
The Top Outages of 2023: Analyses and Takeaways
 
Design pattern talk by Kaya Weers - 2024
Design pattern talk by Kaya Weers - 2024Design pattern talk by Kaya Weers - 2024
Design pattern talk by Kaya Weers - 2024
 

IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux

  • 1. Samsung Open Source Group 1 Tutorial Philippe Coval Samsung Open Source Group / SRUK philippe.coval@osg.samsung.com Prototyping IoT devices on GNU/Linux Embedded Linux Conference #LFELC, Berlin, Germany <2016-10-13>
  • 2. Samsung Open Source Group 2 Hallo Welt! ● Philippe Coval – Software engineer for Samsung OSG ● Belongs to SRUK team, based in Rennes, France ● Ask me for IoTivity support on Tizen platform and others – Interests ● Libre Soft/Hard/ware, Communities, Interoperability – DIY, Embedded, Mobile, Wearables, Automotive... – Find me online ● https://wiki.tizen.org/wiki/User:Pcoval
  • 3. Samsung Open Source Group 3 Newbies, makers, hackers welcome ! ● This “IoT” talk is not about: – Market share, prospects, growth, figures ● Monetize data with cloud, analytics, big data, machine learning – Security, privacy, trust, Skynet, singularity or any concerns – Architectures, services or designs ● Comparison of protocols or implementations ● Tizen the “OS of Everything” (unless if asked) ● It's about quick prototyping for proof of concepts: – Learn by doing from scratch, DIY: software, hardware, electronics – Feedback on previous experimentations from embedded developer – Front door to a project of 435K+ lines of code and ~500 pages of specifications
  • 4. Samsung Open Source Group 4 Agenda ● Prototyping ● Simplest example ● Implementation ● Hardware integration ● Demonstration ● Q&A
  • 5. Samsung Open Source Group 5 Motivations for prototyping ● *NOT* making a mass produced IoT device at 1st shot – Low cost (<10 $), low consumption (mW), high level of security ● Validate concepts with relaxed constraints – In friendly environment (ie: tools, security or connectivity shortcuts) – Validate, show, gather feedback, stress, benchmark, adapt, iterate ● Think of use cases first? – Or experiment with what can technology can provide? Be inspired! ● Topics and Ideas? – Controlling, monitoring, convergence, network of sensors, behaviors, AI...
  • 6. Samsung Open Source Group 6 “Simplicity is the ultimate sophistication.” ~Leonardo da Vinci
  • 7. Samsung Open Source Group 7 Simplest use case ● From the blinking led ● To a remote controlled switch – GPIO, LED, Relay, Motor, Fan, Home Appliance... – Simple functions: On/Off ● To a flip/flop relay controlled by multiple clients – Notification of change in real time – Consistent toggle feature ● Identified problems, are half solved : – Sharing hardware resource(s) through a seamless connectivity
  • 8. Samsung Open Source Group 8 IoTivity : Connectivity between devices ● Apache-2 licensed C/C++ Implementation – Of Open Connectivity Foundation's standard (OCF~OIC) ● Many features: – Discovery (IETF RFC7252 / IP Multicast) – Communication (RESTfull API on CoAP) w/ Security (DTLS) – Transports (IP, WiFi, BT, BLE, Zigbee...) – Data/Device management, web services, cloud, plugins... ● Today we'll use only few features to connect our thing
  • 9. Samsung Open Source Group 9 OCF Vocabulary is all about resources ● Resource is representing – virtual object (ie: logical states) – physical data (ie: actuator, sensors) – hybrid (ie: soft sensors) ● Resource entity – Each can be accessed by an URI – Has a resource type identifier – Is composed of properties ● type, name, value ● More concepts – Model to describe ● Resource's interface – Properties & allowed ops – GET, POST, PUT, params... – Groups, collections, links – Scenes, Things manager – Many more services
  • 10. Samsung Open Source Group 10 Don't reinvent the wheel ● OCF's Standardized data model repository – http://www.oneiota.org/ – RESTful API Modeling Language (RAML > JSON) – To be used with a simulator (ATM) ● Search for existing models – https://github.com/OpenInterConnect/IoTDataModels – http://www.oneiota.org/documents?q=switch ● binarySwitch.raml includes oic.r.switch.binary.json ● http://www.oneiota.org/revisions/1580
  • 11. Samsung Open Source Group 11 OCF Model defines switch resource type { "id": "http://openinterconnect.org/iotdatamodels/schemas/oic.r.switch.binary.json#", "$schema": "http://json-schema.org/draft-04/schema#", "description" : "Copyright (c) 2016 Open Connectivity Foundation, Inc. All rights reserved.", "title": "Binary Switch", "definitions": { "oic.r.switch.binary": { "type": "object", "properties": { "value": { "type": "boolean", "description": "Status of the switch" } } } } // ...
  • 12. Samsung Open Source Group 12 “The secret of getting ahead is getting started.” ~ Mark Twain
  • 13. Samsung Open Source Group 13 Time to make choice ● OS? https://wiki.iotivity.org/os – None: for Microcomputers (MCU: Bare metal) – GNU/Linux : Debian/Ubuntu, Yocto, Tizen, OpenWRT... – Or others FLOSS or not ● Hardware? https://wiki.iotivity.org/hardware – Arduino (MCU) : C API – Cheap Single Board Computer (CPU): C++ API (or C API too) ● IO: GPIO, I2C, SPI, Antennas, Daughter-boards... ● RaspberryPI (0|1|2|3), MinnowMax (OSHW), Edison, (5|10), ...
  • 14. Samsung Open Source Group 14 Get your hands on IoTivity! ● Get and build libraries: https://wiki.iotivity.org/build – Download sources and dependencies ● Build it using scons – Or if OS shipping IoTivity (Tizen, Yocto, ...) ● Use it a regular library (CPPFLAGS & LDFLAGS) ● Look at tree: https://wiki.iotivity.org/sources – Samples apps: resource/examples – C++ SDK: resource/resource/src – C SDK: resource/csdk
  • 15. Samsung Open Source Group 15 Typical flow ● Minimal example project to base on: git clone iotivity-example – Simple C (uses callbacks) or C++11 IoTivity Server IoTivity Client(s) IP Network Registration of resource Handling new requests Set/Get/ing properties values Initialization as server Initialization as client Handling new clients Discovery of resource ( POST/PUT GET ) (CoAP Multicast)
  • 16. Samsung Open Source Group 16 “Talk is cheap. Show me the code.” ~ Linus Torvalds
  • 17. Samsung Open Source Group 17 Initialization OCPlatform::Configure(OC::PlatformConfig ) OCPlatform::Configure(OC::PlatformConfig ) IoTivity Server IoTivity Client(s) IP Network class IoTServer { int main() { init(); … } OC::PlatformConfig mPlatformConfig; void init() { mPlatformConfig = OC::PlatformConfig (OC::ServiceType::InProc, OC::ModeType::Server, // different that C "0.0.0.0", 0, // default for all subnets / ifaces OC::QualityOfService::LowQos //or HighQos ); OCPlatform::Configure(mPlatformConfig); } }; class IoTClient { int main() { init(); … } OC::PlatformConfig mPlatformConfig; void init() { mPlatformConfig = OC::PlatformConfig (OC::ServiceType::InProc, OC::ModeType::Client, // different than S "0.0.0.0", 0, // on any random port available OC::QualityOfService::LowQos // or HighQos ); OCPlatform::Configure(mPlatformConfig); } };
  • 18. Samsung Open Source Group 18 Registration of resource on Server 18 OCPlatform::Configure(PlatformConfig) OCPlatform::registerResource(...) class IoTServer { // (...) OCResourceHandle mResource; OC::EntityHandler mHandler; // for CRUDN operations void setup() { // (...) result = OCPlatform::registerResource(mResource, // handle for resource “/BinaryRelayURI”, // Resource Uri, "oic.r.switch.binary", “oic.if.baseline” // Type & Interface (default) mHandler // Callback to proceed GET/POST (explained later) OC_DISCOVERABLE | OC_OBSERVABLE // resource flags ); OCPlatform::bindTypeToResource(mResource, … ); // optionally } }; IoTivity Server IoTivity Client(s) IP Network OCPlatform::Configure(PlatformConfig ) OCPlatform::findResource(...)
  • 19. Samsung Open Source Group 19 OCPlatform::Configure(OC::PlatformConfig ) OCPlatform::findResource(OC::FindCallback) IoTClient::onFind(OCResource) OCPlatform::Configure(OC::PlatformConfig ) OCPlatform::registerResource(...) { OCPlatform internal } Resource discovery on client : finding class IoTClient{ // ... OC::FindCallback mFindCallback; void onFind(shared_ptr<OCResource> resource); void setup() { //… mFindCallback = bind(&IoTClient::onFind, this, placeholders::_1); //C++11 std::bind OCPlatform::findResource("", // default “/oic/res”, // CoAP endpoint, or resource based filtering for switches CT_ADAPTER_IP, // connectivityType can BT, BLE or other supported protocol mFindCallback, // to be called on Server response OC::QualityOfService::LowQos // or HighQos ); } }; IoTivity Server IoTivity Client(s) IP Network
  • 20. Samsung Open Source Group 20 Resource discovered on client class Resource { OCResourceHandle mResourceHandle; }; // Our resource for CRUDN class IoTClient { // (…) std::shared_ptr<Resource> mResource; void onFind(shared_ptr<OCResource> resource) { if (“/BinarySwitchURI” == resource->uri()) mResource = make_shared<Resource>(resource); } }; IoTivity Server IoTivity Client(s) IP Network OCPlatform::Configure(OC::PlatformConfig ) OCPlatform::registerResource(...) { OCPlatform internal } OCPlatform::Configure(OC::PlatformConfig ) OCPlatform::findResource(OC::FindCallback) IoTClient::onFind(OCResource)
  • 21. Samsung Open Source Group 21 OCPlatform::findResource(...) IoTClient::mResource->post() Resource discovering on client void IoTServer::setup() { //... OC::EntityHandler handler = bind(&IoTServer::handleEntity, this, placeholders::_1); OCPlatform::registerResource( … handler … ); ... } IoTServer::handleEntity(shared_ptr<OCResourceRequest> request) { string requestType = request->getRequestType(); if ( requestType == “POST” ) { handlePost() } else { … } auto response = std::make_shared<OC::OCResourceResponse>(); //... OCPlatform::sendResponse(response); } void IoTServer::handlePost(...) {} IoTivity Server IoTivity Client(s) IP Network OCPlatform::registerResource(...) IoTServer::handleEntity(OCResourceRequest
  • 22. Samsung Open Source Group 22 Resource representation OCPlatform::registerResource(...) IoTServer::handleEntity(OCResourceRequest) IoTServer::handlePost(OCResourceRequest) OCPlatform::findResource(...) IoTClient::mResource->post(false) void Resource::post(bool value) { OCRepresentation rep; QueryParamsMap params; rep.setValue(“value”, value); // property mOCResource->post(rep, params, mPostCallback); IoTServer::handlePost(shared_ptr<OCResourceRequest> request) { OCRepresentation requestRep = request->getResourceRepresentation(); if (requestRep.hasAttribute(“value”)) { bool value = requestRep.getValue<bool>(“value”); cout << “value=”<<value<<endl; // OR set physical IO (GPIO...) } } IoTivity Server IoTivity Client(s) IP Network
  • 23. Samsung Open Source Group 23 GET / POST using Entity Handler OCPlatform::Configure(OC::PlatformConfig ) OCPlatform::registerResource(...) OC::EntityHandler(OCResourceRequest) { switch(getRequestType) { case 'POST: // Create resource 1st … case 'GET' : // Retrieve current value ... case 'PUT' : // Not allowed for Switch ... OCPlatform::sendResponse(...); OCPlatform::notifyAllObservers(); }} OCPlatform::Configure(OC::PlatformConfig ) OCPlatform::findResource(...) OC::OCResource::get(...) // Retrieve OC::GetCallback(...) OC:ObserveCallback(...) // Notify OC::OCResource::post(...) // Create OC::PutCallback(...) IoTivity Server IoTivity Client(s) IP Network
  • 24. Samsung Open Source Group 24 “I'm not crazy. My reality is just different from yours.” ~ Lewis Carroll
  • 25. Samsung Open Source Group 25 Resource is physical, not a boolean ! ● General Purpose Input Output: GPIO – Set a voltage on electrical pin from userspace ● This can be set using Linux's sysfs (adapt to C/C++) – echo $n > /sys/class/gpio/export ; echo out > /sys/class/gpio/gpio$n/direction – echo 1 ; sleep 1 ; echo 0 > /sys/class/gpio/gpio$gpio/value ● Or faster with direct access (kernel registers...) – Even better using mapping library RAA (Along UPM for sensors drivers) ● So, server's “entity handler” should send signal on POST/PUT requests, that's all – IoTServer::handleEntity() { … IoTServer::handlePut() … } – IoTServer::handlePut() { ~ write(“/sys/class/gpio/gpio$n/value” ,“%d”, requestRep.getValue<bool>(“value”) ); }
  • 26. Samsung Open Source Group 26 GND @J27/Pin17 (4th from right) GPIO21 @J27/Pin12 (6th from right) 10 GPIO pinout Vcc1 +5V @J15 (5th from right) CPU: Exynos5 (4+4 Cores) Boot MMC/SD RAM:2GB MMC:16GB
  • 27. Samsung Open Source Group 27 Hardware integration : DIY ● High voltage relay (0-220V) – GPIO (3v3) < Relay (5V) ● Signal Base of NPN Transistor SBC +3.3V Relay 5V Finder F34 30.22.7.005.0010 Vcc 2 ? GND 2 Vcc 1 + 5V GND 1 Transistor NPN P2N 2222A Resistor * (*) ARTIK10 | MinnowMax 47 OHM (yellow, purple, black) C B E o o o o GPIO (*) RaspberryPI 180 OHM (brown, grey, brown) GND1GND1 GPIOGPIO (3.3v)(3.3v) Vcc1Vcc1 (5v)(5v) Vcc2Vcc2 GND2GND2
  • 28. Samsung Open Source Group 28 Hardware integration, with modules ● Simples modules, to wire on headers – Ie: Single channel Relay (HXJ-36) ● Daughters boards, (compatibles headers) – Shields: for Arduino, and compatibles SBC (ARTIK10, Atmel Xpl) – Hats for Raspberry Pi+ (RabbitMax ships relay, I2C, IR, LCD) – Lures for Minnowboard (Calamari has buttons, Tadpole transistors) ● Warning: Arduino Mega's GPIO is 5V and most SBC are 3.3V
  • 29. Samsung Open Source Group 29 IoT devices are constrained ! ● If GNU/Linux is not an option for the computing power you have – Now let's port it to MCU using C – CSDK : iotivity/resource/csdk – Can use the same code base for Linux | Arduino... ● Example: – git clone -b csdk iotivity-example – git clone -b arduino iotivity-example – AVR binary Footprint : 116534 bytes for ATMega2560
  • 30. Samsung Open Source Group 30 IoTivity CSDK flow OCInit(NULL, 0, OC_SERVER); OCCreateResource( …, handleOCEntity); { OCProcess(); } handleOCEntity(entityHandlerRequest) { switch (entityHandlerRequest->method { case 'POST: // CREATE resource 1st case 'GET' : // READ current value case 'PUT' : // then UPDATE value ... OCDoResponse(&response); }} OCInit(NULL, 0, OC_CLIENT); OCDoResource(...,OC_REST_DISCOVER, ...) handleDiscover(... OCClientResponse ...) OCDoResource(...OC_REST_GET …) handleGet(... OCClientResponse ...) IoTivity Server IoTivity Client(s) IP Network OCDoResource(...OC_REST_POST …) handlePost(... OCClientResponse ...) OCDoResource(...OC_REST_PUT …) handlePut(... OCClientResponse ...) IP Network
  • 31. Samsung Open Source Group 31 Interaction with other OS / Devices ● Consumer electronics products – Tizen IoTivity ● Tizen:3 contains as platform package (.rpm) ● Tizen:2 can ship lib into native app (.tpk) – For Samsung Z1 (Tizen:2.4:Mobile) – Samsung GearS2 (Tizen:2.3.1:Wearable) ● GNU/Linux: – Yocto (Poky, AGL, GENIVI, OstroOS) ● Other OS too:
  • 32. Samsung Open Source Group 32 “Any sufficiently advanced technology is indistinguishable from magic.” ~ Arthur C. Clarke
  • 33. Samsung Open Source Group 33 Demonstration: tizen-artik-20161010rzr https://vimeo.com/186286428#tizen-artik-20161010rzr
  • 34. Samsung Open Source Group 34 Want More ? ● More security, enable it, device provisioning, iotcon... ● More constrained: iotivity-constrained (RIOT, Contiki, Zephyr) ● More connectivity: BT, BLE, Zigbee, LTE, NFC... ● Scale: Deploy an OCF network of sensors, establish rules. – Global: Webservices (WSI), with cloud backend – For Smart (Home | Car | City | $profile)
  • 35. Samsung Open Source Group 35 Conclusion ● Prototyping an IoT device is possible – with IoTivity IoT framework, that provides ● Device to Device seamless connection ● Create, Read, Update, Delete Resource & Notification – Can be easly implemented In C or C++ – On Single Board Computers supporting Linux ● To work with devices supporting OCF standard protocol – Or supporting IoTivity like Tizen Wearables ● Possibilities are infinites
  • 36. Samsung Open Source Group 36 References ● Entry point: – https://wiki.iotivity.org/examples ● Technical references – https://openconnectivity.org/resources/iotivity ● OIC_1.1_Candidate_Specification.zip – https://wiki.iotivity.org/sources – http://elinux.org/ARTIK ● Keep in touch online: – https://wiki.iotivity.org/community – https://wiki.tizen.org/wiki/Meeting – https://developer.artik.io/forums/users/rzr – https://blogs.s-osg.org/author/pcoval/
  • 37. Samsung Open Source Group 37 Danke Schoen ! Thanks / Merci / 고맙습니다 Samung OSG, SSI, Open Connectivity Foundation, LinuxFoundation, FLOSS Communities: Tizen, Yocto, EFL, AGL, GENIVI FlatIcons (CC BY 3.0) : Freepik, Chao@TelecomBretagne, Libreoffice, openshot, SRUK,SEF, Intel, Rabbitmax, ELC/OpenIoT attendees, YOU ! Contact: https://wiki.tizen.org/wiki/User:Pcoval
  • 38. Samsung Open Source Group 38 Q&A or/and Annexes ?
  • 39. Samsung Open Source Group 39 Demonstration: iotivity-arduino-20161006rzr https://vimeo.com/185851073#iotivity-arduino-20161006rzr
  • 40. Samsung Open Source Group 40 Simulator: Importing model, Resource served
  • 41. Samsung Open Source Group 41 Client discovered Resource
  • 42. Samsung Open Source Group 42 Resources properties on client
  • 43. Samsung Open Source Group 43 Attempt to change property using PUT
  • 44. Samsung Open Source Group 44 Failed, as unsupported by interface from model
  • 45. Samsung Open Source Group 45 Client sets resource property using POST
  • 46. Samsung Open Source Group 46 Server receives request and updates property
  • 47. Tizen devices connected with IoTivity Phil Coval / Samsung OSG What was improved Tizen:Common 2016 - ARTIK 5 & 10 as latest reference devices - Graphics: Enlightenment on Wayland IoTivity 1.2.0 - Notification service - Cloud features - OS Support (Windows) - CoAP (TSL, HTTP) - UPnP bridge - Extending support: - New OS: Windows, macOS - Linux: Tizen, Yocto, Debian, WRT... - Hardware: x86, ARM, RPi, MCU (Arduino) Yocto project efforts (meta-oic, meta-artik...) Source code or detail technical information availability https://wiki.tizen.org/wiki/User:Pcoval https://wiki.iotivity.org/community What is demonstrated Seamless device to device connectivity framework Linux-based software platform for consumer electronics Demo: “Tizen DIY IoT Fan” controlled by devices - Server: Tizen:Common on ARTIK dev board - Clients: Native Tizen app (C++/EFL) on products Technical Showcase CE Workgroup Linux Foundation / Embedded Linux Conference Europe