Philippe Coval and Ziran Sun explain how IoTivity can leverage the power of the cloud to produce IoT products.
1 of 28
More Related Content
IoTivity: From Devices to the Cloud
1. Samsung Open Source Group 1 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Philippe Coval + Ziran Sun
Samsung Open Source Group / SRUK
philippe.coval@osg.samsung.com
ziran.sun@samsung.com
From devices to cloud
Free and Open Source Developers' European Meeting
#FOSDEM, Brussels, Belgium <2017-02-04>
2. Samsung Open Source Group 2 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Bonjour tout le monde !
● We're software engineers from Samsung OSG
● Ask Philippe Coval for IoTivity, Tizen, Yocto, Automotive
– About OS/hardware support, build & usages (English, French)
– https://wiki.tizen.org/wiki/User:Pcoval
● Ask Ziran Sun for IoTivity, Web
– About internal, cloud (English, Chinese)
– https://fosdem.org/2016/schedule/speaker/ziran_sun/
3. Samsung Open Source Group 3 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Agenda
● A Vehicle to Infrastructure IoT demonstration
● What is OCF/IoTivity ?
● Prototyping using NodeJS
– Sensor monitoring
– Notification to cloud
● More cloud facilities
● Q&A or/and extras
?
4. Samsung Open Source Group 4
“Any sufficiently
advanced technology
is indistinguishable
from magic.”
~ Arthur C. Clarke
5. Samsung Open Source Group 5 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
How to track defectives street lights?
● 1: Measure if outside's lighting is too dark
– Embedded sensor in car (demo: I²C sensor)
● 2: Get position from satellites (GPS, Galileo)
– From: car, mobile or any (demo: simulated)
● 3: Send notice to Internet (Cloud)
– Using mobile data
– 4: Forward information to city services (pull or push)
● 5: Agent is assigned
– 6: to fix defective light
● 7: he can also check “open data” base from his mobile
● ...
11
2
3
5
6
4
7
6. Samsung Open Source Group 6 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
From devices to cloud AutoLinux demo
https://vimeo.com/202478132#iotivity-artik-20170204rzr
7. Samsung Open Source Group 7 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
“Simplicity
is the ultimate sophistication.”
~Leonardo da Vinci
8. Samsung Open Source Group 8 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Open Connectivity Foundation
● “Providing the software Linking the Internet of Things”
– Creating a specification, based on open standards:
● Resource based, RESTful architecture (Stateless. client/server...)
● IETF, CoAP protocol (Web on UDP), CBOR (JSON in binary)...
– Sponsoring an open source reference implementation (IoTivity)
● Join 190+ members to
– Discuss specification, propose RFC
– Test products in Plugfests & certify them
– Propose new data models (OneIoTA.org)
9. Samsung Open Source Group 9 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Flow: Create, Read, Update, Delete, Notify
IoTivity Server IoTivity Client(s)
Local 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
UDP Multicast
+ CoAP
Notify updated resource Observe resource change
& Handling propertiesOBSERVE
10. Samsung Open Source Group 10 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
IoTivity Framework for connecting devices
● Hardware: CPU, MCU, Desktop, SBC, Tizen devices
● OS: Many including Linux, Tizen, Yocto or baremetal...
●
C API: Data transmission (flash footprint ~128KiB-)
– Resource Model / Serialization (CBOR)
– Connectivity Abstraction: CoAP, Local IP Network, BT, BLE...
– Discovery (UDP, Multicast), Security (DTLS/TLS)
● C++ API
– C++11 OOP, Provisioning Service...
● + High level services (Mostly C++)
– Data/Device Management, Hosting, Encapsulation...
11. Samsung Open Source Group 11
“Talk is cheap.
Show me the code.”
~ Linus Torvalds
12. Samsung Open Source Group 12 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Welcome to JavaScript developers !
● IoT is not reserved for embedded (few) developers (many)
● NodeJS a run time environment of choice for prototyping
– Huge community = Consistent repository of many modules
● to be installed using node package manger
– Packaged for many OSes: GNU/Linux, Tizen, Yocto
● IoTivity-node: npm install iotivity-node
– binds IoTivity CSDK (Core Library) to Javascript
– Of course is interoperable with native servers or clients
● Let's get started, with a yocto distro with node, npm, iotivity-node
13. Samsung Open Source Group 13 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
BH1750 Digital Light Sensor
● Illuminance: [1 – 65535] lx
– Datasheet: bh1750fvi-e.pdf
● Uses I²C bus interface
– 5P: GND, ADD (to GND), SDA, SCL, VCC
– Check presence:
● /dev/i2c-1 on Raspberry Pi2
● I2cdetect -y 1 : will tell the address to use
● NodeJS package(s) available:
– https://www.npmjs.com/search?q=bh1750
– npm install bh1750
// https://www.npmjs.com/package/bh1750
var BH1750 = require('bh1750');
var device = '/dev/i2c1';
var address = 0x23;
var options = {
address: address, device: device,
command: 0x10, // 1 lx resolution
length: 2
};
var sensor = new BH1750( { options } )
sensor.readLight(function(value){
console.log(value);
// emit('update', value);
});
14. Samsung Open Source Group 14 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
OCF: Resources Data Models: oneIoTa
● Resource is identified by an URI
– Composed of properties
● Declared by a ResourceType
– Operations: CRUD+N
● Create, Read, Update, Delete+ Notify
● Use existing known resource models
– From oneIoTa.org repository
– Ie: sensors, geolocation...
● Or create new ones (new names)
– Share for interoperability
● http://www.oneiota.org/revisions/1863
● oic.r.sensor.illuminance.json
● /* … */ "definitions": {
"oic.r.sensor.illuminance": {
"properties": {
"illuminance": {
"type": "number",
"readOnly": true,
"description":
"Sensed luminous flux in lux."
} } } /* … */
15. Samsung Open Source Group 15 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
IoTivity-node Server notifies
● Intialize server and register resource:
iotivity
= require("iotivitynode/lowlevel");
iotivity.OCInit(null, 0, OC_SERVER);
iotivity.OCCreateResource(
handleReceptacle,
resourceType,
OC_RSRVD_INTERFACE_DEFAULT,
"/IlluminanceResUri", // URL
handleEntity,
OC_DISCOVERABLE | OC_OBSERVABLE);
● resourceType define Payload's data and format:
– // ie: "oic.r.sensor.illuminance"
– { “illuminance”: 42 }
●
handleEntity Is a callback on client(s) requests
– Register observers
– Respond to requests (GET, POST, PUT)
● notify(value) to observers using:
– iotivity.OCNotifyListOfObservers
● Integrate ambient sensor by trapping events:
– source.on("update", notify )
● Processing loop:
setInterval(function(
{iotivity.OCProcess();}, 1000);
16. Samsung Open Source Group 16 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
IoTivity-node Client observes
var client = require("iotivitynode").client;
client.on("resourcefound", function(resource) {
if ("/IlluminanceResUri" === resource.resourcePath){
resource.on("update", function(resource) {
console.log(JSON.stringify(resource.properties));
// OR update UI, forward elsewhere?
};
}
});
client.findResources().catch( function(error) { process.exit(1); } );
17. Samsung Open Source Group 17 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Forward data to a cloud backend
● Login your artik.io dashboard
– Select or define data models
● https://developer.artik.cloud/dashboard/devicetypes
– Declare devices: (Copy IDs)
● https://my.artik.cloud/devices
– Monitor:
● https://my.artik.cloud/data
● Send data: (REST, WS, CoAP, MQTT)
– From iotivity's resource “update” event
– Using http REST
require("node-rest-client").Client;
client.post(url, message, callback);
● https://api.artik.cloud/v1.1/messages
● message = {
headers: {
'ContentType': 'application/json',
Authorization: 'bearer
BADC0DE(...)DEADBEEF42'
}, data: {
sdid:'deadbeef(...)badc0de13',
ts: 1485178599672,
type: 'message',
data: { illuminance: 42 }
} }
18. Samsung Open Source Group 18 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
/GeoLocationResURI
{
latitude: 52.165,
longitude: -2.21,
}
A Vehicle to Infrastructure notification service
function handle(illuminance) {
if (gThreshold > illuminance) {
var data= { illuminance: illuminance,
latitude: gGeo.latitude, longitude: gGeo.longitude };
sender.send(data); // { ARTIK's client.post(url...); }
} }
client.on("resourcefound", function(resource) {
if ("/IlluminanceResURI" === resource.resourcePath) {
resource.on("update", handle);
} else if ("/GeolocationResURI" === resource.resourcePath) {
resource.on("update",
function(resource) { gGeo = resource.properties; });
} };
1
2
/IlluminanceResURI
{
illuminance: 42
}
https://api.artik.cloud/
{
illuminance: 42,
latitude: 52.165,
longitude: -2.21
}
3
1
20. Samsung Open Source Group 20 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
IoTivity Clouds
● Cloud Interface
● Authentication
– OAuth2
● Message Queue
– Publish
– Subscribe
● Directory (RD)
21. Samsung Open Source Group 21 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
IoTivity Services
● A common set of functionalities to application development.
– Resource Container
– Notification
– Resource Encapsulation
– Scene Manager
– Easy setup
–
22. Samsung Open Source Group 22 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Summary
● OCF establishes a standard for interconnecting things
● Open Source project IoTivity implements it in C and C++
● NodeJS is a nice tool to prototype a scenario
– IoTivity node to use CSDK core implementation of OCF
– + npm modules to support, hardware, cloud API
● ARTIK Cloud is providing a backend
● IoTivity native cloud extends connectivity to global
● IoTivity Service make app development easier
23. Samsung Open Source Group 23 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
References
● Entry points:
– https://wiki.iotivity.org/examples : git clone iotivity-example
– https://wiki.iotivity.org/docker : cloud images from Ondrej Tomcik
– http://wiki.iotivity.org/automotive
● Going further:
– https://openconnectivity.org/resources/iotivity
– https://openconnectivity.org/resources/oneiota-data-model-tool
– https://news.samsung.com/global/samsung-contributes-to-open-iot-showcase-at-ces-2017
● Keep in touch online:
– https://wiki.iotivity.org/community
– https://wiki.tizen.org/wiki/Meeting
– https://blogs.s-osg.org/author/pcoval/
25. Samsung Open Source Group 25 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Use GeoLocation resource in Tizen apps
https://vimeo.com/164000646#tizen-genivi-20160424rzr
26. Samsung Open Source Group 26 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
CES2017: Smart Home & Automotive demos
https://youtu.be/3d0uZE6lHvo
27. Samsung Open Source Group 27 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
IoTivity native cloud
● Cloud Interface
● Account Server
– to support multi-user (secured connection)
– OAuth2 over CoAP
● Message Queue Server
– broker to support PUB/SUB
● Resource Directory Server
● CoAP over TCP
– encoder/decoder with TLS
● CoAP HTTP Proxy
– for message mapping/parsing
28. Samsung Open Source Group 28 https://fosdem.org/2017/schedule/event/iot_iotivity/Samsung Open Source Group
Merci / 谢谢
Thanks / 고맙습니다
Samsung OSG, SRUK, SEF, SSI,
Open Connectivity Foundation and members, LinuxFoundation,
FLOSS Communities: Tizen, Yocto, EFL, AGL, GENIVI, eLinux,
Resources: xkcd.com, FlatIcons
(CC BY 3.0: Freepik,Scott de Jonge, Gregor Cresnar)
Tools: Libreoffice, openshot,
FOSDEM attendees & YOU !
Contact:
https://wiki.tizen.org/wiki/User:Pcoval